Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
69
Добавлен:
17.05.2015
Размер:
519.68 Кб
Скачать

Языки программирования и методы трансляции

95. Базовые понятия языков программирования на примере языка С++ ( или Паскаль ): программа, переменная, константа, оператор, процедура, функция, директива.

Базовые средства языка С.

В тексте на любом естественном языке можно выделить четыре основных элемента: символы, слова, словосочетания и предложения. Подобные алгоритмы содержит и алгоритмический язык, только слова называют лексемами, словосочетания - выражениями, а предложения – операторами. Лексемы образуются из символов, выражения – из лексем и символов, а операторы – из символов, выражений и лексем.

Оператор - задает оконченное описание какого-либо действия.

Выражение – задает правила вычисления некоторого значения, может состоять как из лексем, так и из символов.

Лексема – единица текста программы, которая воспринимается компилятором как единое целое и по смыслу не может быть разделено на более мелкие составляющие.

Символы – элементарная частица любого алфавита. Каждый элемент языка определяется синтаксисом и семантикой. Синтаксические определения устанавливают правила построения элементов языка, а семантика определяет их смысл и правила использования. Объединенная единым алгоритмом совокупность описаний и операторов образует программу на алгоритмическом языке. Для того чтобы выполнить программу, требуется перевести ее на язык, понятный процессору – в машинные коды. Этот процесс состоит из нескольких этапов.

Этапы создания исполнительной программы.

Текст исходного модуля нашей программы поступает на вход препроцессора, где при помощи директив в него добавляются выполняемые файлы. Пополненный таким образом исходный модуль составляет полный текст нашей программы. Эта программа в свою очередь подается на вход компилятора, который проверяет ее на наличие лексических, семантических и синтаксических ошибок. В том случае если ошибок не обнаружено, компилятор выдает нам объектный код, который поступает на вход компоновщика, сюда же поступают объектные коды других присутствующих в исходном тексте программ модулей и добавляет библиотечные файлы. На выходе компоновщика получаем собранную из объектных кодов и библиотек исполняемую программу.

Этапы создания программы показаны на рис 1.

Алфавит языка С++ включает в себя:

1) прописные и строчные латинские буквы и знак подчеркивания;

2) арабские цифры от 0 до 9;

3) специальные знаки: “ { } , | [ ] ( ) + - / % * . \ и т. д.

4) пробельные символы.

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

  • Идентификаторы – это имя программного объекта;

  • Ключевые слова – это зарезервированные идентификаторы, которые имеют специальное значение для компилятора ( н-р asm,else,new,enum и др.) ;

  • Знаки операций – это один или более символов, определяющих действие над операндами ( н-р :: - доступ к области видимости, [ ] – индексация, ( ) – вызов функции, << >> - операции сдвига и др.) ;

  • Константы;

  • Разделители (или знаки пунктуации, входят в состав лексем языка. н-р [ ]- используется для ограничения символов одно или многомерных массивов, а также для записи индексирующих элементов. Пр-р int A[x]; { }- используется для обозначения начала или конца); составного оператора или блока и т. д. );

Включаемые файлы(.h)

Исходный текст Исходный текст

Модуля 1 (.cpp) Модуля n (.cpp)

Препроцессор Препроцесс

Полный текст модуля 1 (.cpp) Полный текст модуля n (.cpp)

Компилятор Компилятор

Объектный код модуля 1 (.obj) Объектный код модуля n (.obj)

Библиотечные файлы (.lib)

Модуля 1 (.cpp)

Компановщик

Исполняемая программа (.exe)

Константы

Константами называют неизменяемые величины. Различаются целые, вещественные, символьные и строковые константы. Компилятор, выделив константу в качестве лексемы, относит ее к одному из типов по ее внешнему виду. Константы бывают

  • Символьные - один или два символа, заключенные в апострофы ( н-р, ‘А’ ’db”);

  • Строковая – последовательность символов, заключенная в кавычки;

  • целые числа: десятичный(8,0,199), 16-ные (0xA,0X00FF), 8-ные(01,020);

  • вещественные числа – это те константы представленные в формате с плавающей точкой.

  • константы перечисляемого типа,

  • нулевой указатель(null,NULL).

Структура программы

Программа на языке С++ состоит из функций, описаний и директив препроцессора. Одна из функций должна иметь имя main. Выполнение программы начинается с первого оператора этой функции. Простейшее определение функции имеет следующий формат:

тип_возвращаемого_значения имя ( [ параметры ] ) {

операторы, составляющие тело функции

}

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

#include <iostream.h>

int main(){

int i;

cout <<”введите целое число\n”;

cin >> i;

cout << “Вы ввели число “ << i <<”, спасибо!”;

return 0;

}

Заголовочный файл <iostream.h> содержит описание набора классов для управления вводом/выводом. В нем определены стандартные объекты-потоки cin для ввода с клавиатуры и cout для вывода на экран, а также операции помещения в поток << и чтения из потока>>.

Переменные

Переменная – это именованная область памяти, в которой хранятся данные определенного типа. У переменной есть имя и значение. Имя служит для обращения к области памяти, в которой хранится значение. Во время выполнения программы значение переменной можно изменять. Перед использованием любая переменная должна быть описана.Например описание целой переменной с именем a и вещественной переменной x: int a: float x; Общий вид оператора описания переменных:

[класс памяти] [const] тип имя [инициализатор];

Необязательный класс памяти может принимать одно из значений auto, extern, static и register. Модификатор const показывает, что значение переменной изменять нельзя. Такую переменную называют именованной const. При описании можно присвоить переменной начальное значение, это называется инициализацией. Константа должна быть инициализирована при объявлении. В одном операторе можно описать несколько операторов одного типа, разделяя их запятыми. Описание переменной, кроме типа и класса памяти, явно или по умолчанию задает ее область действия. Область действия идентификатора – это часть программы, в которой его можно использовать для доступа к связанной с ним области памяти. В зависимости от области действия переменная может быть локальной или глобальной.

Если переменная определена внутри блока, она называется локальной, область ее действия – от точки описания до конца блока, включая все вложенные блоки. Если переменная определена вне любого блока, она называется глобальной и областью ее действия считается файл, в котором она определена, от точки описания до его конца.

Оператор

Любое выражение, завершающееся точкой с запятой, рассматривается как оператор, выполнение которого заключается в вычислении выражения. Частным случаем выражения является пустой оператор. Примеры:

i++; // выполняется операция инкремента

a*= b+c; // выполняется умножение с присваиванием

fun(i,k); // выполняется вызов функции

Соседние файлы в папке шпоры