Слайд 1Урок
Оператор цикла с предусловием.
Оператор цикла с постусловием
Слайд 2Цель урока: Показать сходство и различие вложенных циклов в языках программирования
QBasic и Turbo Pascal 7.0.
План урока:
Проверка домашнего задания.
Цикл с предусловием.
Оператор цикла с постусловием
Решение задач.
Домашнее задание.
Слайд 3Проверка домашнего задания
1. Определить значение переменной S после выполнения следующих операторов:
s=0:n=5 For i=2 То n: s=s+100 \ i :next
s:=0; n:=5 For i:=2 То n Do s:=s+100 Div i Ответ:S=128
2. А) правильно Б) неправильно, так как начальное значение меньше конечного.
Вопросы.
Как записывается оператор цикла с параметром? Как он работает?
Как записывается полный условный оператор? Как он работает?
Как записывается неполный условный оператор? Как он работает?
Слайд 4Цикл с предусловием.
While ... Do
Цикл с предусловием используется для программирования процессов,
в которых число повторений оператора цикла не известно, а задается некоторое условие его окончания.
Выполнение оператора цикла с предусловием начинается с проверки условия, записанного после слова while. Если оно соблюдается, то выполняется <тело цикла>, а затем вновь проверяется условие и т.д. Как только на очередном шаге окажется, что условие не соблюдается, то выполнение <тела цикла> прекратится.
Слайд 5Дано натуральное число n. Посчитать количество цифр в числе
Подсчет количества цифр
начнем с последней цифры числа. Увеличим счетчик цифр на единицу. Число уменьшим в 10 раз (тем самым мы избавляемся от последней цифры числа). Далее с получившимся числом проделаем ту же последовательность действий и т.д., пока число не станет равным нулю.
Примечание.
В теле цикла обязательно должен быть оператор, влияющий на соблюдение условия, в противном случае произойдет зацикливание.
Слайд 6Program prim1;
uses crt;
Var m, n: Longint;
k: Integer; {счетчик цифр}
Begin
clrscr;
Writeln('
Введите N='); Readln(n);
присваиваем начальное значение.
m: = n; k:=0;
While m<>0 Do Begin
цифру, т.е. в 10 раз.
k:=k+1; m:= m Div 10; { Inc(k) }
End;
Writeln('В числе ',n,' - ',k,' цифр!');
Readln;
End.
QB
TP
Слайд 7 Оператор цикла с постусловием
DO-LOOP
Repeat (повторять) Until (до тех пор,
пока)
Если цикл должен повториться по TRUE, то используйте управляющее слово WHILE.
Если цикл должен повториться по FALSE, то используйте управляющее слово UNTIL.
Слайд 8Для программной реализации в Turbo Pascal 7.0 циклических процессов с неизвестным
числом повторений существует еще один оператор — оператор цикла с постусловием, который имеет следующий вид:
Repeat <оператор 1>;
<оператор 2>;
<оператор n>;
Until <условие>;
где Repeat (повторять), Until (до тех пор, пока …)
Слайд 9Отличие этого оператора от оператора цикла с предусловием: проверка условия производится
после очередного выполнения тела цикла. Это обеспечивает его выполнение хотя бы один раз.
Данный оператор цикла предполагает наличие нескольких операторов в теле цикла, поэтому служебные слова Begin и End не нужны.
Последовательность операторов, входящих в тело цикла выполняется один раз, после чего проверяется соблюдение условия, записанного следом за служебным словом Until. Если условие не соблюдается, цикл завершается. В противном случае — тело цикла повторяется еще раз, после чего снова проверяется соблюдение условия.
Слайд 10При описании циклов с постусловием необходимо принимать во внимание следующее:
- перед
первым выполнением цикла условие его окончания (или продолжения) должно быть определено;
- тело цикла должно содержать хотя бы один оператор, влияющий на условие окончания (продолжения), иначе цикл будет бесконечным;
- условие окончания цикла должно быть в результате выполнено.
Слайд 11 Составить программу планирования закупки товара в магазине на сумму, не
превышающую заданную величину.
Решение
х, k — соответствующие цена и количество товара,
р — заданная предельная сумма,
s — общая стоимость покупки. Начальное значение общей стоимости покупки (s) равно нулю. Значение предельной суммы считывается с клавиатуры. Необходимо повторять запрос цены и количества выбранного товара, вычислять его стоимость, суммировать ее с общей стоимостью и выводить результат на экран до тех пор, пока она не превысит предельную сумму р. В этом случае на экран нужно вывести сообщение о превышении:
Слайд 12program prim9;
uses crt;
var c,k,p,s:integer;
begin
clrscr;
write('пред сумма = ');readln(p);
s:=0;
repeat
writeln('цена тов и его
кол-во =');
readln(c,k);
s:=s+c*k;
writeln('стоимость покупки =',s);
until s>p;
writeln('суммарная стоим. покупки > предел. суммы ');
readln;
end.
Слайд 13Самостоятельно
Осуществите досрочный выход из цикла при условии, что Вы приобрели вещи
на сумму Р/2.
If S>p/2 then exit do if (s>p/2) then break;
Слайд 14Алгоритм Евклида — это алгоритм нахождения наибольшего общего делителя (НОД) двух
целых неотрицательных чисел.
Алгоритм Евклида нахождения НОД основан на следующих свойствах этой величины. Пусть х и у одновременно не равные нулю целые неотрицательные числа и пусть x >= y, тогда если у=0, то НОД(х,у) = х, а если у<>О, то для чисел х, у и r, где r — остаток от деления х на у выполняется равенство НОД(х, у)=НОД(у, r).
Например, пусть х=48, а у=18, найдем их наибольший общий делитель.
Слайд 16 Program prim3;
uses crt;
Var х, у: Integer;
Begin
clrscr;
Вводим
два целых неотрицательных числа.
Writeln('x:=,y:=');Readln(x,y);
Repeat
If x>y Then x:=x Mod у Else y:=y Mod х;
До тех пор, пока одно из чисел не станет равно нулю.
Until (х=0) Or (y=0);
Вывод НОД - без условного оператора, так как одно из чисел
равно нулю.
Writeln('НОД=',х+у));
Readln;
End.
QB
TP
Слайд 17 Домашнее задание.
Дана последовательность операторов:
а:=1; b:=1;
while a+b
b:=b+2 End;
s:=a+b
Сколько раз будет повторен цикл, и какими будут значения переменных а, b, и s после завершения этой последовательности операторов?
Определить значение переменной s после выполнения следующих операторов:
s:=0; i:=l;
Repeat
s:=s+5 Div i; i:=l-l;
Until i<=1;