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