Решение задач. Цикл с предусловием.
Информатика. 8 класс.
учитель информатики Ефименко Е. М.
Игра «Я умею считать до …»
- 1 этап – от 1 до 10
- 2 этап – от 11 до 20
- 3 этап – числа кратные 5
- 4 этап - четные числа в порядке убывания
- 5 этап – простые числа
Задача 1.
- Ученик в первый день выучил 5 английских слов.
- В каждый следующий день он выучивал на 2 слова больше, чем в предыдущий.
- Сколько английских слов выучит ученик в 10 день занятий?
- Сколько всего слов выучит за 10 дней.
Program slova
- Program slova;
- Var A,D,S:integer;
- Обозначим через:
- D – количество дней;
- А – количество выученных за каждый день слов;
- S - количество слов выученных за все прошедшие дни.
A, D, S
S:=0
A:=5
D:=1
Какие действия повторяются?
- Увеличивается количество выученных за каждый день слов на 2;
- Увеличивается номер дня;
- Увеличивается общее количество выученных слов.
A:=A+2
D:=D+1
S:=S+A
До каких пор выполняются
повторяющиеся действия?
- Пока количество, пройденных дней не достигнет 10.
D
Начало
A, D, S
- Как запишется условие при котором должны выполняться повторяющиеся действия?
S:=0
A:=5
D:=1
-
Цикл
с предусловием
D
+
A:=А+2
D:=D+1
S:=S+a
S
Kонец
Н
S:=0
Program slova;
Var A,D,S:integer;
Begin
A:=5; D:=1; S:=5;
While D
Begin
D:=D+1;
A:=A+2;
S:=S+A;
end;
Writeln(‘ В 10 день ученик выучил ‘,A);
Writeln(‘За 10 дней ученик выучил ‘,S);
Readln
End.
A:=5
D:=1
-
D
+
A:=А+2
D:=D+1
S:=S+a
S
K
Program slova;
Var A,D,S:integer;
Begin
A:=5; D:=1; S:=5;
While D
Begin
D:=D+1;
A:=A+2;
S:=S+A;
Writeln( ‘В’, A , ‘день ученик выучил’ , A);
end;
Writeln(‘ В 10 день ученик выучил ‘,A);
Writeln(‘За 10 дней ученик выучил ‘,S);
Readln
End.
- Как надо изменить программу, чтобы на экране выводились сообщения о том, сколько слов выучено за каждый пройденный день, а не только за десятый?
Как решать задачи?
Запомните!
Внимательно прочитайте задачу.
Определите известные величины, их тип. Что надо найти? Тип величины?
Выясните, как между собой связаны все эти величины. Запишите краткое условие задачи.
Составьте план решения задачи (блок-схему).
Запишите решение задачи – программу.
Проверти правильность. Ответьте на вопрос:
Можно решить задачу другим способом?
Задача 2.
5 км
0 км
3 км
- В первый день пловец проплыл 3 км.
- В каждый последующий день он проплывал на 10% больше, чем в предыдущий день.
- В какой по счёту день пловец начнёт проплывать более 5 км в день.
Обозначим через:
D – номер дня;
S - расстояние, которое проплывает пловец в очередной день.
S:=3; D:=1;
D:=D+1;
S:=S+0,1*S;
Какие действия повторяются?
- Увеличивается номер дня;
- Увеличивается путь, который проплывает каждый день пловец на 10% от предыдущего.
5 км
0 км
3 км
- До каких пор повторяются указанные выше действия?
- Пока расстояние, которое проплывает пловец за определённый день не станет больше 5 км.
- Назовите условие выполнения цикла?
- S
5 км
0 км
3 км
Program plovec;
Var s:real;
d:integer;
Begin
S:=3; D:=1;
While S
Begin
D:=D+1;
S:=S+0,1*S;
End;
Writeln(‘В ‘, D, ‘день пловец проплывёт больше 5 км’);
Readln
End.
Н
S:=3
D:=1
-
S
+
S:=S+0,1*S
D:=D+1
D
K
Задача 3.
Вычислите , где n натуральное число.
=2*2*2*…*2 (n раз)
Обозначим:
P – произведение двоек;
i - количество множителей;
n – показатель степени
Н
n
Program tvo;
Var n,P,i:integer;
Begin
Writeln(‘ Укажите степень числа 2 ‘);
Readln (n);
P:=1; i:=1;
While i
Begin
P:=P*2;
i:=i+1;
end;
Writeln(‘ 2 в степени‘,n, ‘равно‘, P);
Readln
End.
P:=1
i:=1
-
i
+
P:=P*2
i:=i+1
P
K
Зачем?
Единицы измерения информации
Задача 4.
- Организовать имитацию движения шарика по экрану монитора.
Для того чтобы графический объект двигался по экрану, необходимо организовать повторение следующих команд:
1) Нарисовать объект;
2) Организовать временную паузу;
3) Стереть объект;
4) Изменить координаты объекта.
Задача 4.
Программа решения задачи может иметь вид:
program dvigenie;
uses graphabc;
var x,y,r:integer;
begin
x:=22; y:=22; r:=20; { начальные координаты объекта}
while x
begin
setBrushColor(clGreen); { задаем цвет объекта}
circle(x,y,r); { рисуем объект}
Sleep (10); { пауза в миллисекундах}
setBrushColor(clWhite); { выбираем цвет фона}
setPenColor (clWhite); { стираем (закрашиваем объект}
circle(x,y,r); { цветом фона)}
x:=x+4; { изменяем координаты объекта}
end;
end.
Изменяем. Дополняем.
program dvigenie;
uses graphabc;
var x,y,r:integer;
begin
x:=22; y:=422; r:=20;
while x
begin
setBrushColor(clGreen);
circle(x,y,r);
Sleep (10);
setBrushColor(clWhite);
setPenColor (clWhite);
circle(x,y,r);
x:=x+1;
y:=y-1;
end;
end.
- Получается интересно!
Выводы:
- Из рассмотренных выше примеров можно сделать вывод:
- Переменным, входящим в условие заголовка цикла с предусловием должны быть присвоены определенные начальные значения до входа в цикл.
- В теле цикла должны быть операторы, которые изменяют значения условия до тех пор, пока оно не станет ложным.
Начало
Подготовка цикла
x:=1
Kонец
x
y:=2*x-8
Тело цикла
y
Изменение параметровцикла
x:=x+1
Вопросы:
- 1. В каких случаях в программе используется цикл с предусловием?
- 2. Какой формат записи оператора while?
- 3. При каком условии происходит выход из цикла с предусловием?
- 4. В каких случаях цикл с предусловием может быть бесконечным?
- 5. Может ли цикл с предусловием
не выполниться ни разу?
Если да, то при каких условиях?
Домашнее задание:
Усовершенствовать
созданные
программы.
Рефлексия:
- «Гора УСПЕХА»
- Вершина – всё поняли и можете объяснить другому.
- Середина – вы всё поняли, но затрудняетесь объяснить другому.
- Основание – пока трудно решать задачи.