Методическая разработка урока информатики с мультимедийным сопровождением в 9 классе «Алгоритмическая структура "ветвление"»
Пояснительная записка к презентации
Алгоритмическая структура «ветвление».
1. Оргмомент.
Слайд 1. Здравствуйте. Умение программировать с каждым годом становится всё более востребованным в современном обществе. Соответственно растёт и цена ошибки программиста, которая иногда исчисляется не только миллионами долларов, но и, к сожалению, человеческими жизнями. Например, в июле 1962 года программист, разрабатывающий полёт ракеты «Маринер-1», допустил одну-единственную ошибку, переводя рукописную формулу в компьютерный код. Символ верхнего тире, или индекса, он воспринял за обычное тире или знак минус. К сожалению, за этим знаком скрывалась специальная функция, без которой программное обеспечение компьютера воспринимало вполне нормальные вариации скорости ракеты как критические и недопустимые, что и привело к печальному результату – потере 18,5 миллионов долларов.
Поэтому именно на наших уроках, когда закладываются основы программирования, нужно быть предельно внимательным и стараться не оставлять для себя нерешенных вопросов.
2. Постановка проблемы и актуализация опорных знаний.
Слайд 2. Существует множество прикладных программ, которые значительно облегчают нам с вами жизнь. Допустим, стандартная программа операционной системы Windows - «Калькулятор» - мгновенно извлечёт квадратный корень или возведёт любое допустимое число в любую допустимую степень. Мы не задумываемся над тем, как она работает и кто её написал. А ведь это очень сложный программный продукт, над созданием которого тот, неизвестный нам программист, трудился много дней. А если бы он допустил при написании программного кода хотя бы одну единственную ошибку? Например, не поставил бы точку. Всего лишь одну точку! Или поставил бы, но не там. Что бы произошло? (Программа не работала бы или работала бы неправильно).
Мы с вами уже не первый урок занимаемся составлением алгоритмов и написанием компьютерных программ. И наша задача научиться делать это без ошибок. Хотите ли вы проверить, что и как вы усвоили в программировании на сегодняшний момент? (Да)
Слайд 3. На слайде изображены основные блоки, которые используются при составлении блок-схем и их описания. Но описания распределены неправильно. В карточках под номером 1, которые лежат на ваших столах, найдите Задание № 1 и расставьте номера описаний так, чтобы они соответствовали перечисленным блокам.
Теперь проверим. В поле для баллов поставьте количество правильно расставленных описаний.
Слайд 4. На каком языке мы с вами общаемся? (На русском).
Для большинства из нас - это наш родной язык, поэтому мы хорошо понимаем друг друга. На уроках химии мы используем язык химии, на уроках математики – язык математики. Всегда ли компьютеру будет понятно выражение, написанное на математическом языке? (Нет) Почему? (В математике мы не всегда ставим знак умножить, а для компьютера его надо ставить обязательно). Проверим, хорошо ли вы переводите текст с математического языка в компьютерную форму. Перед вами пять математических выражений. Найдите в своих карточках Задание № 2 и запишите эти выражения в компьютерной форме.
Проверим. В поле для баллов поставьте количество правильно переведённых выражений.
Слайд 5. Отлично, теперь переходим к Заданию № 3. На слайде записано несложное равенство. Первый вариант в своих карточках должен нарисовать блок-схему нахождения значения переменной а, а второй вариант соответственно написать программный код на языке программирования Pascal.
Теперь, варианты, поменяйтесь листочками и проверьте работы друг друга. Если есть ошибки, то исправьте и поставьте отметки по трехбалльной шкале: всё верно – три, мелкие недочёты – два, ошибки – один.
Как называется алгоритмическая структура, которую вы использовали при выполнении этого задания? (Линейный алгоритм).
3. Изучение нового материала.
Слайд 6. Придёт время, и вы сможете написать программу не хуже Калькулятора Microsoft, но пока давайте выберем для себя цель попроще. Довольно часто на уроках алгебры и геометрии, а бывает, что и на других уроках тоже вам приходится решать квадратные уравнения. Много ли приходится выполнять вычислений при этом? (Смотря на сколько сложное уравнение). А можете ли вы как программисты, упростить эту задачу? (Можем, мы можем написать программу решения квадратного уравнения).
Какую же цель мы поставим перед собой на нашем уроке? (Написать программу решения квадратного уравнения).
Слайд 7. Назовите общий вид квадратного уравнения. (ax2+bx+c=0).
Есть ли какие ограничения на коэффициенты a, b, c? (а не равно нулю).
Сколько может быть корней в квадратном уравнении? (Два, один, ни одного).
От чего это зависит? (От дискриминанта).
Как? (Если D>0, то два корня, если D=0, то один корень и если D<0, то корней нет).
По какой формуле вычисляется корень, при D=0? (x=-b/(2a)).
По каким формулам вычисляются корни, при D>0? (x1,2 = )
На что похож рисунок на слайде? (На блок-схему).
Соответствует ли она линейной алгоритмической структуре? (Нет)
Почему? (От дискриминанта расходятся три стрелочки)
Знакома ли вам такая алгоритмическая структура? (Нет)
Сможем ли мы без неё написать программу решения квадратного уравнения? (Нет).
Напишите тему сегодняшнего урока: Алгоритмическая структура «ветвление».
Слайд 8. Ветвление алгоритма задаётся блоком в виде ромбика, внутри которого помещается некоторое условие, которое может быть либо истинным, либо ложным. Тогда из этого блока должно быть два выхода – один продолжает выполнение алгоритма для истинности условия, а другой – для ложности.
В случае истинности условия – выполняется одна последовательность действий, а в случае ложности – другая. Затем ветвление заканчивается, и алгоритм переходит в линейную структуру.
Может ли алгоритм выполниться одновременно по обеим веточкам ветвления? (Нет).
Почему? (Потому что условие не может быть одновременно и ложным и истинным).
Такой вид «ветвления» получил название «полной формы». Логично предположить, что существует и иная форма ветвления. Какая же? (Неполная).
Почему «неполная»? (Чего-то в ней не будет).
Предположите – чего? (Различные предположении…)
Проверим ваши гипотезы. В неполной форме также есть условие в ромбике, из которого также выходят две веточки. Но, действия выполняются только в случае истинности условия, а в случае его ложности вообще ничего не происходит.
Осталось выяснить, как записывать алгоритмическую структуру «ветвление» на языке программирования Pascal.
Блоку с условием соответствует команда if, после которой записывается само условие.
Веточка, соответствующая истинности условия заменяется командой then и последующими за ней действиями.
Веточка, соответствующая ложности условия заменяется командой else и последующими за ней действиями.
В конце строчки обязательно ставится точка с запятой.
В итоге получается фраза на английском языке if… then…else…, которую можно перевести как если… то… иначе….
Предположите, как будет выглядеть запись неполной формы ветвления на Pascal. (if… then…;).
На ваших столах лежат карточки под номером 2, на которых изображён этот слайд. Дома вклеите их в свои рабочие тетради.
4. Тренировка для глаз.
Слайд 9. Как вы думаете, какая самая большая проблема программистов? (Различные варианты…)
Самая большая проблема – это плохое зрение. Поэтому, обязательно при работе за компьютером надо соблюдать технику безопасности и время от времени делать несложную, но весьма эффективную гимнастику для глаз.
Сядьте прямо, положите руки на колени, и проследите одними глазами, без поворотов головы, за перемещениями смайлика на слайде.
5. Отработка применения новой алгоритмической структуры.
Слайд 10. Итак, вернёмся к цели нашего урока. Какова она? (Написать программу решения квадратного уравнения)
Прежде чем мы напишем саму программу, что нам нужно сделать? (Нарисовать блок-схему алгоритма решения)
С чего начнётся блок-схема? (С блока «начало алгоритма).
Что дальше? (Ввод исходных данных)
В каком блоке? (Параллелограмм)
Что будет исходными данными? (Коэффициенты a, b, c)
Что дальше? (Вычислить дискриминант)
В каком блоке? (Прямоугольник)
Формула дискриминанта? (D=b2-4ac)
Что дальше? (Сравниваем дискриминант с нулём)
Как? (Блок «условие», ромб)
Какое условие напишем первым? (Любое из трёх)
Тогда пусть это будет D<0. Дальше? (По ветви «да» выводим ответ «корней нет»)
В каком блоке? («Вывод результата»)
Что будет дальше по ветви «нет»? (Следующее условие)
Какое? (Любое из двух оставшихся)
Тогда пусть будет D=0. Дальше? (По ветви «да» вычисляем один корень)
В каком блоке? («Линейная команда»)
Формула? (x=-b/(2a))
Дальше? (Выводим результат)
В каком блоке? («Вывод результата»)
Нужно ли проверять третье условие? (Нет)
Почему? (Если два из трёх условие не истинны, то тогда третье истинно)
Что дальше? (По ветви «нет» вычисляем два корня)
В каком блоке? («Линейная команда»)
Формула? (x1,2=)
Дальше? (Выводим результат)
В каком блоке? («Вывод результата»)
Что дальше? (Объединяем все выводы результатов и заканчиваем алгоритм блоком «конец алгоритма»).
Сколько раз в нашем алгоритме мы использовали алгоритмическую структуру ветвление? (Два раза)
В какой форме? (В полной форме)
Полученная блок-схема нашего алгоритма есть у вас на карточках № 3, которые дома вы вклеите в свою тетрадь.
Слайд 11. Остался последний этап работы по достижению нашей цели. Какой? (Записать алгоритм на языке программирования Pascal)
Каждому блоку из блок-схемы соответствуют определённые строки из программы. Итак, блок «начало алгоритма» - что будет в программе? (program kv_ur; var a, b, c, x, x1, x2;)
Блок «ввод исходных данных»? (begin write(‘a=’); read (a); write(‘b=’); read (b); write(‘c=’); read (c);)
Следующий блок - вычисление дискриминанта. (d:=b*b-4*a*c;)
Далее - «ветвление». Ветка «да». (if d<0 then write(‘korney net’) else)
Ветка «нет». (Опять ветвление: if d=0 then x:=-b/(2*a) write(‘x=’,x) else)
После оператора then может стоять только одно действие, а у нас их получается два. Выйти из этой затруднительной ситуации можно, например, так: поместить эту пару команд в контейнер begin-end, который будет восприниматься программой как одно действие: if d=0 then begin x:=-b/(2*a); write(‘x=’,x); end else. Хотя есть и другие способы решения этой проблемы.
Теперь вы сами сможете сказать, какими командами запишется ветка «нет». (begin x1=(-b+sqrt(d))/(2*a); x2=(-b+sqrt(d))/(2*a); write(‘x1=’,x1, ‘x2=’, x2); end;)
И завершается программа… (end.)
Обратите внимание на отступы слева. Они упрощают понимание смысла структуры программы, показывая различные уровни ветвления. Если бы все строчки программы начинались бы без отступов, то текст воспринимался бы гораздо сложнее.
Итак, какая же была цель нашего урока? (Написать программу решения квадратного уравнения)
Достигли ли мы поставленной цели? (Да).
Что нам остаётся сделать ещё? (Набрать программу и проверить, как она работает)
Проверить её работоспособность вам предстоит на следующем уроке. А дома вы вклеите в свои тетради карточки № 4, на которых записан текст этой программы.
6. Домашнее задание.
Слайд 12. На карточках № 5 задание на дом: прочитать из учебника п. 4.2.2 и выучить определение алгоритмической структуры «ветвление»; выучить по опорным записям блок-схемы «ветвления» в полной и неполной формах и их запись на Pascal;
Для желающих получить дополнительную отметку: доработать блок-схему решения квадратного уравнения с учётом возможного ввода пользователем для коэффициента «а» значения «нуль».
7. Подведение итогов урока, рефлексия.
Слайд 13. Закончите фразы, записанные на слайде: «Сегодня на уроке я узнал, что…» и
«Сегодня на уроке я научился…»
Елена Сергеевна