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

N = 10;

 

Var

 

S, I: Integer;

 

Begin

 

S := 0;

 

I := 1;

{Установка начального значения I}

Repeat

 

S := S + I * I;

 

I := I + 1

{Самостоятельное изменение параметра I}

Until I > N;

{Выход из цикла по выполнению условия}

Writeln (S)

 

End.

 

Сравните программу примера 7.15 с программами, приведенными в примерах 7.13, 7.14. В примере 7.15, по сравнению с использованием оператора For, самим нужно наращивать значение параметра I и устанавливать его в исходное значение.

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

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

Формат оператора While определяет рисунок 7.9

<Оператор_While> ::=

While <Логическое_выражение> Do

<Оператор>

Рисунок 7.9 – Синтаксическая диаграмма оператора цикла с предусловием

На данном рисунке While – пока, Do – делать.

<Оператор> определяет тело цикла. Перед каждым его выполнением вычисляется значение <Логического_выражения>. Если оно равно True, то тело цикла выполняется. Выполнение цикла прекращается, когда

156

<Логическое_выражение> впервые станет равным False. Если к началу выполнения цикла значение < Логического выражения> равно False, то тело цикла не выполняется ни разу.

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

Оператор While является наиболее универсальным из операторов цикла. Его можно использовать и вместо операторов For и Repeat. Однако это не всегда удобно.

Пример 7.16.

Вычислить значение функции

Y = sin X

через разложение функции в бесконечный ряд

Y = sin X = X X 3 / 3! + X 5 / 5! X 7 / 7! + ...

с точностью Eps = 0,0001.

Алгоритм решения данной задачи рассмотрен в п. 2.3.3 (см. Пример 2.5).

Program Sin2; Const

eps = 0.0001; Var

y, x,: real; n: integer; vs: real; Begin

Readln (x); y := x;

n := 2; vs := x;

While abs(vs) >= eps Do {Вход в цикл по выполнению условия}

Begin

vs := –vs * x * x / (2 * n – 1) / (2 * n – 2); n := n + 1;

y := y + vs

End;

Writeln (x, y, eps) End.

157

Аналогичная программа, но с использованием оператора Repeat...Until, приведена в примере 7.14. Различия между ними выделены жирным шрифтом.

С помощью оператора While можно программировать и циклы с заданным числом повторений.

Пример 7.17.

Вычислить для N = 10

 

N

 

S = i 2 .

 

i =1

Program S4;

 

Const

 

N = 10;

 

Var

 

S, I: Integer;

 

Begin

 

S := 0;

 

I := 1;

{Установка начального значения I}

While I <= N Do

{Вход в цикл по выполнению условия}

Begin

 

S := S + I * I;

 

I := I + 1

{Самостоятельное изменение параметра I}

End;

 

Writeln (S)

 

End.

 

 

 

Аналогичные программы, но реализованные с использованием оператора For и оператора Repeat...Until, приведены в примерах 7.12, 7.13, 7.15.

7.3.4. Операторы Continue и Leave

Данные операторы предназначены для гибкого управления операторами циклов For, While, Repeat.

Оператор Continue осуществляет передачу управления на конец тела цикла.

Формат оператора Continue представляет рисунок 7.10.

158

<Оператор_Continue> ::=

Continue

Рисунок 7.10 – Синтаксическая диаграмма оператора Continue

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

Пример 7.18.

Фрагмент программы, использующей оператор Continue.

--------------------------

For I := 1 To N Do Begin

<Операторы>; If X > 0 Then

Continue Else

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

End;

--------------------------

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

Оператор Break служит для безусловного выхода из операторов For, Repeat и While.

Формат оператора Break иллюстрирует рисунок 7.11.

159

<Оператор_ Break > ::=

Break

Рисунок 7.11 – Синтаксическая диаграмма оператора Break

Если в примере 7.18 вместо оператора Continue записать оператор Break, то по отмеченной ветви осуществится выход из цикла: цикл при следующих значениях параметра выполняться не будет, осуществляется передача управления оператору, следующему за оператором цикла.

Использование операторов Continue и Break позволяет практически во всех программах обходиться без оператора безусловного перехода Goto.

160

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