- Тема 1.1.Лексические основы языка программирования Общие сведения о программах, лексемах и алфавите
- 2.1. Основные понятия языков программирования.
- 2.2. Структуры и типы данных языка программирования
- 2.3. Ада Лавлейс – первый в мире программист
- 2.3.1. Краткая историческая справка
- 15Состав языков программирования: алфавит,синтаксис, семантика
- 17Простейшие типы данных: номинальный, перечислимый, ограниченный (. )(нужен номинальный)
- 18Векторы и алгебра векторов
- 19Конструктор-селектор вектора в различных языках программирования
- 20Матрицы и матричное исчисление
- 21Конструктор-селектор матриц в различных языках программирования
- 22Множества и алгебра множеств
Тема 1.1.Лексические основы языка программирования Общие сведения о программах, лексемах и алфавите
В тексте на любом естественном языке можно выделить четыре основные структурные компоненты: символы, слова, словосочетания и предложения. Подобные элементы содержит и любой алгоритмический язык: символы, лексемы, выражения и операторы. Лексемы образуются из символов, выражения из лексем, а операторы из выражений и лексем. Объединенная единым алгоритмом совокупность операторов образует программу на алгоритмическом языке.
Алфавит языка (или его символы) – это основные неделимые знаки, с помощью которых пишутся все тексты на языке.
- арабские цифры
- латинские буквы и знак подчеркивания
- специальные знаки: “ ‘ <> . , & ? () [] < >и т.д.
- пробельные символы (пробел, табуляция, символ перехода на новую строку)
Лексемы (или элементарные конструкции) – минимальная конструкция языка, имеющая самостоятельный смысл.
Из символов алфавита формируются следующие лексемы языка:
- идентификаторы;
- ключевые слова (служебные, зарезервированные);
- знаки операций;
- константы;
- разделители (скобки, точка, запятая, пробельные символы).
Границы лексем определяются другими лексемами, такими как разделители, знаки операций и комментариями.
Комментарий – это текст программы, который не анализируется компилятором и служит для пояснений текста. В С++ комментарии могут быть заданы двумя способами. Для однострочных комментариев используют символы //, как в нашем примере. Для многострочных комментариев можно использовать символы /* , */, между которыми и должен находится сам текст комментария. В тексте комментария могут содержаться любые символы, а вся последовательность символов эквивалентна символу пропуска (например, символу пробела). Комментарии одного типа не могут быть вложенными, однако можно использовать символы // для того, чтобы закомментировать символы /*… */, а символами /*…*/можно закомментировать //.
Рассмотрим каждый из видов лексем подробно.
Идентификатор – это набор символов, представляющих имя программного объекта. Правила написания идентификаторов в конкретном языке программирования указываются в справочниках по этому языку. Например в С++ идентификатор представляет собой последовательность из букв латинского алфавита, десятичных цифр и символов подчеркивания, начинающуюся не с цифры, причем прописные и строчные буквы различаются. На длину различаемой части идентификатора в С++ различные реализации накладывают свои ограничения (по стандарту длина не ограничена).
Ключевые слова – это идентификаторы, зарезервированные в языке для специального использования. Ключевые слова языка также перечисляются в справочнике по языку, но знакомится с ними имеет смысл по мере изучения конструкций языка программирования.
Пример ключевых слов в языке С++:
int – ключевое слово для описания переменных целого типа
if – ключевое слово для построения условной конструкции
Знаки операций — это один или более символов, определяющих действия над операндами. Знаки операций обеспечивают формирование и последующие вычисление выражений. Выражение задает правило для получения значения. Один и тот же знак операции может употребляться в различных выражениях и по-разному интерпретироваться в зависимости от контекста. (Например, унарный и бинарный минус). Для каждой операции задан тип операндов, над которыми может выполняться данная операция. Операндами могут быть выражения и их частные случаи – константы и переменные. Операции делятся на унарные, бинарные и тернарую по количеству операндов (1,2,3 соотвественно).
a++ или ++a – операция инкремента (увеличения на единицу)
a— или —a – операция декремента (уменьшения на единицу)
Все бинарные операции делятся на следующие основные группы:
- аддитивные (+,-);
- мультипликативные(*, /, %);
- поразрядные (&,|, ^);
- операции отношений (, =, ==, !=);
- логические (&&, ||);
- присваивания (=, *=, );
- и др.
Рассмотрим тернарную условную операцию.
выражение1? выражение2: выражение3;
Если истинно выржение1, то выполняется выражение2, иначе выполняется выражение3
Одним из принципиальных отличий С++ от С является возможность расширения действия стандартных операций (перегрузка операций), то есть распространения их действия на нестандартные для них операнды.
Все операции разделены на группы по приоритетам. Если в выражении встречаются операции с разными приоритетами, то сначала выполняются те, у которых приоритет выше. Если все операции имеют одинаковый приоритет, то они выполняются в соответствии с правилом ассоциативности либо слева направо, либо справа налево. Например,
Для изменения порядка выполнения операций используются круглые скобки.
Задание для самостоятельной работы. Изучить операции языка С++ и их приоритеты.
Константа – это лексема, представляющая изображение фиксированного числового (целого или вещественного), строкового или символьного значения.
вещественная 78.8, 5., .09, 0.2E-3
символьная – один или два символа, заключенные в кавычки ‘a’, ‘ab’, ‘\n’, ‘\n\t’;
строковая — последовательность символов, заключенная в кавычки “Hello, World”.
Последовательность символов, начинающаяся с обратной косой черты называется escape-последовательностями (управляющими) и используются для представления
- кодов, не имеющих графического изображения;
- символов “ ‘ \ ?
- любого символа, с помощью его шестнадцатеричного (\x) и восьмеричного кода (\) (от 0 до 255). Например, cout <<”\х61 \141”; //выведется два символа a.
Оператор задает законченное описание некоторого действия. (Существует путаница понятий, например, у Страуструпа оператор и операция – синонимы, а для таких элементов языка, как if, for используются выражение statement – утверждение, предложение, инструкция). Каждый оператор в С++ заканчивается точкой с запятой.
Для описания сложного действия требуется последовательность операторов. Операторы могут быть объединены в составной оператор или блок с помощью инструктивных скобок (например, в С++ инструктивными являются скобки <>). В этом случае они рассматриваются как один оператор.
Операторы бывают исполняемые и не исполняемые. Исполняемые операторы задают действия над данными. Неисполняемые операторы служат для описания данных, поэтому их называют операторами описания или просто описаниями.
Правила построения элементов языка определяет синтаксис языка, а их смысл и правила использования определяет семантика, и, следовательно, нарушение формы записи элементов языка приводит к синтаксическим ошибкам, а правильно написанный, но не отвечающий алгоритму оператор приводит к семантическим ошибкам (логическим, ошибками времени выполнения).
2.1. Основные понятия языков программирования.
Любой язык программирования должен включать следующие понятия:
алфавит– множество символов, с помощь которых записывается текст программы;
оператор – синтаксическая конструкция, предназначенная как для записи алгоритмических действий по преобразованию данных, так и для задания порядка выполнения других действий;
идентификатор (имя) – специальная неделимая группа символов из алфавита языка, используемая при записи операторов и ряда других элементов программы;
константа – идентификатор, имеющий постоянное значение, которое может быть в дальнейшем использовано в программе; изменять значение констант запрещается;
метка – элемент программы, предназначенный для указания в программе места, на которое затем можно передать управление.
переменная – элемент данных, с которыми производятся действия; переменная обозначается идентификатором; любая переменная характеризуется таким важным понятием, как
тип – множество значений переменной и, как следствие, множество допустимых операций над этой переменной;
подпрограмма – часть программы в виде отдельной синтаксической единицы, в которой описываются определенные действия; каждая подпрограмма имеет свое имя; подпрограммы, как правило, подразделяются на процедуры и функции;
выражение – элемент программы, содержащий последовательность констант и (или) переменных, соединенных знаками операций, либо включающий одну или несколько функций, аргументом которых может быть другое выражение; константы, переменные и выражения часто называют операндами.
2.2. Структуры и типы данных языка программирования
Любая программа на процедурном языке программирования, как правило, оперирует с числовыми данными, поэтому любой язык программирования содержит числовые типы, которые подразделяются на целые и вещественные типы. Ряд языков обладает по одному или двум представителям целых и вещественных типов (например, в Фортране-77 насчитывается три целых и два вещественных типа – с обычной и одинарной точностью, а в языке Object Pascal – 9 целых и 7 вещественных типов). Каждый тип характеризуется объемом занимаемой памяти и множеством допустимых значений операндов для данного типа.
Современные языки программирования содержат, кроме того, логический, символьный и строковый (текстовый) типы. Практически ни один язык программирования не обходится без массивов. Язык Pascal весьма богат множеством стандартных типов и позволяет программистам создавать свои, пользовательские, типы.
2.3. Ада Лавлейс – первый в мире программист
2.3.1. Краткая историческая справка
Августа Ада Кинг Лавлейс (англ. Augusta Ada King Byron, Countess of Lovelace), английский математик.
Род деятельности: математика
Дата рождения: 10 декабря 1815 г.
Место рождения: Лондон, Великобритания.
Дата смерти: 27 ноября 1852 г.
Авгу́ста А́да Кинг (урождённая Ба́йрон), графиня Ла́влейс (англ. Augusta Ada King Byron, Countess of Lovelace, обычно упоминается просто Ада Лавлейс; 10 декабря 1815, Лондон, Великобритания — 27 ноября 1852, там же) — английский математик. Известна прежде всего созданием описания вычислительной машины, проект которой был разработан Чарльзом Бэббиджем. Составила первую в мире программу (для этой машины). Ввела в употребление термины «цикл» и «рабочая ячейка».
15Состав языков программирования: алфавит,синтаксис, семантика
Язык программирования — формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под ее управлением.
Алфавит – фиксированный для данного языка набор символов (букв, цифр, специальных знаков и т.д.), которые могут быть использованы при написании программы.
Синтаксис — правила построения из символов алфавита специальных конструкций, с помощью которых составляется алгоритм.
Семантика — система правил толкования конструкций языка.
17Простейшие типы данных: номинальный, перечислимый, ограниченный (. )(нужен номинальный)
а) Перечисляемый тип— в программировании тип данных, чьё множество значений представляет собой ограниченный список идентификаторов. (например typeCardsuit = (clubs, diamonds, hearts, spades) )
б) Ограниченный тип данных — интервал значений порядкового типа, называемого базовым типом. Описание типа задаёт наименьшее и наибольшее значения, входящие в этот интервал. (НапримерVara: 1..25; ch: ‘a’ ..’z’
Здесь переменные а и ch могут принимать значения только из указанного интервала; базовым типом для переменой а является целый тип, а для переменной ch — символьный.) Переменная ограниченного типа сохраняет все свойства переменных базового типа.
18Векторы и алгебра векторов
Вектор – элемент векторного пространства, одномерный массив данных. С точки зрения математики, после выбора базиса пространства, вектор представляет собой набор величин (координат вектора), которые меняются строго определённым образом при изменении базиса и системы координат, причём изменившиеся величины полагаются координатами того же самого вектора
в новом базисе и новой системе координат.
Задается в var как array[1..n] of (тип)
19Конструктор-селектор вектора в различных языках программирования
20Матрицы и матричное исчисление
Матрица – двумерный массив данных
Матрица размеров m x n — система mn чисел (элементов матрицы), расположенных в прямоугольной таблице из m строк и n столбцов. Если m = n, матрицу называют квадратной матрицей порядка n.
Действия над матрицами: сложение, умножение на число, умножение матриц, транспонирование.
двумерный массив это массив, элементами которого выступают другие массивы с данными (массив в массиве). Вложенность массивов может быть не только двумерной.
21Конструктор-селектор матриц в различных языках программирования
22Множества и алгебра множеств
Множество-совокупность некоторых обьектов, объединённых по одному признаку. Множество не содержащее ни одного элемента называют пустым множеством. Объекты, из которых состоит множество, называются его элементами. Множества принято обозначать заглавными буквами латинского алфавита, а их элементы-малыми буквами. Элементы множества записывают в фигурных скобках, внутри которых они перечислены, либо указано общее свойство, которым обладают все элементы данного множества.