Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Алгоритмизация и программирование (С++)

Покупка
Артикул: 797716.01.99
Доступ онлайн
2 000 ₽
В корзину
В методических указаниях рассматриваются вопросы разработки программ для решения разнообразных задач с использованием языка программирования С++. Рассмотрены основные типы данных и алгоритмические конструкции, показано, как создавать простые программы из этих конструкций. Никаких предварительных знаний в программировании для усвоения материала не требуется. Предназначены для учащихся московских школ в рамках городского образовательного проекта «Инженерный класс в московской школе».
Ремизова, О. И. Алгоритмизация и программирование (С++) : методические указания / О. И. Ремизова. - Москва : Издательский Дом НИТУ «МИСиС», 2021. - 76 с. - Текст : электронный. - URL: https://znanium.com/catalog/product/1915587 (дата обращения: 19.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Москва  2021

МИНИС ТЕРС ТВО НАУКИ И ВЫСШ ЕГО О Б РА З О ВА Н И Я РФ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ 
ВЫСШЕГО ОБРАЗОВАНИЯ 
«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ «МИСиС»

ЦЕНТР ДОВУЗОВСКОЙ ПОДГОТОВКИ И ОРГАНИЗАЦИИ ПРИЕМА 
 
Проект «Инженерный класс в московской школе»

№ 4579

О.И. Ремизова

АЛГОРИТМИЗАЦИЯ  
И ПРОГРАММИРОВАНИЕ (С++)

Методические указания

Рекомендовано редакционно-издательским 
советом университета

УДК 004.4 
 
Р38

Р е ц е н з е н т 
канд. техн. наук, доц. Д.В. Калитин

Ремизова, Ольга Игоревна.
Р38  
Алгоритмизация и программирование (С++): метод. 
указания / О.И. Ремизова. – Москва : Издательский Дом 
НИТУ «МИСиС», 2021. – 76 с.

В методических указаниях рассматриваются вопросы разра-
ботки программ для решения разнообразных задач с использова-
нием языка программирования С++. Рассмотрены основные типы 
данных и алгоритмические конструкции, показано, как создавать 
простые программы из этих конструкций. Никаких предваритель-
ных знаний в программировании для усвоения материала не тре-
буется. 
Предназначены для учащихся московских школ в рамках го-
родского образовательного проекта «Инженерный класс в москов-
ской школе».

УДК 004.4

 О.И. Ремизова, 2021

 НИТУ «МИСиС», 2021

Содержание

Введение ....................................................................5
1 Переменные и типы данных .......................................8
1.1 Основные понятия языка ....................................... 8
1.2 Представление чисел в памяти компьютера ............ 10
1.3 Адресация данных в памяти компьютера ............... 13

2 Переменные и константы ......................................... 14

3 Типы данных языка С++ ......................................... 16
3.1 Целочисленные типы данных ............................... 16
3.2 Потоковый ввод и вывод языка С++ ...................... 17
4 Операции и выражения ........................................... 19
4.1 Операции присваивания ...................................... 19
4.2 Выражения и операции ....................................... 20
4.3 Арифметические операции .................................. 21
4.4 Инкремент и декремент ....................................... 23
4.5 Сокращенные формы операции присваивания ........ 23
4.6 Условная (тернарная операция) ............................ 23

5 Математические функции ........................................ 25

6 Преобразование типов данных .................................. 27

7 Операторы ветвления .............................................. 29
7.1 Логические выражения ....................................... 29
7.2 Операции сравнения ........................................... 29
7.3 Логические операции .......................................... 29
7.4 Условный оператор if .......................................... 31
7.5 Вложенные операторы if ...................................... 33
7.6 Оператор выбора switch ....................................... 37
7.7 Операторы цикла ................................................ 41
7.7.1 Цикл while ................................................... 42
7.7.2 Цикл с параметром for ................................... 44
7.7.3 Цикл с постусловием do-while ......................... 45
7.8 Операторы передачи управления из тела цикла ...... 47
7.9 Операторы goto и return ....................................... 49

8 Массивы ................................................................ 51
8.1 Одномерные массивы .......................................... 51
8.1.1 Объявление и инициализация одномерного 
массива ............................................................... 51
8.1.2 Ввод и вывод одномерного массива .................. 53
8.1.3 Сумма элементов массива ............................... 53
8.1.4 Подсчет количества элементов в массиве, 
удовлетворяющих некоторому условию ................... 54
8.1.5 Поиск максимального значения в массиве ........ 54
8.1.6 Генератор случайных чисел в языке C++ ......... 55
8.1.7 Линейный поиск в массиве ............................. 55
8.1.8 Бинарный поиск в массиве ............................. 57
8.2 Двумерные массивы ............................................ 58
8.2.1 Типовые алгоритмы работы с двумерными 
массивами ........................................................... 61
8.2.2 Методы сортировки ....................................... 62

9 Функции ............................................................... 66
9.1 Описание функции ............................................. 66
9.2 Вызов функции и передача параметров .................. 70
Приложения ............................................................ 72

Введение

Зачем изучать программирование?
Во-первых, это очень интересно. 
Во-вторых, владение программированием здорово об-
легчает жизнь специалистам многих профессий. Математик, 
физик, химик, биолог, социолог, экономист, лингвист и лю-
бой другой специалист может взять готовую библиотеку функ-
ций, написать на ее основе несложную программу и быстро ре-
шить свою задачу. И пока коллеги ведут подсчеты в Excel или 
на калькуляторе, специалист с навыками программирования 
уже будет отдыхать или думать над новой проблемой.
Ну и в-третьих, изучив программирование, можно стать 
программистом. Работать программистом не только приятно 
и прибыльно, но и полезно для общества. Компьютерные про-
граммы используются, например, для создания лекарств, для 
фундаментальных исследований. 

Как изучать программирование?

Самое сложное в нашей области – это первые шаги, и в 
программировании начинать лучше с практики. Именно ей и 
будет посвящен наш курс. Мы напишем сотни несложных про-
грамм, не углубляясь в теорию. С таким опытом вы сможете по-
том самостоятельно справиться и с более сложными задачами.

Чему учит курс?

Мы будем изучать практические основы языка C++. На-
учимся работать с числами, их последовательностями, табли-
цами, а также освоим несложные структуры данных и алго-
ритмы: сортировку, ассоциативные массивы, множества. 

Почему C++?

Это один из самых популярных языков программирова-
ния. Он хорош своей быстротой и универсальностью. С языка 
C++ легко перейти на любой другой, так как все они в целом 
очень похожи. Можно заняться чистым C, чтобы писать операци-
онные системы, драйверы и распределенные программы. Мож-
но перейти на Java или C# и писать софт для организаций. Или 

можно выучить немного другой вариант Java или Objective-C и 
писать приложения для Android и iPhone. В любом случае после 
C++ осваивать новые языки вам будет гораздо легче. 
Интегрированная среда разработки (IDE). Язык С++ яв-
ляется языком высокого уровня. Это означает, что программа 
пишется на языке, приближенном к естественному человече-
скому языку, а затем автоматически переводится на язык ма-
шинных кодов. Перевод с языка высокого уровня на машинный 
язык выполняет компилятор. В результате получается файл с 
расширением .obj, который можно сохранить на диске.
В программе, как правило, используются различные 
компоненты из библиотек. Большие программы состоят из не-
скольких исходных файлов, и каждый такой файл компили-
руется в отдельный объектный модуль. Объединить все это в 
одну программу может компоновщик. Результат работы ком-
поновщика – это исполняемая программа (например, файл с 
расширением .exe, который иначе называется загрузочным 
модулем). Такой файл уже может выполняться автономно, без 
участия исходной программы и компилятора.
В принципе, можно использовать обычный текстовый 
редактор для ввода кода программы, а затем – отдельные про-
граммы компилятора и компоновщика, вызвав их из команд-
ной строки операционной системы. Но гораздо удобнее ис-
пользовать специальное приложение, в котором объединены 
все инструменты для разработки и отладки программ.
Интегрированная среда разработки (IDE – Integrated 
Development Environment) – это специальное приложение, которое 
позволяет упростить разработку программ на языке высокого 
уровня (рисунок).

Интегрированная среда разработки

Она обычно включает:
 - текстовый редактор – чтобы набрать текст программы, 
сохранить его на диске, редактировать. Такой редактор 
обычно еще и выделяет элементы кода разными цветами, подсказывает 
возможные ошибки синтаксиса, а иногда и создает 
фрагменты кода автоматически;
 - компилятор и компоновщик – чтобы перевести программу 
в машинный код;
 - средства отладки и запуска программ – чтобы обеспечить 
удобство поиска ошибок;
 - стандартные библиотеки, содержащие многократно 
используемые элементы программ;
 - справочную систему и др.
Для языка С++ существует достаточно много различных 
сред разработки. Мы будем использовать Microsoft Visual 
Studio. Эту систему можно установить на компьютеры с операционной 
системой (ОС) Windows. Для других ОС можно использовать, 
например, Code::Blocks или CLion. Они обладают 
похожим функционалом. 

1 Переменные и типы данных

1.1 Основные понятия языка

В тексте на любом естественном языке можно выделить 
четыре основных элемента: символы, слова, словосочетания и 
предложения. Подобные элементы содержит и язык програм-
мирования, только слова называют лексемами, словосочета-
ния – выражениями, а предложения – операторами.
Все тексты на языке пишутся с помощью его алфавита. 
Алфавит языка C++ включает:
 - прописные и строчные латинские буквы, а также сим-
вол подчеркивания, который употребляется наряду с буквами;
 - арабские цифры от 0 до 9;
 - специальные символы: , . ; : ? ! ‘ « | / \ ~ ^ ( ) { } [ ] < > # 
% & – = + *
 - пробельные символы: пробел, символы табуляции и 
перевода строки.
Алфавит языка в стандарте называется базовым набо-
ром символов.
Обратите внимание, что символы национальных алфа-
витов (в частности, русские) не входят в базовый набор симво-
лов по стандарту! Именно поэтому не рекомендуется исполь-
зовать русские буквы при задании имен в программе (хотя 
Visual Studio это позволяет).
Кроме того, существует понятие «набор символов ре-
ализации» – все множество символов, доступных на данном 
компьютере. Этот набор содержит базовый набор в качестве 
подмножества. Из символов базового набора составляются 
лексемы языка и директивы препроцессора. Символы из на-
бора реализации используются для написания комментариев.
Лексемы языка программирования аналогичны словам 
естественного языка. Это минимальные единицы языка, ко-
торые компилятор отличает и обрабатывает как единое целое. 
Например, лексемами являются константа 128 (но не ее часть 
12), имя Vasia, но не часть этого имени. Существуют следую-
щие виды лексем:
 - имена (идентификаторы);
 - ключевые слова;
 - знаки операций;

- разделители;
 - литералы (константы).
Идентификатор – это имя программного объекта (пе-
ременной, функции, константы и т.д.). Правила составления 
идентификаторов следующие:
 - в идентификаторе могут использоваться латинские 
буквы, цифры и знак подчеркивания;
 - первым символом идентификатора должна быть буква 
(со знака подчеркивания обычно начинаются служебные иден-
тификаторы);
 - прописные и строчные буквы различаются;
 - идентификатор не должен совпадать с ключевыми сло-
вами и именами используемых стандартных объектов языка;
 - длина идентификатора по стандарту не ограничена.
Не жалейте времени на придумывание подходящих 
имен. Имя должно отражать смысл переменной или функции, 
отвечать принятой нотации (правилам составления 
имен), и желательно, чтобы оно не содержало символов, которые 
можно перепутать друг с другом, например 1, l и I 
(единица, строчная L и прописная i). Примеры удачных идентификаторов: 
ageOfStudents, sumOfPositive, backColor.
Ключевые слова – это зарезервированные идентификаторы, 
которые имеют специальное значение для компилятора. 
Их можно использовать только в одном определенном смысле, 
например do, int, void и т.д. В Visual Studio ключевые слова 
выделяются синим цветом.
Список ключевых слов С++ приведен в приложении 1.
Знак операции – это один или более символов, определяющих 
действие над операндами. 
Операнд (англ. operand) в математике и в языках программирования – 
аргумент операции; данные, которые обрабатываются 
командой; математическое выражение, задающее 
значение аргумента операции. 
Внутри знака операции пробелы не допускаются. Символы, 
составляющие знак операции, могут быть как специальными, 
например &&, | и <, так и буквенными, такими как new 
или sizeof.
Литералы – это фиксированные значения (константы), 
которые не имеют имени. Но при этом литералы имеют тип, 

который компилятор определяет по их внешнему виду. На-
пример, если в программе записано число 456 – то это литерал 
целого типа, если число 45.6 – то это литерал вещественного 
типа. Строковый литерал – это набор символов в двойных ка-
вычках.
Из лексем составляются выражения и операторы.
Выражение задает правило вычисления некоторого зна-
чения. Например, выражение a + b задает правило вычисле-
ния суммы величин a и b. Выражение содержит знак операции 
(+) и операнды (a и b).
Оператор задает законченное описание некоторого дей-
ствия. Операторы делятся на исполняемые и неисполняемые, 
простые и составные. Исполняемые операторы задают дей-
ствия над данными. Неисполняемые операторы служат для 
описания данных, поэтому их часто называют операторами 
описания, например int a; – это оператор описания целочис-
ленной переменной a.
Составной оператор ограничивается фигурными скоб-
ками, а все остальные операторы должны завершаться точкой 
с запятой (;).

1.2 Представление чисел в памяти 
компьютера

Вся информация в памяти компьютера представляется в 
двоичной системе счисления. 
Один разряд двоичного числа называется битом. Бит 
может принимать значения 0 или 1 в зависимости от состоя-
ния электронной схемы (вкл/выкл). Однако отдельный бит 
памяти компьютера не имеет своего адреса, т.е. к нему нельзя 
обратиться как к самостоятельной единице.
Минимальная адресуемая единица памяти называется 
байтом. Байт состоит из 8 бит. С помощью такого количества 
двоичных разрядов можно закодировать 256 различных це-
лых чисел.
Чтобы понять, почему это именно так, представим, что у 
нас два бита. Сколько различных комбинаций из двух нулей и 
единиц можно придумать? Очевидно, что 4 (таблица 1.1). 

Таблица 1.1 – Возможные комбинации двоичных цифр в трех 
разрядах

Двоичное число
Соответствующее десятичное число
00
0
01
1
10
2
11
3

При этом 4 = 22 = 2количество разрядов.
Теперь представим, что у нас три бита. Возможные ком-
бинации нулей и единиц будут соответствовать приведенным в 
таблице 1.2.

Таблица 1.2 – Возможные комбинации двоичных цифр в трех 
разрядах

Двоичное число
Соответствующее десятичное число
000
0
001
1
010
2
011
3
100
4
101
5
110
6
111
7

И их всего 8 = 23 = 2количество разрядов.
Таким образом, легко заметить закономерность: если у 
нас n бит, то с их помощью можно закодировать 2n различных 
двоичных чисел. Причем максимальное из этих чисел будет 
равно 2n – 1 (и оно представляет собой единицы во всех разрядах).

Именно поэтому в байте можно разместить 256 различных 
целых чисел: 28 = 256. Причем это числа от 0 до 255. Но 
это в том случае, если мы собираемся хранить только неотрицательные 
числа.
Для хранения чисел со знаком (положительных и отрицательных) 
придумали первый (старший) бит числа отводить 
для кодирования знака: 0 – число неотрицательное, 1 – отри-

цательное. Тогда для хранения собственно значения (модуля) 
числа остается на один бит меньше, т.е. n – 1. (в байте 7 бит). 
А значит, максимальное положительное число, которое можно 
так закодировать, равно 2n–1 – 1 (рисунок 1.1).

Рисунок 1.1 – Принцип размещения целого числа 
со знаком в памяти компьютера

Вещественным называется число, которое может иметь 
дробную часть. Представим именно десятичное дробное число, 
например 0,058. Перед размещением в памяти такого числа 
компьютер его нормализует, т.е. представляет в виде

0,58*10-1

При этом число 0,58 называется мантиссой (первая 
цифра после запятой должна быть отличной от нуля), а число 
-1 – порядком. Кстати, почти в таком виде число можно вывести 
и на экран: 0.58E-1. Такая форма записи называется научной (
scientific).
В памяти компьютера ячейка, которая отводится под 
хранение вещественного числа, делится на две части (рисунок 
1.2): в одной хранится мантисса (со знаком), а в другой – 
порядок (со знаком). Какое именно количество бит отводится 
под то и другое, определяется реализацией компилятора.

Рисунок 1.2 – Принцип размещения 
вещественного числа в памяти компьютера

Если же нужно данное число вывести на экран в привычном 
нам виде (с фиксированной точкой), то производится 
обратное преобразование: мантисса умножается на 10порядок.

Доступ онлайн
2 000 ₽
В корзину