Уроки 40–43. Программирование циклических алгоритмов
Планируемые образовательные результаты:
предметные – умение
записывать на языке программирования короткие алгоритмы, содержащие
алгоритмическую конструкцию цикл;
метапредметные – умение самостоятельно планировать пути
достижения целей; умение соотносить свои действия с
планируемыми результатами, осуществлять контроль своей
деятельности, определять способы действий в рамках
предложенных условий, корректировать свои действия в
соответствии с изменяющейся ситуацией; умение оценивать
правильность выполнения учебной задачи;
личностные – алгоритмическое мышление, необходимое для
профессиональной деятельности в современном обществе;
представление о программировании как сфере возможной
профессиональной деятельности.
Решаемые учебные задачи:
1) познакомиться с правилами записи оператора while;
2) рассмотреть пример программирования циклического алгоритма с помощью оператора while;
3) получить опыт программирования циклов с заданным условием продолжения работы;
4) познакомиться с правилами записи оператора repeat;
5) рассмотреть пример программирования циклического алгоритма с помощью оператора repeat;
6) получить опыт программирования циклов с заданным условием окончания работы;
7) познакомиться с правилами записи оператора for;
8) рассмотреть пример программирования циклического алгоритма с помощью оператора for;
9) получить опыт программирования циклов с заданным числом повторений;
10) подвести учащихся к выводу, что для решения одной и той же задачи можно разработать разные алгоритмы;
11) сформировать умение записывать на языке программирования короткие алгоритмы с циклами.
Основные понятия, рассматриваемые на уроках:
оператор while;
![]()
оператор repeat;
![]()
оператор for.
Используемые на уроке средства ИКТ:
персональный компьютер (ПК) учителя, мультимедийный
проектор, экран;
ПК учащихся.
Электронные образовательные ресурсы
презентация «Программирование циклических алгоритмов» из электронного
приложения к учебнику.
Особенности изложения содержания темы урока
Все четыре урока – уроки-практикумы. Они обеспечены большим количеством задач в учебнике и в рабочей тетради. Выбор тех или иных задач для выполнения на уроке и дома остаѐтся за учителем.
На последнем уроке можно провести небольшую проверочную работу (на 15 мин).
Ответы и решения к заданиям в РТ.
№ 189.
|
a) |
s |
i |
i < 5 |
б) |
s |
i |
i<5 |
в) |
s |
i |
i > 1 |
|
|
0 |
0 |
да |
|
0 |
0 |
да |
|
0 |
2 |
да |
|
|
1 |
1 |
да |
|
|
1 |
да |
|
1 |
1 |
нет |
|
|
2 |
2 |
да |
|
|
2 |
да |
|
|
|
|
|
|
3 |
3 |
да |
|
|
3 |
да |
|
|
|
|
|
|
4 |
4 |
да |
|
|
4 |
да |
|
|
|
|
|
|
5 |
5 |
нет |
|
1 |
5 |
нет |
|
|
|
|
|
№ 190. |
|
|
|
|
|
|
|
|
|
|
|
|||
|
а = 23 |
|
p |
|
s |
p > 0 |
а = 32 |
p |
s |
p > 0 |
|||||
|
|
|
23 |
|
0 |
|
да |
|
|
|
32 |
0 |
да |
||
|
|
|
2 |
|
3 |
|
да |
|
|
|
3 |
2 |
да |
||
|
|
|
0 |
|
5 |
|
нет |
|
|
0 |
5 |
нет |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
а = 109 |
p |
|
|
|
s |
|
p > 0 |
|
|
|
|
|||
|
|
|
109 |
|
|
0 |
|
да |
|
|
|
|
|||
|
|
|
10 |
|
|
9 |
|
да |
|
|
|
|
|||
|
|
|
1 |
|
|
|
10 |
|
да |
|
|
|
|
||
|
|
|
0 |
|
|
|
11 |
|
нет |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
№ 191. Опечатки в условии. |
|
|
|
|
|
|
алг |
program n_191; |
s |
k |
k < 6 |
|
|
цел s, k |
var s, k: integer; |
0 |
1 |
да |
|
|
нач |
begin |
2 |
2 |
да |
|
|
s := 0 |
s :=0; |
4 |
3 |
да |
|
|
k := 1 |
k:=1; |
|
|
|
|
|
6 |
4 |
да |
|
||
|
нц пока k < 6 |
while k < 6 do |
|
|
|
|
|
8 |
5 |
да |
|
||
|
s := s + 2 |
begin |
|
|
|
|
|
10 |
6 |
нет |
|
||
|
k := k + 1 |
s:= s + 2; |
|
|
|
|
|
|
|
|
|
||
|
кц |
k:=k+1; |
|
|
|
|
|
|
|
|
|
||
|
вывод s |
end; |
|
|
|
|
|
|
|
|
|
||
|
кон |
writeln (’s =’, s) |
|
|
|
|
|
|
|
|
end. |
|
|
|
||
|
№ 192. Приведено 2 варианта программ. |
|
|
||||||
|
program n_192_1; |
|
k |
t |
k > 1 |
|
|||
|
var t, k: integer; |
|
10 |
|
50 |
да |
|
||
|
begin |
|
|
|
8 |
|
45 |
да |
|
|
k := 10; |
|
6 |
|
40 |
да |
|
||
|
t := 50; |
|
|
|
|
|
|
||
|
|
4 |
|
35 |
да |
|
|||
|
while k>1 do |
|
|
|
|
|
|
||
|
|
2 |
|
30 |
да |
|
|||
|
begin |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
25 |
нет |
|
|
|
t := t - 5; |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|||
|
k := k -2 |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|||
|
end; |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|||
|
writeln (t, k); |
|
|
|
|
|
|
||
|
end. |
|
|
|
|
|
|
|
|
|
program n_192_2; |
|
|
|
|
|
|
||
|
var t, k: integer; |
|
|
|
|
|
|
||
|
begin |
|
|
|
|
|
|
|
|
|
k := 10; |
|
|
|
|
|
|
||
|
t := 50; |
|
|
|
|
|
|
||
|
repeat |
|
|
|
|
|
|
||
|
t := t - 5; |
|
|
|
|
|
|
||
|
k := k -2 ; |
|
|
|
|
|
|
||
|
until |
k < 1; |
|
|
|
|
|
|
|
|
writeln (t, k) |
|
|
|
|
|
|
||
|
end. |
|
|
|
|
|
|
|
|
|
№ 193. |
|
|
|
|
|
|
||
|
а) |
|
|
|
|
|
|
||
|
s |
|
i |
i < 1 |
|
|
|
|
|
|
0 |
|
3 |
нет |
|
|
|
|
|
|
1 |
|
2 |
нет |
|
|
|
|
|
|
3 |
|
1 |
нет |
|
|
|
|
|
135
|
8 |
0 |
да |
|
б) |
|
|
|
s |
i |
i <=1 |
|
0 |
1 |
да |
|
1 |
0 |
нет |
|
№ 194. Опечатка: условие выхода из цикла x=0. |
|
|
|
|
|
||||
|
program n_194; |
s |
x |
|
x = 0 |
|
|
|
|
|
|
var s, x: integer; |
0 |
1 |
|
|
нет |
|
|
|
|
|
begin |
1 |
5 |
|
|
нет |
|
|
|
|
|
s := 0; |
6 |
-10 |
|
|
нет |
|
|
|
|
|
repeat |
|
|
|
|
|
|
|
|
|
|
-4 |
3 |
|
|
нет |
|
|
|
|
|
|
read (x); |
|
|
|
|
|
|
|
|
|
|
-1 |
-8 |
|
|
нет |
|
|
|
|
|
|
s := s + x; |
|
|
|
|
|
|
|
|
|
|
-9 |
6 |
|
|
нет |
|
|
|
|
|
|
until x = 0; |
|
|
|
|
|
|
|
|
|
|
-3 |
4 |
|
|
нет |
|
|
|
|
|
|
writeln (‘s =’, s) |
|
|
|
|
|
|
|
|
|
|
1 |
0 |
|
|
да |
|
|
|
|
|
|
end. |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
№ 195. Опечатка в условии. Подсчитывается количество введѐнных |
|
||||||||
|
чисел, больших 1. |
|
|
|
|
|
|
|
|
|
|
k := 0; |
k |
x |
|
x > 1 |
x = 0 |
|
|
||
|
repeat |
0 |
1 |
|
|
нет |
|
нет |
|
|
|
read (x); |
1 |
5 |
|
|
да |
|
нет |
|
|
|
if x > 1 then k := k+1; |
|
-10 |
|
|
нет |
|
нет |
|
|
|
until x = 0; |
|
|
|
|
|
|
|
|
|
|
2 |
3 |
|
|
да |
|
нет |
|
|
|
|
writeln (‘k =’, k) |
|
|
|
|
|
|
|
|
|
|
|
-8 |
|
|
нет |
|
нет |
|
|
|
|
|
3 |
6 |
|
|
да |
|
нет |
|
|
|
|
|
1 |
|
|
нет |
|
нет |
|
|
|
|
4 |
2 |
|
|
да |
|
нет |
|
|
|
|
|
-7 |
|
|
нет |
|
нет |
|
|
|
|
5 |
4 |
|
|
да |
|
нет |
|
|
|
|
|
0 |
|
|
нет |
|
да |
|
|
№ 196. Опечатка в условии. Подсчѐт количества отрицательных и количества положительных чисел, вводимых с клавиатуры.
136

Начало
Список данных
x,, k1, k2 - цел
k1 :=0
k2 :=0
x
да
x < 0
нет
k1 :=k1 + 1
да
x < 0
k2 :=k2 + 1
нет
нет
x = 0
да
k1, k2
Конец
№ 197. a) Лучше исправить на s:=s+i, строку i:=0 убрать!
|
|
s |
i |
i < = 5 |
|
|
|
|
|
0 |
0 |
да |
|
|
|
|
|
0 |
1 |
да |
|
|
|
|
|
1 |
2 |
да |
|
|
|
|
|
3 |
3 |
да |
|
|
|
|
|
6 |
4 |
да |
|
|
|
|
|
10 |
5 |
да |
|
|
|
|
|
15 |
6 |
нет |
|
|
|
|
б) Опечатка i < =n: |
|
|
|
|
||
|
|
s |
n |
i |
|
i < =n |
|
|
|
1 |
1 |
2 |
|
нет |
|
|
Тело цикла не выполняется ни разу. |
|
|
||||
|
в) Опечатки i < =3: |
|
|
|
|
||
|
|
s |
n |
i |
|
i < =3 |
|
|
1 |
1 |
1 |
да |
|
2 |
1 |
2 |
да |
|
3 |
1 |
3 |
да |
|
4 |
1 |
4 |
нет |
|
Здесь в теле цикла только 1 оператор. |
|
||||
|
г) Опечатка i < =3: |
|
|
|
||
|
|
s |
n |
i |
|
i < =3 |
|
|
1 |
1 |
1 |
|
да |
|
|
2 |
3 |
2 |
|
да |
|
|
2+1/3 |
5 |
3 |
|
да |
|
|
2+1/3+1/5 |
7 |
4 |
|
нет |
|
Здесь в теле цикла 2 оператора. |
|
|
|
|
|
|
|
|
№ 198. Опечатка k < =5 |
|
|
|
|
|
|
|
|
program n_198; |
s |
|
k |
|
k <= 5 |
|
|
|
var s, k: integer; |
0 |
|
|
|
|
|
|
|
begin |
2 |
|
1 |
|
да |
|
|
|
s := 0; |
6 |
|
2 |
|
да |
|
|
|
for k :=1 to 5 do |
|
|
|
|
|
|
|
|
12 |
|
3 |
|
да |
|
||
|
s := s + 2*k; |
|
|
|
|
|
|
|
|
20 |
|
4 |
|
да |
|
||
|
writeln (‘s =’, s); |
|
|
|
|
|
|
|
|
30 |
|
5 |
|
да |
|
||
|
end. |
|
|
|
|
|
|
|
|
|
|
6 |
|
нет |
|
||
|
№ 199. |
|
|
|
|
|
|
|
|
t:= 1; |
k |
t |
k <= 5 |
|
|
||
|
for k :=2 to 5 do |
|
1 |
|
|
|
|
|
|
t := t * k; |
2 |
2 |
да |
|
|
||
|
|
3 |
6 |
да |
|
|
||
|
|
4 |
24 |
да |
|
|
||
|
|
5 |
120 |
да |
|
|
||
|
|
6 |
|
|
нет |
|
|
|
|
|
№ 200. Опечатки: в таблицах s следует заменить на m. |
|
|
|||||
|
а) |
|
m |
i |
i <= 6 |
б) |
m |
i |
i <= 7 |
|
|
|
0 |
- |
|
|
0 |
- |
|
|
|
|
-6 |
1 |
да |
|
-3 |
3 |
да |
|
|
|
-12 |
2 |
да |
|
-5 |
4 |
да |
|
|
|
-18 |
3 |
да |
|
-6 |
5 |
да |
|
|
|
-24 |
4 |
да |
|
-6 |
6 |
да |
|
|
|
-30 |
5 |
да |
|
-5 |
7 |
да |
|
|
|
-36 |
6 |
да |
|
|
8 |
нет |
|
|
|
|
7 |
нет |
|
|
|
|
Ответы и решения к заданиям в учебнике.
№ 1. Цикл выполнится 2 раза.
a b s a+b<8
|
|
|
1 |
2 |
|
- |
|
да |
|
|
|
|
|
2 |
4 |
|
- |
|
да |
|
|
|
|
|
3 |
6 |
|
|
|
нет |
|
|
|
|
|
|
|
|
9 |
|
|
|
|
|
№ 2. |
|
|
|
|
|
|
|
|
|
|
Ошибка 1 |
Ошибка 2 |
|
|
Ошибки 3-5 |
|||||
|
f := 1, а не f := 0 |
k<=n, а не k<n |
|
Не хватает begin … end |
||||||
|
|
|
|
|
|
|
|
|
|
и ; после последнего |
|
|
|
|
|
|
|
|
|
|
оператора |
|
k := 1; |
|
|
k := 1; |
|
|
k := 1; |
|||
|
f := 0; |
|
|
f := 1; |
|
|
f := 1; |
|||
|
while k<n do |
|
|
while k<n do |
|
while k<=n do |
||||
|
f := f * k; |
|
|
|
f := f * k; |
|
begin |
|||
|
k := k + 1 |
|
|
|
k := k + 1 |
|
f := f * k; |
|||
|
|
|
|
|
|
|
|
|
|
k := k + 1 |
|
|
|
|
|
|
|
|
|
|
end; |
Полный текст программы:
program n_2_211;
var n, f, k: integer;
begin
writeln ('Введите n');
readln (n);
k := 1;
f := 1;
while k<=n do
begin
f := f * k;
k := k + 1
end;
writeln (n,'!=', f);
end.
№ 3. Если a<b, то цикл будет выполняться бесконечно. В противном случае он не выполнится ни разу.
№ 4.
program n_4_25_211;
var
a, b, c: real; // Исходные данные
k: real; // Промежуточная величина
g: integer; // Результат
begin
writeln ('Введите исходный запас рыбы А>>'); readln (a);
writeln ('Введите ежегодный план отлова В>>');
readln (b);
writeln ('Введите наименьший запас рыбы С>>'); readln (c);
g := 0;
k := a;
while k>=c do
begin
g := g + 1;
k := k *1.15-b; end;
writeln ('g=', g-1);
end.
program n_4_26_211;
var
a: integer; // Исходные данные
s: integer; // Промежуточная величина
k: integer; // Результат
begin
a := 5;
s := 5;
k := 1;
while s<324 do
begin
k := k + 1;
a := a + 4;
s := s + a
end;
writeln ('k=', k-1);
end.
program n_4_27_211;
var
x: integer; // Исходные данные
k: integer; // Результат
begin
writeln ('Введите x>>');
readln (x);
k := 0;
while x>0 do
begin
x := x div 10;
k := k + 1
end;
writeln ('k=', k);
end.
program n_4_28_211;
var
s: real; // Промежуточная величина
k: integer; // Результат
begin
s := 10000;
while s<20000 do
begin
s := 1.05*s;
k := k + 1
end;
writeln ('k=', k);
end.
№ 5. Цикл выполнится 3 раза.
|
|
a |
b |
s |
b>8 |
|
|
1 |
2 |
- |
|
|
|
2 |
4 |
- |
нет |
|
|
3 |
8 |
|
нет |
|
|
4 |
16 |
|
да |
|
|
|
|
20 |
|
|
№ 6. |
|
|
|
|
|
program n_6_211; |
|
|
|
|
|
var |
|
|
|
|
x: integer; // Исходные данные
k: integer; // Промежуточная величина
s: integer; sar: real; // Результат
begin
k := 0;
s := 0;
repeat
writeln (‘Введите целое число>>’);
readln (x);
if x>0 then
begin
k := k + 1;
s := s + x
end;
until x=0;
sar := s/k;
writeln (‘s=’, s, ‘ ‘, ‘sar=’, sar)
end.
№ 7.
program n_7_211;
var
x: integer; // Исходные данные max: integer; // Результат
begin
max := -32768;
repeat
writeln (‘Введите целое число’);
readln (x);
if x>max then max := x;
until x=0;
writeln (‘max=’, max)
end.
№ 8.
program n_8_1_211;
var
x, y: integer; // Исходные данные
nod: integer; // Результат begin
writeln (‘x=’);
readln (x);
writeln (‘y=’);
readln (y);
repeat
if x>y then x:= x-y;
if x< y then y := y-x
until x=y;
nod := x;
writeln('НОД = ', nod)
end.
program n_8_2_211;
var
x, y: integer; // Исходные данные
nod: integer; // Результат begin
writeln (‘x=’);
readln (x);
writeln (‘y=’);
readln (y);
while x<>y do
if x>y then x:= x-y else y := y-x; nod := x;
writeln('НОД = ', nod)
end.
![]()
№ 9. а) 16; б) 6; в) 3 г) 1; д) 3.
№ 10.
program n_10_212;
var
i: integer; // Счетчик цикла begin
for i := 1 to 10 do
writeln (i,' – Иванов Иван') end.
№ 11.
program n_11_212;
var
i: integer; // Счетчик цикла begin
for i := 1 to 4 do
begin
writeln ('* * * *');
writeln (' * * * *')
end
end.
№ 12. а)
program n_12a_212;
var
n: integer; // Исходные данные
i: integer; // Счѐтчик цикла
s: integer; // Результат
begin
writeln ('Введите натуральное n>>');
readln (n);
s := 0;
for i := 1 to n do
s := s + i;
writeln ('s=', s)
end.
б) s := s + i*i;
в) if i mod 2 = 0 then s := s + i;
г) if (i >9) and (i<100) then s := s + i;
№ 13.
program n_13_212;
var
x: integer; // Исходные данные
s, i: integer; // Промежуточные величины
sar: real; // Результат
begin
randomize;
s := 0;
for i := 1 to 10 do
begin
x := random(20);
writeln (i,': x = ', x);
s := s + x
end;
sar := s / 10;
writeln ('sar = ', sar);
end.
№ 14.
program n_14_32_212;
var
i: integer; // Промежуточные величины
s: real; // Результат
begin
s := 40000;
for i := 1 to 3 do
s := 1.05*s;
writeln ('s = ', s);
end.
program n_14_33_212;
var
i: integer; // Промежуточные величины
s: integer; // Результат
begin
s := 1;
for i := 1 to 10 do
s := s*2;
writeln ('s = ', s);
end.
№ 15.
program n_15_212;
var
i: integer; // Промежуточная величина
s: integer; // Результат
begin
writeln('Таблица степеней двойки:');
s := 1;
for i := 0 to 10 do
begin
writeln(i:6,s:6);
s:=s*2;
end;
end.
№ 16.
program n_16_212;
var
n: integer; // Исходные данные
i: integer; // Параметр цикла
begin
writeln ('Введите n >>');
readln (n);
for i := 2 to 10 do
writeln(n, ‘*’, i, ‘=’, n*i);
end.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.