11 Класс. Глава 2. Тема 2. Уроки 18-21

advertisement
Урок 18. Тема урока: Вспомогательные алгоритмы и процедуры (1 час).
Цель урока: Формирование навыков декомпозиции задачи на подзадачи,
систематизация и развитие знаний по разработке вспомогательных алгоритмов и
подпрограмм - процедур.
Примерный ход урока: Изучение учебного материала можно построить, опираясь
на логику параграфа 2.2.8 учебника (описание алгоритма на алгоритмическом языке,
затем на Паскале). С методической точки зрения, сначала следует подробно остановиться
на применении процедуры с параметрами, способах передачи параметров. С
использованием процедур без параметров и подпрограмм-функций учащиеся смогут
познакомиться самостоятельно.
Для разбора возьмите несложную задачу, например, вычислить значение формулы
n!
из комбинаторики (число сочетаний из n значений по m, n>m): C nm 
. (Если
m!(n  m)!
учащиеся не знакомы с данным материалом из курса математики, можно на конкретных
примерах показать его применение).
Для вычисления данного выражения требуется 3 раза обратиться к алгоритму
вычисления факториала целого числа.
Приведём программу решения данной задачи на языке Паскаль:
Program C_n_m;
Var N,M:byte; C, F1, F2, F3:longint;
Procedure Fact(K:byte; var P:longint);
Var I:byte;
Begin
Примечание: переменная P имеет
P:=1;
тип longint,т.к. значение
For I:=1 to K do P:=P*I;
К! быстро увеличивается
End;
в зависимости от К(K при
Begin
этом должно быть <16).
Write(‘N=’); Readln(N);
Write(‘M=’); Readln(M);
Fact(N,F1);
Fact(M,F2);
Fact(N-M,F3);
C:=F1 div (F2*F3);
Writeln(‘число сочетаний из N по М=’,C)
End.
На данном примере объясните правила записи процедуры, виды параметров,
способы передачи параметров. Требуется обратить особое внимание на следующие
моменты:
1. подпрограмма должна полностью решать поставленную для неё задачу, с расчётом
применения её для составления других программ. В данном случае: процедура fact м.б.
использована при решении таких задач, где требуется вычисление факториала некоторого
натурального числа.
2. Выбор имён формальных параметров осуществляется «формально», т.е. имя
определяется формулировкой подзадачи, решаемой подпрограммой, и не связано с
именами переменных основной программы.
3. Список фактических параметров должен соответствовать списку формальных
параметров по количеству, по порядку следования и по типу.
4. Переменные, которые требуются для решения подзадачи, реализуемой
подпрограммой, описываются в разделе описания подпрограммы и называются
локальными переменными.
5. При взаимодействии фактического и соответствующего ему формального
параметра-значения (тип взаимодействия «по значению») механизм передачи значения в
подпрограмму реализует команду присваивания. Например, при выполнении оператора
Fact(N-M,F3)выполняется команда К:=N-M.
6. Для передачи результата подпрограммы-процедуры в основную программу
необходимо указать формальный параметр-переменную с описанием типа, совпадающего
с типом фактического параметра. Предложите учащимся следующий эксперимент: убрать
var из описания переменной P, выполнить программу. Пусть ученики пояснят полученный
результат.
Для закрепления нового материала можно обратиться к решению прошлого
домашнего задания, например, упр. №8 (нахождение трёхзначных чисел, в записи
которых нет одинаковых цифр), предложить учащимся применить метод декомпозиции:
выделить ту часть задачи, которая м.б. реализована в виде подпрограммы. Учащиеся
должны определить, что выделяется подзадача, определяющаяся, являются ли цифры
некоторого трёхзначного числа различными. Данная задача интересна с той точки зрения,
что результатом подпрограммы является величина логического типа, для её вычисления
потребуется составить логическое выражение.
Домашнее задание: изучить параграф 2.2.8, упр. № 4, 5.
Урок 19. Тема урока: Процедуры и функции. (1 час).
Цель урока: Развитие навыков декомпозиции задачи на подзадачи, систематизация и
развитие знаний по разработке вспомогательных алгоритмов и подпрограмм – процедур,
функций.
Примерный ход урока:
1. Выяснить, как учащиеся освоили тему прошлого занятия. Можно предложить
следующие задания:
1)
В программе описана процедура Square, вычисляющая площадь прямоугольного
треугольника: Procedure Square(a,b: real; var S : real);
Из списка вызовов процедуры выберите только те, которые являются правильными.
Поясните неверные вызовы подпрограмм.
A.
Square(m,n,S); (где m,n – integer, S – real)
B.
Square(m,n,S); (где m,n – real, S – integer)
C.
Square(m*2,n/2,S) (где m,n – integer, S – real)
D.
Square(m,n,S/2); (где m,n – integer, S – real)
E.
Square(m,n,S1); (где m,n – integer, S1 – real)
2)
В программе вызывается процедура, вычисляющая факториал натурального числа:
Fact(N,F), где N:integer; F: longint и реализуется стандартный алгоритм
(составленный на прошлом уроке).
Из списка описаний процедуры и выберите только те, которые являются неверными.
Поясните свой выбор.
A.
Procedure Fact(N:integer; var F: longint);
B.
Procedure Fact(N:integer; F: longint);
C.
Procedure Fact(K:integer; var P: longint);
D.
Procedure Fact(K:byte; var P: longint);
E.
Procedure Fact(K:real; var P: longint);
2. Обсудите, как учащиеся разобрались по учебнику с механизмом взаимодействия
между формальными и фактическими параметрами при обращении к подпрограмме.
Вопросы, которые следует обсудить: Какие переменные называются глобальными, а какие
локальными? Как осуществляется передача значений в подпрограмму, описанную без
параметров? Какие подпрограммы (с параметрами или без параметров) предпочтительнее
использовать и почему? В каких случаях применяются подпрограммы без параметров?
3. Разберите выполнение домашнего заданий - №4, 5 – с процедурой и с функцией,
обсудите отличие описания, применения процедур и функций.
Например, задача из упр. №5, реализованной с подпрограммой – функцией:
program ADD_Drob;
var A,B,C,D,M,N,K:integer;
Function Nod (A,B:integer): integer;
begin
While A<>B do
if A>b
then A:= A-B
else B:=B-A;
Nod:=A
end;
begin
readln(A,B,C,D);
K:=Nod(A*D+C*D, B*D); {вычисляется НОД нового числителя и знаменателя}
M:= (A*D+C*D)div K;
N:= B*D div K;
Writeln(A,'/',B,'+',c,'/',D,'=',M,'/',N)
end.
Обратите внимание учеников на то, что программу для этой задачи можно составить,
используя как функцию, так и процедуру. Предложите придумать задачу, для которой
нельзя воспользоваться функцией, а можно только процедурой. Вариант ответа: сложение
простых дробей м.б реализовано только процедурой (два результата: числитель и
знаменатель суммы).
4. Самостоятельное решение задач №6,7 после параграфа 2.2.8 (можно по вариантам,
по одной задаче). Затем обсудить решение.
Домашнее задание: параграф 2.2.8, индивидуальное задание из практической
работы 3.4 (разработка программ с подпрограммами), по одному заданию уровня 1 и
уровня 2 (номер задания назначает учитель).
Требования к оформлению работы:
1. Текст программы должен быть структурирован.
2. Каждый блок программы сопровождается комментариями (включая
постановку задачи).
3. К программе должны быть разработаны тесты в необходимом количестве.
Урок 20. Урок-практикум. Тема урока: Разработка программ с использованием
подпрограмм. (1 час).
Цель урока: Развитие навыков декомпозиции задачи на подзадачи, систематизация и
развитие знаний по разработке вспомогательных алгоритмов и подпрограмм – процедур,
функций.
Примерный ход урока: Учащиеся представляют решение задач по индивидуальным
заданиям, консультируются с учителем, изменяют решение, если обнаруживаются
ошибки. Ученикам, успешно справившимся с заданиями и сдавшими их первыми, учитель
даёт новое задание (например, уровня 3). Так же полезно предложить этим ученикам
параллельно с учителем принимать работы одноклассников: развиваются навыки
критического анализа, вникать в условие и решение новой задачи, умения
консультировать.
Домашнее задание: параграф 2.2.8, индивидуальное задание из практической
работы 3.4 (уровень 3). На усмотрение учителя: подготовиться к контрольной работе или
к семинару по представлению индивидуальных заданий.
Урок 21. Урок-зачёт по теме «Вспомогательные алгоритмы и подпрограммы».
Цель урока: Закрепление навыков декомпозиции задачи на подзадачи, знаний по
разработке подпрограмм – процедур, функций.
Примерный ход урока: Урок можно провести в одной из нескольких форм:
1. Зачёт, включающий: небольшой тест на применение знаний и навыков
разработки подпрограмм или устный опрос по теоретическим вопросам
данной темы.
2. Урок - семинар по представлению программ, выполненных по
индивидуальным заданиям из практической работы 3.4. Учащиеся поясняют
выбор подпрограмм, параметров, обосновывают набор тестов к программе.
3. Контрольная работа, включающая теоретические и практические задания.
Домашнее задание: изучить параграф 2.2.9, упр. №5.
Download