Класс: 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).