Конспект урока «Решение задач по программированию»


План-конспект урока в 11 «б» классе по информатике
"Решение задач по программированию", 13.03.2013
Выполнила: Садыкова Лариса Хоснуловна учитель математики и информатики, МБОУ "Осинская СОШ №1", 2013 г.
Цель урока: комплексное применение полученных знаний по программированию в среде Паскаль при решении задач.
Задачи урока:
Обучающие:
закрепить знания о структуре программы в среде Turbo Pascal и основных операторов программы
закрепить навыки написания программ.
формировать умения комплексного применения знаний по программированию в среде Turbo Pascal при решении задач
Развивающие:
развитие логического мышления, познавательных и исследовательских способностей учащихся;
формирование умений анализировать, сравнивать, выделять главное;
развитие навыков самостоятельной работы.
Воспитательные:
воспитание творческого подхода к работе, умения экспериментировать;
формирование целеустремленности, аккуратности при работе на компьютере, информационной культуры.
Практические – развитие навыков написания программ на компьютере с помощью языка Паскаль
Тип урока: закрепление материала с применением современных компьютерных технологий.
Вид урока: комбинированный.
Требования к знаниям и умениям:
учащиеся должны знать: основные этапы решения задач по программированию, структуру программы, основные операторы программы, алгоритмы решения задач; учащиеся должны уметь: работать в программе Турбо Паскаль, писать программы, запускать и проводить их отладку.
Методы: исследование, частично поисковый, индивидуальный практикум с дифференцированным подходом.
Формы организации учебной деятельности: индивидуально-фронтальная.
Программно-дидактическое обеспечение:
Оборудование: ПК, проектор, интерактивная доска.
Программное обеспечение: Turbo Pascal, Power Point.
Презентация по данной теме: Задачи по программированию
Практическая работа: программы на языке Паскаль и задания в тетрадях
 План урока:
Организационный момент (1 мин)
Повторение (3 мин) + устная проверочная (4 мин)
Совместное решение задач (9 мин)
Физминутка (1 мин)
Практическая работа (20 мин)
Подведение итогов (1 мин)
Ход урока
Орг. момент. Тема, цель, эпиграф урока«Решение задач — специфическое достижение разума, разум же особый дар, которым наделен человек» (Дж. Пойа).
2. Повторение: (см.слайды)+ устная проверочная (4 мин)
Учитель задает вопросы: 
1). Из каких разделов состоит программа на языке Паскаль? (Раздел заголовка, раздел описаний, раздел операторов). 2). С какого служебного слова начинается программа? (Program) 3). Как описываются переменные? (Var список переменных: тип переменных). 4). С чего начинается основная программа? (Begin) 5). Как записывается оператор вывода? (Writeln (‘текст’, список переменных)) 6). Как записывается оператор ввода? (Readln(список переменных)) 7). Как записывается оператор присваивания? (имя переменной := арифм. выражение) 8). Чем заканчивается программа? (End.) 
Совместное решение задач (9 мин)
1.Задача. Даны три числа. Найти произведение этих чисел. (Найти сумму этих чисел)
2.Задача. Даны три числа. Найти произведение четных из них3.Задача. Даны три числа. Найти сумму нечетных из них4. задача.Определить какое из трех, введенных пользователем, чисел максимальное и вывести его на экран.
Описание переменных: 
В программе будет три переменные для чисел, вводимых пользователем: n1, n2, n3. Также для упрощения алгоритма введем четвертую переменную, в которую по ходу выполнения кода будет помещено максимальное значение: max.
Алгоритм решения задачи: 
Сравнить первое и второе число (n1 и n2). Переменной max присвоить значение переменной, содержащей большее значение.
Сравнить значение переменной max с третьим числом, введенным пользователем (n3). Если значение n3 окажется больше, чем max, то присвоить max значение третьего числа. Если же значение max окажется больше, то ничего не делать.
Программа на языке Паскаль: 
var a1, a2, a3, max: integer;
 
begin write ('Введите три числа: ');
readln (a1, a2, a3);
 
if a1 >= a2 then
max := a1
else max := a2;
 
if a3 > max then
max := a3;
 
writeln ('Максимальное из них: ', max);
 
readlnend.
Примечания: 
Три числа не обязательно могут быть разными. Достаточно предусмотреть вариант равенства значений только в первом операторе if.
4.Физминутка
5. Практическая работа
I группа – за компьютеры – набрать и провести отладку программы 4 задачи
II группа – решение задач по программированию типов С1 ,В2, В5, ЕГЭ по информатике
С1 Требовалось написать программу, при выполнении которой с клавиатуры считывается координата точки на прямой (х – действительное число) и определяется принадлежность этой точки одному из выделенных отрезков В и D (включая границы). Программист торопился и написал программу неправильно.
var x: real;
begin readln(x) ;
if x>l then
if x>=7 then
if x>13 then
write('не принадлежит')
else write('принадлежит')
end.
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (А, В, С, D и Е). Границы (точки -5, 1, 7 и 13) принадлежат заштрихованным областям.
Область Условие 1
(x>1) Условие 2
(х>=7) Условие 3
(х>13) Программа выведет Область обрабатывается верно
А В С D Е В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «Да» или «Нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
4536440162560Решение: Сразу замечаем, что в программе else относится к последнему оператору if. Обратите внимание, что второе условие проверяется в приведенной программе только тогда, когда истинно первое, а третье – только тогда, когда истинны первые два. В остальных ячейках (если условие не проверяется) нужно ставить прочерк:
Область Условие 1
(x>1) Условие 2
(х>=7) Условие 3
(х>13) Программа выведет Область обрабатывается верно
А нет – – В нет – – С да нет – D да да нет Е да да да Программы выводит какой-то ответ только тогда когда истинны первые два условия; в этом случае ответ зависит от истинности третьего условия:
Область Условие 1
(x>1) Условие 2
(х>=7) Условие 3
(х>13) Программа выведет Область обрабатывается верно
А нет – – – нет
В нет – – – нет
С да нет – – нет
D да да нет принадлежит да
Е да да да не принадлежит да
Нужная область представляет собой объединение двух областей, которые описываются двойными неравенствами
-5 <= x <= 1и 7 <= x <= 13
Поскольку в Паскале двойные неравенства использовать нельзя (а в некоторых языках, например, в школьном алгоритмическом языке системы КуМир – можно!), заменяем их на сложные условия с логической операцией «И» (and):
(-5 <= x) and (x <= 1)
(7 <= x) and (x <= 13)
Для объединения областей два эти условия нужно объединить с помощью логической операции «ИЛИ» (or). Таким образом, получаем такое решение:
if (-5 <= x) and (x <= 1) or
(7 <= x) and (x <= 13) then
write('принадлежит')
else write('не принадлежит');
Здесь учтено, что логическая операция «ИЛИ» имеет более низкий приоритет, чем «И», и поэтому выполняется последней.
В2. (базовый уровень, время – 2 мин) (Тема: Оператор присваивания в языке программирования)Определите значение переменной c после выполнения следующего фрагмента программы.
a := 5;
a := a + 6;
b := –a;
c := a – 2*b;
Решение:
для решения нужно использовать «ручную прокрутку» программы, то есть, выполнить вручную все действия
наиболее удобно и наглядно это получается при использовании таблицы, где в первом столбце записаны операторы программы, а в остальных показаны изменения переменных при выполнении этих операторов
здесь используются три переменные: a, b, c; до выполнения программы их значения нам неизвестны, поэтому ставим в таблице знаки вопроса:
ab c
? ? ?
после выполнения оператора a := 5; изменяется значение переменной a:
ab c
? ? ?
a := 5; 5 оператор a := a + 6; означает «вычислить значение выражения a + 6 используя текущее значение a (равное 5), и записать результат обратно в переменную a»; таким образом, новое значение равно 5 + 6 = 11:
ab c
? ? ?
a := 5; 5 a := a + 6; 11 следующий оператор, b := -a; изменяет значение переменной b, записывая в нее –a; учитывая, что в a записано число 11, находим, что b будет равно –11:
ab c
? ? ?
a := 5; 5 a := a + 6; 11 b := –a; –11 последняя команда, c := a – 2*b, изменяет значение переменной c; при текущих значениях a = 11 и b = –11 результат выражения равен 11 – 2*(–11) = 33, это число и будет записано в переменную c:
ab c
? ? ?
a := 5; 5 a := a + 6; 11 b := –a; –11 c := a – 2*b; 33
таким образом, правильный ответ – 33.
Возможные ловушки и проблемы:
нельзя забывать про знак переменных и про то, что «минус на минус дает плюс»
B5 (базовый уровень, время – 2 мин) (Тема: Анализ программы.)Определите, что будет напечатано в результате работы следующего фрагмента программы:
var k, s: integer;
begin s:=0;
k:=0;
while s < 1024 do begin
s:=s+10;
k:=k+1;
end;
write(k);
end.
Решение:
из программы видно, что начальные значения переменных k и s равны нулю
цикл заканчивается, когда нарушается условие s < 1024, то есть количество шагов цикла определяется изменением переменной sпосле окончания цикла выводится значение переменной k
таким образом, задача сводится к тому, чтобы определить число шагов цикла, необходимое для того, чтобы значение s стало не меньше 1024
с каждым шагом цикла значение s увеличивается на 10, а значение k – на единицу, так что фактически k – это счётчик шагов цикла
поскольку s увеличивается на 10, конечное значение s должно быть кратно 10, то есть это 1030 > 1024
для достижения этого значения переменную s нужно 103 раза увеличить на 10, поэтому цикл выполнится 103 раза
так как k – это счётчик шагов цикла, конечное значение k будет равно 103
Ответ: 103.
Возможные ловушки и проблемы:
можно перепутать переменную, которая выводится на экран (внимательно смотрим на оператор вывода)
B6 (базовый уровень, время – 2 мин)
Тема: рекурсивные алгоритмы.
Что нужно знать:
рекурсия – это приём, позволяющий свести исходную задачу к одной или нескольким более простым задачам того же типа
чтобы определить рекурсию, нужно задать
условие остановки рекурсии (базовый случай или несколько базовых случаев)
рекуррентную формулу
любую рекурсивную процедуру можно запрограммировать с помощью цикла
рекурсия позволяет заменить цикл и в некоторых сложных задачах делает решение более понятным, хотя часто менее эффективным
существуют языки программирования, в которых рекурсия используется как один из основных приемов обработки данных (Lisp, Haskell)
Пример задания:
Алгоритм вычисления значения функции F(n), где n – натуральное число,
задан следующими соотношениями:
F(1) = 1
F(n) = F(n–1) * n, при n > 1
Чему равно значение функции F(5)?
В ответе запишите только натуральное число.
Решение:
используя заданную рекуррентную формулу, находим, что
F(5) = F(4) * 5
применив формулу еще несколько раз, получаем
F(5) = F(3) * 4 * 5 = F(2) * 3 * 4 * 5 = F(1) * 2 * 3 * 4 * 5
мы дошли до базового случая, который останавливает рекурсию, так как определяет значение F(1) = 1
окончательно F(5) = 1 * 2 * 3 * 4 * 5 = 120
ответ: 120.
6.Подведение итогов
Использованные материалы:  
Веб-ссылка: Готовимся к ЕГЭ по информатике (сайт Константина Полякова)Сайт учителя информатики Константина Полякова: преподавание, наука и жизнь
 Автор/создатель: Поляков К.Ю.
 http://kpolyakov.narod.ru 
 
Сайт учителя информатики Дмитрия Тарасова
http://videouroki.net  ;  http://srclick.ru/click/c2001hji1uhVAj64ce64yFu4Qps 
Подготовка к ЕГЭ по информатике в режиме onlinehttp://ege.yandex.ru/informatics/ 
Образовательный портал «РЕШУ ЕГЭ» Дмитрия Гущина
http://soc.reshuege.ru/ 

Приложенные файлы

  • docx file66-1
    Размер файла: 61 kB Загрузок: 10