- •Максимов м.Н.
- •3. Скалярные типы и выражения 51
- •5. Адреса, указатели, массивы, память 96
- •6. Функции, указатели, ссылки 133
- •7 Структуры, объединения и классы 171
- •Введение
- •Модуль 1
- •1.2. Этапы подготовки исполняемой программы
- •1.3. Системы счисления
- •Представление чисел от 0 до 16 в разных системах счисления
- •2.1. Общие сведения о программах, лексемах и алфавите
- •2.2. Идентификаторы и служебные слова
- •2.3. Типы данных
- •2.4. Константы
- •Типы, выбираемые компилятором по умолчанию для целых констант
- •ZzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzТаблица 2.3 Данные вещественного типа
- •2.5. Операции
- •2.6. Разделители
- •3. Скалярные типы и выражения
- •3.1. Определение и описание переменных
- •3.2. Явное и неявное преобразование типа
- •Проектные задания
- •Тесты рубежного контроля
- •Квалиметрическая оценка
- •Список литературы
- •Модуль 2
- •4.1. Последовательно выполняемые операторы
- •4.2. Операторы выбора
- •If( выражение) оператор_1 else оператор_2
- •4.3. Операторы цикла
- •4.4. Операторы передачи управления
- •If (условие) break;
- •4.5. Примеры численного моделирования цепей первого порядка
- •5. Адреса, указатели, массивы, память
- •5.1. Указатели и адреса объектов
- •5.2. Адресная арифметика, типы указателей и операции над ними
- •5.3. Свойства указателя типа void*
- •5.4. Свойства объекта cout
- •5.5. Массивы и указатели
- •5.6. Многомерные массивы, массивы указателей, динамические массивы
- •Проектные задания к модулю
- •Тесты рубежного контроля
- •Квалиметрическая оценка
- •6.2. Функции с переменным количеством параметров
- •6.3. Рекурсивные функции
- •6.4. Подставляемые (инлайн-) функции
- •6.5. Функции и массивы
- •6.6. Указатели на функции
- •Void f3(float) (...) // Определение функции
- •Int* f4(char *){...} // Определение функции
- •Проектные задания
- •Тесты рубежного контроля
- •Квалиметрическая оценка
- •Модуль 4
- •7 Структуры, объединения и классы
- •7.1 Структура как тип и совокупность данных
- •7.3 Объединения разнотипных данных
- •7.4 Деревья
- •7.5 Битовые поля структур и объединений
- •7.6 Компонентные функции структурированных объектов
- •7.7 Расширение действия (перегрузка) стандартных операций
- •7.8 Доступ к компонентам структурированного объекта
- •7.9 Классы и шаблоны
- •Проектные задания
- •Тесты рубежного контроля
- •Квалиметрическая оценка
- •Список литературы
- •Приложение 1
- •Приложение 2 Стандартная библиотека функций языка Си
2.1. Общие сведения о программах, лексемах и алфавите
Основная программная единица на языке Си++ это текстовый файл с названием имя.срр, где срр – принятое расширение для программ на Си++, а имя выбирается достаточно производно (желательно из восьми латинских символов без пробелов). Текст программы, написанный на алфавите языка Си++, состоит из лексических элементов, т.е. лексем, с помощью которых строятся выражения, определения, описания, операторы и т.д. Для распознавания начала и конца отдельных лексем используются пробельные разделители. К пробельным разделителям относятся собственно символы пробелов, символы табуляции, символы перехода на новую строку и также комментарии.
Алфавит и лексемы языка Си++.
В алфавит языка Си++ входят:
прописные и строчные буквы латинского алфавита;
цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;
специальные знаки:
“ {} , | [] () + = / % \ ; ‘ : ? < = > _ ! & # ~ ^ . *
Из символов алфавита формируются лексемы языка:
идентификаторы;
ключевые (служебные, иначе зарезервированные) слова;
константы;
знаки операций;
разделители (знаки пунктуации).
Поскольку в алфавит языка Си++ не входят символы кириллицы, то, следовательно, нельзя их использовать при создании программ на этом языке.
2.2. Идентификаторы и служебные слова
Идентификатор (имя)– последовательность из букв латинского алфавита, десятичных цифр и символов подчеркивания, начинающаяся не с цифры:
Array, point1, a, point_2, Point_2, refer
Прописные и строчные буквы различаются. Допустимое число символов в имени зависит от версии компилятора. Компиляторы фирмы Borland различают не более 32-х первых символов любого идентификатора.
Ключевые (служебные) слова – это идентификаторы, зарезервированные в языке для специального использования. Ключевые слова Си++:
asm |
double |
New |
Switch |
Auto |
else |
operator |
template |
Break |
enum |
private |
this |
Case |
extern |
protected |
throw |
Catch |
float |
public |
try |
Char |
for |
register |
typedef |
Class |
friend |
return |
typeid |
Const |
goto |
Short |
union |
continue |
if |
signed |
unsigned |
default |
inline |
sizeof |
virtual |
Delete |
int |
Static |
void |
Do |
long |
Struct |
volatile |
|
|
|
while |
Для компиляторов фирмы Borland дополнительно введены ключевые слова:
Cdecl |
_export |
_loads |
_saveregs |
_cs |
far |
Near |
_seg |
_ds |
huge |
Pascal |
_ss |
_es |
interrupt |
_regparam |
|
Там же введены как служебные слова регистровые переменные:
_AH |
_BH |
_CH |
_DH |
_SI |
_SP |
_SS |
_AL |
_BL |
_CL |
_DL |
_DI |
_CS |
_ES |
_AX |
_BX |
_CX |
_DX |
_BP |
_DS |
_FLAGS |
Кроме того, идентификаторы, включающие два подряд символа подчёркивания ( __ ), резервируются для дальнейших реализаций Си++ и стандартных библиотек. Идентификаторы, начинающиеся с символа подчёркивания ( _ ), используются в реализациях языка Си. В связи с этим не рекомендуется выбирать идентификаторы, начинающиеся с одного или двух знаков подчёркивания.