- 15Состав языков программирования: алфавит,синтаксис, семантика
- 17Простейшие типы данных: номинальный, перечислимый, ограниченный (. )(нужен номинальный)
- 18Векторы и алгебра векторов
- 19Конструктор-селектор вектора в различных языках программирования
- 20Матрицы и матричное исчисление
- 21Конструктор-селектор матриц в различных языках программирования
- 22Множества и алгебра множеств
- 5.5. Языки программирования: определения языка программирования, алфавита, синтаксиса и семантики языка; классификация и общая характеристика языков программирования высокого уровня.
- 6.1. Компьютерные сети. Основные понятия: определение компьютерной сети, её состав; определение коммуникационной сети и её основные компоненты.
- 21.1. Синтаксис и семантика языков программирования
- 21.2. Структура языков программирования
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Множества и алгебра множеств
Множество-совокупность некоторых обьектов, объединённых по одному признаку. Множество не содержащее ни одного элемента называют пустым множеством. Объекты, из которых состоит множество, называются его элементами. Множества принято обозначать заглавными буквами латинского алфавита, а их элементы-малыми буквами. Элементы множества записывают в фигурных скобках, внутри которых они перечислены, либо указано общее свойство, которым обладают все элементы данного множества.
5.5. Языки программирования: определения языка программирования, алфавита, синтаксиса и семантики языка; классификация и общая характеристика языков программирования высокого уровня.
Языки программирования – искусственные языки (формальные) специально созданные для общения человека с компьютером. Каждый язык программирования, равно как и «естественный» язык русский, английский и т.д., имеет алфавит, словарный запас, свою грамматику и синтаксис, а также семантику.
Алфавит – фиксированный для данного языка набор основных символов, допускаемых для составления текста программы на этом языке.
Синтаксис – система правил, определяющих допустимые конструкции языка программирования из букв алфавита.
Семантика – система правил однозначного толкования отдельных языковых конструкций, позволяющих произвести процесс обработки данных.
Языки программирования делятся на языки программирования низкого и высокого уровня.
Языки программирования низкого уровня – это машинно-ориентированные языки, позволяющие создавать программы из машинных кодов (например, Ассемблер).
Языки программирования, имитирующие естественные языки, обладающие укрупненными командами, ориентированные на решение прикладных содержательных задач, называются языками программирования высокого уровня.
Классификация языков программирования высокого уровня:
1.Процедурные языки программирования. Программа на процедурном языке программирования состоит из последовательности операторов (инструкций), задающих процедуру решения задачи. (Например, Фортран, Бейсик, Си, Паскаль).
2.Объективные языки программирования. Программа рассматривается как набор объектов, содержащих в себе наборы структур данных и процедур, взаимодействующих с другими объектами. (Например, Visual Basic, Си++, Делфи).
3.Логические языки программирования. Логическое программирование основано на теории и аппарате математической логики. Программа представляет собой описание абстрактной модели решаемой задачи в виде логических аксиом. (Например, Пролог).
4.Функциональные языки программирования. Функциональное программирование использует математическое понятие функции для выражения действия. Программа на функциональном языке программирования строится в виде системы функций. (Например, Лисп).
Для языков программирования высокого уровня характерно:
-алфавит языка значительно шире машинного, повышает наглядность и понятность текста;
-используется аппарат переменных и действия с ними;
-поддерживается широкий набор типов данных;
-набор допустимых для использования операций, выбирается из соображений удобства формулирования алгоритмов решения задач;
-конструкции команд (операторов) задаются в удобном для человека виде и отражают содержательные виды обработки данных.
6.1. Компьютерные сети. Основные понятия: определение компьютерной сети, её состав; определение коммуникационной сети и её основные компоненты.
Компьютерная сеть – совокупность компьютеров, соединенных с помощью сети передачи данных в единую систему для обмена сообщениями и доступа пользователей к ресурсам сети.
Основные компоненты компьютерной сети:
1.Абонент сети – объект, генерирующий или потребляющий информацию в сети. Абонентами могут быть отдельные компьютеры, компьютерные комплексы, промышленные роботы, станки с ЧПУ и т.д.
2.Станция – аппаратура, которая выполняет функции приема и передачи информации. Для организации взаимодействия абонентов необходима физическая среда передачи данных.
Физическая среда передачи – линии связи или пространства, в котором распространяются сигналы и аппаратура передачи данных. На базе физической среды передачи строится коммуникационная сеть, которая обеспечивает передачу информации сети. Коммуникационная сеть включает в себя следующие компоненты:
1.Передатчик – устройство является источником данных (чаще компьютер).
2.Приемщик – устройство принимающее данные (компьютер, терминал, любое другое цифровое устройство).
3.Сообщение – цифровые данные определенного формата, предназначенные для передачи (таблица, фотоснимок, таблица базы данных).
4.Средство передачи — физически передающая среда и аппаратура обеспечивающая передачу данных.
21.1. Синтаксис и семантика языков программирования
У каждого языка программирования, как и у любого естественного языка, есть свои синтаксис и семантика.
Синтаксис — совокупность правил некоторого языка, определяющих формирование его элементов. Иначе говоря, это совокупность правил образования семантически значимых последовательностей символов в данном языке. Синтаксис задается с помощью правил, которые описывают понятия некоторого языка. Примерами понятий являются: переменная, выражение, оператор, процедура. Последовательность понятий и их допустимое использование в правилах определяет синтаксически правильные структуры, образующие программы. Именно иерархия объектов, а не то, как они взаимодействуют между собой, определяются через синтаксис. Например, оператор может встречаться только в процедуре, а выражение в операторе, переменная может состоять из имени и необязательных индексов и т.д. Синтаксис не связан с такими явлениями в программе, как «несоответствие типов» или «переменная с данным именем не определена». Этим занимается семантика.
Семантика — правила и условия, определяющие соотношения между элементами языка и их смысловыми значениями, а также интерпретацию содержательного значения синтаксических конструкций языка. Объекты языка программирования не только размещаются в тексте в соответствии с некоторой иерархией, но и дополнительно связаны между собой посредством других понятий, образующих разнообразные ассоциации. Например, переменная, для которой синтаксис определяет допустимое местоположение только в описаниях и некоторых операторах, обладает определенным типом, может использоваться с ограниченным множеством операций, имеет адрес, размер и должна быть описана до того, как будет использоваться в программе.
Текст исходной программы на языке высокого уровня представляет собой обычный тестовый файл. Для его «чтения» и превращения в последовательность машинных команд, прежде всего, выполняется синтаксический анализ текста программы.
Синтаксический анализатор — компонента компилятора, осуществляющая проверку исходных операторов на соответствие синтаксическим правилам и семантике данного языка программирования. Несмотря на название, анализатор занимается проверкой и синтаксиса, и семантики. Он состоит из нескольких блоков, каждый из которых решает свои задачи.
21.2. Структура языков программирования
Языки программирования достаточно сильно отличаются друг от друга по назначению, структуре, семантической сложности, методам реализации. Это накладывает свои специфические особенности на разработку конкретных трансляторов. Структура языка характеризует иерархические отношения между его понятиями, которые описываются синтаксическими правилами. Языки программирования могут сильно отличаться друг от друга по организации отдельных понятий и по отношениям между ними. Например, язык C++ допускает описание переменных в любой точке программы перед первым ее использованием, а в Паскале переменные должны быть определены в специальной области описания. В зависимости от принятого решения, транслятор может анализировать программу за один или несколько проходов, что влияет на скорость трансляции.
Семантика языков программирования изменяется в очень широких пределах. Они отличаются не только по особенностям реализации отдельных операций, но и по парадигмам программирования, определяющим принципиальные различия в методах разработки программ. Специфика реализации операций может касаться как структуры обрабатываемых данных, так и правил обработки одних и тех же типов данных. Даже при выполнении операции сложения двух целых чисел такие языки, как C и Паскаль, могут вести себя по-разному.
Один и тот же язык может быть реализован нескольким способами. Это связано с тем, что теория формальных грамматик допускает различные методы разбора одних и тех же предложений. В соответствии с этим трансляторы разными способами могут получать один и тот же результат (объектную программу) по первоначальному исходному тексту. Существует несколько компиляторов языка Паскаль: Turbo Pascal, MS Pascal, Pascal with Objects, Delphi, Builder. Вместе с тем, все языки программирования обладают рядом общих характеристик и параметров. Эта общность определяет и схожие для всех языков принципы организации трансляторов.
Для любого языка его создателями определяются:
- множество символов, которые можно использовать для записи правильных программ (алфавит);
- множество правильных программ (синтаксис);
- «смысл» каждой правильной программы (семантика).
Рассмотрим пример синтаксического разбора. Пусть в исходном тексте программы встретилась формула a + (b + c) * d. В большинстве языков программирования такая формула определяет иерархию программных объектов, которую можно отобразить в виде дерева (Рис. 21 .79). В кружках представлены символы, используемые в качестве элементарных конструкций, а в прямоугольниках задаются составные понятия, имеющие иерархическую и, возможно, рекурсивную структуру.
Синтаксическая структура, правильная для одного языка, может быть ошибочной для другого. Например, в языке Лисп приведенное выражение не будет распознано. Однако для этого языка корректным будет являться выражение ( * ( + a b c ) d ).
Рис. 21.79. Дерево синтаксического разбора.
Другой характерной особенностью всех языков является их семантика. Она определяет смысл операций языка, корректность операндов. Цепочки, имеющие одинаковую синтаксическую структуру в различных языках программирования, могут различаться по семантике (что, например, наблюдается в C++, Pascal, Basic для приведенного выше фрагмента арифметического выражения). Знание семантики языка позволяет отделить ее от его синтаксиса и использовать для преобразования в другой язык (осуществить генерацию кода). Описание семантики и распознавание ее корректности обычно является самой трудоемкой и объемной частью транслятора, так как необходимо осуществить перебор и анализ множества вариантов допустимых комбинаций операций и операндов.