§ 1. Введение Программирование на С++ 1
Транслятор Компилятор Интерпретатор Программирование на С++ 2
Язык программирования Си разработан в 1972 году сотрудником фирмы AT&T Bell Laboratories Денисом Ритчи. Прообразом является язык Би, разработанный Кеном Томпсоном. Разработчиком языка Си++ является Бьерн Страуструп (начало 80 -х). Программирование на С++ 3
Первая программа на языке С++ #include
Оформление комментариев: // комментарий следует до конца строки /* а такой комментарий можно записывать в несколько строк */ Программирование на С++ 5
Алфавит языка: A, B, …, Z, a, b , …, z, 0, 1, …, 9 + - * / < > = | & ! ~ ‘ @ # $ % ? _ : ; , . ( ) [ ] { } “ Программирование на С++ 6
Идентификатор – это последовательность символов из латинского алфавита, арабских цифр и символа подчеркивания, которая начинается не с цифры. Примеры идентификатора: a, x 1, x 2, mas, n_student Программирование на С++ 7
Операции задают некоторое действие. Пример унарной операции: - (минус) Примеры бинарных операций: + (сложение) - (вычитание) * (умножение) / (деление) % (остаток от деления) Пример тернарной операции: ? : Программирование на С++ 8
Выражение – это последовательность знаков операций, операндов и круглых скобок, которая задает вычислительный процесс получения результата (-b+sqrt(D))/(2*a) Операндами могут выступать: константы 2 переменные b, D, a выражения 2*a вызовы функций sqrt(D) Программирование на С++ 9
Операция простого присваивания: x = 5 Программирование на С++ 11
Унарные операции инкремента: a++ ++a (a = a + 1) Унарные операции декремента: a-- --a (a = a - 1) Составные операции присваивания: a a a += -= *= /= %= b b b (a (a (a = = = a a a Программирование на С++ + * / % b) b) b) 12
Операция запятая: i=1, j=0, k=5 Программирование на С++ 13
Запись действий, которые должен выполнить компьютер, состоит из операторов. Операторы выполняются последовательно, один за другим заканчиваются точкой с запятой, могут содержать несколько действий, которые разделены запятой. Программирование на С++ 14
Примеры операторов Программирование на С++ 15
Пустой оператор содержит только точку с запятой ; Программирование на С++ 16
Выражение, после которого стоит точка с запятой, – это оператор-выражение. При выполнении этого оператора вычисляется значение выражения. Пример: a + b; c++; Программирование на С++ 17
Оператор, в котором используется операция присваивания, называют оператором присваивания. Пример: c = a + b; Программирование на С++ 18
Операторы можно объединять в блоки (составные операторы) при помощи фигурных скобок. Пример: { a = 0; b = a + 5; } Программирование на С++ 19
Различают также операторы объявления имен и операторы управления Программирование на С++ 20
§ 2. Типы данных Программирование на С++ 21
Тип данных определяет множество допустимых значений, множество разрешенных операций и способ хранения в памяти. Программирование на С++ 22
Базовые (встроенные) типы данных. Тип void (пустой тип) не имеет значений, он используется чаще всего для описания функций, не возвращающих значения. Все остальные базовые типы являются скалярными, то есть числовыми Программирование на С++ 23
Программирование на С++ 24
Типы bool, char и все целые типы (int, short, long) являются целочисленными типами. Типы float и double – вещественными. Программирование на С++ 25
Определение числа байт, отводимых для типа данного: sizeof(тип) sizeof(переменная) Программирование на С++ 26
Операции над целыми числами: + * / % сложение вычитание умножение целочисленное деление остаток от деления Программирование на С++ 27
Побитовые операции над целыми: ~a a << b a >> b a & b a ^ b a | b Побитовое НЕ Сдвиг влево Сдвиг вправо Побитовое Исключающее ИЛИ Побитовое ИЛИ Программирование на С++ 28
Операции над вещественными числами: + * / сложение вычитание умножение деление Программирование на С++ 29
Логические операции Операции сравнения: < меньше > больше <= меньше или равно >= больше или равно == равно != не равно Программирование на С++ 30
В языках C / C++ истиной считается любое числовое значение, отличное от нуля; ложью – ноль. Если логическое выражение истинно, то его результатом будет единица, если ложно – ноль. Пример: 5 >= 1 равно 1 5 < 1 равно 0 Программирование на С++ 31
Операция логическое И (конъюнкция) && A 0 0 1 1 B 0 1 A && B 0 0 0 1 Программирование на С++ 32
Операция логическое ИЛИ (дизъюнкция) || A 0 0 1 1 B 0 1 A || B 0 1 1 1 Программирование на С++ 33
Операция логическое НЕ (отрицание) ! A 0 1 !A 1 0 Программирование на С++ 34
Приоритет операций НЕ И ИЛИ Программирование на С++ 35
Пример логического условия: (a > 10 || b >= 10) && (a <= 0 || b < 0) Программирование на С++ 36
На основе базовых типов можно определять производные типы данных. Скалярные (числовые) типы данных: перечисления указатели ссылки Структурные типы данных: массивы структуры объединения классы Программирование на С++ 37
Преобразование типов В операторах и выражениях должны использоваться переменные и константы только одного типа. При смешивании типов в одном выражении компилятор использует набор правил для автоматического преобразования типов (так называемое неявное преобразование). Программирование на С++ 38
Если операция выполняется над данными двух различных типов, обе величины приводятся к высшему из двух типов (повышение типа). Последовательность имен типов, упорядоченных от высшего типа к низшему, выглядит так: double, float, long, int, short, char. Применение ключевого слова unsigned повышает ранг соответствующего типа данных со знаком. В операторе присваивания конечный результат вычисления выражения в правой части приводится к типу переменной, которой должно быть присвоено это значение. Программирование на С++ 39
Существует также явное преобразование типа: (тип) выражение Например: int a = 1, b = 2; float x; x = (float) a / (float) b; Программирование на С++ 40
§ 3. Переменные, константы и указатели Программирование на С++ 41
Оператор объявления переменной тип имя_переменной; тип имя_переменной = значение; Пример: int a; long b = 100; Допускается множественное объявление переменных: int a, c = 0; long b = 100, d = 500; Программирование на С++ 42
Константы литеральные символические Тип и значение литеральной константы определяется ее внешним видом числовые 17 3. 14 символьные ’A’ ’n’ ’t’ строковые ”Constant” Программирование на С++ 43
Суффиксы для задания числовых констант long a = 5000 l unsigned int b = 250 u unsigned long c = 555 ul float x = 3. 14 f long double y = 3 e 250 l Программирование на С++ 44
Определение символических констант: const тип имя_константы = значение; Пример: const int five = 5; const float PI = 3. 14; Применение препроцессора для задания констант: #define five 5 #define PI 3. 14 Программирование на С++ 45
Применение перечисления для задания констант: enum number {ZERO, ONE, THREE = 3, FOUR, FIVE} получаем константы со значениями 0, 1, 3, 4, 5 Программирование на С++ 46
При объявлении переменной имеет значение место ее объявления – от этого зависит возможность ее использования в различных частях программы. Переменные глобальные локальные Характеристики время жизни область видимости Программирование на С++ 47
Время жизни переменной – это то время работы программы, когда существует переменная. Область видимости – это участок кода программы, в котором возможен доступ к переменной. Программирование на С++ 48
Локальные переменные объявляются внутри блока (между фигурными скобками) область видимости - между определением переменной и концом блока время жизни - время выполнения блока Программирование на С++ 49
Глобальные переменные объявляются вне рамок какого-либо блока область видимости – до конца файла время жизни – время выполнения всей программы Программирование на С++ 50
Если в программе объявлены глобальная и локальная переменные с одинаковыми именами, то в блоке, в котором видны обе эти переменные, обращение происходит к локальной переменной. Для обращения к глобальной переменной используется операция : : Пример: int a { int a, b, c; b = a; // локальная переменная c = : : a; // глобальная переменная } Программирование на С++ 51
Указатели Указатель – это объект, содержащий адрес объекта или функции. Объявление указателя: тип *идентификатор; Пример: int *ptr; float *p; // // Указатель на переменную типа int Указатель на переменную типа float Программирование на С++ 52
Определение адреса ячейки памяти, содержащей переменную – операция &. Пример: int a = 5; float x = 3. 14; ptr = &a; p = &x; Программирование на С++ 53
Операция косвенной адресации * позволяет обратиться к переменной через указатель, содержащей адрес этой переменной (то есть косвенно, а не напрямую). Пример: int b = *ptr; float y = *p; // b = 5 // y = 3. 14 Можно сказать, что операция * является обратной к &. Программирование на С++ 54
Когда объявляется переменная – указатель, то автоматически не выделяется память под объект, на который ссылается указатель! Пример: int *q; // Указатель q на объект целого типа *q = 5; // Ошибка! Не выделена память под объект int c=*q; // Логическая ошибка! По адресу q «ничего нет» Программирование на С++ 55
Язык C содержит функции malloc и calloc библиотеки stdlib. h выделения области памяти. В языке C++ появился оператор new выделения памяти под объект. Пример: int *t; t = new int; *t = 10; int d = *t; int *f = new int (25); Программирование на С++ 56
В случае успешного выполнения оператор new возвращает адрес выделенного участка памяти, иначе - NULL Программирование на С++ 57
На рисунке показано, что указатель и объект (переменная), адрес которого хранит указатель – это два различных объекта в памяти компьютера. Указатель Переменная Программирование на С++ 58
Язык C содержит функцию free библиотеки stdlib. h освобождения области памяти. В языке C++ используется оператор delete освобождения памяти. Пример: delete t; Если значение t равно NULL, то delete ничего не выполняет. Если же t не содержит значения адреса выделенной ранее памяти, то поведение функции delete не определено. Программирование на С++ 59
Ссылки – видоизмененная форма указателя, используется в качестве псевдонима переменной. При объявлении ссылки используется символ &. Пример: int a = 5; int &b = a; b += 5; // Переменная a станет равна 10 Ссылки используют для различных целей, например при передаче параметров функциям. Программирование на С++ 60


