Автор работы: Пользователь скрыл имя, 11 Декабря 2011 в 20:09, лабораторная работа
Цель работы:
Познакомиться с операторами цикла, научиться составлять программы с использованием операторов повторения.
Лабораторная работа №5
ПРОГРАММИРОВАНИЕ
ЦИКЛИЧЕСКИХ АЛГОРИТМОВ.
Цель работы:
Познакомиться с операторами цикла, научиться составлять программы с использованием операторов повторения.
5.1 Оператор цикла FOR
Общие сведения:
Оператор FOR используется, когда известно число повторений в цикле.
Существует два варианта оператора:
где переменная - переменная порядкового типа, причем она последовательно принимает значения от начального до конечного с шагом 1.
где переменная
принимает последовательно убывающие
значения с шагом -1.
Следует запомнить и то, что для обоих вариантов записи цикла с параметром справедливо: если начальное и конечное значения равны, то тело цикла выполнится один раз.
I – параметр цикла
N
– начальное значение
К
– конечное значение параметра
Выполняется следующим образом:
Нельзя
изменять параметр в теле цикла. При
использовании кратных (вложенных)
циклов применять разные переменные
в качестве параметров. Определять
до цикла значения всех используемых
в нем переменных. Не ставить точку
с запятой после do.
Пример №1
Наводнение
продолжалось ровно сутки. В первый час
вода в реке поднялась на 1 дюйм, во второй
- на 2, в третий - на 3, и т.д. На сколько дюймов
поднимется уровень воды за сутки? (Дана
программа вычисления суммы 24 членов
ряда: 1+2+3+...+24):
var k,s: integer;
begin
s:=0;
for k:= 1 to 24 do
s:=s+k;
writeln('сумма=', s);
end.
Пример №2
Вывести
на экран натуральные числа от
1 до 9 в обратном порядке.
Program z;
Var i:integer;
Begin
For i:=9 downto 1 do
Writeln(i);
End.
Параметр
цикла может и не использоваться в теле
цикла, так что основное его назначение
– это управление числом повторений цикла.
Например, значение y= x n, где n>=0 – целое,
можно вычислить по следующему алгоритму:
предварительно положить y=1, а затем n раз
домножить это значение на x:
Пример №3
Readln(n);
Readln(x);
Y:= 1;
For i:= 1 to n do y:= y*x;
Как видно, здесь параметр цикла i служит лишь для того, чтобы тело цикла (оператор y:= y* x) выполнилось нужное число раз.
Если
необходимо последовательно выполнять
несколько операторов в теле цикла,
их следует объединить в составной
оператор с помощью операторных
скобок BEGIN...END.
Порядок выполнения работы:
Варианты заданий:
512 рыцарей собрались на турнир,
Чтоб самого достойного узнал волшебный мир,
Они сразились по двое и до исхода дня
Из каждой пары рыцарей один упал с коня.
И если будут рыцари все так же продолжать,
То сколько дней осталось им друг с другом воевать?
5.2 ОПЕРАТОР ПОВТОРА WHILE
цикл
с предусловием (цикл ПОКА)
Оператор повтора
while состоит из заголовка и тела
цикла. Ключевые слова while и do обозначают
"до тех пор, пока" и "выполняй"
соответственно.
while <Условие выполнения цикла> do
{ Инструкции }
end;
В
операторе while проверка <Условие выполнения
цикла> производится в самом начале оператора
— если значение условия равно true (истина),
то выполняются инструкции цикла, находящиеся
между begin и end и снова вычисляется выражение
<Условие выполнения цикла>. Так продолжается
до тех пор, пока значение <Условие выполнения
цикла> не станет равно false (ложь).
Пример №1
Рассмотрим фрагмент программы суммирования чисел от 1 до 10.
…
s:= 0; i:= 1;
while i<=10 do { находим сумму чисел от 1 до 10 }
begin
s:=s+1;
i:=i+1; { изменение переменной управления циклом }
end;
…
Оператор
цикла WHILE организует выполнение
одного оператора неизвестное заранее
число раз. Выход из цикла осуществляется,
если некоторое логическое выражение
окажется ложным. Так как истинность логического
выражения проверяется в начале каждого
повтора, тело цикла
может не выполняться
ни разу.
Пример №2
Найти сумму цифр в записи данного натурального числа;
Program SUM;
Var a,b,s,k:Integer;
Begin
Readln(a);
s:=0;
While a<>0 do
begin
b:=b mod 10;
s:=s+b;
a:=trunc(a/10); { a := a div 10 }
end;
Writeln(s);
End.
Следует знать:
• число повторений операторов (инструкций) цикла while определяется в ходе работы программы и, как правило, заранее неизвестно;
• после слова while записывается условие продолжения выполнения инструкций цикла, в этом отличие цикла while от цикла repeat;
•
условие — это выражение
• для успешного завершения цикла while в его теле обязательно должны присутствовать инструкции, оказывающие влияние на условие выполнения инструкций цикла;
• цикл while — это цикл с предусловием, т. е. инструкции тела цикла вообще могут быть не выполнены, если проверяемое условие ложно с самого начала;
• исходя из последнего утверждения цикл while считают самым универсальным видом цикла;
• цикл while обычно применяется в тех же задачах, что и repeat (в зависимости от личного вкуса программиста). Удобнее всего использовать его в тех случаях, когда возможны ситуации невыполнения цикла;
•
в операторе цикла while точка с
запятой никогда не ставится после
зарезервированного слова do.Общие сведения:
5.3 ОПЕРАТОР ПОВТОРА REРЕАТ
цикл
с постусловием (цикл ДО)
Оператор цикла REPEAT организует выполнение цикла, состоящего из любого числа операторов, с неизвестным заранее числом повторений. Тело цикла выполняется хотя бы один раз. Выход из цикла осуществляется при истинности некоторого логического выражения. Оператор
rереаt
состоит из заголовка (rереаt),
тела и условия окончания (
repeat
{ Инструкции )
until <Условие выхода из цикла>;
Вначале
выполняется тело цикла — инструкции,
которые находятся между rереаt и
until, затем проверяется значение
условия выхода из цикла. В том
случае, если оно равно falsе (ложь), т.
е. не выполняется — инструкции цикла
повторяются еще раз. Так продолжается
до тех пор, пока условие не станет
true (истина).
Пример №2