Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 Информатика и программирование.doc
Скачиваний:
10
Добавлен:
01.03.2025
Размер:
327 Кб
Скачать
☆

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 связывается с соответствующим булевским значением)

  • При реализации языка (при компилировании или интерпретировании типы связываются с их представлением)

  • Во время компиляции (когда программа транслируется в машинный язык, тип переменной в статически типизированных языках программирования связывается с этой переменной)

  • Во время загрузки (когда выполняется образ программы, загруженный в память, с глобальной переменной ассоциируется адрес)

  • Во время вызова процедур или функций (действительные параметры процедур связываются с формальными, локальные переменные связываются с адресами)

  • Во время выполнения (новое значение привязывается к переменной, тип переменной в языках с динамической типизацией)

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

Правила определения области связывания тесно связаны с понятием времени связывания. Статические правила определения области связывания определяют их во время компиляции и основаны на лексической структуре языка. Динамические правила определяют области связывания во время выполнения программы. Так имя переменной в процедуре сначала может ссылаться на одну переменную, а в следующий раз на другую (другой тип), в зависимости от кода выполнения программы.

Время жизни переменных

глобальные – в течение выполнения программы

локальные – с момента вызова подпрограммы до момента возврата в вызвавшую подпрограмму

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