Данный оператор реализует конструкцию цикла с параметром, которая является разновидностью цикла с предусловием.
Структура:
For <имя_перем.>:=<знач1> to|downto <знач2> do <оператор>;
<имя_перем.> имя ранее объявленной переменной порядкового типа. Это параметр цикла, который принимает значения от <знач1> до <знач2> на каждой итерации цикла. Шаг изменения значения может быть 1 или –1 и задается служебными словами соответственно to и downto. В каждой итерации цикла выполняется <оператор>. Если перед первой итерацией <знач1> больше <знач2> (при to) или меньше (при downto), то цикл не выполняется.
Для всех операторов цикла выход из цикла обычно осуществляется вследствие естественного окончания оператора цикла. Object Pascal содержит две процедуры позволяющие управлять ходом выполнения цикла:
Процедура break выполняет безусловный выход из цикла.
Процедура continue выполняет переход к началу новой итерации цикла.
<выражение> - выражение, дающее результат порядкового типа.
Выполняется только один <оператор>, для которого значение выражения совпало со значением приведенным в списке слева от оператора.
Если значение выражения не совпало ни с одним приведенным значением, то выполняется оператор после else (если он присутствует).
Каждое <значение> должно быть уникальным. Диапазоны значений интервального типа не должны пересекаться.
Алгоритм решения задачи проектируется путем декомпозиции всей задачи в отдельные подзадачи. Обычно подзадачи реализуются в виде подпрограмм.
Подпрограмма - это последовательность операторов, которые определены и записаны только в одном месте программы, однако их можно вызвать для выполнения из одной или нескольких точек программы. Каждая подпрограмма определяется уникальным именем. В языке ObjectPascal существуют два типа подпрограмм - процедуры и функции.
Отличие функции от процедуры заключается в том, что функция после выполнения возвращает под своим именем какое-либо значение. Поэтому функции могут использоваться в выражениях.
Описание подпрограммы состоит из:
- заголовка процедуры или функции
- разделов описаний
- тела подпрограммы
Подпрограмма может содержать такие - же разделы описаний, что и программа, а именно: разделы описания модулей, меток, констант, типов, переменных, процедур и функций. Все элементы, описанные в данных разделах, являются локальными для этой подпрограммы. Локальные элементы доступны только в данной подпрограмме. Если существует глобальный элемент с таким же именем, то будет доступен только локальный элемент.
Заголовок процедуры
procedure <имя_проц>[(<список_форм_парам>)];
Заголовок функции
function <имя_функ>[(<список_форм_парам>)]:<тип_результата>;
<тип_результата> - тип результата возвращаемого функцией.
<список_форм_парам> - список параметров подпрограммы, отделяемых друг от друга ;.
Существуют следующие типы параметров:
- Параметры-значения
- Параметры-константы
- Параметры-переменные
Параметры-значения – это локальные переменные, начальные значения, которых передаются в подпрограмму при ее вызове.
Структура: <имя_перем>[,…]:<тип>
Параметры-константы - это локальные константы, значения, которых передаются в подпрограмму при ее вызове.
Структура: const <имя_конст>[,…][:<тип>]
Параметры-переменные – это синонимы переменных, имена которых передаются в подпрограмму при ее вызове.
Структура: var <имя_перем>[,…][:<тип>]
Параметры-переменные используются, когда необходимо передать значение из подпрограммы в вызывающую программу. При этом все изменения параметра внутри подпрограммы приводят к аналогичным изменениям соответствующей переменной.
Если тип параметра-константы или параметра-переменной не указан, то такой параметр называется нетипизированным. В таком случае в качестве параметра при вызове подпрограммы можно использовать элементы любого типа.
Тело подпрограммы представляет собой составной оператор, в котором записаны операторы подпрограммы. Для функции тело подпрограммы обязательно должно включать следующий оператор присваивания:
<имя_функции>:=<выражение> или
Result:=<выражение>
Данная операция присваивания определяет результат функции - значение, которое вернет функция после выполнения.
Тело подпрограммы может содержать процедуру exit, которая осуществляет досрочный выход из подпрограммы.
Структура вызова подпрограммы:
<имя_подпр>[(<список_факт_парам>)]
<имя_подпр> - имя вызываемой подпрограммы
<список_факт_парам> - список фактических параметров(аргументов), передаваемых подпрограмме, отделяемых друг от друга ,. Каждый аргумент связывается с соответствующим параметром подпрограммы. Количество и тип аргументов в <список_факт_парам> должны соответствовать параметрам в <список_форм_парам> подпрограммы.
Если у подпрограммы нет параметров, то для вызова можно указать только имя подпрограммы.