Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций Программирование.doc
Скачиваний:
9
Добавлен:
03.05.2019
Размер:
1.16 Mб
Скачать

2.1.1 Общие сведения о программах, лексемах и алфавите языка

Следуя классикам, начнем с примера программы, выводящей на экран фразу "Hello, World!"

// HELLO.CPP - имя файла с программой

#include <iostream.h>

void main() {

cout << "\nHello, World!\n";

}

Основная программная единица на языке Си++ - это текстовый файл с названием <имя>.срр, где cpp - принятое расширение для программ на Си++, а имя выбирается достаточно произвольно. Для удобства ссылок и сопоставления программ с их внешними именами целесооб­разно помещать в начале текста каждой программы строку коммен­тария с именем файла, в котором она находится. Текстовый файл с программой на Си++ вначале обрабатывает препроцессор, который распознает команды (директивы) препроцессора (каждая такая ко­манда начинается с символа '#') и выполняет их. В приведенной вы­ше программе использована препроцессорная команда include <имя вставляемого файла>

Выполняя препроцессорные директивы, препроцессор изменяет исходный текст программы. Команда <include> вставляет в програм­му заранее подготовленные тексты из включаемых файлов. Сформи­рованный таким образом измененный текст программы поступает на компиляцию. Компилятор, во-первых, выделяет из поступившего к нему текста программы лексические элементы, т.е. лексемы, а затем на основе грамматики языка распознает смысловые конструкции языка (выражения, определения, описания, операторы и т.д.), построенные из этих лексем. Фазы работы компилятора здесь рассматривать нет необходимости. Важно только отметить, что в результате работы компилятора формируется объектный модуль программы.

Компилятор, выполняя лексический анализ текста программы на языке Си++, для распознавания начала и (или) конца отдельных лек­сем использует пробельные разделители. К пробельным разделителям относятся собственно символы пробелов, символы табуляции, символы перехода на новую строку. Кроме того, к пробельным разделите­лям относятся комментарии.

В языке Си++ есть два способа задания комментариев. Традици­онный способ (ведущий свое происхождение от многих предше­ствующих языков, например, ПЛ/1, Си и т.д.) определяет коммента­рий как последовательность символов, ограниченную слева парой символов /*, а справа - парой символов */. Между этими граничны­ми парами может размещаться почти любой текст, в котором разре­шено использовать не только символы из алфавита языка Си++, но и другие символы (например, русские буквы):

/* Это комментарий */

ANSI-стандартом запрещено вкладывать комментарии друг в друга, однако многие компиляторы предусматривают режим, допус­кающий вложение комментариев.

Второй способ (введенный в Си++) определяет комментарий как последовательность символов, началом которой служат символы //, а концом - код перехода на новую строку. Таким образом, одностроч­ный комментарий имеет вид:

// Это однострочный комментарий, специфичный для языка Си++

2.1.2. Алфавит и лексемы языка СИ++.

В алфавит языка Си++ входят

  • прописные и строчные буквы латинского алфавита;

  • цифры 0, 1, 2, 3, 4, 5, 6 7, 8, 9;

  • специальные знаки: " { } , | [ ] ( ) + - / % \ ; ' : ? < = > _ ! & # ~ ^ . *

Из символов алфавита формируются лексемы языка:

  • идентификаторы;

  • ключевые (служебные, иначе зарезервированные) слова;

  • константы;

  • знаки операций;

  • разделители (знаки пунктуации).