Тема урока: «Сравнение типов циклов».
Тип урока: обобщающий урок по теме «Циклы».
Цели урока:
- Образовательная: систематизация и обобщение теоретических знаний учащихся о циклических алгоритмах, проверка глубины усвоения материала, отработка практических навыков.
- Развивающая: развитие логического и алгоритмического мышления учащихся, стимулирование познавательного интереса учащихся к данной теме и предмету в целом.
- Воспитательная: умение слушать друг друга, тренировка навыков культуры работы с техникой, культура речи.
Оборудование: мультимедийный проектор, ПК учителя, ПК учеников, объединенные в локальную сеть.
Программное обеспечение: Microsoft PowerPoint, FreePascal.
Дидактический материал: презентация по теме на компьютере учителя (см. Приложение 1). Презентация с заданием (слайд №2 из презентации по теме), доступная каждому ученику по сети (или карточки с заданием на столах учеников).
ХОД УРОКА
I. Организационный момент (1 мин.)
Приветствие. Проверка присутствующих. Сообщение темы урока учащимся.
II. Актуализация знаний (повторение основных понятий по теме и проверка знаний) (8 мин.)
Вопросы к учащимся:
1. Какие алгоритмические структуры вы знаете?
2. Что такое цикл?
3. Что такое тело цикла?
4. Какие типы циклов реализуются в Паскале?
5. Каков формат оператора цикла со счетчиком?
6. Каков формат оператора цикла с предусловием?
7. Каков формат оператора цикла с постусловием?
8. Как работает цикл с предусловием?
9. Как работает цикл с постусловием?
10. Когда вычисляются начальное и конечное
значение счетчика?
Учащиеся должны выполнить задание «Свойства типов циклов» (слайд №2) – соединить линиями разных цветов название типа цикла и его свойства.
Задание можно выполнять как за компьютерами, так и распечатать карточки для каждого ученика. Одного ученика можно вызвать к доске, где он выполняет задание с помощью маркеров разных цветов, а если доска интерактивная, то с помощью указателя «Карандаш» в режиме показа слайдов.
Верно выполненное задание выглядит следующим образом:
III. Объяснение учебного материала (теория) (15 мин.)
На примере простых задач «Банк», «Пароль» и «Евклид» учитель предлагает учащимся сравнить готовые решения этих задач с помощью трех типов циклов.
Задача «Банк» (слайды №3 и 4).
Условие: Посчитать итоговую сумму денег на банковском вкладе за N лет при P процентах годовых.
Решения, предложенные учителем:
Program bank1; CONST P=15; N=5; VAR S:real; i: integer; BEGIN Writeln (‘Summa vklada: ’); Readln (S); For i:=1 to N do S:=S+S*P/100; Writeln (‘itogovaja summa’, S); END. |
Program bank2; CONST P=15; N=5; VAR S:real; i: integer; BEGIN Writeln (‘Summa vklada: ’); Readln (S); i:=1; While i<=N do begin S:=S+S*P/100; i:=i+1; end; Writeln (‘itogovaja summa’, S); END. |
Program bank3; CONST P=15; N=5; VAR S:real; i: integer; BEGIN Writeln (‘Summa vklada: ’); Readln (S); i:=1; Repeat S:=S+S*P/100; i:=i+1; Until i>N; Writeln (‘itogovaja summa’, S); END. |
Эту задачу можно решить с помощью трех типов циклов. Но используя цикл с предусловием или с постусловием, переменная, определяющая условие, работает как счетчик (наращивается на 1). Поэтому решение этой задачи с помощью цикла со счетчиком является наиболее коротким.
Задача «Пароль» (слайд №5).
Условие: Угадать пароль P.
Решения, предложенные учителем:
Program parol2; CONST P=12345; VAR password: integer; BEGIN password:=0; While password<>P do begin Writeln (‘Введите пароль’); Readln (password); end; writeln (‘пароль угадан!’); END. |
Program parol3; CONST P=12345; VAR password: integer; BEGIN Repeat Writeln (‘Введите пароль’); Readln (password); Until password=P; writeln (‘пароль угадан!’); END. |
Эту задачу нельзя решить с помощью цикла со счетчиком, т.к. не ограничено количество попыток угадывания пароля. Применение цикла с постусловием дает более короткий код по сравнению с предусловием, т.к. нет необходимости присваивать начальное значение для еще не введенного пароля.
Задача «Евклид» (алгоритм нахождения наибольшего общего делителя) (слайд №6).
Условие: Если n=m, то НОД (n, m) = n = m
Если n>m, то НОД (n, m) = НОД (n-m, m)
Если n<m, то НОД (n, m) = НОД (n, m-n)
Решения, предложенные учителем:
Program evklid2; VAR n,m : integer; BEGIN Readln (n, m); While n<>m do If n>m then n:=n-m else m:=m-n; Writeln (‘НОД = ’, n) END. |
Program evklid3; VAR n,m : integer; BEGIN Readln (n, m); If n<>m then Repeat If n>m then n:=n-m else m:=m-n; Until n=m; Writeln (‘НОД = ’, n) END. |
Эту задачу нельзя решить с помощью цикла со счетчиком. Применение цикла с постусловием требует изначально сравнения введенных чисел, таким образом цикл вложен в условный оператор. Решение этой задачи с помощью цикла с предусловием кажется наиболее красивым.
IV. Закрепление учебного материала (практика) (15 мин.)
Учащиеся должны написать программу, высчитывающую значение числа Пи по формуле Валлиса (слайд №7), с помощью любого из трех типов циклов на выбор ученика.
Ждем от учеников вопросов: сколько членов ряда надо брать или с какой точностью высчитывать значение?
V. Домашнее задание (1 мин.)
Написать три программы (используя три типа цикла), высчитывающие значение числа Пи по формуле Грегори (слайд №7):
VI. Подведение итогов урока (5 мин.)
Вопросы к учащимся:
1. В каких случаях целесообразно использовать тот или иной тип цикла?
Желаемый ответ:
– Использовать цикл for можно только в том
случае, когда точно знаем, сколько раз должно
быть выполнено тело цикла.
– Использовать цикл repeat, если необходимо, чтобы
тело цикла выполнялось, по крайней мере, один раз.
– Использовать цикл while, если необходимо, чтобы
проверка условия была произведена прежде, чем
будет выполняться тело цикла.
2. Какой тип цикла наиболее универсален?
Желаемый ответ:
– Цикл с предусловием наиболее универсален, т.к. с помощью цикла while можно реализовать любой циклический алгоритм. [1, 2]
Литература:
1. Информатика и ИКТ. Базовый курс: Учебник для 9
класса. / И.Г.Семакин, Л.А.Залогова, С.В.Русаков,
Л.В.Шестакова – М.: БИНОМ. Лаборатория знаний,
2007.
2. Информатика и ИКТ: Задачник-практикум / Под ред. И.Г.
Семакина, Е.К. Хеннера. – М.: БИНОМ. Лаборатория
знаний.