русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2013-12-23; просмотров: 1337; Нарушение авторских прав


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

Оператор цикла с предусловием 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 это имело место.



<== предыдущая лекция | следующая лекция ==>
Циклы с заданным числом итераций | Вычисление суммы по заданной формуле


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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