Похожие презентации:
Цикл с постусловием
1.
ЦИКЛ С ПОСТУСЛОВИЕМУчитель: Н.В. Фоменко
2.
ПОВТОРЕНИЕКакие виды циклов вы знаете?
Как работает цикл for? Какие 2 вида этого
цикла существуют?
Что нельзя делать в цикле for?
В чем особенность цикла while?
Что общего у циклов for и while?
3.
ЦИКЛ С ПОСТУСЛОВИЕМУсловие проверяется после выполнения тела цикла.
Тело цикла будет повторяться,
Тело цикла
пока проверка условия дает
результат «ложь», т.е. пока условие
Условие
не выполняется.
нет
Как только условие окажется
истинным, цикл прекращает свою работу
В этом случае условие называется условием
окончания цикла
да
4.
ЦИКЛ С ПОСТУСЛОВИЕМСинтаксис:
repeat
тело цикла
until условие;
Тело цикла
да
Условие
нет
В отличие от цикла while, даже если условие сразу
окажется истинным, цикл repeat выполнится хотя
бы один раз
Если тело цикла repeat состоит из нескольких
операторов, операторные скобки не ставят
5.
ИТАК,Если цикл по условию задачи может не
выполниться ни разу, используется while,
если, хотя бы один раз - repeat
нет
Условие
Тело цикла
да
да
Тело цикла
Условие
нет
while
repeat
6.
ЗАДАЧАСпортсмен приступает к тренировкам по
следующему графику: в первый день он
должен пробежать 10 км; каждый
следующий день нужно увеличивать
дистанцию на 10% от нормы предыдущего
дня.
Как только дневная норма достигнет или
превысит 25 км, необходимо прекратить ее
увеличивать и далее пробегать ровно 25 км.
Начиная с какого дня спортсмен будет
пробегать 25 км?
7.
РЕШЕНИЕНачало
program sport;
var i: integer; x: real;
begin
i := 1
x := 10
i := i +1
x := x +0.1*x
x>= 25
нет
да
i:=1;
x:=10;
repeat
i:=i+1;
x:=x+0.1*x;
until x>=25;
writeln ('Начиная с ', i, '-го дня
спортсмен будет пробегать 25 км')
end.
i
Конец
8.
ЗАДАЧА 2С клавиатуры вводятся числа
и подсчитывается их сумма.
Сумму необходимо
подсчитывать до первого
введенного отрицательного
числа
Что неправильно в этой блоксхеме?
Такой цикл не является ни
циклом с предусловием, ни
циклом с постусловием –
условие здесь стоит
посередине
Начало
S:=0
a
да
a< 0
нет
S:=s+a
да
ss
Конец
9.
НачалоS:=0
a
нет
a>= 0
да
S:=s+a
a
ss
Конец
Мы умеем решать такие задачи
с помощью цикла while.
В этом случае нам приходится
использовать оператор ввода
переменной а дважды – до цикла
и внутри цикла
10.
РЕШИМ ЭТУ ЗАДАЧУ С ПОМОЩЬЮ ЦИКЛА REPEATНачало
Начало
s :=
:= 00
a := 0
a
s := s +a
s := s +a
a
нет
нет
a< 0
да
да
s
Конец
Конец
Надо перенести проверку условия в
конец блок-схемы
Что плохо при таком решении?
Если сразу ввели отрицательное
число, оно тоже прибавится к сумме
Значит, надо поменять местами ввод
числа и прибавление его к сумме
Что опять неправильно?
Что же будет прибавлено к сумме во
время первого прохода цикла, ведь
значение переменной а еще не
определено!
Выход состоит в том, что переменной а
до входа в цикл присваивается
нулевое значение. Это такая
тактическая хитрость!
11.
ПРАВИЛЬНАЯ ПРОГРАММАprogram sum;
var s, a :real;
begin
s:=0; a:=0;
repeat
s:=s+a;
write (‘введите очередное число');
readln (a)
until a<0;
writeln('s=', s:5:2)
end.
12.
ЗАДАЧА 3Даны 2 положительных числа а и b, такие что а>b. На
отрезке длины а размещается максимально возможное
количество отрезков длины b (без наложения). Найти
длину незанятой части отрезка а. Умножение и
деление не использовать.
b
a
?
Надо вычитать из а значение
b, пока а не станет меньше b
program otrezok;
var a,b :integer;
begin
readln (a,b);
repeat
a:=a-b
until a<b;
writeln(a)
end.
13.
ДОМАШНЕЕ ЗАДАНИЕДаны 2 положительных числа а и b, такие что а>b.
На отрезке длины а размещается максимально
возможное количество отрезков длины b (без
наложения). Найти количество отрезков b,
размещенных на отрезке а с помощью цикла repeat.
Умножение и деление не использовать
Написать программу, в которой осуществляется ввод
целых положительных чисел до тех пор, пока не
будет введено число 0. Найти максимальное из
введенных чисел, используя цикл repeat
Ввести с клавиатуры два числа и найти их
произведение с помощью цикла repeat, используя
только операции сложения и вычитания