Оператор цикла с постусловием в языке Си++


Оператор цикла с постусловием в языке Си++Цели и задачи урока:
Образовательные:
ознакомление учащихся с новым для них видом цикла — цикла с постусловием; усвоение правильности описания этого вида цикла и программе на языке С++;
ознакомление учащихся по использованию нового вида цикла и сравнение с известным видом цикла ― циклом с постусловием
ознакомление с изменением программы, отладкой и просмотром полученных результатов (связь с прошлыми уроками);
контроль усвоения полученных знаний учащимися при выполнении самостоятельного задания;
Развивающие: 
развитие познавательных интересов, интеллектуальных и творческих способностей средствами ИКТ.
Воспитательные:
воспитание информационной культуры учащихся, внимательности, аккуратности, дисциплинированности, усидчивости.
выработка навыков:
развитие алгоритмического мышления, познавательных интересов, навыков работы на компьютере.
Цикл с предусловием является наиболее универсальным. Его можно применять для решения любых задач, предусматривающих повторение действий, т.к. при определенных обстоятельствах тело цикла может не исполниться ни разу. Однако в ряде случаев цикл с постусловием более удобен. Примером такой задачи является, например, анализ правильности ввода исходных данных, т.к. прежде чем проверять исходные данные, надо их хотя бы раз ввести.
В чем особенности применения циклов с постусловием в языке Си++?
Задача: Написать игру «Угадай число»: компьютер «загадывает» случайное число из диапазона от 0 до 9, а пользователь – должен угадать его. Программа должна подсчитывать количество попыток игрока.
Предварительные рассуждения:
Программа должна запрашивать у игрока ввод числа до тех пор, пока игрок не угадает число.
Для решения данной задачи неудобно пользоваться циклом с предусловием, т.к. прежде чем проверять угадал пользователь число или нет, сначала это число необходимо ввести. Т.о., для решения данной задачи выгоднее использовать оператор цикла с постусловием.
Решение задачи:
Какие переменные необходимы для решения задачи?
Для решения задачи необходимы 3 переменные:
пусть x – число, загаданное компьютером;
i – число игрока;
p – количество попыток.
Как будут задаваться значения для этих переменных?
Значение переменной x должно задаваться с помощью генератора случайных чисел: x=random(10); Значение этой переменной изменяться в ходе решения задачи не будет, поэтому данную команду нельзя включать в тело цикла.
Значение переменной i пользователь должен будет вводить с клавиатуры.
Начальным значением переменной p должно быть число 0, это значение будет увеличиваться при каждой новой попытке пользователя угадать число.
Что будет являться телом цикла?
Несколько раз должны повторяться следующие действия:
на экран компьютера должно выводиться приглашение на ввод пользователем числа;
введенное число должно запоминаться в переменной i;
кроме того, должно увеличиваться количество попыток игрока.
Т.е., программный код тела цикла будет выглядеть так:
{cout<<"угадай число "; cin>>i;
p++;
}
Каким будет условие в данной циклической конструкции?
Пока число игрока неравно числу компьютера, пользователь должен вводить числа. Таким образом, условие будет следующим: (i!=x)
Итак, вся конструкция цикла с постусловием для данной задачи будет выглядеть так:
do
{ cout<<"ugadai chislo ";
cin>>i;
p++;
}
while (i!=x);
Прочитать данную запись можно так: «Выполняй действия из тела цикла пока число игрока неравно числу компьютера».
Программный код для задачи будет следующим:
void main()
{
randomize();
clrscr();
int x, i, p=0;
x=random(10);
do
{cout<<"угадай число ";
cin>>i;
p++;
}
while (i!=x);
cout<<"Молодец!!!" <<'\n'<<"количество попыток="<<p;
getch();
}
Как можно представить конструкцию цикла с постусловием в общем виде?
Цикл do-while сначала выполняет тело цикла, а затем выполняет проверку условия. Повторение тела цикла происходит в том случае, пока условие принимает истинное значение.
do {тело цикла;}while (условие);
Может ли произойти такая ситуация, что тело цикла в конструкции цикла с постусловием не выполнится ни разу.
Нет, такая ситуация не может иметь место, т.к. в данной конструкции выполнение тела цикла происходит до проверки условия, таким образом конструкция гарантирует выполнение тела цикла хотя бы один раз.
I. Работа в парах или индивидуально (по выбору студентов):
Сколько раз будет выполнена проверка условия? Определить значения переменных a, b, s (составить итерационную таблицу).
void main()
{clrscr();
int a,b,s;
a=1; b=1;
do
{
a++;
b+=2;
}
while (a+b<3)
s=a+b;
cout<<"a="<<a<<" b="<<b<<" s="<<s;
getch();
}
Определите значения переменных a и b после выполнения операторов:
void main()
{clrscr();
int a=1,b=1;
do a++;
while (a<=3);
b++;
cout<<"a="<<a<<" b="<<b;
getch();
}
Определите значение переменной s после выполнения операторов:
void main()
{clrscr();
int s=0,i=0;
do
i++;
while (i<5);
s=s+100/i;
cout<<"s="<<s;
getch();
}
Определите значение переменной s после выполнения операторов:
void main()
{clrscr();
int s=0,i=1;
do {
s=s+100/i;
i--;
}
while (i>1);
cout<<"s="<<s;
getch();
}
II. Задачи для индивидуального выполнения:
1 балл:
Написать программу, которая производит суммирование некоторого количества произвольно введенных целых чисел. Признак окончания ввода – число 0.
С помощью цикла WHILE напишите программу определения идеального веса для взрослых людей по формуле: Ид. Вес = рост – 100. выход из цикла: значение роста = 210 см.
2 балла:
Найдите первые 20 натуральных чисел, делящихся нацело на 13 и 17 и больших 500.
Найти минимальное число, большее 300, которое нацело делится на 19.
3 балла:
Написать программу, которая определяет, является ли число простым. Считаем, что делители числа находятся в интервале от 2 од n/2.
Числа Фибоначчи (fn) определяются формулами: f0=f1=1; fn=fn-1+fn-2, при n=2, 3, …, т.е. это бесконечная последовательность чисел вида: 1, 1, 2, 3, 5, 8, 13 … Составить программу определения номера последнего числа Фибоначчи, которое входит в диапазон типа int.