Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Руководство по языку Паскаль 1.doc
Скачиваний:
12
Добавлен:
22.04.2019
Размер:
2.48 Mб
Скачать

Часть II "Библиотеки исполняющей системы" содержит информа-

цию о стандартных модулях, образующих библиотеку исполняющей сис-

темы, и о том, как их использовать. Здесь рассказывается также,

как писать программы для защищенного режима DOS.

В Части III "В среде Borland Pascal" дается техническая ин-

формация для продвинутых пользователей. Здесь рассказывается:

- об использовании памяти в Borland Pascal;

- о том, как в Borland Pascal реализовано управление прог-

раммой;

- о деталях по вводу и выводу;

- об оптимизации вашего кода.

В Части IV "Использование Borland Pascal с языком ассембле-

ра" поясняется, как использовать встроенный ассемблер и как ком-

поновать ваши программы Паскаля с кодом Турбо Ассемблера.

B.Pascal 7 & Objects/LR - 12 -

───────────────────────────────────────────────────────────────────────

Часть I. Язык Borland Pascal

─────────────────────────────────────────────────────────────────

Глава 1. Что такое программа Borland Pascal?

─────────────────────────────────────────────────────────────────

Следующие несколько глав посвящены формальному определению

языка Borland Pascal. В каждой главе обсуждается один из элемен-

тов Borland Pascal. Совместно эти элементы образуют программу

Borland Pascal.

Однако, изучая части, трудно понять целое. В данной главе

дается общий обзор программы Borland Pascal, опуская детали.

Здесь приводится краткое описание каждого элемента программы, а

затем показывается, как все это компонуется вместе. Подробности

элементов языка освещаются главах 2 - 11.

B.Pascal 7 & Objects/LR - 13 -

Программа Borland Pascal

─────────────────────────────────────────────────────────────────

В своей простейшей форме программа Borland Pascal состоит из

заголовка программы, который именует программу, и основного прог-

раммного блока, выполняющего назначение программы. В основном

программном блоке находится секция кода, заключенная между ключе-

выми словами begin и end. Приведем простейшую программу, иллюст-

рирующую эти принципы:

program Privet;

begin

Writeln('Добро пожаловать в Borland Pascal');

end.

Первая строка - это заголовок программы, который именует

данную программу. Остальная часть программы - это исходный код,

который начинается ключевым словом begin и заканчивается end. Хо-

тя данная конкретная программа содержит только одну строку, их

может быть много. В любой программе Borland Pascal все действия

выполняются между begin и end.

Процедуры и функции

─────────────────────────────────────────────────────────────────

Код между последними операторами begin и end программы уп-

равляет логикой программы. В очень простой программе в этой сек-

ции кода может содержаться все, что вам нужно. В более крупных и

сложных программах размещение в этой секции всего программного

кода может затруднить чтение и понимание программы. К тому же ее

будет труднее разрабатывать.

Процедуры и функции позволяют разделить логику программы на

более мелкие и управляемые фрагменты и аналогичны подпрограммам в

других языках. Как и в основном блоке программы, все действия в

процедурах и функциях заключаются в begin и end. Каждый из этих

сегментов кода выполняет конкретную задачу.

┌──────────────────────────────────────────────────────────┐

│ Процедура или функция │

│┌────────────────────────────────────────────────────────┐│

││ Заголовок процедуры или функции ││

│└────────────────────────────────────────────────────────┘│

│┌────────────────────────────────────────────────────────┐│

││ Блок процедуры или функциями ││

││ begin ││

││┌──────────────────────────────────────────────────────┐││

│││ Логика │││

││└──────────────────────────────────────────────────────┘││

││ end; ││

│└────────────────────────────────────────────────────────┘│

└──────────────────────────────────────────────────────────┘

B.Pascal 7 & Objects/LR - 14 -

Рис. 1.1 Диаграмма процедуры или функции.

Если вы обнаружите, что в вашей диаграмме одни и те же дейс-

твия выполняются многократно, такую логику желательно выделить в

процедуру или функцию. Вы можете один раз записать этот код в

процедуре или функции, а затем многократно вызывать его в прог-

рамме.

Приведем пример функции. Следующая функция GetNumber получа-

ет число от пользователя:

function GetNumber: Real;

var

Responce: Real;

begin

Write('Введите число: ');

Readln(Response);

GetNumber := Response;

end;

Процедура или функция должна содержаться в программе перед

секцией основного кода. В основном коде она может затем использо-

ваться (вызываться).

┌──────────────────────────────────────────────────────────┐

│ Процедура или функция │

│┌────────────────────────────────────────────────────────┐│

││ Заголовок процедуры или функции ││

│└────────────────────────────────────────────────────────┘│

│┌────────────────────────────────────────────────────────┐│

││ Блок процедуры или функциями ││

││┌──────────────────────────────────────────────────────┐││

│││ Процедуры или функции (0 или более) │││

││└──────────────────────────────────────────────────────┘││

││ begin ││

││┌──────────────────────────────────────────────────────┐││

│││ Логика │││

││└──────────────────────────────────────────────────────┘││

││ end; ││

│└────────────────────────────────────────────────────────┘│

└──────────────────────────────────────────────────────────┘

Рис. 1.2 Простая программа на Паскале.

В следующем примере дается набросок программы, в которой ис-

пользуется функция GetNumber. Программист разделил логику прог-

раммы на три задачи:

1. Получение числа от пользователя.

2. Выполнение с этим числом необходимых вычислений.

3. Печать отчета.

B.Pascal 7 & Objects/LR - 15 -

Основная логика программы заключена в последнем блоке

begin..end.

Program Report;

var

A: Real;

{ другие описания }

.

.

.

function GetNumber: Real;

var

Responce: Real;

begin

Write('Введите число: ');

Readln(Response);

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 { оператор условия }

Answer := X * Y;

B.Pascal 7 & Objects/LR - 16 -

begin { составной оператор }

X := 3;

Y := 4;

Z := 5;

end;

while not EOF(InFile) do { оператор цикла }

begin

ReadLn(InFile, Line);

Process(Line);

end;

В простых операторах можно присваивать значение, активизиро-

вать процедуру или функцию или передавать управление на другую

часть кода. Структурные операторы могут быть составными и содер-

жать несколько операторов, оператор цикла или оператор условия,

управляющий логикой программы, а также операторы with, упрощающие

доступ к данным в записи.

Выражения

─────────────────────────────────────────────────────────────────

Оператор Паскаля состоит из выражений. Выражения оператора

могут состоять из операндов и операций. Обычно в выражениях вы-

полняется сравнение либо арифметические, логические или булевские

операции.

Выражения Паскаля могут состоять из более простых выражений.

О комбинации операндов и операций вы можете прочитать в Главе 6.

Они могут быть достаточно сложными. Приведем некоторые примеры

выражений:

X + Y

Done <> Error

I <= Length

-X

B.Pascal 7 & Objects/LR - 17 -

Лексемы

─────────────────────────────────────────────────────────────────

Лексемы - это наименьшие значащие элементы в программе Пас-

каля. Они образуются операндами и операциями выражений. Лексемы -

это специальные символы, зарезервированные слова, идентификаторы,

метки и строковые константы. Приведем примеры лексем Паскаля:

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 }

B.Pascal 7 & Objects/LR - 18 -

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 имеет раздел описа-

ний, в котором описывается переменная. Процедуры и функции могут

содержать разделы описаний также как программы и модули.

B.Pascal 7 & Objects/LR - 19 -

Компоновка частей

─────────────────────────────────────────────────────────────────

Теперь, когда вы познакомились с основными компонентами

программы Borland Pascal, давайте посмотрим, как все это работает

вместе. Приведем диаграмму программы Borland Pascal:

┌──────────────────────────────────────────────────────────┐

│ Программа на Паскале │

│┌────────────────────────────────────────────────────────┐│

││ Заголовок программы ││

│└────────────────────────────────────────────────────────┘│

│┌────────────────────────────────────────────────────────┐│

││ Необязательные операторы uses ││

│└────────────────────────────────────────────────────────┘│

│┌────────────────────────────────────────────────────────┐│

││ Основной блок программы ││

││┌──────────────────────────────────────────────────────┐││

│││ Описания │││

││└──────────────────────────────────────────────────────┘││

││┌──────────────────────────────────────────────────────┐││

│││ Процедуры или функции (0 или более) │││

│││┌────────────────────────────────────────────────────┐│││

││││ Описания ││││

│││└────────────────────────────────────────────────────┘│││

│││ begin │││

│││ ┌────────────────────────────────────────────────┐│││

│││ │ Операторы (1 или более) ││││

│││ └────────────────────────────────────────────────┘│││

│││ end; │││

││└──────────────────────────────────────────────────────┘││

││ begin ││

││ ┌────────────────────────────────────────────────────┐││

││ │ Операторы (1 или более) │││

││ │┌──────────────────────────────────────────────────┐│││

││ ││ Выражения (1 или более) ││││

││ ││┌────────────────────────────────────────────────┐││││

││ │││ Лексемы (1 или более) │││││

││ ││└────────────────────────────────────────────────┘││││

││ │└──────────────────────────────────────────────────┘│││

││ └────────────────────────────────────────────────────┘││

││ end. ││

│└────────────────────────────────────────────────────────┘│

└──────────────────────────────────────────────────────────┘

Рис. 1.4 Расширенная диаграмма программы на Паскале.

Программу на Паскале составляют заголовок программы, необя-

зательный оператор uses (о нем будет рассказано позднее) и основ-

ной блок программы. В основном блоке могут присутствовать более

мелкие блоки процедур и функций. Хотя на диаграмме это не пока-

зано, процедуры им функции могут быть вложенными в другие проце-

дуры или функции. Другими словами, блоки могут содержать другие

B.Pascal 7 & Objects/LR - 20 -

блоки.

В сочетании с другими лексемами и пробелами лексемы могут

образовывать выражения, формирующие оператор. Операторы, в свою

очередь, в сочетании с разделом описаний образуют блоки основной

программы или блок в процедуре или функции.

Модули

─────────────────────────────────────────────────────────────────

Программа 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, ваша прог-

рамма может получить доступ к нескольким подпрограммам операцион-

ной системы и подпрограммам работы с файлами.

Вы можете также писать свои собственные модули. Применяйте

их для разделения больших программ на логические связанные фраг-

менты. Программный код, который вы помещаете в модуль, может ис-

пользоваться любой программой. Вам нужно написать исходный код

только один раз, а затем вы сможете много раз его использовать.

B.Pascal 7 & Objects/LR - 21 -

Синтаксические диаграммы

─────────────────────────────────────────────────────────────────

При изучении глав 2 - 11, где определяется язык Borland

Pascal, вы встретите синтаксические диаграммы, например:

┌───┐ ┌──────────────┐ ┌───┐

константа-массив ───>│ ( ├────>│типизированная├──┬─>│ ) ├──>

└───┘ ^ │ константа │ │ └───┘

│ └──────────────┘ │

│ ┌───┐ │

└──────┤ , │<────────┘

└───┘

Чтобы прочитать диаграмму, следуйте по стрелкам. Часто

встречаются альтернативные пути: путь, начинающийся слева и за-

канчивающийся стрелкой справа, является допустимым. Путь пересе-

кает блоки, содержащие имена элементов, используемых для построе-

ния этой части синтаксиса.

Имена в прямоугольных рамках с текстом должны быть заменены

действительными конструкциями. Некоторые рамки содержат зарезер-

вированные слова, знаки операций и знаки пунктуации, то есть фак-

тические термы, используемые в программе. Имена в блоках - это

конструкции языка. Имена, написанные по-английски (например,

procedure), представляю собой зарезервированные слова и операции

Borland Pascal.

B.Pascal 7 & Objects/LR - 22 -

───────────────────────────────────────────────────────────────────────

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]