Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
80
Добавлен:
09.05.2015
Размер:
725.5 Кб
Скачать

Тема 4. Цикличекий блок: операторы повторяющихся действий

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

Циклы делятся на детерминированные и недетерминированные. Для детерминированного цикла количество итераций известно или может быть вычислено до начала цикла. Для недетерминированного цикла количество итераций до начала цикла может быть неизвестным.

В языке VB цикл Forявляется детерминированным, а циклы Do While...,Do...Until,Do Until... иDo...While— недетерминированными. Аналогично этому, вObject Pascalциклfor— детерминированный, а циклыwhileиrepeat— недетерминированные.

4.1.Цикл for

В языке VB управляющая переменная цикла Forможет быть любого числового типа, включая целые и вещественные типы, в то время как в Object Pascal управляющая переменная циклаforдолжна быть одного из порядковых типов. Кроме того, в Object Pascal величина шага циклаforможет быть равна только +1 или -1 (т.е. следующая итерация вычисляется для следующего или предыдущего порядкового значения).

Приведем фрагмент кода VB, вычисляющего с помощью цикла Forсумму целых чисел от1до100:

Dim counter As Integer, sum As Integer

sum = 0

For counter = 1 To 100

sum = sum + counter

Next counter

Синтаксис инкрементного цикла forв Object Pascal имеет следующий вид:

for УправляющаяПеременная := НачЗначение to КонечЗначение do begin

[операторы ]

end;

Предыдущий фрагмент кода VB на Object Pascal выглядит так:

var

counter: Integer;

sum : Integer;

begin

sum := 0;

for counter := 1 to 100 do begin

sum := sum + counter;

end;

end;

Ha VB мы можем так же легко вычислить сумму чисел от 1 до 100 с помощью декрементного, а не инкрементного цикла For:

Dim counter As Integer, sum As Integer

sum = 0

For counter = 100 To 1 Step -1

sum = sum + counter

Next counter

Синтаксис декрементного цикла for в Object Pascal имеет вид

for УправляющаяПеременная := НачЗначение downto КонечЗначение do begin

[операторы ]

end;

Решим эту же задачу с помощью декрементного цикла forв Object Pascal:

var

counter : Integer;

sum : Integer;

begin

sum := 0;

for counter := 100 downto 1 do begin

sum := sum + counter;

end;

end;

4.2. Циклы while и repeat

Циклы whileиrepeatв Object Pascal являются, недетерминированными. Циклуwhileэквивалентен циклVBс предусловиемDoWhile. . .,aциклуrepeat— циклVBс постусловиемDo...Until. Обратите внимание: в Object Pascal нет эквивалентов циклам VBDo Until (цикл с предусловием) иDo.. .while (цикл с постусловием),

Синтаксис цикла whileимеет вид

while Условие do begin

[операторы;]

end;

Тело цикла while выполняется, если значение Условия равно True. Если Условие равно Falseуже при первом вхождении в цикл, то тело цикла не выполняется ни разу.

Следующий фрагмент кода вычисляет сумму целых чисел от 1 до 100 с помощью while:

sum := 0;

count := 1;

while (count <= 100) do begin

sum := sum + count;

count := count + 1;

end;

Эквивалентный код на VB имеет следующий вид:

sum = 0

count = 1

Do While (count <= 100)

sum = sum + count

count = count + 1

Loop

Синтаксис цикла repeat в Object Pascal:

repeat

[операторы; ]

until Условие;

Тело цикла repeat выполняется до тех пор, пока условие не станет истинным. Поскольку условие расположено после цикла, тело цикла обязательно выполняется, как минимум, один раз. Обратите внимание: ключевые слова begin и end в этом цикле не нужны, поскольку тело цикла ограничивается ключевыми словами repeat и until.

С помощью цикла repeat сумма целых чисел от 1 до 100 вычисляется так:

sum := 0;

count := 1;

repeat

sum := sum + count;

count := count + 1;

Until (count > 100);

Эквивалентный код на VB имеет вид

sum = 0;

count = 1

Do

sum := sum + count;

count := count + 1;

Loop Until (count > 100)

Соседние файлы в папке разработка и стандартизация