Знай и люби операторы цикла
Со счётчиком С предусловием С послеусловием
Действие оператора for: Организует многократное исполнение тела цикла
ЗАПОМНИ термины: СЧЁТЧИК( или параметр) цикла – искусственно вводимый объект для организации работы цикла; настройка начального и конечного значения счётчика задаёт количество раз работы цикла; ТЕЛО ЦИКЛА – оператор(может быть составной) для многократного исполнения; ПРОХОД ПО ЦИКЛУ – однократное исполнение тела цикла; ЗАЦИКЛИВАНИЕ – бесконечное исполнение цикла (это очень плохо!);
Синтаксис Оператора цикла Со счётчиком Примеры: For j:=1 to 20 do x:=x-1; For k:=-5 to 0 do begin S:=s*p; write(s) end; For avatar:=a+b to c-d do if (avatar mod 2)=0 then write(avatar:6);
Условия корректной работы оператора цикла: Счётчик – объект перечисляемого типа! Шаг изменения счётчика задается атоматически +1(с to) или -1(с downto)! Пусть А-нач. Знач. Счётчика, В-кон. Знач. Счётчика; тогда количество проходов по телу цикла с to с downto А=В 0 0 АВ 0 А-В+1 В теле цикла изменять значение счётчика нельзя! Работает правило begin……….end для тела цикла
Примеры из жизни: For i:=1 to 99 do write(i*i:6); For j:=50 downto 1 do writeln(2*j); A:=2;b:=102; For k:=a to b do if (k mod 3)=0 then p:=p+1; For l:=‘a’ to ‘я’ do write(ord(l):5); For m:=1 to length(str) do writeln(copy(str),m,1); For n:=‘z’ to ‘a’ do str:=str+n; SUM:=0; For p:=10 to 101 do begin read(S);SUM:=SUM+S end; write(SUM); For r=32 to 255 do writeln(chr(r),’-’,r:4); Progress:=1; Q:=1.21; For t:=33 downto 1 do write(progress*Q); For s:=1 to 128 do If (s mod 10)=0 then write(‘*’) else write(‘ ‘);
Найти позиции буквы в фразе Program letter; Var fr:string; buk:char; i,j,L:byte; Label Mm; Begin write(‘введи фразу’); readln(fr); write(‘введи букву’);readln(buk); L:=length(fr); j:=0; Mm: i:=pos(buk,fr); If io then begin j:=j+i; write(j:4); fr:=copy(fr,i+1,L-i); goto Mm end; Write(‘end’); End.
Действие оператора с предусловием : Логика работы цикла: - пока условие ИСТИННО ттттвыполняется тело цикла; - ЛОЖНОСТЬ условия ьььь завершает цикл;
Применение оператора в задачах: Задача 1 Автомат для оплаты услуг принимает монеты любого достоинства и выдает сдачу. Надо прекратить прием монет, как только денежная сумма станет не меньше суммы оплаты услуг, и выдать сдачу. Задача 2 Построить расписание движения автобуса, если известно время начала и конца работы маршрута, длительность рейса в один конец ,время отдыха на конечных остановках. Задача 3 Для уравнения с двумя неизвестными подобрать корень с заданной точностью( например , 0.001).
Синтаксис оператора: Например: While x >= y do begin x:=x-1;y:=y+1; end;
Листинг работы цикла: X :=10; y :=2; while X>=Y do begin X :=X-1;Y :=Y+1 end; Тело цикла исполнится 5 раз !
Листинг работы цикла: X :=2; Y:=2; while X>=Y do begin X :=X-1;Y :=Y+1 end; Тело цикла исполнится 1 раз !
Листинг работы цикла: X:=2; y:=2; while X>=Y do begin X:=X+1;Y:=Y+1 end; Произошло зацикливание !
Листинг работы цикла: X :=2; Y :=3; while X>=Y do begin X :=X+1;Y :=Y+1 end; Тело цикла не исполнится ни разу !
Условия корректной работы оператора цикла: Необходимо обеспечить запуск цикла: тело цикла исполнится хотя бы один раз, если при запуске цикла условие ИСТИННО! Необходимо обеспечить завершение цикла: в ходе работы цикла условие должно изменить свое значение на ЛОЖЬ! 3. Количество проходов по телу цикла задается : -начальной установкой переменных, участвующих vvв цикле; -изменением значений переменных в теле цикла;
Примеры из жизни: S := 0; While S < 100 do begin read(money); S : = S + money; END; score := 0; While score < 33 do begin read(in); if in > 0 then score := score + 1; end; x := 0; eps :=0.01; While F1-F2 >eps do begin F2:=F1; F1:=x*x*x +x*x +5*x -12; x := x+eps; end; i := 1; a := a0; While i50 do begin a:=a+1; if a mod 2= 0 then i := i+1; write( a:5);
Построить программу для решения зада Разменный автомат имеет набор монет достоинством k1, k2 и k3, причем k1>k2>k3, k3= 1 рубль. Предложить вариант размена заданной денежной суммы, которая поступает от клиента в виде набора купюр,с минимальным количеством выдаваемых монет. Признак окончания ввода купюр – введена сумма в 0 рублей. чи:
З а п о м н и: 1- В цикле WHILE условие ПРОДОЛЖАЕТ цикл. 2- Количество проходов по телу цикла bbbзаранее ттнеизвестно. 3- Логика работы цикла: -- пока условие ИСТИННО ттттbbbbbbbbbbbbbbbbвыполняется тело цикла; -- ЛОЖНОСТЬ условия ьььь ииииbbbbbbbbbbbbbbbbзавершает цикл; 4 - Для тела цикла работает правило операторных скобок