- •1 Языки программирования. Язык Pascal. Описание синтаксиса языка программирования.
- •2 Лексическая структура языка Pascal. Структура Pascal-программы. Составной оператор. Константы. Переменные
- •3 Концепция переменной языка Pascal
- •4 Концепция типа данных языка Pascal
- •5 Простые типы языка Pascal
- •6 Стандартные типы языка Pascal
- •7 Операторы языка Pascal
- •8 Составные типы языка Pascal
- •9 Множества (определение, примеры, операции). Представление множеств, примеры использования
- •10 Файловый тип. Операции с файлами.
- •11 Процедуры и функции. Описание процедуры. Оператор процедуры
- •12 Параметры процедур и функций.
- •13 Процедурный тип. Передача процедур и функций в качестве параметра.
- •14 Директивы, используемые при описании процедур и функций.
- •15 Необходимость и преимущества модульного программирования. Структура модуля в языке Pascal.
- •16 Рекурсия. Рекурсия и итерация.
- •17 Линейный поиск. Поиск делением пополам (двоичный поиск).
- •18 Простые алгоритмы сортировки.
- •19 Усовершенствованные алгоритмы сортировки. Сортировка Шелла. Сортировка Шелла
- •20 Ссылочные типы. Динамические структуры данных
- •21 Связанные списки, операции над списками.
- •22 Двусвязные кольца.
- •23 Двоичные деревья поиска
2 Лексическая структура языка Pascal. Структура Pascal-программы. Составной оператор. Константы. Переменные
Алфавит языка Pascal состоит из символов ASCII. Это заглавные и строчные буквы английского алфавита, арабские цифры, шестнадцатеричные числа, символ пробел, все управляющие символы, специальные символы (+, -, /, *, ^, @, # и т.д.) и сочетания символов(<=, >=, <>, :=, (*, *), (., .)). Символы языка используют для построения базовых элементов языка – лексем.
В языке имеется набор зарезервированных слов и стандартных директив. Например, begin, end, mod.
Идентификаторы вводятся для обозначения в программе переменных, констант, меток, типов, процедур, функций, модулей и полей записи. Начинаться должны с буквы или символа подчеркивания и не содержать пробелов.
Строка символов – последовательность из 0 или более символов, заключенных в апострофы.
Комментарии заключаются в блоки (* *) или {}.
Длина строки программы – 128 символов.
Структура Pascal программы с помощью синтаксических диаграмм описывается следующим образом:
Program имя; блок
Раздел описаний: раздел описаний меток, констант, типов, переем-х, процедур, список экспортируемых процедур.
Составные операторы задают порядок выполнения операторов, являющихся их элементами. Они должны выполняться в том порядке, в котором они записаны.
Составные операторы обрабатываются, как один оператор. Операторы заключаются в ограничители begin и end и отделяются друг от друга точками с запятой.
Константа - это идентификатор, отмечающий значение, которое не может изменяться. Pascal позволяет использовать выражения-константы. Выражение-константа представляет собой выражение, которое может вычисляться компилятором без необходимости выполнения программы. Примеры выражений-констант:100,'A',256 – 1,(2.5 + 1) / (2.5 - 1),'Borland' + '' + 'Pascal'.
В качестве выражений-констант не допускается использовать следующие конструкции:- ссылки на переменные и типизированные константы;- вызовы функций;-оператор получения адреса @.
Переменная может содержать изменяемое значение. Каждая переменная должна иметь тип. Тип переменной определяет множество значений, которые может иметь переменная, а также множество операций над ней. Значение переменной опр-ся и м. изм-ся в процессе выполнения проги. В зависимости от контекста, значением переменной может являться или ее величина или место расположения. X(место распол-я)=x+1(величина перем-й). адрес глоб. Перем-й опр-ся во время загрузки, а лок-й-при входе в процедуру.
3 Концепция переменной языка Pascal
Переменные являются центральным понятием императивных языков программирования. Они характеризуются следующими параметрами:
имя
место расположения
значение
тип и множество допустимых операций
время связывания
область связывания
время жизни
Значение переменной может изменяться в процессе выполнения программы. В зависимости от контекста значение переменной может являться или ее величиной или ее месторасположением.
A := B
Значение переменной A, встречающееся слева от знака присваивания – месторасположение, справа – величина.
Адреса глобальных переменных определяются во время загрузки программы, а адреса локальных переменных, параметров процедур (функций) определяются при входе в процедуру. Значение переменной может быть изменено в любой точке программы (в переделах видимости).
Связывание – ассоциирование, например, какого-либо атрибута и имени. Примеры, когда связывание может произойти:
При проектировании языка (константа с именем true связывается с соответствующим булевским значением)
При реализации языка (при компилировании или интерпретировании типы связываются с их представлением)
Во время компиляции (когда программа транслируется в машинный язык, тип переменной в статически типизированных языках программирования связывается с этой переменной)
Во время загрузки (когда выполняется образ программы, загруженный в память, с глобальной переменной ассоциируется адрес)
Во время вызова процедур или функций (действительные параметры процедур связываются с формальными, локальные переменные связываются с адресами)
Во время выполнения (новое значение привязывается к переменной, тип переменной в языках с динамической типизацией)
Область связывания – место или раздел в программе, в которой данное конкретное связывание имеет место (действует). Методы и правила, которые определяют действие области связывания в большой степени влияют на полезность и применимость языка программирования. Если позволить определять область связывания во время выполнения программы, язык может быть очень гибким, но код программы сложен для понимания.
Правила определения области связывания тесно связаны с понятием времени связывания. Статические правила определения области связывания определяют их во время компиляции и основаны на лексической структуре языка. Динамические правила определяют области связывания во время выполнения программы. Так имя переменной в процедуре сначала может ссылаться на одну переменную, а в следующий раз на другую (другой тип), в зависимости от кода выполнения программы.
Время жизни переменных
глобальные – в течение выполнения программы
локальные – с момента вызова подпрограммы до момента возврата в вызвавшую подпрограмму
переменная ссылочного типа, дающая возможность доступа к динамически распределяемой памяти (куче) – с момента, как программа выполнила команду распределения области памяти, до момента, когда эта переменная стала не нужна.
