Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯВУ лекции.doc
Скачиваний:
18
Добавлен:
27.10.2018
Размер:
592.38 Кб
Скачать

Операторы управления выполнением цикла

Для всех операторов цикла выход из цикла обычно осуществляется вследствие естественного окончания оператора цикла. Object Pascal содержит две процедуры позволяющие управлять ходом выполнения цикла:

Процедура break выполняет безусловный выход из цикла.

Процедура continue выполняет переход к началу новой итерации цикла.

Оператор варианта

Оператор варианта реализует конструкцию многоальтернативного ветвления. Структура:

Case <выражение> of

<значение>[,…]:<оператор1>;

[<значение>[,…]:<оператор2>;]

[…]

[else <операторN>;]

End;

<выражение> - выражение, дающее результат порядкового типа.

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

Если значение выражения не совпало ни с одним приведенным значением, то выполняется оператор после else (если он присутствует).

Каждое <значение> должно быть уникальным. Диапазоны значений интервального типа не должны пересекаться.

Подпрограммы

Алгоритм решения задачи проектируется путем декомпозиции всей задачи в отдельные подзадачи. Обычно подзадачи реализуются в виде подпрограмм.

Подпрограмма - это последовательность операторов, которые определены и записаны только в одном месте программы, однако их можно вызвать для выполнения из одной или нескольких точек программы. Каждая подпрограмма определяется уникальным именем. В языке ObjectPascal существуют два типа подпрограмм - процедуры и функции.

Отличие функции от процедуры заключается в том, что функция после выполнения возвращает под своим именем какое-либо значение. Поэтому функции могут использоваться в выражениях.

Описание подпрограммы состоит из:

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

  • разделов описаний

  • тела подпрограммы

Подпрограмма может содержать такие - же разделы описаний, что и программа, а именно: разделы описания модулей, меток, констант, типов, переменных, процедур и функций. Все элементы, описанные в данных разделах, являются локальными для этой подпрограммы. Локальные элементы доступны только в данной подпрограмме. Если существует глобальный элемент с таким же именем, то будет доступен только локальный элемент.

Заголовок процедуры

procedure <имя_проц>[(<список_форм_парам>)];

Заголовок функции

function <имя_функ>[(<список_форм_парам>)]:<тип_результата>;

<тип_результата> - тип результата возвращаемого функцией.

<список_форм_парам> - список параметров подпрограммы, отделяемых друг от друга ;.

Существуют следующие типы параметров:

- Параметры-значения

- Параметры-константы

- Параметры-переменные

Параметры-значения – это локальные переменные, начальные значения, которых передаются в подпрограмму при ее вызове.

Структура: <имя_перем>[,…]:<тип>

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

Структура: const <имя_конст>[,…][:<тип>]

Параметры-переменные – это синонимы переменных, имена которых передаются в подпрограмму при ее вызове.

Структура: var <имя_перем>[,…][:<тип>]

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

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

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

<имя_функции>:=<выражение> или

Result:=<выражение>

Данная операция присваивания определяет результат функции - значение, которое вернет функция после выполнения.

Тело подпрограммы может содержать процедуру exit, которая осуществляет досрочный выход из подпрограммы.

Структура вызова подпрограммы:

<имя_подпр>[(<список_факт_парам>)]

<имя_подпр> - имя вызываемой подпрограммы

<список_факт_парам> - список фактических параметров(аргументов), передаваемых подпрограмме, отделяемых друг от друга ,. Каждый аргумент связывается с соответствующим параметром подпрограммы. Количество и тип аргументов в <список_факт_парам> должны соответствовать параметрам в <список_форм_парам> подпрограммы.

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

Модули

Модуль в Object Pascal – это особым образом оформленная библиотека программных элементов. Под программными элементами понимаются любые элементы языка Object Pascal: константы, типы, переменные, подпрограммы. Модуль сам по себе не является выполняемой программой, он может только участвовать в построении программ и других модулей.

Все программные элементы модуля можно разбить на две части:

- программные элементы, предназначенные для использования другими программами или модулями, такие элементы называют видимыми вне модуля;

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

В соответствии с этим модуль, кроме заголовка, содержит две основные части, называемые интерфейсом и реализацией.

Модуль имеет следующую структуру:

unit <имя модуля>;

interface

[uses <список модулей подключаемых вместе с модулем>]

[ <описание видимых программных элементов модуля>]

implementation

[uses <список модулей используемых модулем>]

[ <описание скрытых программных элементов модуля>]

[initialization]

[ <операторы инициализации элементов модуля>]

[finalization]

[ <операторы деинициализации элементов модуля>]

end.

Использование в модулях подпрограмм имеет свои особенности. Заголовок подпрограммы содержит все сведения, необходимые для ее вызова: имя, перечень и тип параметров, тип результата для функций, эта информация должна быть доступна для других программ и модулей. С другой стороны, текст подпрограммы, реализующий ее алгоритм, другими программами и модулями не может быть использован. Поэтому заголовок видимой подпрограммы помещают в интерфейсную часть модуля, а полное описание – в часть реализации, причем заголовок в части реализации может не содержать список формальных параметров.

В том случае, если имена программных элементов в интерфейсной части модуля и в программе, использующей этот модуль, совпадают, обращение будет происходить к элементу, описанному в программе. Для обращения к элементу, описанному в модуле, необходимо применить составное имя, состоящее из имени модуля и имени элемента, разделенных точкой.

Рекурсивное использование модулей запрещено.

Если в модуле имеется раздел инициализации, то операторы из этого раздела будут выполнены перед началом выполнения программы, в которой используется этот модуль.

Если в модуле имеется раздел деинициализации, то операторы из этого раздела будут выполнены после выполнения последнего оператора программы, в которой используется этот модуль.