Информатика Ответы на вопросы 3

Вид материалаДокументы
16 Метки и оператор перехода.
Метка в Турбо Паскале
17 Операторы циклов с предусловием, постусловием и с параметром в Turbo Pascal`е
Подобный материал:
1   ...   6   7   8   9   10   11   12   13   14

16 Метки и оператор перехода.


Помимо операторов условного перехода существует также оператор безусловного перехода goto. Формат:

GOTO <метка>.

Здесь GOTO - зарезервированное слово (перейти [на метку]); <метка> - метка.

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

Метка располагается непосредственно перед помечаемым оператором и отделяется от него двоеточием. Оператор можно помечать несколькими метками, которые в этом случае отделяются друг от друга двоеточием. Перед тем как появиться в программе (процедуре или функции), в которой она используется, метка должна быть описана. Описание меток состоит из зарезервированного слова LABEL (метка), за которым следует список меток.

label 1;

begin

...

goto 1;

...

1: WriteLn('Переход к метке 1');

end.

Действие оператора GOTO состоит в передаче управления соответствующему меченному оператору.

При использовании меток необходимо руководствоваться следующими правилами:

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

метки, описанные в процедуре (функции), локализуются в ней, поэтому передача управления извне процедуры (функции) на метку внутри нее невозможна.

17 Операторы циклов с предусловием, постусловием и с параметром в Turbo Pascal`е


Операторы циклов с предусловием, постусловием и с параметром в Turbo Pascal`е

Оператор цикла с предусловием:

Оператор цикла с предусловием организует выполнение одного (воз-

можно составного) оператора неизвестное чило раз. Выход из цикла осу-

ществляется, если некоторое логическое выражение окажется ложным. Так

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

может не выполнится ни разу.

Структура оператора.

WHILE <условие> DO <оператор>;

В этой структуре:

<условие> - логическое выражение, истинность которого проверяется

вначале выполнения циклического оператора;

<оператор> - любой выполняемый оператор языка (в том числе и сос-

тавной, т. е. последовательность операторов, заключённая в операторные

скобки BEGIN - END).

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

Пока условие истинно выполняется оператор, следующий за служебным

словом DO. Как только условие становится ложно выпонение оператора

цикла прекращается.

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

ящего из любого количества операторов неизвестное заранее количество

раз. Выход из цикла осуществляется, если некоторое логическое выраже-

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

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

Структура оператора:

REPEAT

<Оператор 1>;

<Оператор 2>;

. . .

<Оператор N>;

UNTIL <условие>;

В этой структуре:

<Оператор 1>; <Оператор 2>; . . . <Оператор N>; - тело цикла.

<условие> - логическое выражение, ложность которого проверяется

после выполнения тела цикла.

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

Выполняются операторы, следующие за служебным словом REPEAT. Пос-

ле этого проверяется условие. Если условие ложно, то происходит возв-

рат к выполнению операторов, следующих за служебным словом REPEAT и

снова проверяется условие. Если условие истинно, то выполнение тела

цикла прекращается.

В "жаргонном" переводе на русский язык, оператор цикла с постус-

ловием "звучит" так:

Повторять тело цикла пока не выполнится условие.

В цикле REPEAT тело цикла выполняется по крайней мере один раз.


Оператор цикла с параметром организует выполнение одного операто-

ра заранее известное количество раз.


Структура оператора

Существует два варианта оператора.

Вариант первый:

FOR i := start TO finish DO <оператор>

Вариант второй:

FOR i := start DOWNTO finish DO <оператор>

В этих структурах:

i - параметр цикла;

start - начальное значение параметра;

finish - конечное значение параметра;

<оператор> - тело цикла.


Тип переменной цикла i и значений start и finish должен быть по-

рядковым !

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

1. Вычисляются и запоминаются начальное - start, и конечное - finish,

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

виде конкретного значения (в этом случае нет необходимости в вычис-

лениях) или в виде выражения, значение которого вычисляется в нача-

ле выполнения цикла.

2. Параметру цикла i присваивается значение start.


3. Значение параметра цикла i сравнивается со значением finish. Опера-

тор "тело цикла" будет выполнен при выполнении следующего условия:

первый вариант оператора: i <= finish;

второй вариант опеартора: i >= finish.

В противном случае происходит прекращение выполнения циклического

оператора.

4. Параметру цикла присваивается:

первый выриант оператора: следующее большее значение;

второй вариант оператора: следующее меньшее значение.

5. Выполняется пункт 3 данной схемы.


Часто говорят, что первый вариант оператора цикла с параметром, -

цикл с возрастающим параметром; второй вариант, - с убывающим параметром.

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

Телом цикла может быть только один оператор. Для того, чтобы в

теле цикла с параметром выполнить несколько операторов, их необходимо

объединить операторными скобками BEGIN END.

После прекращения выполнения оператора, значение параметра цикла

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

осуществлён с помощью GOTO или стандартной процедуры Break.