- •Этапы создания исполняемой программы
- •Идентификаторы
- •Ключевые слова
- •Комментарии
- •Структура программы
- •Вывод данных
- •Ввод данных
- •Вопросы для самоконтроля
- •Тема 1.1(2). Типы данных. Константы и переменные
- •Основные (стандартные) типы данных
- •Область действия переменных
- •1.3.1. Математические операции
- •1.3.2. Простое присваивание
- •1.3.3. Составное (сложное) присваивание
- •1.3.4. Операция приведения (преобразования) типов
- •1.3.5. Операции отношения
- •1.3.7. Операция sizeof
- •1.3.8. Операция "запятая" (,)
- •1.3.9. Условная операция (?:)
- •1.3.10. Указатель. Определение адреса переменной
- •1.3.11. Директива define
- •1.3.12. Директива include
- •1.3.13. Примеры программ
- •1.3.14. Вопросы для самоконтроля
- •Тема 1.3. Программирование алгоритмов различной структуры
- •Базовые конструкции структурного программирования
- •Операторы ветвления
- •1.4.1. Условный оператор if
- •If (условие) оператор_1; else оператор_2;
- •If (условие) оператор_1;
- •1.4.2. Оператор выбора switch
- •Операторы цикла
- •1.4.3. Оператор while
- •1.4.4. Оператор do...While
- •1.4.5. Оператор for
- •1.4.6. Функция exit(), операторы break, continue, return
- •Стандартные математические функции
- •Тема 1.4. Ввод-вывод данных
- •Функции get() и put()
- •Функция getch()
- •Функция printf
- •Функция sprintf()
- •Тема 1.5. Функции. Локальные и глобальные переменные. Способы передачи данных.
- •1.5.1. Видимость переменных
- •1.5.2. Определение функции
- •1.5.3. Функция main
- •1.5.4. Вызов функции
- •1.5.5. Способы передачи данных
- •1.5.6. Возвращаемые значения функции
- •1.5.7. Использование прототипов функций
- •Тема 1.6(1). Массивы и указатели
- •Объявление массива
- •Доступ к элементам массива
- •Многомерные массивы
- •Указатели
- •Тема 1.6(2). Структуры и строки
- •1.6.1. Структуры
- •1 Способ – по шаблону.
- •2 Способ – при объявлении (описании) шаблона.
- •1.6.2. Способы реализации строк
- •1.6.3. Строковые константы
- •1.6.4. Указатель на символьную строку
- •1.6.5. Массив символов
- •1.6.6. Некоторые функции для работы со строками
- •1.6.7. Некоторые функции проверки и преобразования символов
- •Тема 1.7. Работа с памятью
- •Функция malloc
- •Функция free
- •Операция new
- •Операция delete
- •Тема 1.10. Динамические структуры
- •Разновидности динамических структур
- •Примеры программ (фрагментов программ) для работы с динамическими структурами
ТРПП (3
курс)
Тема 1.1(1). Лексика ЯП С++. Структура программы
Тема 1.1(1). Лексика ЯП С++. Структура программы
Цели изучения темы
-
ознакомиться с лексикой языка программирования С++;
-
изучить структуру программы;
-
Состав языка программирования С++
В тексте на любом алгоритмическом языке можно выделить четыре основных элемента:
-
алфавит языка (или его символы) – это основные неделимые знаки, с помощью которых пишутся все тексты на языке;
-
слово (или лексема, или элементарная конструкция) – минимальная единица языка, имеющая самостоятельный смысл;
-
выражение – задает правило вычисления некоторого значения;
-
оператор – задает законченное описание некоторого действия.
Для описания сложного действия требуется последовательность операторов. Операторы могут быть объединены в составной оператор (блок).
Составной оператор (блок) – это последовательность операторов, которые рассматриваются как один оператор.
В языке С++ блоком (составным оператором) считается последовательность операторов, заключенных в фигурные скобки:
{
оператор1;
оператор2;
…..;
операторN;
}
Объединенная единым алгоритмом совокупность описания и операторов образует программу на алгоритмическом языке (языке программирования). Для того чтобы выполнить программу, требуется перевести ее в машинные коды – язык, понятный процессору. Этот процесс состоит из нескольких этапов.
Этапы создания исполняемой программы
-
Набирается исходный текст модуля (файл с расширением .cpp).
-
Программа (исходный текст модуля) передается препроцессору, который выполняет директивы, содержащиеся в ее тексте.
Препроцессором называется первая фаза компилятора.
Инструкции (команды) препроцессора называются директивами. Например, включение в текст так называемых заголовочных файлов – текстовых файлов, в которых содержаться описания используемых в программе элементов. Включаемые файлы имеют расширение .h.
Инструкции препроцессора начинаются с символа #, перед которым в строке могут находиться только пробельные символы (см. 1.1.2. Алфавит языка С++).
В результате выполнения директив препроцессора формируется полный текст модуля программы (файл с расширением .cpp).
-
Полный текст модуля поступает на вход компилятора, который распознает выражения и операторы и преобразует их в машинные коды. При этом компилятор выявляет синтаксические ошибки. В случае отсутствия ошибок строится объектный модуль программы (файл с расширением .obj).
-
Компоновщик (или редактор связей) формирует исполняемый модуль программы, подключая к объектному модулю другие объектные модули (как из стандартных библиотек, так и пользовательские). Исполняемый модуль имеет расширение .exe и запускается на выполнение обычным образом.
Программа может состоять из нескольких модулей (исходных файлов). В этом случае все исходные файлы компилируются по отдельности и объединяются на этапе компоновки.
Схема создания исполняемой программы
-
Алфавит языка С++
Алфавит С++ включает:
-
прописные и строчные латинские буквы и знак подчеркивания;
-
арабские цифры от 0 до 9;
-
специальные знаки:
“ { } , | [ ] ( ) + – / % * . \
‘ : ? < = > ! & # ~ ; ^
-
пробельные символы: пробел, символ табуляции, символ перехода на новую строку.
-
Идентификаторы
Идентификатор – это имя программного объекта.
Правила выбора (создания) идентификатора:
-
в идентификаторе могут использоваться латинские буквы, арабские цифры и знак подчеркивания;
-
прописные и строчные буквы различаются; например, SpK, SPK и spk – три различных имени;
-
первым символом может быть буква или знак подчеркивания; не рекомендуется начинать со знака подчеркивания, т.к. они могут совпасть с именами системных функций или переменных;
-
пробелы внутри имён не допускаются;
-
идентификатор не должен совпадать с ключевыми (зарезервированными) словами и именами используемых стандартных объектов языка.
ПРИМЕЧАНИЕ.
Существует соглашение о правилах создания имен, называемое венгерской нотацией (предложил её сотрудник компании Microsoft венгр по национальности), по которому каждое слово, составляющее идентификатор, начинается с прописной буквы, а в начале ставится префикс, соответствующий типу величины. Например, iMaxLength, lNumberOfTask.
Другая традиция – разделять слова, составляющие имя, знаками подчеркивания. Например, max_length, number_of_task.