Следующие несколько глав посвящены формальному определению
языка Borland
Pascal. В каждой главе обсуждается один из элемен-
тов Borland Pascal.
Однако, изучая части, трудно понять целое. В данной
главе
дается общий обзор программы Borland
Pascal, опуская детали.
Здесь приводится краткое описание
каждого элемента программы, а
затем показывается, как все это компонуется вместе. Подробности
элементов языка освещаются главах 2 - 11.
В своей простейшей форме программа
Borland Pascal состоит из
заголовка программы, который именует программу,
и основного прог-
раммного блока, выполняющего назначение
программы. В основном
программном блоке находится секция
кода, заключенная между ключе-
выми словами begin и end. Приведем простейшую программу, иллюст-
рирующую эти принципы:
begin
Writeln('Добро end.
Первая строка -
это заголовок программы, который именует
данную программу. Остальная часть программы - это
исходный код,
который начинается ключевым словом
begin и заканчивается end. Хо-
тя данная конкретная программа
содержит только одну строку,
их
может быть много. В любой программе
Borland Pascal все действия
выполняются между begin и end.
Код между последними
операторами begin и end программы уп-
равляет логикой программы.
В очень простой программе в этой сек-
ции кода может содержаться все, что вам нужно. В более крупных и
сложных программах размещение в
этой секции всего программного
кода может затруднить чтение и понимание
программы. К тому же ее
будет труднее разрабатывать.
Процедуры и функции позволяют
разделить логику программы на
более мелкие и управляемые фрагменты и
аналогичны подпрограммам в
других языках. Как и в основном блоке программы, все действия в
процедурах и функциях заключаются в begin и end. Каждый из этих
сегментов кода выполняет конкретную
задачу.
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Процедура или функция і
іЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДїі
іі Заголовок процедуры или
функции іі
іАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩі
іЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДїі
іі Блок процедуры или
функциями іі
іі begin
іі
ііЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДїіі
ііі Логика
ііі
ііАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩіі
іі end; іі
іАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩі
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Рис. 1.1 Диаграмма процедуры или
функции.
Если вы обнаружите, что в вашей
диаграмме одни и те же дейс-
твия выполняются многократно, такую логику желательно выделить в
процедуру или функцию. Вы можете один раз записать этот
код в
процедуре или
функции, а затем многократно
вызывать его в прог-
рамме.
Приведем пример функции.
Следующая функция GetNumber получа-
ет число от пользователя:
var
Responce: Real;
begin
Write('Введите число: ');
GetNumber := Response;
end;
Процедура или функция должна
содержаться в программе перед
секцией основного кода. В основном коде она может затем
использо-
ваться (вызываться).
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Процедура или функция і
іЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДїі
іі Заголовок процедуры или
функции іі
іАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩі
іЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДїі
іі Блок процедуры или
функциями іі
ііЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДїіі
ііі Процедуры или функции (0 или
более) ііі
ііАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩіі
іі begin
іі
ііЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДїіі
ііі Логика ііі
ііАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩіі
іі end; іі
іАДДДДДДДДДДДДДДДДДДДДДДДДДДДЩі
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Рис. 1.2 Простая программа на
Паскале.
В следующем примере дается
набросок программы, в которой ис-
пользуется функция GetNumber. Программист разделил логику прог-
раммы на три задачи:
1. Получение числа от
пользователя.
2. Выполнение с этим числом
необходимых вычислений.
Основная логика
программы заключена в
последнем блоке
Program Report;
var
A: Real;
{ другие описания }
.
.
.
function GetNumber: Real;
var
Responce: Real;
begin
Write('Введите число: ');
GetNumber := Response;
end;
procedure Calculate(X: Real);
.
.
.
procedure PrintReport;
.
.
.
begin
A: = GetNumber;
Calculate(A);
PrintReport;
end.
Основная логика программы
достаточно проста для понимания.
Все детали убраны в тела процедур и
функций. Использование проце-
дур и функций позволяет вам рассматривать
программу более удобным
и модульным способом.
Исходный код между begin и end содержит операторы, которые
описывают выполняемые программой действия. Это называются опера-
торной частью программы. Приведем
примеры операторов:
A := B + C; { присвоить значение }
Calculate(Length, Height); { активизировать процедуру }
if X < 2 then { оператор условия }
begin { составной оператор }
Y := 4;
Z := 5;
end;
while not EOF(InFile) do { оператор цикла }
begin
ReadLn(InFile, Line);
Process(Line);
end;
В простых операторах можно
присваивать значение, активизиро-
вать процедуру или
функцию или передавать
управление на другую
часть кода. Структурные операторы могут быть составными и содер-
жать несколько операторов,
оператор цикла или оператор условия,
управляющий логикой программы, а также
операторы with, упрощающие
доступ к данным в записи.
Оператор Паскаля состоит из выражений. Выражения
оператора
могут состоять из операндов и операций. Обычно в выражениях вы-
полняется сравнение либо
арифметические, логические или булевские
операции.
Выражения Паскаля могут состоять
из более простых выражений.
О комбинации операндов и операций вы
можете прочитать в Главе 6.
Они могут быть достаточно
сложными. Приведем некоторые примеры
выражений:
Done <> Error
I
<= Length
-X
Лексемы - это наименьшие значащие
элементы в программе Пас-
каля. Они образуются операндами и
операциями выражений. Лексемы -
это специальные символы,
зарезервированные слова, идентификаторы,
метки и строковые константы. Приведем
примеры лексем Паскаля:
function { зарезервированное слово }
( { специальный символ }
:= { специальный символ }
Calculate { идентификатор процедуры }
9 { число }
Приведем пример, из которого вы
можете видеть, что операторы
состоят из выражений, которые в свою
очередь состоят из лексем.
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Операторы (1 или более) і
іЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДїі
іі Выражения (1 или более) іі
ііЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДїіі
ііі Лексемы (1 или более) ііі
ііАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩіі
іАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩі
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Рис. 1.3 Диаграмма оператора.
Переменная может содержать
изменяемое значение. Каждая пере-
менная должна иметь тип. Тип
переменной определяет множество зна-
чений, которые может иметь переменная.
Например, в следующей
программе описываются переменные X и
Y, имеющие тип Integer. Таким образом, X и Y могут
содержать
только целые значения (числа). Если в вашей программе предприни-
мается попытка присвоить этим
переменным значения другого типа,
Borland Pascal сообщает об ошибке.
program Example;
const
A = 12; { константа A не изменяет значения
}
B: Integer = 23; { типизированная константа B получает
начальное
значение }
var
X, Y: Integer; { переменные X и Y имеют тип Integer }
J: Real; { переменная J имеет тип Real }
begin
X := 7; { переменной X присваивается
значение }
Y := 7; { переменной Y присваивается
значение }
X := Y + Y; { значение переменной X изменяется }
J := 0.075; { переменной J присваивается значение
с
плавающей точкой }
end.
В этой простой и не очень
полезной программе X первоначально
присваивается значение 7; двумя
операторами ниже ей присваивается
новое значение: Y + Y. Как можно видеть, значение переменной
мо-
жет изменяться.
A - это константа. Программа
назначает ей значение 12, и это
значение изменяться не
может - в ходе выполнения
программы оно
остается постоянным.
B представляет собой
типизированную константу. Ей присваива-
ется значение при описании, но дается также тип Integer. Типизи-
рованую константу можно рассматривать
как переменную с начальным
значением. Позднее программа может
изменить первоначальное значе-
ние B на какое-то другое значение.
Если вы вернетесь обратно к
приведенному в начале главы при-
меру кода, то увидите, что функция GetNumber имеет раздел описа-
ний, в котором описывается
переменная. Процедуры и функции могут
содержать разделы описаний также как
программы и модули.
Теперь, когда вы
познакомились с основными
компонентами
программы Borland Pascal, давайте
посмотрим, как все это работает
вместе. Приведем диаграмму программы
Borland Pascal:
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Программа на Паскале і
іЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДїі
іі Заголовок программы іі
іАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩі
іЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДїі
іі Необязательные операторы
uses іі
іАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩі
іЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДїі
іі Основной блок программы іі
ііЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДїіі
ііі Описания
ііі
ііАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩіі
ііЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДїіі
ііі Процедуры или функции (0 или
более) ііі
іііЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДїііі
іііі Описания
іііі
іііАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩііі
ііі begin
ііі
ііі
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДїііі
ііі і Операторы (1 или более) іііі
ііі АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩііі
ііі end; ііі
ііАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩіі
іі begin
іі
іі ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДїіі
іі і Операторы (1 или более) ііі
іі іЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДїііі
іі іі Выражения (1 или более) іііі
іі ііЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДїіііі
іі ііі Лексемы (1 или более) ііііі
іі ііАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩіііі
іі іАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩііі
іі АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩіі
іі end. іі
іАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩі
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Рис. 1.4 Расширенная диаграмма
программы на Паскале.
Программу на Паскале составляют
заголовок программы, необя-
зательный оператор uses (о нем будет
рассказано позднее) и основ-
ной блок программы. В основном блоке могут присутствовать более
мелкие блоки процедур и функций. Хотя
на диаграмме это не пока-
зано, процедуры им функции могут быть
вложенными в другие проце-
дуры или функции. Другими словами, блоки могут содержать другие
блоки.
В сочетании с другими лексемами
и пробелами лексемы могут
образовывать выражения, формирующие оператор. Операторы, в свою
очередь, в сочетании с разделом
описаний образуют блоки основной
программы или блок в процедуре или
функции.
Программа Borland Pascal
может использовать блоки
кода в
программных модулях. Модуль
(unit) можно рассматривать как
ми-
ни-программу, которую может
использовать ваша прикладная програм-
ма. Как и программа, он имеет
заголовок (который называется заго-
ловком модуля) и основной блок,
ограниченный begin и end.
Основной блок любой программы
Borland Pascal может включать
в себя строку, позволяющую программе использовать один или более
модулей. Например, если вы пишете
программу DOS с именем Colors и
хотите изменять цвета выводимого на экран текста, то ваша прог-
рамма может использовать
стандартный модуль Crt,
являющийся
частью библиотеки исполняющей системы
Borland Pascal:
program Colors;
uses Crt;
begin
.
.
.
end.
Строка uses Crt сообщает Borland
Pascal, что нужно включить
модуль Crt в выполняемую
программу. Кроме всего прочего, модуль
Crt содержит весь необходимый код
для изменения цвета в вашей
программе. Путем простого включения
uses Crt ваша программа может
использовать весь код, содержащийся в модуле Crt. Поэтому опера-
тор uses называют также оператором
использования. Если бы вы по-
местили весь код, необходимый для реализации функциональных
воз-
можностей Crt, в свою программу, это
потребовало бы огромных уси-
лий и отвлекло бы вас от основной цели
программы.
Библиотеки исполняющей системы
Borland Pascal включают в се-
бя несколько модулей, которые вы
найдете весьма полезными. Напри-
мер, благодаря использованию модулей Dos или WinDos, ваша прог-
рамма может получить доступ к
нескольким подпрограммам операцион-
ной системы и подпрограммам работы с
файлами.
Вы можете также писать свои собственные модули. Применяйте
их для разделения больших программ на логические
связанные фраг-
менты. Программный код, который вы помещаете в модуль, может ис-
пользоваться любой программой. Вам нужно написать исходный код
только один раз, а затем вы сможете
много раз его использовать.
При изучении глав
2 - 11, где определяется язык
Borland
Pascal, вы встретите синтаксические
диаграммы, например:
ЪДДДї ЪДДДДДДДДДДДДДДї ЪДДДї
константа-массив ДДД>і (
ГДДДД>ітипизированнаяГДДВД>і ) ГДД>
АДДДЩ
^ і константа і і
АДДДЩ
і АДДДДДДДДДДДДДДЩ і
і ЪДДДї і
АДДДДДДґ , і<ДДДДДДДДЩ
АДДДЩ
Чтобы прочитать диаграмму,
следуйте по стрелкам.
Часто
встречаются альтернативные пути: путь,
начинающийся слева и за-
канчивающийся стрелкой справа, является допустимым. Путь пересе-
кает блоки, содержащие имена
элементов, используемых для построе-
ния этой части синтаксиса.
Имена в прямоугольных рамках с текстом должны быть заменены
действительными конструкциями. Некоторые рамки содержат зарезер-
вированные слова, знаки операций и
знаки пунктуации, то есть фак-
тические термы, используемые в программе. Имена в блоках - это
конструкции языка. Имена, написанные
по-английски (например,
procedure), представляю собой зарезервированные слова и операции
Borland Pascal.