Циклы с пред и постусловием

advertisement
Класс: 10
Предмет: Информатика и ИКТ
Тема: "Циклы с пред и постусловием на языке Pascal"
Продолжительность учебного занятия: 45 минут
Тип урока: обобщающий.
Изучение управляющих конструкций "Циклы с пост и предусловием" в школьной
информатике являются важным элементом курса программирования. Целесообразно
рассматривать эти конструкции, опираясь на математические понятия, ранее полученные
на уроках математики.
В данном уроке была поставлена цель закрепить циклы с предусловием While... do и с
постусловием Repeat... until на языке Pascal на примере решения задач из ЕГЭ (В5, В8, С1)
и использование бесконечных рядов для вычисления функций. Овладение методом
рекуррентных соотношений при изучении представлений стандартных функций в виде
асимптотических рядов позволяет познакомить учащихся с трудной, но интересной
областью математики и раскрыть многие секреты программирования.
Для творческого развития учащихся очень важным обстоятельством является понимание,
что программирование это не формальное манипулирование операторами, а
созидательный творческий процесс, тем более успешный, чем более осознанной является
связь математики, логики и информатики.
План-конспект урока
Цели урока:
Образовательные


Обсуждение особенностей циклических операторов и расширение знаний по теме.
Овладение синтаксисом циклических конструкций, умением строить блок-схем
алгоритмов задач с циклами, выполняемыми по заданному условию.
Развивающие




Развитие познавательного интереса у учащихся, умения обобщать, анализировать,
сравнивать, использовать накопленные ранее знания для решения практических задач.
Развитие логического мышления, умение правильно сформулировать
математическую модель и алгоритм решения поставленной задачи.
Овладение современным стилем программирования.
Выполнение заданий творческого характера, требующих системного,
исследовательского подхода к решению проблемного вопроса.
Воспитательные




Формирование у учащихся потребности в практическом использовании языка
программирования для решения задач в различных предметных областях.
Воспитание элементов научного мировоззрения, обращение к истории математики
и информатики.
Воспитание интереса к учению и формирование познавательной активности.
Воспитание умения четко организовать самостоятельную работу.
Методы: словесные, наглядные, практические.
Формы: фронтальные, индивидуальные.
Материально-техническая база




Компьютер.
Проектор, интерактивная доска.
Презентация "Циклы с пред и постусловием. " (Презентация)
Карточки с текстом задач. (Приложение 1)
Межпредметные связи
Математика: бесконечные ряды, рекуррентные соотношения.
Ход 1-го урока
I. Вводная часть
Организационный этап. Приветствие учителя.
Объявление темы и целей урока
II. Актуализация начальных знаний учащихся
Учитель: Язык Паскаль имеет три оператора, с помощью которых можно организовать
циклическую структуру:



Цикл с параметром (счетчиком) "Для" (For ... to ... do)
Цикл с предусловием "Пока" (While ... do)
Цикл с постусловием "До" (Repeat ... until)
Учитель: Вспомним основные определения, рассмотренные на предыдущем уроке, какие
понятия связаны с этим циклом.
III. Закрепление материала
Раздел 1. Теоретические знания циклов и языка программирования.
Учитель: С помощью циклов While... do и Repeat... until можно выполнить любую
циклическую задачу.



Эти циклы используются при табулировании графиков функций на заданном
интервале с заданным шагом.
Выполняются задачи, когда заранее неизвестно сколько раз повторять действия.
C помощью этих циклов рассчитывают с заданной точностью бесконечные
асимптотические ряды для тригонометрических функций.
Рассмотрим формат операторов циклов While... do и Repeat... until и проведем сравнение
этих циклов.
Что общее у этих циклов? В чем разница? (Слайды 2, 3).
Обсуждаются особенности цикла While... do (Слайд 4).
Обсуждаются особенности цикла Repeat... until (Слайд 5).
Учитель: Приступим к практическому программированию. На слайде представлена
программа с синтаксическими ошибками. Найти их и исправить. (Слайд 6).
var n,a,s: real;
begin readln(n);
s:=0;
while n>0 do
begin a:=n mod 10;
if a mod 2=0 then s:=s+a;
n:=n div 10
end;
writeln(s)
end.
Ученики находят 5 ошибок в программе.
Раздел 2. Решение задач с использованием цикла While...do.
Учитель: Сколько раз программа выведет слово «привет». (Слайд 7).
var n: integer;
begin n:=0;
while n<9 do
begin writeln(‘привет');
n:=n+2
end;
end.
Ответ: 5 раз. А что будет, если убрать begin и end.
Раздел 3. Решение задач с использованием цикла Repeat … until.
Учитель: Дана программа. Что будет на экране. (Слайд 8).
var k, s: integer;
begin k:=1; s:=0;
repeat s:=s+k;
k:=k+2;
until k>8;
writeln(s);
end.
Ответ: 16. А если поменять знак > на < (ответ 1).
Поменяем местами два оператора тела цикла. (Слайд 9).
var k, s: integer;
begin k:=1; s:=0;
repeat k:=k+2;
s:=s+k;
until k>8;
writeln(s);
end.
Изменится ли результат.
Ответ: да, результат 24. Сделаем вывод: порядок важен.
Учитель: Как правило, в заданиях мы определяем, что будет в ходе выполнения
программы. Но иногда наоборот известен результат, а нам надо определить, что для этого
ввести. В заданиях ЕГЭ это тест В8. (Слайд 10).
Получив на вход число x, этот алгоритм печатает два числа a и b. Укажите наибольшее из
таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 7.
var x,a,b: integer;
begin readln(x); a:=0; b:=0;
while x>0 do
begin a:=a+1;
b:=b+x mod 10;
x:=x div 10
end;
writeln(a); writeln(b);
end.
Ответ:700. А если изменить на наименьшее? Ответ:106.
Учитель: Рассмотрим еще два задания из ЕГЭ. Это С1. (Слайд 11).
Требовалось написать программу, при выполнении которой с клавиатуры считывается
натуральное число N и выводится максимальная цифра числа. Программист торопился и
написал программу неправильно.
1. Напишите, что выведет эта программа при вводе числа 542.
2. Найдите все ошибки в этой программе.
var N: longint; d, max: integer;
begin readln(N);
max:= 10;
while N > 9 do
begin
d:= N mod 10;
if d > max then max:= d;
N := N div 10;
end;
writeln(max);
end.
Ответ: 10.
Следующее задание. (Слайд 12).
Требовалось написать программу, при выполнении которой с клавиатуры считывается
натуральное число N, и выводится количество цифр этого числа. Программист торопился
и написал программу неправильно.
1. Напишите, что выведет эта программа при вводе числа 584.
2. Укажите число, для которого программа будет работать верно.
3. Найдите ошибку.
var N: longint; sum: integer;
begin readln(N);
sum := 0;
while N >= 9 do
begin
N := N div 10;
sum := sum + 1;
end;
writeln(sum);
end.
Ответ:1) 2
2) 984.
Раздел 4. Групповая работа.
Учитель: Разобьемся на группы. Вам предлагается по 6 заданий, разной степени
сложности. Дается 6 мин. Какая группа справится быстрее? (Приложение 1)
Ответы на экране. (Слайд 13).
Раздел 5. Практическая работа на компьютере.
Учитель: А сейчас работа на компьютерах. Откроем программу zadan1.pas.
1. Исправим синтаксические ошибки.
2. Переделаем программу на цикл Repeat … until.
Раздел 6. Вычисление функций через ряды.
Учитель: Во многих задачах возникает необходимость вычисления бесконечных рядов c
заданной точностью с помощью рекуррентных соотношений. В языках программирования
стандартные функции ex, sin(x), cos(x), ln(x+1) рассчитывается с помощью бесконечных
сумм, называемые рядами, с заданной точностью . (Слайд 14).
Мы рассмотрим вычисление функции ех . (Слайд 15).
ex  1
x x 2 x3 x 4
xn
    ....   ...
1! 2! 3! 4!
n!
Ввод x, 
p:=1
p:=0
i:=0
p:=p*x/i
s:=s+p
var i: integer; x,s,p,e:real;
begin readln(x,e);p:=1;
s:=0;i:=1;
repeat p:=p*x/i;
s:=s+p;
i:=i+1
until abs(p)<e;
writeln(s:9:4,' номер=',i-1 );
end.
i:=i+1
p< 
s, i-1
IV. Домашнее задание
Задача. Напишите программу вычисления значения функции ln(x+1) для x=1 с помощью
ряда с заданной точностью и сравните результат с вычислением стандартной функции
ln(x) при х=2. (Слайд 16).
Download