Уроки по ветвлению (программирование на Pascal, тематическое планирование ближе к Босовой Л.) Урок №1 «Алгоритмическая конструкция «ветвление». Полная и неполная форма ветвления. Простые и составные условия». Цели урока (на 3 урока, возможно первые 2 урока спаренные): формирование навыков составления алгоритмов с ветвлением с помощью различных конструкций (полные и неполные ветвления, с применением простых и составных условий, нескольких последовательных ветвлений, вложенных ветвлений) на примере использования задач из разных предметных областей развитие алгоритмического мышления; умения применять полученные знания при решении задач различной направленности. привитие учащимся навыков самостоятельности в работе; воспитание чувства ответственности и культуры поведения Тип урока: комбинированный урок. Методы и приемы: объяснительно-иллюстративный, репродуктивный, проблемный метод, практическая работа. Оборудование: компьютеры, проектор, программное обеспечение – презентация по теме “Ветвление”, Windows XP, Pascal. 1) 2) 3) 4) 5) 6) 7) План 1-го урока: Организационный момент. (3-5 м) Актуализация знаний обучающихся. (4-6 м) Изучение нового материала. (10-12 м.) Закрепление нового материала. Задачи. (17-23 м) Подведение итогов. Выставление оценок. (2 м) Информация о домашнем задании. (1 м) Рефлексия. (2 м) * можно рассмотреть материал (или не рассматривать) в зависимости от уровня подготовки класса или что нужно повторить больше. Ход урока I. Организационный момент (сообщение темы и постановка целей урока). *(Пояснения для учителей: Некоторые алгоритмы без программирования ученики изучали ранее. Поэтому сейчас и в дальнейшем 1 и 2 часть урока является повторением, чтобы ученики лучше поняли, как данные алгоритмы записать на языке программирования). Вы пошли в магазин за подарком купить себе компьютерную игру, там есть 2 игры (ученики сами выбирают название игр). Вопрос: Какую игру вы выбираете? Почему? Ответы: (ЕСЛИ хватает денег, ЕСЛИ нравится больше, …) Богатырь подъехал к камню, на котором написано: «………….» (надпись можно придумать вместе). Вопрос: Куда поедет богатырь? Почему? Ответы: (ЕСЛИ хватит смелости, ЕСЛИ жить хочется, …) Вопрос: Чем отличается данные действия (алгоритмы) от последовательных действий (алгоритма линейного или следования)? Ответ: Условием, которое определяется словом ЕСЛИ. Как вы думаете, что сегодня на уроке мы будем изучать, какие алгоритмы и программы? 1 II. Актуализация опорных знаний учащихся. Устный опрос: (учащиеся отвечают устно или записывают на доске, заканчивают предложения учителя или заканчивают заполнять, заготовленные заранее таблицы). 1.Операции бывают логические, арифметические и др., как вы уже знаете, они используются в сложных (составных) условиях и выражениях. Большое значение имеет знание приоритетов операций (расставить приоритеты или сами операции): Операция Приоритет Первый Not Второй *, / ,div, mod, and Третий +, -, or, xor Четвертый =, <>, <, >, >= *Справочник (можно рассмотреть некоторые примеры в зависимости от уровня подготовки класса): Not (лог.операция) - не *- умножение / - деление div - деление без остатка (17 div 3=5) mod - определение остатка(17 mod 3=2) and (лог.оператор) - и + - сложение - - вычитание or (лог.оператор) - или xor(лог.оператор) - отрицание или = - равно <>- неравенство < - меньше >- больше <=-меньше либо равно >=-больше либо равно 2.Заполнить таблицу истинности основных логических операций над целыми числами: B1 0 0 1 1 Операнды b2 B1 and b2 0 0 1 0 0 0 1 1 B1 or b2 0 1 1 1 Результат операции B1 xor b2 0 1 1 0 Not b1 1 1 0 0 3.Назовите основные стандартные математические функции?*: Abs(x) - Абсолют.число Sqr(x) - Квадр.корень Sqrt(x) - Квадрат Sin(x) - Синус Cos(x) - Косинус Trunc(x) - Усекание числа Round(x) - Округление числа 4.Что означает запись writeln(y:6:2)?* Ответ: Запись действительного числа (тип real). Первая цифра означает – количество позиций определяемых для вывода числа, а вторая цифра – количество цифр после запятой при выводе числа. 5.Какие типы данных вы знаете?* Ответы: real, integer, boolean, …. 2 III. Ознакомление с новым материалом. Если в задачи в зависимости от условия выполняется одна или другая последовательность действий, значит, данный алгоритм имеет ветвление. Соответственно такие алгоритмы и программы называются разветвляющие. а) Полная и неполная форма. Вспомним, в алгоритмах (на блок-схеме) неполная и полная форма ветвления представляется в следующем виде: if then + ? if then - ? + else - else Указание Указание 1 Указание 2 Полная форма условного оператора применяемого в программах с ветвлением имеет вид: if< логическое выражение (условие)> then <указание 1>else< указание 2> Неполная форма условного оператора: if< логическое выражение (условие)> then <указание> (при невыполнении условия программа переходит к выполнению следующей команды, после данной). б) Простые и составные условия. Одно условие является простым, если в логическом выражении встречается более одного условия, оно называется составным. Для построения таких условий служат логические операции. Каждое простое условие в составном условии берется в скобки. Например: if x<=0 then y:=0 else y:=x*x*x; if (x<=0) or (x>10) then y:=0 else y:=x*x*x; (можно определить со школьниками, на каком отрезке, какая функция строится)* Примечание: Если в указаниях (после оператора then или else), нужно выполнить более одного действия, то действия записываются во внутрь составного оператора begin … end. Например: if (x<=0) and (x>-5) then begin y1:=0; y2:=x*x*x; end; IV. Закрепление нового материала или решение задач. Решим задачи на темы (далее определим, какие особенности конструкции ветвления применяются в данных задачах): 1. Алгоритм вычисления одной функции, имеющий дробь или корень (одной из 2-х функций в зависимости от промежутка числовой прямой). 2. Алгоритм вычисления принадлежности точки отрезку на числовой прямой (области ограниченной 3-мя разными функциями или окружностью). 3. Алгоритм вычисления max (min) из 3-х чисел. 4. Алгоритм вычисления линейного уравнения (или одной из 3-х функций в зависимости от промежутка числовой прямой). 5. Алгоритм вычисления неравенства типа «a>=bx».* (Пояснения для учителей: Блок-схемы алгоритмов не приводятся, так как многие из них рассматривались ранее, если это нужно, можно излагать материал с повторением – вначале строить блок-схему, хотя бы для отдельных задач. Для более сложных задач, которые не рассматривались ранее возможно построение алгоритма (блок-схемы), как это требуется при решении (моделировании) задачи с помощью компьютера.) 3 Решение задач вместе с учителем за компьтером (может более сильный ученик объяснить решение задачи всему классу): Задача 1: Вычислить функцию y=2/(x-1). program pr1; var x,y: real; begin writeln(‘ввести x’); readln(x); if (x-1)<>0 then begin y:=2/x; writeln(y:6:2); end else writeln(‘В данной точке функции не существует’); readln; end. В данной задаче используется полное ветвление с простым условием. Задача 2: Определить принадлежит ли точка A(x), лежащая на координатной прямой отрезку [-3,3). program pr2; var x,y: real; begin writeln(‘ввести x’); readln(x); if (x>=-3) and (x<3) then writeln(‘Принадлежит’) else writeln(‘Не принадлежит’); readln; end. В данной задаче используется полное ветвление с составным условием. Задача 3. Найти максимум из 3-х заданных целых чисел. program pr3; var а,b,c,max: integer; begin writeln(‘Введите 3 числа’); readln(a,b,c); if a>b then max:=a else max:=b; if c>max then max:=c; writeln(max); readln; end. В данной задаче используется полное ветвление и неполное ветвление с простыми условиями. *Подумайте, как можно решить данную задачу другим способом? Какое решение вы считаете более эффективным (более кратким)? Как составить алгоритм и программу нахождения наибольшего (наименьшего) числа из 4-х заданных чисел? V. Подведение итогов урока. Подводятся итоги урока, выставляются оценки. 4 VI. Домашнее задание (выдаются карточки). Даются пояснения к выполнению домашнего задания. Уровень 1. Задача 1a. Вычислить функцию y=sqrt(x-1). Ответ для самостоятельной проверки … writeln(‘ввести x’); readln(x); if (x-1)>=0 then begin y:= sqrt(x-1); writeln(y:6:2); end else writeln(‘В данной точке функции не существует’); … Уровень 2. Задача 2a. Существует ли треугольник, по заданным сторонам (2 стороны в сумме больше третьей). Ответ для самостоятельной проверки: … writeln(‘Введите длины 3-х сторон’); readln(a,b,c); writeln(‘Треугольник со сторонами’,a,b,c); if (a+b>c) and (b+c>a) and (a+c>b) then write(‘Существует’) else write(‘Не существует’); … Уровень 3. Задача 3a. Составить программу, задающую загадки (тест) и анализирующую ответы. Ответ для самостоятельной проверки: … writeln(' 1 вопрос: Операция нахождения остатка при делении целых чисел (введите номер правильного ответа)'); writeln('1 div'); writeln('2 mod'); writeln('3 or'); writeln('4 and'); readln(q); if q=2 then s:=s+1; … VII. Рефлексия (на выбор учителя). Карточки с вопросом учителю. Запишите, ребята, вопрос, на который вы не хотели бы отвечать на следующем уроке (по пройденной теме). Цветограмма урока: Кружок красного цвета Кружок зеленого цвета Кружок желтого цвета «Я удовлетворен уроком, «Урок был интересным, «Пользы от урока я урок был полезен для я принимал в нем получил мало, я не меня, я много, с пользой активное участие, урок очень понимал, о чем и хорошо работал на был полезен для меня, я идет речь, мне это не уроке, я понимал все, о сумел выполнить ряд очень нужно, к ответам чем говорилось и заданий, но все-таки я не на уроке я был не делалось на уроке» все смог понять» готов» 5 Урок №2 «Вложенные ветвления». Практическая работа. 1) 2) 3) 4) 5) 6) 7) План 2-го урока: Организационный момент (проверка домашнего задания – можно собрать карточки, …) (3-5 м) Актуализация знаний обучающихся. (5-7 м) Изучение нового материала. (7-10 м.) Практическая работа. Задачи. (18-23 м) Проверка работ учащихся. (3 м) Информация о домашнем задании. (1 м) Рефлексия. (2 м) * можно рассмотреть материал (или не рассматривать) в зависимости от уровня подготовки класса или что нужно повторить больше. Ход урока I. Организационный момент (сообщение темы и постановка целей урока). Вы пошли в магазин за подарком купить себе компьютерную игру, там есть теперь 3 игры (ученики сами выбирают название игр). Вопрос: Какую игру вы выберите? Почему? Как выбираете, если хотите 2 или все 3 игры? Ответы: (Возможно, выбрать сначала 2 игры из 3-х на которые хватает денег – ЕСЛИ1, а затем та, которая больше нравится из оставшихся двух – ЕСЛИ2, …) Вопрос: Чем отличается данные действия (алгоритмы) от действий рассмотренных на 1 уроке? Ответ: Теперь у нас больше условий – ЕСЛИ1, ЕСЛИ2, …. Как вы думаете, что сегодня на уроке мы будем изучать? II. Актуализация опорных знаний учащихся. Устный опрос: (учащиеся отвечают устно или записывают на доске, набирают рейтинговые баллы). 1.Что такое ветвление, чем отличается от следования? 2.Отличие полной и неполной формы ветвления? 3.Что происходит, если не выполняется условие в случае неполного ветвления? 4.Чем отличается простое условие от составного условия? 5.Чем связываются простые условия в составном? 6.Приведите пример (написать строку программы) составного условия с использованием операции or и and. Объяснить разницу. 7.Как записать действия в программе, если их выполняется (или не выполняется) несколько? 8.Как будет выглядеть алгоритм задачи 3a.* III. Ознакомление с новым материалом. Вложенное ветвление – это ветвление, которое находится внутри другого ветвления. Используется в задачах для получения более 2-х УКАЗАНИЙ. В случае 3-4 и более возможных УКАЗАНИЙ, можно использовать также несколько неполных ветвлений, записанное одно под другим (см. тест), а также в некоторых задачах для множества вариантов (УКАЗАНИЙ) используется оператор выбора (будем изучать дальше). 6 Задача 4: Программа вычисления Y(x) по графику. y=2 y=x 0 2 3 y=-x+5 Блок-схема такой программы выглядит: начало x x<2 y:=x x<3 y:=2 Y:=-x+5 Вывод Y конец program pr4; var x,y:real; begin writeln(‘ввести x’); readln(x); if x<2 then y:=x else if x<3 then y:=2 else y:=-x+5; writeln(y:5:3); readln; end. Задача 4a: Программа решения линейного уравнения вида ax+b=0. program pr4a; var x,y:real; begin writeln(‘ввести a,b’); readln(a,b); if a<>0 then writeln(‘x=’,-b/a) else if b<>0 then writeln(‘Корней нет’) else writeln(‘Любое число’); readln; end. В данной задаче используется полное вложенное условие. 7 IV. Практическая работа учащихся за компьютером. Учащиеся разбиваются на разноуровневые группы по два человека (на 2-ом уроке возможно разбивание учеников на группы «слабый+сильный», чтобы более слабые ученики освоили материал лучше). Учащимся предлагаются задания трех уровней сложности. Вспомнить условие четности (нечетности): x mod 2=0 (x mod 2=1)! Уровень 1. Задача 1b. Составьте программу, проверяющую, верно ли утверждение, что двухзначное введенное вами целое число является четным. Ответ для самостоятельной проверки … writeln(‘ввести x’); readln(x); if x mod 2=0 then writeln(‘Четное’) else writeln(‘Нечетное’); … Уровень 2. Задача 2b. Вычислить функцию y=sqrt(x-1)/(5-x). Ответ для самостоятельной проверки: … writeln(‘ввести x’); readln(x); if (x-1>=0) and (5-x<>0) then begin y:=sqrt(x-1)/(5-x); writeln(y:6:3) else writeln(‘Не существует’); … Уровень 3. Задача 4b. Составить программу вычисления значения функций в зависимости от интервала: y= x при x>1; x2 при -1 x 1; (x+1)4 при x <-1. Ответ для самостоятельной проверки: … writeln(‘ввести x’); readln(x); if x<-1 then y:=(x+1)*(x+1)*(x+1)*(x+1) else {*y:=sqr(x+1)*sqr(x+1) или y:=sqr(sqr(x+1))} if x<=1 then y:=sqr(x) else y:=x; writeln(y:6:3) … V .Проверка работ учащихся. Для проверки решений учащимся демонстрируются заранее приготовленные программы. VI. Домашнее задание (выдаются карточки). Даются пояснения к выполнению домашнего задания. Уровень 1. Задача 1с. Составьте программу, проверяющую, верно ли утверждение, что сумма цифр двухзначного введенного вами целого числа делится на 5. Ответ для самостоятельной проверки: 8 … writeln(‘Введите число’); readln(x); b:=x mod 10; a:=x div 10; if (a+b) mod 5=0 then write(‘Делится’) else write(‘Не делится’); … Уровень 2. Задача 2с. Составьте программу, проверяющую, верно ли утверждение, что сумма цифр 3-х-значного введенного вами целого числа делится на 5 или на 3. Ответ для самостоятельной проверки: … writeln(‘Введите число’); readln(x); с:=x mod 10; x:=x div 10; b:=x mod 10; a:=x div 10; if (a+b+c mod 5=0) or (a+b+c mod 3=0) then write(‘Делится’) else write(‘Не делится’); … Уровень 3. Задача 3b. Даны три числа x, y, z. Найти число a=max(x+y+z, xyz)+3 и определить делится ли оно на 3. Ответ для самостоятельной проверки: … writeln(‘Введите 3 числа’); readln(x,y,z); if x+y+z>x*y*z then max:=x+y+z else max:=x*y*z; a:=max+3; if a mod 3=0 then writeln(a,‘ Четное’) else writeln(a,‘ Нечетное’); … VII. Рефлексия (на выбор учителя). Карточки с вопросом учителю. Запишите, ребята, вопрос, на который вы не хотели бы отвечать на следующем уроке (по пройденной теме). Цветограмма урока: Кружок красного цвета Кружок зеленого цвета Кружок желтого цвета «Я удовлетворен уроком, «Урок был интересным, «Пользы от урока я урок был полезен для я принимал в нем получил мало, я не меня, я много, с пользой активное участие, урок очень понимал, о чем и хорошо работал на был полезен для меня, я идет речь, мне это не уроке, я понимал все, о сумел выполнить ряд очень нужно, к ответам чем говорилось и заданий, но все-таки я не на уроке я был не делалось на уроке» все смог понять» готов» 9 Урок №3 «Решение задач. Проверочная самостоятельная работа.» План 3-го урока: 1) Организационный момент (проверка домашнего задания – можно собрать карточки, …) (1 м) 2) Актуализация знаний обучающихся. (5 м) 3) Изучение нового материала. (6 м.) 4) Практическая работа. Задачи. (30 м) 5) Проверка работ учащихся. (3 м) * можно рассмотреть материал (или не рассматривать) в зависимости от уровня подготовки класса или что нужно повторить больше. Ход урока I. Организационный момент (сообщение темы и постановка целей урока). II. Актуализация опорных знаний учащихся. Устный опрос: (учащиеся отвечают устно или записывают на доске, набирают рейтинговые баллы). 1.Что такое вложенные ветвления? 2.Каким способом можно избавиться от вложенного ветвления? 3.Скажите условие четности (нечетности)? Если у учащихся есть вопросы, разобрать их. III. Ознакомление с новым материалом. Решим ещё одну задачу: Задача 5. Масса 8 литров бензина 5,68 кг. Цистерна имеет объем 3000 м3. Хватит ли ее, чтобы вместить X т бензина? Эта задача требует математического моделирования! Сначала найдем сколько кг. в 1 литре: 5,68/8=0,71 Затем подсчитаем сколько кг. в 300 м3: 3000*0,71=2130 кг.=2,13 т Теперь запишем условие: если A<2.13, то бензин войдет, иначе не войдет. Программа получается простая … writeln(‘ввести a’); readln(a); if a<2.13 then writeln(‘Войдет’) else writeln(‘Не войдет’); … (Подобные задачи, в том числе с более сложной структурой ветвления будем решать в 10 классе). IV. Проверочная самостоятельная работа за компьютером. Учащиеся разбиваются на разноуровневые группы по два человека или выполняют работу по одному. Учащимся предлагаются задания трех уровней сложности. Уровень 1. Задача 4с. Составьте программу, проверяющую, является ли число положительным или отрицательным. Ответ для самостоятельной проверки: … writeln(‘Введите 3 числа’); readln(x); 10 if x>0 then writeln(x,‘ Положительное’) else if x<0 then writeln(x,‘ Отрицательное’) else writeln(a,‘ это нуль’); … Уровень 2. Задача 2d. Составьте программу, определяющую, входит ли введенная вами цифра в десятичную запись введенного вами двухзначного числа. Ответ для самостоятельной проверки: … writeln(‘Введите 2-x-значное число’); readln(x); writeln(‘Введите цифру’); readln(с); b:=x mod 10; a:=x div 10; if (c=a) or (c=b) then writeln(‘Входит’) else writeln(‘Не входит’); … Уровень 3. Задача 3с. Составьте программу, проверяющую, в какой четверти координатной плоскости находится точка А(x,y). Ответ для самостоятельной проверки: … writeln(‘Введите число’); readln(x,y); if (x>0) and (y>0) then writeln(‘В 1 четверти’); if (x<0) and (y>0) then writeln(‘Во 2 четверти’); if (x<0) and (y<0) then writeln(‘В 3 четверти’); if (x>0) and (y<0) then writeln(‘В 4 четверти’); if (x>0) and (y<0) then writeln(‘Это центр координат’); … {Задачу можно решить также несколькими вложенными циклами, что впрочем усложняет решение задачи} Дополнительная задача (например, для тех кто посещал кружок). Задача 2e. Определить принадлежит ли точка A(x), лежащая на координатной прямой отрезкам [-5,-2] или [0,5]. Ответ для самостоятельной проверки: … writeln(‘ввести x’); readln(x); if ((x>=-5) and (x<=-2)) or ((x>=0) and (x<=5)) then writeln(‘Принадлежит’) else writeln(‘Не принадлежит’); … V .Проверка работ учащихся. Для проверки решений учащимся демонстрируются заранее приготовленные программы (возможно дома). *Если позволяет время возможно работа над ошибками на следующем уроке. Подготовил учитель информатики МБОУ СОШ №9 г. Нерчинска Курилов И.А. 11