Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
л_1_Введение_в_С++.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
470.02 Кб
Скачать

Технологический цикл обработки программы

Технологический цикл обработки программы выглядит следующим образом:

Рис.1.4. Технологический цикл обработки программы

Упрощенная модель компиляции представлена на рисунке 1.5.

Рис.1.5. Упрощенная модель компиляции

Во всех языках программирования (в том числе и в С++) программа рассматривается как последовательность лексем. Лексема – это неделимая единица программы. Лексический анализ текста программы – это выделение основных категорий лексем языка (их мы рассмотрим на следующей лекции). Лексический анализ проводится в порядке расположения символов в программе. За очередную лексему принимается наибольший ряд символов, который может быть распознан как лексема. Например, запись a++-b трактуется как a++ -b, т.е. увеличить значение a на 1 и затем найти разность; запись elseif трактуется как elseif а не как else и if; if – также лексема (ни ‘i’, ни ‘f’ сами по себе не имеют в программе на С++ никакого значения); оператор равенства == также является лексемой. Строковая константа, даже содержащая пробельный символ, защищена от разбиения на лексемы и пробелы: "кафедра информатики".

Примеры выделения лексем:

предложение языка

результат лексического анализа

for (int i=1; i <=10; i++) ;

for ( int i = 1 ; i <= 10 ; i ++ ) ;

char name[] = "кафедра информатики" ;

char name [ ] = "кафедра информатики" ;

int i; float f;

int i ; float f ;

int /*описание*/ i /* счетчика*/ ;

int i ;

После лексического анализа текста программы, компилятор выполняет синтаксический анализ и затем – семантический анализ.

Синтаксис языка программированиясистема правил написания различных языковых конструкций. В процессе синтаксического анализа компилятор проверяет соответствие смысловых конструкций языка, построенных из лексем, синтаксису языка программирования. Нарушение этих правил приводит к синтаксическим ошибкам, выявляемым на этапе компиляции программы. Например:

int i, //error!!! определение переменной должен завершать символ ‘;’

float f;

Семантика языка программированияправила интерпретации операторов, определяющие смысл языковых конструкций, последовательность действий, которые выполнит компьютер при реализации конструкций языка. Нарушение этих правил приводит к семантическим ошибкам, выявляемым в процессе семантического анализа (трудно, а практически вообще не выявляемым на этапе компиляции и трудно выявляемым на этапе отладки и даже эксплуатации программы).

int i;

for (i=1; i <=10; i++)

cout << i; //вывод значения переменной i в цикле

for (i=1; i <=10; i++);

cout << i; //вывод последнего значения переменной i!!!