- •2 Введение в язык Паскаль Лекция 2
- •2.1 Историческая справка
- •2.2 Алфавит языка Паскаль
- •2.3 Переменные
- •2.4 Основные понятия языка Паскаль
- •2.5 Правила записи текста программы
- •Разделители
- •Правила записи
- •2.6 Система типов языка
- •2.7 Основные вычислительные структуры в Паскале
- •2.8 Выражения
- •2.9 Оператор присваивания
- •2.10 Ввод-вывод
- •2.11 Последовательное выполнение и составной оператор
- •2.12 Условный оператор
- •2.13 Оператор цикла с предусловием
- •2.14 Оператор цикла с постусловием
- •2.15 Оператор цикла с параметром
- •2.16 Примеры бесконечных циклов
- •2.17 Пустой оператор
- •2.18 Ограниченные типы
- •2.19 Функции
- •2.20 Примеры программ для задач без массивов
- •2.21 Более подробно о символьном типе
2 Введение в язык Паскаль Лекция 2
2.1 Историческая справка
Pascal - разработан в 1968 - 1971 годах Никлаусом Виртом в Цюрихском Институте Информатики (Швейцария).
Цель - инструмент для обучения программированию как систематической дисциплине. Обнаружилась чрезвычайная эффективность при применении и надежность программирования.
Паскаль - язык, ориентированный на машину фон-неймановского типа; такие языки называются императивными (imperative - содержащий указание на выполнение некоторого действия) или процедурными.
Мы будем описывать Турбо-Паскаль (расширение стандарта Паскаля).
2.2 Алфавит языка Паскаль
Основные символы языка (лексемы) - либо отдельные литеры на клавиатуре, либо их некоторые комбинации.
<лексема>::= <буква>|<цифра>|<спецсимвол>
<буква>::= a|b|...|z|A|B|...|Z|_
<цифра>::= 1|2|3|4|5|6|7|8|9|0
<спецсимвол>::= <знак арифметической операции>|
<знак операции сравнение>|
<разделитель>|
<служебное слово>
<знак арифметической операции>::= *| /| +| -
<знак операции сравнения>::= =| <>| <| >| <=| >=
<разделитель>::= .| ,| ;| :| (| )|{| }|{| }| ^| '| #| $| @
Служебные слова - «зарезервированные» слова - служат для определенных целей.
<служебные слова>::= begin| end| var| const| if| then| else| function| for|......
2.3 Переменные
Содержимое памяти (и определенных регистров) характеризует состояние фон-неймановской машины. Выполнение программ этими машинами ориентировано сугубо на изменение состояний. Соответственно этому в машине шаг за шагом выполняются определенные инструкции (команды), и с каждым шагом изменяется состояние памяти, т.е. содержимое определенных ячеек памяти. С любым элементом данных, используемым в алгоритмическом языке, связано такое понятие языка как переменная. Любая переменная имеет имя (обозначение) и значение. Переменная именует свое значение - элемент данных. Значение переменной во время работы программы меняется. В языке Паскаль любая переменная используется только в рамках какой-то определенной вычислительной структуры, т.е. значением конкретной переменной может быть только элемент данных определенного типа.
Имя переменной в Паскале синтаксически описывается с помощью идентификаторов:
<идентификатор>::= <буква>{<цифра>|<буква>}
Длина идентификатора произвольна, но компилятор с языка Турбо-Паскаль воспринимает только первые 63 символа.
2.4 Основные понятия языка Паскаль
Операторы. Каждый оператор представляет законченную фразу языка и определяет некоторый вполне законченный этап обработки данных.
Основные операторы (не содержат в своем составе других операторов):
Оператор присваивания. Предназначен для изменения значений переменных.
Оператор ввода (чтения). Предназначен для ввода в программу входных данных.
Оператор вывода (записи). Предназначен для вывода из программы результатов работы.
Из заданных операторов с помощью композиций различных форм можно получать операторы, которые называются производными операторами. Различные формы композиции операторов позволяют задавать последовательное выполнение, разветвление по условию и повторение.
Описания данных. Программа на Паскале начинается с описания используемых переменных. Для каждой переменной указывается ее имя и тип значения.
Описание последовательности действий, которые необходимо выполнить, следует после описания всех переменных.
Пример описания переменных:
var
a:integer;
x,y,z:real;
Sinus:real;
В программе на языке Паскаль любая используемая переменная, за исключением системных (предописанных), должна быть определена, причем определение переменной должно текстуально предшествовать первому ее использованию. Область известности («видимости») переменной ограничивается блоком, в котором она определена. Каждая переменная, описанная в блоке, должна упоминаться в описаниях не более одного раза. Это относится не только к переменным, а вообще ко всем идентификаторам.
Паскаль допускает введение в программы объектов, внешне похожих на переменные, но которые, в отличие от них, не могут изменять свое значение. Такие объекты называются константами. Можно сказать, что идентификатор константы является синонимом некоторого определенного значения, которое сопоставляется с этим идентификатором при описании.
Пример описания констант:
const
One=1;
HighLimit=1000;
pi=3.14159265358;
Тип константы определяется по ее значению.
Константа может входить во все конструкции, в которых может присутствовать связанное с ней значение. Естественно, не допускаются ситуации, когда идентификатору константы предлагается изменить значение.
Использование в программе идентификаторов констант вместо записи конкретных значений считается хорошим стилем программирования, так как делает программу более «читабельной» и способствует лучшему ее пониманию, без какого бы то ни было снижения эффективности (в части быстродействия и объема занимаемой памяти). Кроме того, если некоторые важные для программы значения обозначены идентификаторами (например, границы массивов, показатели точности вычислений), то при необходимости их легко изменить, исправив описание соответствующих констант. В противном случае эти значения будут «растворены» в тексте программы и придется просматривать ее целиком, чтобы произвести нужные изменения.
Грубая схема программы:
const
<описания констант>
var
<описания переменных>
begin
<операторы>
end.