Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Циклы с постусловием




Циклы с предусловием

Оператор цикла с предусловием while вызывает повторяющееся выполнение оператора до тех пор, пока некоторое условие принимает истинное значение.

Записывается цикл while следующим образом:

WHILE <логическое выражение> DO <оператор>;

Пример: возводить x в квадрат, пока он не станет больше 1000.

while x<=1000 do x:=sqr(x);

Логическое выражение вычисляется до того, как Оператор будет выполнен. Если оно возвращает значение Истина, то выполняется Оператор и вновь вычисляется значение Логического выражения.

Если Логическое выражение возвращает Ложь, то выполнение оператора while прекращается.

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

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

s:=0;

i:=1;

while i<3 do

begin

s:=s+i;

i:=i+1

end;

writeln(s);

Рассмотрим значения переменных на каждом шаге.

Шаг s i Описание
1 0   Присвоили в s ноль
2 0 1 Присвоили в i единицу
3 1 2 Т.к. 1 (значение i) меньше 3, то выполняется тело цикла: в s записывается сумма текущих значений s и i (0+1=1), а значение переменной i увеличивается на 1 (1+1=2)
4 3 3 Т.к. 2 меньше, чем 3, то вновь выполняется тело цикла: записываем новые значения в s и i

Далее результатом выражения цикла будет False, поэтому тело цикла более не выполняется, а управление передается следующему оператору – процедуре вывода на экран. Значение переменной s равно 3, следовательно, на экран выведется 3.

Пример: вычислить сумму чисел от 1 до 100.

i:=1;

sum:=0;

while i<=100 do

begin

sum:=sum+i;

i:=i+1; { или inc(i); }

end;

Оператор цикла с постусловием repeat вызывает повторяющееся выполнение оператора до тех пор, пока некоторое условие не примет истинное значение.

Записывается цикл repeat следующим образом:

REPEAT <операторы> UNTIL <логическое выражение>;

Пример: возводить x в квадрат, пока он не станет больше 1000.

repeat x:=sqr(x) until x>1000;

Между ключевыми словами repeat и until могут быть записаны сразу несколько операторов. Операторы выполняются последовательно до тех пор, пока Логическое выражение не примет значение Истина. Последовательность операторов выполняется, по крайней мере, один раз, т.к. логическое выражение вычисляется после выполнения операторов.

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

s:=0;

i:=1;

repeat

s:=s+i;

i:=i+1

until i>=3;

writeln(s);

Рассмотрим значения переменных на каждом шаге.

Шаг s i Описание
1 0   Присвоили в s ноль
2 0 1 Присвоили в i единицу
3 1 2 В s записывается сумма текущих значений s и i (0+1=1), а значение переменной i увеличивается на 1 (1+1=2). После этого вычисляется результат выражения: при i=2 результат равен False, следовательно, тело цикла выполнится еще раз
4 3 3 Вновь выполняется тело цикла: записываем новые значения в s и i. Затем происходит проверка: на этот раз выражение принимает значение Истина, а это значит, что тело цикла Repeat более выполняться не будет.

После цикла управление передается следующему оператору – процедуре вывода на экран. Значение переменной s равно 3, следовательно, на экран выведется 3.

Пример: вычислить сумму чисел от 1 до 100.

i:=0;

sum:=0;

repeat

inc(i);

sum:=sum+i;

until i=100;

Имеется три основных различия между циклом while и циклом repeat.

Во-первых, операторы в цикле repeat всегда выполняются хотя бы один раз, поскольку проверка выражения осуществляется не сразу после ключевого слова repeat. Наоборот, в цикл while, если выражение изначально имеет значение False, то пропускается все тело цикла.

Во-вторых, цикл repeat выполняется до тех пор, пока выражение не примет значение Тrue; в отличие от него цикл while выполняется, пока выражение имеет значение Тrue. Это означает, что следует внимательно заменять один тип цикла на другой.

В третьих, цикл repeat может содержать несколько операторов, не образующих составной оператор. Заметьте, что в последней программе не используется begin..end, в то время как в варианте с циклом while это имело место.




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 379; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.006 сек.