Конспект НОД по информатике для обучающихся 10 класса по теме «Рекурсия. Решение задач»
Цель урока: создать условия для закрепления усвоения понятий «рекурсия», «процедура».
Задачи урока:
Образовательная: закрепление понятия «рекурсия», «процедура» правил вычисления алгоритмов с процедурами.
Развивающая: развитие умение перехода от частного к общему и наоборот, развитие алгоритмического мышления развитие способности к рефлексии коррекционно-контрольного типа.
Воспитательная: воспитание интереса к предмету, самостоятельности и самооценки.
Тип урока: комбинированный урок
Формы работы: фронтальная, групповая, индивидуальная
Ход урока.
I. Организационный момент
II. Объявление темы урока
III. Постановка цели урока
IV. Актуализация знаний
Выполнить с помощью схемы задание фронтально, с параллельным комментированием решения одного обучающегося у доски:
Найдите сумму чисел, которые будут выведены при вызове F(4).
procedure F(n: integer);
begin
writeln(n);
if n >0 then begin
writeln(n);
F(n-2);
F(n div 2);
end
end;
Решение
Решение в виде схемы:
Числа, которые будут выведены, при вызове процедуры F(4): 4, 2, 2, 1, 1, следовательно сумма этих чисел равна: 4+2+2+1+1=10.
V. Закрепление и систематизация знаний учащихся
1. Самостоятельная работа
Все учащиеся разделена на группы по 3 человека, каждая группа выполняет задание своего варианта.
1 вариант
Дан рекурсивный алгоритм. Найдите сумму чисел, которые будут выведены при вызове F(2).
procedure F(n: integer);
begin
writeln(n);
if n < 6 then begin
writeln(n);
F(n+2);
F(n*3)
end
end;
2 вариант
Дан рекурсивный алгоритм. Найдите сумму чисел, которые будут выведены при вызове F(1).
procedure F(n: integer);
begin
writeln(n);
if n < 6 then begin
F(n+2);
F(n*3)
end
end;
3 вариант
Дан рекурсивный алгоритм. Найдите сумму чисел, которые будут выведены при вызове F(2).
procedure F(n: integer);
begin
writeln(n);
if n < 7 then begin
writeln(n);
F(n+1);
F(n+2);
F(n*3)
end
end;
4 вариант
Дан рекурсивный алгоритм. Найдите сумму чисел, которые будут выведены при вызове F(1).
procedure F(n: integer);
begin
writeln(n);
if n < 6 then begin
writeln(n);
F(n+1);
F(n+2);
F(n*2)
end
end;
После решения обучающиеся выполняют самопроверку:
1 вариант. Ответ: 36
2 вариант. Ответ: 79
3 вариант. Ответ: 425
4 вариант. Ответ: 530
После самопроверки, обучающиеся, которые выполнили задание правильно консультируют учащегося своей группы, выполнившего задание неправильно. Если в группе нет учащихся допустивших ошибки, то вся группа переходит к выполнению дополнительного задания 1.
Дополнительное задание 1
1 вариант
procedure F(n: integer);
begin
if n >1 then
if n mod 3 =1 then
F(n-1);
else begin
write(n, ' ');
F(n-5)
end;
end;
Определите сколько чисел будет напечатано на экране при выполнении вызова процедуры F(20)
2 вариант
procedure F(n: integer);
begin
write(n, ' ');
if n <>1 then
if n mod 5=0 then
F(n div 4)
else F(n-1)
end;
end;
Определите сколько чисел будет напечатано на экране при выполнении вызова процедуры F(20)
3 вариант
procedure F(n: integer);
begin
write(n, ' ');
if n <>1 then
if n mod 2=0 then
F(n+1)
else F(n div 2);
end;
end;
4 вариант
procedure F(n: integer);
begin
write(n, ' ');
if n <>1 then
if n mod 10=0 then
F(n div 10)
else F(n+1)
end;
end;
Определите сколько чисел будет напечатано на экране при выполнении вызова процедуры F(35)
Решения
1 вариант. Ответ: 4
2 вариант. Ответ: 6
3 вариант. Ответ: 6
4 вариант. Ответ: 13
2. Фронтальная работа
А) Учитель: «Если оператор writeln (n, ‘ ’) изменить на оператор writeln (‘*’) , какой новый вопрос можно поставить к предыдущей задаче?»
Обучающиеся: «Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(4)?»
Б) Обучающий с комментированием выполняет получившееся задание у доски в виде схемы, отвечая на вновь поставленный вопрос.
procedure F(n: integer);
begin
writeln(*);
if n >0 then begin
writeln(*);
F(n-2);
F(n div 2);
end
end;
Решение
Ответ:5
3. Самостоятельная работа
1 вариант
Дан рекурсивный алгоритм. Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(7)?
procedure F(n: integer);
begin
writeln('*');
if n > 0 then begin
F(n-2);
F(n div 2)
end
end;
2 вариант
Дан рекурсивный алгоритм. Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(7)?
procedure F(n: integer);
begin
writeln('*');
if n > 0 then begin
F(n-3);
F(n div 2);
end
end;
3 вариант
Дан рекурсивный алгоритм. Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(6)?
procedure F(n: integer);
begin
writeln('*');
if n > 0 then begin
F(n-2);
F(n-2);
F(n div 2);
end
end;
4 вариант
Дан рекурсивный алгоритм. Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(7)?
procedure F(n: integer);
begin
writeln('*');
if n > 0 then begin
F(n-3);
F(n-2);
F(n div 2);
end
end;
После решения обучающиеся выполняют самопроверку:
1 вариант. Ответ: 21
2 вариант. Ответ: 15
3 вариант. Ответ: 58
4 вариант. Ответ: 55
После самопроверки, учащиеся, которые выполнили задание правильно консультируют учащегося своей группы, выполнившего задание неправильно. Если в группе нет учащихся допустивших ошибки, то вся группа переходит к дополнительному заданию1 (см. выше). Если дополнительное задание1 выполнено могут приступить к дополнительному заданию 2:
Дополнительное задание 2
1,2 варианты
Найти сумму чисел, выведенных на экран при вызове процедуры F (102)
procedure F(n: integer); forward;
procedure G(n: integer); forward;
procedure F(n: integer);
begin
if n mod 5>3 then G (n div 5)
else G(n div 2);
end;
procedure G(n: integer);
begin
write(n, ‘ ‘);
if n >1 then F(n-1);
end;
3,4 варианты
Сколько чисел будет выведено на экран при вызове процедуры F (111)
procedure F(n: integer); forward;
procedure G(n: integer); forward;
procedure F(n: integer);
begin
if n mod 10>5 then G (n div 10)
else G(n -6);
end;
procedure G(n: integer);
begin
write(n, ‘ ‘);
if n >1 then F(n-2);
end;
Решение
1,2 варианты.Ответ: 81
3,4 варианты.Ответ:5
4. Решение дополнительного задания
При наличии времени можно дать возможность учащимся доделать дополнительное задание своего варианта. После самопроверки учащиеся, выполнившие задание верно демонстрируют его решение на доске.
VI. Рефлексия
Подведение итогов:
1. Достигли ли поставленной цели на уроке?
2. Что трудного было на уроке?
3. Что понравилось?
Оценка
«5» - самостоятельно правильно решенных 3 задания
«4» - самостоятельно правильно решенных 2 задания
«3» - самостоятельно правильно решенное 1 задание
«2» - нет самостоятельно правильно решенных заданий
VII. Домашняя работа
Дан рекурсивный алгоритм. Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(8)?
I. procedure F(n: integer);
begin
writeln('*');
if n > 0 then begin
F(n-2);
F(n div 2);
end
end;