
- •1. Лекция: Начальные сведения о языке
- •2. Лекция: Имена, переменные и константы Имена
- •Переменные
- •Константы
- •3. Лекция: Операции и выражения Выражения
- •Операция присваивания
- •Арифметические операции
- •Операции сравнения
- •Порядок вычисления выражений
- •4. Лекция: Операторы Что такое оператор
- •Операторы-выражения
- •Объявления имен
- •Операторы управления
- •Условные операторы
- •Операторы цикла
- •Оператор возврата
- •Оператор перехода
- •5. Лекция: Функции Вызов функций
- •Имена функций
- •Необязательные аргументы функций
- •Рекурсия
- •6. Лекция: Встроенные типы данных Общая информация
- •Целые числа
- •Вещественные числа
- •Логические величины
- •Символы и байты
- •Кодировка, многобайтовые символы
- •Наборы перечисляемых значений
- •7. Лекция: Классы и объекты Понятие класса
- •Определение методов класса
- •Переопределение операций
- •Подписи методов и необязательные аргументы
- •Запись классов
- •8. Лекция: Производные типы данных Массивы
- •Структуры
- •Битовые поля
- •Объединения
- •Указатели
- •Адресная арифметика
- •Связь между массивами и указателями
- •Безтиповый (нетипизированный) указатель
- •Нулевой указатель
- •Строки и литералы
- •9. Лекция: Распределение памяти Автоматические переменные
- •Статические переменные
- •Динамическое выделение памяти
- •Выделение памяти под строки
- •Рекомендации по использованию указателей и динамического распределения памяти
- •Распределение памяти при передаче аргументов функции
- •Рекомендации по передаче аргументов
- •10. Лекция: Производные классы, наследование
- •Виртуальные методы
- •Виртуальные методы и переопределение методов
- •Преобразование базового и производного классов
- •Внутреннее и защищенное наследование
- •Абстрактные классы
- •Множественное наследование
- •Виртуальное наследование
- •11. Лекция: Контроль доступа к объекту Интерфейс и состояние объекта
- •Объявление friend
- •Использование описателя const
- •Доступ к объекту по чтению и записи
- •12. Лекция: Классы – конструкторы и деструкторы
- •Копирующий конструктор
- •Деструкторы
- •Инициализация объектов
- •Операции new и delete
- •13. Лекция: Дополнительные возможности классов Переопределение операций
- •Как определять операции
- •Преобразования типов
- •Явные преобразования типов
- •Стандартные преобразования типов
- •Преобразования указателей и ссылок
- •Преобразования типов, определенных в программе
- •14. Лекция: Компоновка программ, препроцессор Компоновка нескольких файлов в одну программу
- •Проблема использования общих функций и имен
- •Использование включаемых файлов
- •Препроцессор
- •Определение макросов
- •Условная компиляция
- •Дополнительные директивы препроцессора
- •15. Лекция: Определение, время жизни и области видимости переменных в больших программах Файлы и переменные
- •Общие данные
- •Глобальные переменные
- •Повышение надежности обращения к общим данным
- •Область видимости имен
- •Оператор определения контекста namespace
- •16. Лекция: Обработка ошибок Виды ошибок
- •Возвращаемое значение как признак ошибки
- •Исключительные ситуации
- •Обработка исключительных ситуаций
- •Примеры обработки исключительных ситуаций
- •17. Лекция: Ввод-вывод
- •Манипуляторы и форматирование ввода-вывода
- •Строковые потоки
- •Ввод-вывод файлов
- •18. Лекция: Шаблоны Назначение шаблонов
- •Функции-шаблоны
- •Шаблоны классов
- •"Интеллигентный указатель"
- •Задание свойств класса
Константы
В программе можно явно записать величину – число, символ и т.п. Например, мы можем записать выражение x + 4 – сложить текущее значение переменной x и число 4. В зависимости от того, при каких условиях мы будем выполнять программу, значение переменной x может быть различным. Однако целое число четыре всегда останется прежним. Это неизменяемая величина или константа.
Таким образом, явная запись значения в программе – это константа.
Далеко не всегда удобно записывать константы в тексте программы явно. Гораздо чаще используются символические константы. Например, если мы запишем
const int BITS_IN_WORD = 32;
то затем имя BITS_IN_WORD можно будет использовать вместо целого числа 32.
Преимущества такого подхода очевидны. Во-первых, имя BITS_IN_WORD (битов в машинном слове) дает хорошую подсказку, для чего используется данное число. Без комментариев понятно, что выражение
b / BITS_IN_WORD
(значение b разделить на число 32) вычисляет количество машинных слов, необходимых для хранения b битов информации. Во-вторых, если по каким-либо причинам нам надо изменить эту константу, потребуется изменить только одно место в программе – определение константы, оставив все случаи ее использования как есть. (Например, мы переносим программу на компьютер с другой длиной машинного слова.)
3. Лекция: Операции и выражения Выражения
Программа оперирует с данными. Числа можно складывать, вычитать, умножать, делить. Из разных величин можно составлять выражения, результат вычисления которых – новая величина. Приведем примеры выражений:
X * 12 + Y // значение X умножить на 12 и к результату прибавить значение Y
val < 3 // сравнить значение val с 3
-9 // константное выражение -9
Выражение, после которого стоит точка с запятой – это оператор-выражение. Его смысл состоит в том, что компьютер должен выполнить все действия, записанные в данном выражении, иначе говоря, вычислить выражение.
x + y – 12; // сложить значения x и y и затем вычесть 12
a = b + 1; // прибавить единицу к значению b и запомнить результат в переменной a
Выражения – это переменные, функции и константы, называемые операндами, объединенные знаками операций. Операции могут быть унарными – с одним операндом, например, минус; могут быть бинарные – с двумя операндами, например сложение или деление. В Си++ есть даже одна операция с тремя операндами – условное выражение. Чуть позже мы приведем список всех операций языка Си++ для встроенных типов данных. Подробно каждая операция будет разбираться при описании соответствующего типа данных. Кроме того, ряд операций будет рассмотрен в разделе, посвященном определению операторов для классов. Пока что мы ограничимся лишь общим описанием способов записи выражений.
В типизированном языке, которым является Си++, у переменных и констант есть определенный тип. Есть он и у результата выражения. Например, операции сложения (+), умножения (*), вычитания (-) и деления (/), примененные к целым числам, выполняются по общепринятым математическим правилам и дают в результате целое значение. Те же операции можно применить к вещественным числам и получить вещественное значение.
Операции сравнения: больше (>), меньше (<), равно (==), не равно (!=) сравнивают значения чисел и выдают логическое значение: истина (true) или ложь (false).