Тема: «Циклы»
Содержание Цикл с параметром Структура цикла Операторы Решение задачи Цикл с предусловием Структура цикла Операторы Решение задачи Цикл с постусловием Структура Операторы Решение задачи Задачи для самостоятельного решения
Цикл-это многократное повторение последовательности действий по некоторому условию. Различают три вида циклов: Цикл с параметром; Цикл с предусловием; Цикл с постусловием.
Цикл с параметром
Структура цикла («ДЛЯ») с параметром :=.. Тело цикла
Операторы цикла с параметром For i:=1 to n do ; Используется в том случае, если тело цикла содержит только одну команду. Пример: For i:=1 to 10 do s:=s+1;
Если тело цикла содержит несколько команд, то For i:=1 to n do begin ; End; параметрЗначение 1Значение 2 to автоматически увеличивает значение параметра на 1
Если >, то For i:=n downto 1 do begin ; End; downto автоматически уменьшает значение параметра на 1 параметрЗначение 2Значение 1
Задача: Найти сумму 5 произвольных чисел, введенных с клавиатуры. начало S:=0 i:=1.. 5 x S:=S+x S конец
Программа: Program summa_5; Uses crt; Var x, S: integer; Begin S:=0; For I:=1 to 5 do begin write(Введите число ); readln(x); S:=S+x; end; Writeln( S=,S); End. S xi Проверка условия
Цикл с предусловием «Пока»
Цикл с предусловием используется в том случае, когда число шагов цикла точно не определено, выход из цикла осуществляется по какому-либо условию.
Структура цикла с предусловием Условие Тело цикла + -
Операторы цикла с предусловием Если тело цикла содержит только одно действие, то While do ; Пример: While (s>0) do s:=s-1;
Если тело цикла содержит несколько действий, то While do begin ; ……………. ; end;
Задача: Найти сумму цифр введенного целого числа Начало n S:=0 n>0 ost:=n mod 10 n:=n div 10 s:=s+ ost S Конец + -
Программа: Program number; Uses crt; Var n,ost,s:integer; Begin Clrscr; Write(Введите число ); Readln(n); S:=0; While (n>0) do begin ost:=n mod 10; s:=s+ ost; n:=n div 10; End; Writeln( S=,s); End. Посмотрим, как работает программа, для чего составим таблицу: n ost S Проверка условия > > > > >0 S=13 12
Цикл с постусловием «До»
Аналогично циклу с предусловием цикл с постусловием используется в том случае, когда число шагов цикла точно не определено, выход из цикла осуществляется по какому- либо условию.
Структура цикла с постусловием +- Тело цикла Условие
Операторы цикла с постусловием Repeat ; ………………. ; Until ; Пример: Repeat s:=s-1; Until (s=0);
Задача: Найти наибольший общий делитель двух целых чисел (алгоритм Евклида). начало a, b a > b a:=a-b a=b NOD:=a b:=b-a NOD конец
Программа: Program NOD_two; Uses crt; Var a, b,NOD:integer; Begin Clrscr; Write(Введите два числа ); Readln(a,b); repeat if a>b then a:=a-b else b:=b-a; Until (a=b); NOD:=a; Writeln( NOD=,NOD); End. Посмотрим, как работает программа, для чего составим таблицу: a b NOD Проверка условия > > = 6 12 = 6 12 >6 6 6 = 6 6 NOD=6
Задачи для самостоятельного решения 1. Начав тренировки, спортсмен в первый день пробежал 10 км. Каждый день он увеличивал дневную норму на 10% нормы предыдущего дня. Какой суммарный путь пробежит спортсмен за 7 дней. ПодсказкаРешение 2. Васе Уточкину в день рождения родители подарили 1 рубль, чтобы он с друзьями мог сходить в кафе. Сколько бутылок воды выпьет Вася с друзьями, если бутылка воды стоит 20 коп, а за каждую пустую бутылку бармен возвращает 12 коп ? Подсказка
Блок-схема к решению 1 начало конец S:=10; Sd:=10 d:=1 d:=d+1 Sd:=Sd*1.1; S:=S+Sd D=7 начало
Решение задачи 1 Program beg; Uses crt; Var S,Sd: real; d:byte; Begin clrscr; S:=10; Sd:=10; For d:=2 to 7 do begin Sd:=1.1*Sd; S:=S+Sd; end; Writeln(S=,S); End. Program beg; Uses crt; Var S,Sd: real; d:byte; Begin clrscr; S:=10; Sd:=10; While d
Блок-схема к решению 2 начало конец S:=100 kol:=0 S>20 k:=S div 20 Kol:=kol + k S:=S mod 20 +k*12 kol + -
Выбор цикла зависит от особенностей условия задачи. Только практика подскажет Вам оптимальное решение.