
- •Языки программирования и методы трансляции
- •1.Условный оператор if
- •Концепция типа данных
- •Основные типы данных
- •Целый тип (int)
- •Вещественные типы: типы с плавающей точкой
- •Логический тип (double)
- •Символьный тип (char)
- •Расширенный символьный тип (wchar_t)
- •Перечисления (enum)
- •Указатели
- •Какие существуют модификаторы уровня доступа?
- •Реализация конструкторов
- •Реализация деструкторов
- •Вызов конструкторов
- •Вызов деструкторов
- •101 Конструкции распределенного и параллельного программирования
Языки программирования и методы трансляции
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); // выполняется вызов функции