Процедурное программирование на языке C++

Содержание

Слайд 2

Алгоритм – последовательность действий, направленных на достижение конкретного результата

Алгоритм – последовательность действий, направленных на достижение конкретного результата

Слайд 3

Программа – последовательность команд (инструкций), выполняемых процессором и описывающих алгоритм на языке

Программа – последовательность команд (инструкций), выполняемых процессором и описывающих алгоритм на языке программирования
программирования

Слайд 4

Данные – информация, которая обрабатывается в процессе выполнения программы

Данные – информация, которая обрабатывается в процессе выполнения программы

Слайд 5

Современные языки программирования

Современные языки программирования

Слайд 6

Машинный код

Машинный код

Слайд 7

Ассемблерный код

Ассемблерный код

Слайд 8

Код на языке С

Код на языке С

Слайд 9

Код на языке С#

Код на языке С#

Слайд 10

Основные преимущества языков низкого уровня
Прямой доступ к аппаратным ресурсам
Малый размер исполняемого файла
Высокая

Основные преимущества языков низкого уровня Прямой доступ к аппаратным ресурсам Малый размер
скорость выполнения

Слайд 11

Основной недостаток языков низкого уровня – сложность программирования из-за огромных размеров исходного

Основной недостаток языков низкого уровня – сложность программирования из-за огромных размеров исходного кода
кода

Слайд 12

Главное преимущество языков высокого уровня – быстрота разработки сложных программных продуктов

Главное преимущество языков высокого уровня – быстрота разработки сложных программных продуктов

Слайд 13

Основные недостатки языков высокого уровня
Ограниченный доступ к аппаратным ресурсам
Большой размер исполняемого файла
Сравнительно

Основные недостатки языков высокого уровня Ограниченный доступ к аппаратным ресурсам Большой размер
невысокая скорость выполнения

Слайд 14

Основные этапы разработки программы
Постановка задачи
Проектирование
Кодирование

Основные этапы разработки программы Постановка задачи Проектирование Кодирование

Слайд 15

На этапе постановки задачи программист выясняет у заказчика требования к программе

На этапе постановки задачи программист выясняет у заказчика требования к программе

Слайд 16

На этапе проектирования программист выбирает алгоритм для написания программы

На этапе проектирования программист выбирает алгоритм для написания программы

Слайд 17

На этапе кодирования программист переводит алгоритм на какой-либо язык программирования

На этапе кодирования программист переводит алгоритм на какой-либо язык программирования

Слайд 18

Этапы создания исполняемого файла (.exe)

Этапы создания исполняемого файла (.exe)

Слайд 19

Препроцессор включает в исходный текст программы заголовочные файлы, содержащие описания используемых элементов

Препроцессор включает в исходный текст программы заголовочные файлы, содержащие описания используемых элементов

Слайд 20

Компилятор выявляет синтаксические ошибки и, в случае их отсутствия, строит объектный модуль

Компилятор выявляет синтаксические ошибки и, в случае их отсутствия, строит объектный модуль (.obj)
(.obj)

Слайд 21

Компоновщик формирует исполняемый модуль программы (.exe) из объектных модулей (.obj) и библиотечных

Компоновщик формирует исполняемый модуль программы (.exe) из объектных модулей (.obj) и библиотечных файлов (.lib)
файлов (.lib)

Слайд 22

Литералы
Строковый
Символьный
Целочисленный
Вещественный
Логический

Литералы Строковый Символьный Целочисленный Вещественный Логический

Слайд 23

Строковый литерал – последовательность символов, заключенная в двойные кавычки
“The C++ Programming Language”

Строковый литерал – последовательность символов, заключенная в двойные кавычки “The C++ Programming Language”

Слайд 24

Символьный литерал – одиночный символ, заключенный в одинарные кавычки
‘!’ ‘A’ ‘8’

Символьный литерал – одиночный символ, заключенный в одинарные кавычки ‘!’ ‘A’ ‘8’

Слайд 25

Целочисленный литерал – любое положительное или отрицательное целое число
-15 100 OxFF

Целочисленный литерал – любое положительное или отрицательное целое число -15 100 OxFF

Слайд 26

Вещественный литерал – дробное число, представленное в форме с десятичной точкой либо

Вещественный литерал – дробное число, представленное в форме с десятичной точкой либо
в экспоненциальной форме
-5.7 5e10 11e-3

Слайд 27

Логический литерал
true (истина)
false (ложь)

Логический литерал true (истина) false (ложь)

Слайд 28

Понятие переменной

Понятие переменной

Слайд 29

Переменная –
именованная область оперативной памяти, предназначенная для хранения изменяемого значения указанного

Переменная – именованная область оперативной памяти, предназначенная для хранения изменяемого значения указанного типа
типа

Слайд 30

Типы данных

Целочисленный
Символьный
Вещественный
Логический

Типы данных Целочисленный Символьный Вещественный Логический

Слайд 31

Целочисленные типы

signed short (2 байта) -32768 … 32767
unsigned short (2 байта) 0 …

Целочисленные типы signed short (2 байта) -32768 … 32767 unsigned short (2
65535
signed int (4 байта – равен размеру машинного слова) -2 147 483 648 … 2 147 483 647

Слайд 32

Целочисленные типы

unsigned int (4 байта – равен размеру машинного слова) 0 … 4

Целочисленные типы unsigned int (4 байта – равен размеру машинного слова) 0
294 967 295
signed long (4 байта) -2 147 483 648 … 2 147 483 647
unsigned long (4 байта) 0 … 4 294 967 295

Слайд 33

Целочисленные типы

signed long long (8 байт) -9 223 372 036 854 775 808

Целочисленные типы signed long long (8 байт) -9 223 372 036 854
… 9 223 372 036 854 775 807
unsigned long long (8 байт) 0 … 18 446 744 073 709 551 615

Слайд 34

Тип данных int строго не определён стандартом языка и должен быть равен

Тип данных int строго не определён стандартом языка и должен быть равен размеру машинного слова
размеру машинного слова

Слайд 35

Размер машинного слова определяется архитектурой (разрядностью) операционной системы

Размер машинного слова определяется архитектурой (разрядностью) операционной системы

Слайд 36

Однако в соответствии со стандартом языка тип данных int не должен быть

Однако в соответствии со стандартом языка тип данных int не должен быть
меньше short (2 байта) и не должен превышать long (4 байта)

Слайд 37

Символьные типы

signed char(1 байт) -128 … 127
unsigned char (1 байт) 0 … 255

Символьные типы signed char(1 байт) -128 … 127 unsigned char (1 байт) 0 … 255

Слайд 38

Тип данных char представляет один символ в кодировке ASCII

Тип данных char представляет один символ в кодировке ASCII

Слайд 39

ASCII (American standard code for information interchange) — название таблицы (кодировки), в которой символам сопоставлены числовые коды 

ASCII (American standard code for information interchange) — название таблицы (кодировки), в

Слайд 41

Например, символу ‘D’ соответствует ASCII-код 68, а символу ‘d’ – ASCII-код 100 

Например, символу ‘D’ соответствует ASCII-код 68, а символу ‘d’ – ASCII-код 100

Слайд 42

Вещественные типы

float (4 байта) 3.4E-38 … 3.4E+38
double (8 байт) 1.7E-308 … 1.7E+308

Вещественные типы float (4 байта) 3.4E-38 … 3.4E+38 double (8 байт) 1.7E-308 … 1.7E+308

Слайд 43

Логический тип

bool (1 байт) true false

Логический тип bool (1 байт) true false

Слайд 44

Для того чтобы использовать в программе переменную, ее необходимо объявить

Для того чтобы использовать в программе переменную, ее необходимо объявить

Слайд 45

Синтаксис объявления переменных:
тип_переменной имя_переменной;

Синтаксис объявления переменных: тип_переменной имя_переменной;

Слайд 46

Имя переменной называется идентификатором

Имя переменной называется идентификатором

Слайд 47

Правила именования идентификаторов:

Имя переменной не может начинаться с цифры
Имя переменной может содержать

Правила именования идентификаторов: Имя переменной не может начинаться с цифры Имя переменной
буквы, цифры и знак подчеркивания «_»
Имя переменной не может являться ключевым или служебным словом
Имя переменной должно быть уникальным
Имя переменной должно быть осмысленным

Слайд 49

Константа –
именованная область оперативной памяти, предназначенная для хранения постоянного значения указанного

Константа – именованная область оперативной памяти, предназначенная для хранения постоянного значения указанного типа
типа

Слайд 50

Синтаксис объявления константы:
const тип_константы имя_ константы = значение;

Синтаксис объявления константы: const тип_константы имя_ константы = значение;

Слайд 51

Литералы, рассмотренные ранее, представляют собой константы, непосредственно включаемые в текст программы

Литералы, рассмотренные ранее, представляют собой константы, непосредственно включаемые в текст программы

Слайд 52

Литералы отличаются от констант тем, что они не имеют идентификаторов

Литералы отличаются от констант тем, что они не имеют идентификаторов

Слайд 53

Ввод данных

Ввод данных

Слайд 54

Синтаксис ввода данных:
cin >> имя_переменной;

Синтаксис ввода данных: cin >> имя_переменной;

Слайд 56

Понятие оператора

Понятие оператора

Слайд 57

Оператор – это конструкция языка программирования, которая выполняет определённое действие над аргументами

Оператор – это конструкция языка программирования, которая выполняет определённое действие над аргументами (операндами)
(операндами)

Слайд 58

Операнд - это аргумент оператора, то есть то значение, над которым оператор

Операнд - это аргумент оператора, то есть то значение, над которым оператор выполняет действие
выполняет действие

Слайд 59

В зависимости от количества операндов операторы бывают:

Унарные
Бинарные
Тернарные

В зависимости от количества операндов операторы бывают: Унарные Бинарные Тернарные

Слайд 60

Оператор присваивания

Оператор присваивания

Слайд 61

Синтаксис оператора присваивания:
имя_переменной = выражение;

Синтаксис оператора присваивания: имя_переменной = выражение;

Слайд 63

Множественные присваивания - присваивания одного и того же значения нескольким переменным одновременно

Множественные присваивания - присваивания одного и того же значения нескольким переменным одновременно

Слайд 64

Арифметические операторы

Оператор сложения (бинарный)
Оператор вычитания (бинарный)
Оператор умножения (бинарный)
Оператор деления (бинарный)

Арифметические операторы Оператор сложения (бинарный) Оператор вычитания (бинарный) Оператор умножения (бинарный) Оператор деления (бинарный)

Слайд 65

Арифметические операторы

Оператор остаток от деления (бинарный)
Оператор минус (унарный)
Оператор инкремент (унарный)
Оператор декремент (унарный)

Арифметические операторы Оператор остаток от деления (бинарный) Оператор минус (унарный) Оператор инкремент (унарный) Оператор декремент (унарный)

Слайд 66

Сокращённые формы операторов: += -= *= /= %=

Сокращённые формы операторов: += -= *= /= %=

Слайд 67

Приведение типов

Приведение типов

Слайд 68

Выражение –
конструкция, состоящая из операндов, объединенных знаками операций

Выражение – конструкция, состоящая из операндов, объединенных знаками операций

Слайд 69

Результат вычисления выражения характеризуется значением и типом

Результат вычисления выражения характеризуется значением и типом

Слайд 70

В выражение могут входить операнды различных типов

В выражение могут входить операнды различных типов

Слайд 71

Если операнды имеют одинаковый тип, то результат операции будет иметь тот

Если операнды имеют одинаковый тип, то результат операции будет иметь тот же тип
же тип

Слайд 72

Если операнды разных типов, то они должны быть приведены к одному

Если операнды разных типов, то они должны быть приведены к одному типу перед вычислением выражения
типу перед вычислением выражения

Слайд 73

В этом случае выполняется неявное (автоматическое) расширяющее преобразование типов операндов по

В этом случае выполняется неявное (автоматическое) расширяющее преобразование типов операндов по определенным правилам
определенным правилам

Слайд 74

Эти правила обеспечивают преобразование более коротких типов в более длинные для

Эти правила обеспечивают преобразование более коротких типов в более длинные для сохранения значимости и точности
сохранения значимости и точности

Слайд 77

Неявное расширяющее преобразование типа может также происходить при присваивании переменной результата

Неявное расширяющее преобразование типа может также происходить при присваивании переменной результата выражения
выражения

Слайд 78

Неявное преобразование типа при присваивании переменной результата выражения может быть сужающим

Неявное преобразование типа при присваивании переменной результата выражения может быть сужающим

Слайд 79

Сужающие преобразования бывают:

с потерей точности (данных)
с переполнением разрядной сетки
с изменением интерпретации внутреннего

Сужающие преобразования бывают: с потерей точности (данных) с переполнением разрядной сетки с
представления данных

Слайд 80

Приведение типов может быть явным

Приведение типов может быть явным

Слайд 81

Явное приведение типов указывается программистом в коде программы

Явное приведение типов указывается программистом в коде программы

Слайд 82

Синтаксис явного приведения типа:
(тип) выражение;

Синтаксис явного приведения типа: (тип) выражение;

Слайд 84

Структура ветвления

Структура ветвления

Слайд 85

Операторы отношения

== (равно)
!= (не равно)
> (больше)
>= (больше либо равно)
< (меньше)
<= (меньше

Операторы отношения == (равно) != (не равно) > (больше) >= (больше либо равно)
либо равно)

Слайд 86

Операторы отношения предназначены для составления логических выражений

Операторы отношения предназначены для составления логических выражений

Слайд 87

Результат вычисления любого логического выражения –
ИСТИНА или ЛОЖЬ

Результат вычисления любого логического выражения – ИСТИНА или ЛОЖЬ

Слайд 89

Логические операторы

&& (логическое умножение, логическое И)
|| (логическое сложение, логическое ИЛИ)
!

Логические операторы && (логическое умножение, логическое И) || (логическое сложение, логическое ИЛИ)
(логическое отрицание, логическое НЕ)

Слайд 90

Логические операторы предназначены для объединения логических выражений

Логические операторы предназначены для объединения логических выражений

Слайд 92

Логическое «ИЛИ»

5 == 5 || 5 == 9
// true, потому что

Логическое «ИЛИ» 5 == 5 || 5 == 9 // true, потому
первое выражение true
5 > 3 || 5 > 10
// true, потому что первое выражение true
5 > 8 || 5 < 10
// true, потому что второе выражение true
5 < 8 || 5 > 2
// true, потому что оба выражения true
5 > 8 || 5 < 2
// false, потому что оба выражения false

Слайд 93

Логическое «И»

5 == 5 && 4 == 4
// true, потому что

Логическое «И» 5 == 5 && 4 == 4 // true, потому
оба выражения true
5 == 3 && 4 == 4
// false, потому что первое выражение false
5 > 3 && 5 > 10
// false, потому что второе выражение false
5 < 8 && 5 > 2
// true, потому что оба выражения true
5 > 8 && 5 < 2
// false, потому что оба выражения false

Слайд 94

Логическое «НЕ»

!(10 != 10)
// true, потому что выражение false
!(5 > 3)
//

Логическое «НЕ» !(10 != 10) // true, потому что выражение false !(5
false, потому что выражение true

Слайд 95

Оператор ветвления «if»

if (выражение)
{
// оператор_1;
}
else
{
// оператор_2;
}

Оператор ветвления «if» if (выражение) { // оператор_1; } else { // оператор_2; }

Слайд 96

Оператор ветвления «if»

if (выражение)
{
// оператор;
}

Оператор ветвления «if» if (выражение) { // оператор; }

Слайд 97

Оператор ветвления «if»

if (выражение_1)
{ // оператор_1; }
else if (выражение_2)

Оператор ветвления «if» if (выражение_1) { // оператор_1; } else if (выражение_2)
{ // оператор_2; }
else
{ // оператор_3; }

Слайд 98

Таблица приоритетов операций

Таблица приоритетов операций

Слайд 99

Структура повторения

Структура повторения

Слайд 100

Структура повторения позволяет программисту определить действие, которое должно повторяться, пока некоторое условие

Структура повторения позволяет программисту определить действие, которое должно повторяться, пока некоторое условие остается истинным
остается истинным 

Слайд 101

В языке программирования С++ структура повторения  реализуется с помощью оператора цикла

В языке программирования С++ структура повторения реализуется с помощью оператора цикла

Слайд 102

Виды циклов

Цикл с предусловием (while)
Цикл с постусловием (do while)
Параметрический цикл (for)

Виды циклов Цикл с предусловием (while) Цикл с постусловием (do while) Параметрический цикл (for)

Слайд 103

Цикл с предусловием while

while (выражение)
{
// оператор
// или группа
// операторов
}

Цикл с предусловием while while (выражение) { // оператор // или группа // операторов }

Слайд 104

Цикл с постусловием do while

do
{
// оператор
// или группа
// операторов
}
while

Цикл с постусловием do while do { // оператор // или группа
(выражение);

Слайд 105

Параметрический цикл for

Параметрический цикл for

Слайд 106

Массивы

Массивы

Слайд 107

Массив –
это совокупность элементов, объединенных под общим именем и имеющих один

Массив – это совокупность элементов, объединенных под общим именем и имеющих один
и тот же тип данных

Слайд 108

Каждый элемент массива является самостоятельной единицей и представляет собой переменную или константу

Каждый элемент массива является самостоятельной единицей и представляет собой переменную или константу

Слайд 109

Все элементы массива располагаются в памяти последовательно друг за другом и имеют

Все элементы массива располагаются в памяти последовательно друг за другом и имеют
свой индекс – смещение относительно начала массива

Слайд 110

Объявление массива

Синтаксис объявления массива:
тип_данных имя_массива[количество_элементов];
int numbers[4];
const int nSize = 6;
double

Объявление массива Синтаксис объявления массива: тип_данных имя_массива[количество_элементов]; int numbers[4]; const int nSize = 6; double arr[nSize];
arr[nSize];

Слайд 111

Инициализация массива

тип_данных имя_массива[количество элементов] = {значение1, значение2, ... значение n};

Инициализация массива тип_данных имя_массива[количество элементов] = {значение1, значение2, ... значение n};

Слайд 112

Количество элементов массива можно не указывать. Размер массива определяется исходя из числа

Количество элементов массива можно не указывать. Размер массива определяется исходя из числа
элементов в списке инициализации.

int arrayInit[] = { 2, 33, 4 }; // массив из трех элементов

Слайд 113

Если значений в списке инициализации меньше чем количество элементов массива, то оставшиеся

Если значений в списке инициализации меньше чем количество элементов массива, то оставшиеся
значения автоматически заполняются нулями

int arr[6] = { 1, 2, 3 };
// такая запись эквивалентна записи:
int arr[6] = { 1, 2, 3, 0, 0, 0 };

Слайд 114

Если значений в списке инициализации больше чем количество элементов массива, то происходит

Если значений в списке инициализации больше чем количество элементов массива, то происходит
ошибка на этапе компиляции

// int arr[2] = {1, 2, 3}; // Ошибка на этапе компиляции

Слайд 115

Расположение массива в памяти

Формула, согласно которой производится позиционирование по массиву:
базовый

Расположение массива в памяти Формула, согласно которой производится позиционирование по массиву: базовый
адрес + размер базового типа * индекс;

Слайд 116

Операция индексирования массива

Запись значения в массив:
имя_массива[индекс_элемента] = значение;
Получение значения из массива:
cout <<

Операция индексирования массива Запись значения в массив: имя_массива[индекс_элемента] = значение; Получение значения
имя_массива[индекс_элемента];
const int nArraySize = 3;
int ar[nArraySize];
ar[1] = 7;
cout << ar[1] << endl;

Слайд 117

Большинство операций с массивами разумно проводить с помощью итерационных (переборных) циклов, по

Большинство операций с массивами разумно проводить с помощью итерационных (переборных) циклов, по очереди перебирая элементы
очереди перебирая элементы

Слайд 118

Циклическая обработка массива

Циклическая обработка массива

Слайд 119

Линейный поиск элемента в массиве

Линейный поиск элемента в массиве

Слайд 120

Бинарный поиск элемента в массиве

Бинарный поиск элемента в массиве

Слайд 121

Сортировка массива прямым обменом (метод «пузырька»)

Сортировка массива прямым обменом (метод «пузырька»)