Урок информатики по теме "Циклы по условию на языке Pascal"

Разделы: Информатика, Конкурс «Презентация к уроку»


Презентация к уроку

Загрузить презентацию (2 МБ)


Класс: 10-11

Предмет: Информатика и ИКТ

Тема: "Циклы по условию на языке Pascal"

Продолжительность учебного занятия: 2х45 минут

Тип учебного занятия: урок изучения нового с элементами повторения

Изучение управляющих конструкций "Циклы по условию" в школьной информатике являются важным элементом курса программирования. Целесообразно рассматривать эти конструкции, опираясь на математические понятия, ранее полученные на уроках математики.

В данном уроке была поставлена цель изучить циклы с предусловием While... do и с постусловием Repeat... until на языке Pascal на примере решения задач с использованием рекуррентных соотношений и бесконечных рядов. Овладение методом рекуррентных соотношений при изучении представлений стандартных функций в виде асимптотических рядов позволяет познакомить учащихся с трудной, но интересной областью математики и раскрыть многие секреты программирования.

Для творческого развития учащихся очень важным обстоятельством является понимание, что программирование это не формальное манипулирование операторами, а созидательный творческий процесс, тем более успешный, чем более осознанной является связь математики, логики и информатики. Рассматриваемые на уроке задачи заставляют учащихся заглянуть на страницы истории математических открытий.

Хотя в рамках данного урока примеры листингов программ реализованы на языке Pascal, алгоритмы построения решений рассмотренных задач в полной мере будут полезны при выборе любого алгоритмического языка программирования.

План-конспект урока

Цели урока:

Образовательные

  • Обсуждение особенностей циклических операторов и расширение знаний по теме.
  • Овладение синтаксисом циклических конструкций, умением строить блок-схем алгоритмов задач с циклами, выполняемыми по заданному условию.

Развивающие

  • Развитие познавательного интереса у учащихся, умения обобщать, анализировать, сравнивать, использовать накопленные ранее знания для решения практических задач.
  • Развитие логического мышления, умение правильно сформулировать математическую модель и алгоритм решения поставленной задачи.
  • Овладение современным стилем программирования.
  • Выполнение заданий творческого характера, требующих системного, исследовательского подхода к решению проблемного вопроса.

Воспитательные

  • Формирование у учащихся потребности в практическом использовании языка программирования для решения задач в различных предметных областях.
  • Воспитание элементов научного мировоззрения, обращение к истории математики и информатики.
  • Воспитание интереса к учению и формирование познавательной активности.
  • Воспитание умения четко организовать самостоятельную работу.

Методы: словесные, наглядные, практические.

Формы: фронтальные, индивидуальные.

Материально-техническая база

  • Компьютер.
  • Мультимедийный проектор, экран или интерактивная доска.
  • Презентация "Циклы по условию на языке Pascal" (Презентация).
  • Карточки с текстом задач  (Приложение 1),

Межпредметные связи

Математика: бесконечные ряды, рекуррентные соотношения, арифметическая и геометрическая прогрессии, страницы из истории числа p .

Ход 1-го урока

I. Вводная часть

Организационный этап. Доклад дежурных. Приветствие учителя.

Объявление темы и целей урока  (1 слайд Презентации).

II. Актуализация начальных знаний учащихся

Учитель: Язык Паскаль имеет три оператора, с помощью которых можно организовать циклическую структуру:

  • Цикл с параметром (счетчиком) "Для" (For ... to ... do)
  • Цикл с предусловием "Пока" (While ... do)
  • Цикл с постусловием "До" (Repeat ... until)

(Слайд 2).

Учитель: На прошлом уроке мы познакомились с циклом, который называют "Цикл с параметром (счетчиком)". Вспомним основные определения, рассмотренные на предыдущем уроке, какие понятия связаны с этим циклом.

  • Что такое цикл со счетчиком?
  • Каковы параметры цикла For... to...do?
  • Что такое тело цикла? Как работает цикл For?

Давайте вспомним, как выглядит текст программы для задачи о сумме 10 целых чисел.

Как организовать циклическую структуру? Какова блок-схема цикла со счетчиком?

А теперь обратим внимание на особенности цикла с параметром (со счетчиком)

(Слайд 3)

III. Изучение нового материала

Учитель: Когда For уступает место?

  • Если число повторений известно наперед, цикл For идеален!
  • Циклы While... do и Repeat... until используются в целом классе задач, когда повторные вычисления заканчиваются по заданному наперед условию.
  • Эти циклы используются при табулировании графиков функций на заданном интервале с заданным шагом.
  • C помощью этих циклов рассчитывают с заданной точностью бесконечные асимптотические ряды для тригонометрических функций, трансцендентные числа p = 3,1415: и основание натурального логарифма e = 2,72:, вычисляют квадратный корень из числа методом Герона и др. (Слайд 4)

Рассмотрим формат операторов циклов While... do и Repeat... until и проведем сравнение этих циклов.

Что общее у этих циклов? В чем разница? (Слайды 5).

Каким будет листинг программы для задачи о сумме 10 чисел, если воспользоваться циклами While... do? Какой будет блок-схема? (Слайд 6).

Обсуждаются особенности цикла While... do (Слайд 7).

Каким будет листинг программы для задачи о сумме 10 чисел, если воспользоваться циклами Repeat... until? Какой будет блок-схема? (Слайд 8).

Обсуждаются особенности цикла Repeat... until (Слайд 9).

Учитель: Приступим к практическому программированию. Предлагаю самостоятельно решить задачу "Бросаем кубик", рассмотрев два варианта. Учитель раздает карточки с задачами "Бросаем кубик" (на экран выводится Слайд 10).

Ученики выполняют набор и отладку программы.

Раздел 1. Решение задач с использованием цикла While...do.

Учитель: А теперь познакомимся с любопытной задачей о рассеянном джентльмене.

Формулируется и подробно анализируется задача, выводится формула для суммы гармонического ряда. (Слайд 11)

Почему для решения этой задачи не подходит цикл For?

Какой цикл удобно использовать?

Вывод: Будем использовать конструкцию While...do...

Обсуждается алгоритм и строится блок-схема для решения задачи. (Слайд 12)

Ученики выполняют набор и отладку программы.

Проверка и самопроверка. (Слайд 13)

Ход 2-го урока

III. Изучение нового материала (продолжение)

Раздел 2. Решение задач с использованием рекуррентных соотношений.

Учитель: В математике известно понятие рекуррентной последовательности чисел (от латинского "recurrere" - "возвращаться").

Это понятие вводят так: пусть известно k чисел a1, ... , ak , которые являются началом числовой последовательности. Следующие элементы этой последовательности вычисляются так: ak+1=F(a1, ... , ak); ak+2=F(a1, ... , ak+1); ak+3=F(a1, ... , ak+2); ..., ak+i=F(a1, ... , ak+i-1)

Величина k называется глубиной рекурсии. (Слайд 14)

С помощью метода рекуррентных соотношений вычисляют:

  • арифметические и геометрические последовательности;
  • последовательность чисел Фибоначчи;
  • бесконечные последовательности (ряды) для тригонометрических функций;
  • бесконечные последовательности (ряды) для функций ex, ln(1+x);
  • корень из числа по формуле Герона.

(Слайд 15)

Учитель: На этом уроке мы познакомимся с методом рекуррентных соотношений для вычисления некоторых стандартных функций, которые входят во все алгоритмические языки.

Пример 1. Решение задачи "Вычисление квадратного корня из числа".

Алгоритм решения был предложен математиком Героном Александрийским (I в. н.э.). Математические работы Герона являются энциклопедией античной прикладной математики. В лучшей из них - "Метрике"- даны правила и формулы для точного и приближенного вычисления площадей правильных многоугольников, объемов усеченных конуса и пирамиды, приводится известная формула Герона для определения площади треугольника по трем сторонам, встречающаяся у Архимеда; даются правила численного решения квадратных уравнений и приближенного извлечения квадратных и кубических корней.

Рассмотрим метод Герона подробнее.

Задача. Вычислить квадратный корень целого числа а по рекуррентной формуле Герона Xi+1=(Xi + а/Xi )/2 
при заданной точности вычисления eps.

Алгоритм вычисленияЗададим X1 - начальное значение корня из числа а. 
Например, X1= a/2. 
Тогда каждое следующее приближение вычисляется через предыдущее:
Х2=(X1 + а/X1)/2
Х3=(X2 + а/X2)/2
-----------------------
Xi+1=(Xi + а/Xi)/2 

Вычисление продолжаем до тех пор, пока выполнится модуль разницы между Xi+1 и Xi станет меньше заданной погрешности вычисления eps: |Xi+1 - Xi|< eps
Для решения задачи используем цикл 
Repeat: until. (Слайд 16).

program mysqrt;
{Вычисление квадратного коpня числа по} {фоpмуле Герона х=(х+а/х)/2}
  uses crt;
  const eps=0.0001;
  var      a: integer;     x, x1: real;
Begin
  clrscr;
  write('Введите число а=');   readln(a);
  x:=a/2; {начальное значение корня}
  repeat
    x1:=x; {запоминаем предыдущее приближение корня}
    x:=(x+a/x)/2; {вычисляем (i+1)-е приближение корня}
  until abs(x-x1)<eps; 
 writeln (' Коpень числа ',a,' pавен ',x);
  readln
End.

Пример 2. Вычисление сумм бесконечных рядов с заданной точностью.

Во многих задачах возникает необходимость вычисления бесконечных рядов c заданной точностью с помощью рекуррентных соотношений. Рассмотрим эту проблему на примере вычисления суммы ряда: S=x - x3/3! + x5/5! - x7/7! +... с заданной точностью eps. На первый взгляд задача может показаться достаточно сложной. Однако ситуация сильно упрощается, если использовать рекуррентную формулу, с помощью которой каждый последующий член ряда выражается через предыдущий, т.е. справедливо соотношение: un = q un-1.

Попробуем определить q, рассмотрев последовательно отношение второго члена к перовому, третьего ко второму, четвертого к третьему и т.д.: 
      q1= u2 / u1 = - (x3/3!)/x = - x2/(2 * 3)
     q2= u3 / u2 = - (x5 / 5!) / (x3/3!) = - x2/(4 * 5)
     q3= u4 / u3 = - (x7 / 7!)/ (x5/ 5!) = - x2/(6 * 7)
:.......................................................
Нетрудно видеть, что для произвольного q справедлива формула:
     q= - x2 / k/(k+1), где k= 2, 4, 6, ...
Таким образом, положив первый член ряда равным x , можно вычислить следующий члена ряда, используя оператор:
     u:= - u* sqr(x)/k/(k+1);
Program mysin; { вычисляем S=x - x3/3! + x5/5! - x7/7! +...}

uses crt;
  const eps=0.00001; {точность вычислений}
  var     u: real;  s: real;  к : integer;

Begin

write ('Введите x='); readln(x);
  s:=0; {обнуление суммы}
  к:=0; {начальное значение переменной k}
  u:=x; {первый член ряда}
  while abs(u) > eps do
    begin
      s:=s+u; {суммируем ряд}
      к:=к+2; { формируем четное число }
       u:= - u * sqr(x) / к/ (к+1) ; {k-член ряда}
    end;

writeln (' сумма ряда S=',S);

writeln (' sin x=', sin(x));
  readln

End.

Раздел 3. Решение задач самостоятельно.

Учитель: С арифметической и геометрической прогрессиями вы познакомились в математике. Давайте вспомним основные понятия. (Слайд 20) и (Слайд 21).

Задача 1. "Изумруды". Обсуждается алгоритм и блок-схема для решения задачи. (Слайд 22).

Ученики выполняют набор и отладку программы. Проверка и самопроверка (Слайд 23).

Учитель: А теперь проведем небольшое исследование и выясним, как влияет погрешность eps на количество итераций при расчете сумм бесконечных рядов для некоторых специальных функций.

Задача 2. Не используя стандартные функции (за исключением abs), вычислить с разной точностью eps>0:

Y1=ex = 1+x/1! + x2/2! + ... + xn/n! ...;

Y2= cos(x) = 1- x2/2! + x4/4! - ... + (-1)n x2n/(2n)! + ...;

Y3= ln(1+x)= x - x2/2 + x3/3 - ... + (-1)n-1 xn/(n)+ ...

Определить количество итераций (повторений) n в зависимости от eps. (Слайд 24)

Занести данные в таблицу:

eps y1 n y2 n y3 n
0.001            
0.0001            
0.00001            

Ученики делятся на три группы. Каждая группа вычисляет приближенно одну из предложенных специальных функций.

IV. Проверка и самопроверка. Анализ полученных результатов

Учащиеся предъявляют на экран компьютера решение своей задачи, проверяют, делают выводы, оценивают совместно с учителем.

Учитель подводит итоги урока, выясняет, что вызвало трудности, насколько понравились предложенные задачи, что узнали нового.

V. Домашнее задание

Учитель сообщает некоторые сведения из истории числа пи, (Слайд 25), (Слайд 26).

На экран выводится слайд с задачами, комментирует условие задач и дает методические рекомендации. (Слайд 27).

Использованные источники

  1. Семакин И.Г., Шестаков А.П.. Лекции по программированию: Учебное пособие. Изд. 2-е. доп.- Пермь: Изд-во Перм. Ун-та. 1998. - 279 с.
  2. Коснёвски Ч. Занимательная математика и персональный компьютер. - Пер. с англ. - М.: Мир, 1987. - 192 с., ил. (Задача о рассеянном джентльмене).
  3. Богомолова О.В. Логические задачи/ - 3-е изд. - М.: БИНОМ. Лаборатория знаний. 2009. - 271 с.: ил. (Задача "Изумруды")
  4. Удивительное число пи . http://crow.academy.ru/dm/materials_/pi/history.htm
  5. Герон Александрийскй (Geron Aleksandriysiy) www.peoples.ru/science/physics/geron_aleksandriyskiy