Программирование разветвленных алгоритмов. Программирование разветвляющихся алгоритмов
Разделы: Информатика
Класс: 9
Тип урока: комбинированный, изучение нового материала.
Место урока в теме : 1 урок
Цели урока:
- Повторить и закрепить материал по теме “Алгоритм”
- Ввести понятие “условный оператор”
- Познакомить со способами записи разветвляющегося алгоритма на языке Pascal
- Применить полученные знания при решении жизненных ситуаций и различных задач
Задачи урока:
- Воспитательная – развитие познавательного интереса, логического мышления
- Учебная – освоение умений составления разветвляющихся алгоритмов
- Развивающая – развитие алгоритмического мышления, памяти, внимательности
Материально-техническое обеспечение урока:
- Наглядные и дидактические материалы
- Презентация для интерактивной доски, выполненная в программе Notebook (см. <Приложение 1 >)
- Карточки с текстом задач
Технические средства обучения
- ПК учителя
- Мультимедийный проектор
- Интерактивная доска SMART Board
- ПК учащихся
Программные средства
- Операционная система Windows ХР
- Система программирования Free Pascal
- Программное обеспечение интерактивной доски SMART Board
Учебно-методическое обеспечение урока:
- Семакин И.Г., Залогова Л.А, Русаков С.В., Шестакова Л.В. Информатика и ИКТ. Базовый курс: Учебник для 9 класса. – М.: БИНОМ. Лаборатория знаний, 2011
- Задачник-практикум по информатике в II ч. / И. Семакин, Е. Хеннер – М.:БИНОМ. Лаборатория Базовых Знаний, 2010
План урока
- Организационный момент (1 мин)
- Повторение (8 мин)
- Изучение нового материала (7 мин)
- Закрепление (8 мин)
- Практическая работа (18 мин)
- Подведение итогов урока и задание на дом (3 мин)
Ход урока
1. Организационный момент
2. Повторение
На прошлых уроках вы учились составлять программы работы с числовыми величинами, реализующие линейные алгоритмы.
Проверим, как вы усвоили этот материал.
Работаем устно.
<Рисунок1>.
Рисунок1
Задание№1
1) Прокомментируйте каждую строку программы (см. <Рисунок1>):
Дополнительные вопросы:
Перечислите целые типы Pascal;
Перечислите операторы ввода;
Для чего служит оператор присваивания;
Перечислите операторы вывода;
Какие переменные будут входными, какие выходными.
2) Определите результат выполнения программы при следующих входных данных.
На доску проецируется слайд презентации, содержащий <Рисунок2>.
Рисунок2
Задание№2
Установите соответствие между математической записью алгебраического выражения и записью алгебраического выражения на языке Pascal (см. <Рисунок2>).
Какое алгебраическое выражение соответствует пункту а?
Назовите математический смысл функций sqr и sqrt.
Как записываются на Pascal арифметические операции над целыми числами и вещественными числами?
На доску проецируется слайд презентации, содержащий <Рисунок3>.
Рисунок3
Задание№3
1) Найдите 5 ошибок в программе вычисления значения переменной y (см. <Рисунок3>).
2) Перечислите вещественные типы Pascal.
Изучение нового материала
На доску проецируется слайд презентации, содержащий <Рисунок4 >.
У всех рассмотренных нами до сих пор программ была линейная структура
Т.е. команды выполнялись последовательно одна за другой в том, порядке в котором они были записаны.
Однако не любую задачу можно решить с помощью линейного алгоритма
Например, значение переменной y, заданной формулой ,
в зависимости от значения переменной x будет вычисляться либо по формуле , либо по формуле 2.
В данном случае мы имеем дело с другой алгоритмической структурой – разветвлением.
Сегодня на уроке:
- вы узнаете, как решаются подобные задачи;
- научитесь составлять программы разветвляющихся алгоритмов на языке Pascal
Запишите тему урока
“Программирование разветвляющихся алгоритмов на языке Pascal”
Вспомним:
1) Какой алгоритм называется разветвляющимся?
2) Что означает структура ветвления? (выбор одного из альтернативных путей работы алгоритма в зависимости от результата проверки условия)
Существуют две формы ветвления: полная и неполная (<Рисунок5>)
В полной форме при истинности условия выполняется действие 1, при ложности условия – действие 2.
(Пример – Если у меня повысилась температура, то я вызываю врача,…иду на работу)
В неполной форме действие выполняется только при истинности условия.
(Пример – Если на улице дождь – то я беру с собой зонт)
Для реализации структуры “ветвления” на языке Pascal используется условный оператор.
Запись в тетрадях:
1) Полная форма условного оператора
IF условие THEN действие1 ELSE действие2;
2) Неполная форма условного оператора
IF условие THEN действие;
Русский перевод условного оператора: IF-если, THEN- то, ELSE – иначе.
Условия могут быть простыми и сложными.
Для составления простых условий используют операции сравнения: <, >, <=, >=, <>, =.
Слева и справа от знака сравнения записывают арифметические выражения.
Рассмотрим примеры записи условных операторов.
Закрепление материала
На доску проецируется слайд презентации, содержащий <Рисунок6>.
Задание№4
Дано ветвление (см. <Рисунок6>):
1) Назовите условие
2) Назовите действие, которое будет выполняться в случае Истинности условия; в случае Ложности условия.
3) Запишите условный оператор (записи ведутся на интерактивной доске и в тетрадях учащихся).
4) При каких значениях x выполняется действие y:= x-1? (x4)
Условия x>4 и x4 два взаимоисключающих условия в нашем случае
1 – Истинно 2 – Ложно
1 – Ложно 2 – Истинно
Во второй блок-схеме в качестве условия укажем x4
5) Заполните действия во второй блок-схеме (записи ведутся на интерактивной доске и в тетрадях учащихся).
6) Заполните условный оператор для второй блок-схемы (записи ведутся на интерактивной доске и в тетрадях учащихся).
Получили две записи одного и того же алгоритма ветвления.
Практическая работа
Выполнение практического задания.
На доску проецируется слайд презентации, содержащий <Рисунок7>
Карточка №1
Задание№5
Составьте программу вычисления значения переменной
= ; x, y – целые числа
Этапы работы:
Составление блок-схемы (см. <Рисунок7>)
(записи ведутся на интерактивной доске и в тетрадях учащихся)
Составление компьютерной модели (учащиеся работают за ПК)
На доску проецируется слайд презентации, содержащий <Рисунок8>
Компьютерный эксперимент (тестирование программы)(см. <Рисунок8>)
Анализ результатов компьютерного эксперимента
Самостоятельное выполнение практического задания.
На доску проецируется слайд презентации, содержащий <Рисунок9>, содержащий тест для программы.
Подведение итогов урока и задание на дом
Оценивание работы учащихся на уроке, оценивание практической работы.
Мы познакомились с условным оператором
Научились составлять программы для разветвляющихся алгоритмов
На следующем уроке мы продолжим изучения данной темы
Рассмотрим правила составления сложных условий, познакомимся с логическими операциями
Задание на дом:
Параграф 37, записи в тетради, решить задачу:
“Даны числа x и y. Вычислите число z, равное (x+y), если x y и (1-x+y) в противном случае”
Общий вид условного оператора else Перед else знак «;» не ставится. Полная форма условного оператора: ifthenelse if then else Сокращённая форма условного оператора: ifthen if then Операции отношений Операции отношений Логические операции Логические операции Простые Сложные Условия - логические выражения!
>"); readln (a, b); write ("Введите x>>"); readln (x); if (x>=a) and (x=a) and (x" title="Условный оператор program n_9; var x, a, b: real; begin writeln ("Определение принадлежности точки отрезку"); write ("Введите а, b>>"); readln (a, b); write ("Введите x>>"); readln (x); if (x>=a) and (x=a) and (x" class="link_thumb">
4
Условный оператор program n_9; var x, a, b: real; begin writeln ("Определение принадлежности точки отрезку"); write ("Введите а, b>>"); readln (a, b); write ("Введите x>>"); readln (x); if (x>=a) and (x=a) and (x
>"); readln (a, b); write ("Введите x>>"); readln (x); if (x>=a) and (x=a) and (x">
>"); readln (a, b); write ("Введите x>>"); readln (x); if (x>=a) and (x=a) and (x">
>"); readln (a, b); write ("Введите x>>"); readln (x); if (x>=a) and (x=a) and (x" title="Условный оператор program n_9; var x, a, b: real; begin writeln ("Определение принадлежности точки отрезку"); write ("Введите а, b>>"); readln (a, b); write ("Введите x>>"); readln (x); if (x>=a) and (x=a) and (x">
>"); readln (a, b); write ("Введите x>>"); readln (x); if (x>=a) and (x=a) and (x" title="Условный оператор program n_9; var x, a, b: real; begin writeln ("Определение принадлежности точки отрезку"); write ("Введите а, b>>"); readln (a, b); write ("Введите x>>"); readln (x); if (x>=a) and (x=a) and (x">
>"); readln (a, b, c); y:=a; if (b>y) then y:=b; if (c>y) then y:=c; writeln ("y=", y) end. " title="Сокращённая форма условного оператора program n_10; var y, a, b, c: integer; begin writeln ("Нахождение наибольшей из трёх величин"); write ("Введите а, b, с>>"); readln (a, b, c); y:=a; if (b>y) then y:=b; if (c>y) then y:=c; writeln ("y=", y) end. " class="link_thumb">
5
Сокращённая форма условного оператора program n_10; var y, a, b, c: integer; begin writeln ("Нахождение наибольшей из трёх величин"); write ("Введите а, b, с>>"); readln (a, b, c); y:=a; if (b>y) then y:=b; if (c>y) then y:=c; writeln ("y=", y) end. Y:=A B>Y Y:=B Y:=C C>Y данет данет
>"); readln (a, b, c); y:=a; if (b>y) then y:=b; if (c>y) then y:=c; writeln ("y=", y) end. ">
>"); readln (a, b, c); y:=a; if (b>y) then y:=b; if (c>y) then y:=c; writeln ("y=", y) end. Y:=A B>Y Y:=B Y:=C C>Y данет данет">
>"); readln (a, b, c); y:=a; if (b>y) then y:=b; if (c>y) then y:=c; writeln ("y=", y) end. " title="Сокращённая форма условного оператора program n_10; var y, a, b, c: integer; begin writeln ("Нахождение наибольшей из трёх величин"); write ("Введите а, b, с>>"); readln (a, b, c); y:=a; if (b>y) then y:=b; if (c>y) then y:=c; writeln ("y=", y) end. ">
>"); readln (a, b, c); y:=a; if (b>y) then y:=b; if (c>y) then y:=c; writeln ("y=", y) end. " title="Сокращённая форма условного оператора program n_10; var y, a, b, c: integer; begin writeln ("Нахождение наибольшей из трёх величин"); write ("Введите а, b, с>>"); readln (a, b, c); y:=a; if (b>y) then y:=b; if (c>y) then y:=c; writeln ("y=", y) end. ">
Составной оператор thenelse В условном операторе и после then, и после else можно использовать только один оператор. then else Если в условном операторе после then или после else нужно выполнить несколько операторов, то используют составной оператор – конструкцию вида: begin end
0 да Начало Введите коэффициенты a, b, c d:=b*b-4*a*c d 0 да Начало Введите коэффициенты a, b, c d:=b*b-4*a*c d 7 Блок-схема решения КВУР Конец Вывод «Корни уравнения: х1=», х1, «х2=», х2 х1:=(-b+sqrt(d))/2/a d>0 да Начало Введите коэффициенты a, b, c d:=b*b-4*a*c d 0 да Начало Введите коэффициенты a, b, c d:=b*b-4*a*c d 0 да Начало Введите коэффициенты a, b, c d:=b*b-4*a*c d 0 да Начало Введите коэффициенты a, b, c d:=b*b-4*a*c d 0 да Начало Введите коэффициенты a, b, c d:=b*b-4*a*c d title="Блок-схема решения КВУР Конец Вывод «Корни уравнения: х1=», х1, «х2=», х2 х1:=(-b+sqrt(d))/2/a d>0 да Начало Введите коэффициенты a, b, c d:=b*b-4*a*c d
Begin x1:=(-b+sqrt(d))/2/a; x2:=(-b-sqrt(d))/2/a; writeln ("Корни уравнения:"); writeln ("x1=", x1:9:3); writeln ("x2=", x2:9:3) end; begin x1:=(-b+sqrt(d))/2/a; x2:=(-b-sqrt(d))/2/a; writeln ("Корни уравнения:"); writeln ("x1=", x1:9:3); writeln ("x2=", x2:9:3) end; begin x:=-b/2/a; writeln ("Корень уравнения x=", x:9:3) end; begin x:=-b/2/a; writeln ("Корень уравнения x=", x:9:3) end; program n_11; var a, b, c: real; var d: real; var x, x1, x2: real; begin writeln ("Решение квадратного уравнения"); write ("Введите коэффициенты a, b, c >>"); readln (a, b, c); d:=b*b-4*a*c; if d0 then end.
>"); readln (a, b, c); d:=b*b-4*a*c; if d0 then end.">
>"); readln (a, b); if a0 then begin x:=-b/a; writeln ("Корень уравнения x=", x:9:3) end else if b0 then wri" title="Решение линейного уравнения program n_12; var a, b, x: real; begin writeln ("Решение линейного уравнения"); write ("Введите коэффициенты a, b>>"); readln (a, b); if a0 then begin x:=-b/a; writeln ("Корень уравнения x=", x:9:3) end else if b0 then wri" class="link_thumb">
10
Решение линейного уравнения program n_12; var a, b, x: real; begin writeln ("Решение линейного уравнения"); write ("Введите коэффициенты a, b>>"); readln (a, b); if a0 then begin x:=-b/a; writeln ("Корень уравнения x=", x:9:3) end else if b0 then writeln ("Корней нет") else writeln ("x – любое число"); end. Корней нет Список данных a, b, x - вещ a, b a0 x:=-b/a b0 Любое число нет да нет
>"); readln (a, b); if a0 then begin x:=-b/a; writeln ("Корень уравнения x=", x:9:3) end else if b0 then wri">
>"); readln (a, b); if a0 then begin x:=-b/a; writeln ("Корень уравнения x=", x:9:3) end else if b0 then writeln ("Корней нет") else writeln ("x – любое число"); end. Корней нет Список данных a, b, x - вещ a, b a0 x:=-b/a b0 Любое число нет да нет">
>"); readln (a, b); if a0 then begin x:=-b/a; writeln ("Корень уравнения x=", x:9:3) end else if b0 then wri" title="Решение линейного уравнения program n_12; var a, b, x: real; begin writeln ("Решение линейного уравнения"); write ("Введите коэффициенты a, b>>"); readln (a, b); if a0 then begin x:=-b/a; writeln ("Корень уравнения x=", x:9:3) end else if b0 then wri">
>"); readln (a, b); if a0 then begin x:=-b/a; writeln ("Корень уравнения x=", x:9:3) end else if b0 then wri" title="Решение линейного уравнения program n_12; var a, b, x: real; begin writeln ("Решение линейного уравнения"); write ("Введите коэффициенты a, b>>"); readln (a, b); if a0 then begin x:=-b/a; writeln ("Корень уравнения x=", x:9:3) end else if b0 then wri">
Самое главное При записи на языке Паскаль разветвляющихся алгоритмов используют условный оператор: if then else Для записи неполных ветвлений используется сокращённый условный оператор: if then Если при некотором условии требуется выполнить определённую последовательных операторов, то их объединяют в один составной оператор, имеющий вид: begin end.
>3, 4 Первая точк" title="Вопросы и задания Как на языке Паскаль записывается полное и неполное ветвление? Является ли условным оператором последовательность символов? а) if x=y then x:=0; y:=0 else write (z) в) if xb then d:=2; if a1, 2 Координаты 2-й точки>>3, 4 Первая точк" class="link_thumb"> 12 Вопросы и задания Как на языке Паскаль записывается полное и неполное ветвление? Является ли условным оператором последовательность символов? а) if x=y then x:=0; y:=0 else write (z) в) if xb then d:=2; if a1, 2 Координаты 2-й точки>>3, 4 Первая точка ближе Пример входных данныхПример выходных данных a b c>> 1 2 1Не существует a b c>> 2 2 2Равносторонний a b c>> Равнобедренный a b c>> 3 4 5Разносторонний Даны три натуральных числа. Напишите программу, определяющую, существует ли треугольник с такими длинами сторон. Если такой треугольник существует, то определите его тип (равносторонний, равнобедренный, разносторонний). Имеются данные о количестве полных лет трёх призёров спартакиады. Напишите программу, выбирающую и выводящую возраст самого младшего призёра. Пример входных данныхПример выходных данных k, 1>>-1 5 xa, ya >>1 2 Точка лежит под прямой k, 1>>-1 5 xa, ya >>1 10 Точка лежит над прямой k, 1>>-1 5 xa, ya >>1 4 Точка лежит на прямой Напишите программу, определяющую, лежит ли точка А(ха, ya): а) на прямой y = kx + 1, над ней или под ней; б) на окружности x 2 + y 2 = r 2, над ней или под ней. Примеры входных данных и соответствующих им выходных данных разработайте самостоятельно. Пример входных данныхПример выходных данных x >> 5 y >> 6 x = 5 y = 6 x >> 6 y >> 5 x = 5 y = 6 Напишите программу, которая производит обмен значений переменных x и y, если x больше y. Дан условный оператор: If a5 then c:=2 else c:=3 Какое значение имеет переменная а, если в результате выполнения условного оператора переменной с присваивается значение 3? Пример входных данныхПример выходных данных -5y = - 1 0y = 0 5y = 1 Напишите программу, вычисляющую значение функции: -1 при x 0 y = Составьте программу для решения задачи: Известно, что 31 января 2011 года приходится на понедельник. Какие значения должны быть присвоены литерной переменной y в алгоритме, определяющем день недели для любого числа (chislo) января 2011 года? chislo:= chislo mod 7 если chislo=3 то у:="… если chislo=4 то у:="… если chislo=5 то у:="… если chislo=6 то у:="… если chislo=0 то у:="… если chislo=1 то у:="… если chislo=2 то у:="… Пример входных данныхПример выходных данных Координаты 1 – го поля >> 2 2 Координаты 2 – го поля >> 3 3 Поля одного цвета Координаты 1 – го поля >> 2 3 Координаты 2 – го поля >> 3 3 Поля разного цвета Координаты 1 – го поля >> 2 7 Координаты 2 – го поля >> 5 4 Поля одного цвета Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8. Напишите программу, которая по введённым координатам двух полей (k, l) и (m, n) определяет, являются ли эти поля полями одного цвета. Напишите программу, в которой пользователю предлагается дополнить до 100 некоторое целое число а (а - случайное число, меньшее 100). Ответ пользователя проверяется и комментируется. >3, 4 Первая точк"> >3, 4 Первая точка ближе Пример входных данныхПример выходных данных a b c>> 1 2 1Не существует a b c>> 2 2 2Равносторонний a b c>> 20 20 30Равнобедренный a b c>> 3 4 5Разносторонний Даны три натуральных числа. Напишите программу, определяющую, существует ли треугольник с такими длинами сторон. Если такой треугольник существует, то определите его тип (равносторонний, равнобедренный, разносторонний). Имеются данные о количестве полных лет трёх призёров спартакиады. Напишите программу, выбирающую и выводящую возраст самого младшего призёра. Пример входных данныхПример выходных данных k, 1>>-1 5 xa, ya >>1 2 Точка лежит под прямой k, 1>>-1 5 xa, ya >>1 10 Точка лежит над прямой k, 1>>-1 5 xa, ya >>1 4 Точка лежит на прямой Напишите программу, определяющую, лежит ли точка А(ха, ya): а) на прямой y = kx + 1, над ней или под ней; б) на окружности x 2 + y 2 = r 2, над ней или под ней. Примеры входных данных и соответствующих им выходных данных разработайте самостоятельно. Пример входных данныхПример выходных данных x >> 5 y >> 6 x = 5 y = 6 x >> 6 y >> 5 x = 5 y = 6 Напишите программу, которая производит обмен значений переменных x и y, если x больше y. Дан условный оператор: If a5 then c:=2 else c:=3 Какое значение имеет переменная а, если в результате выполнения условного оператора переменной с присваивается значение 3? Пример входных данныхПример выходных данных -5y = - 1 0y = 0 5y = 1 Напишите программу, вычисляющую значение функции: -1 при x 0 y = Составьте программу для решения задачи: Известно, что 31 января 2011 года приходится на понедельник. Какие значения должны быть присвоены литерной переменной y в алгоритме, определяющем день недели для любого числа (chislo) января 2011 года? chislo:= chislo mod 7 если chislo=3 то у:="… если chislo=4 то у:="… если chislo=5 то у:="… если chislo=6 то у:="… если chislo=0 то у:="… если chislo=1 то у:="… если chislo=2 то у:="… Пример входных данныхПример выходных данных Координаты 1 – го поля >> 2 2 Координаты 2 – го поля >> 3 3 Поля одного цвета Координаты 1 – го поля >> 2 3 Координаты 2 – го поля >> 3 3 Поля разного цвета Координаты 1 – го поля >> 2 7 Координаты 2 – го поля >> 5 4 Поля одного цвета Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8. Напишите программу, которая по введённым координатам двух полей (k, l) и (m, n) определяет, являются ли эти поля полями одного цвета. Напишите программу, в которой пользователю предлагается дополнить до 100 некоторое целое число а (а - случайное число, меньшее 100). Ответ пользователя проверяется и комментируется."> >3, 4 Первая точк" title="Вопросы и задания Как на языке Паскаль записывается полное и неполное ветвление? Является ли условным оператором последовательность символов? а) if x=y then x:=0; y:=0 else write (z) в) if xb then d:=2; if a1, 2 Координаты 2-й точки>>3, 4 Первая точк"> title="Вопросы и задания Как на языке Паскаль записывается полное и неполное ветвление? Является ли условным оператором последовательность символов? а) if x=y then x:=0; y:=0 else write (z) в) if xb then d:=2; if a1, 2 Координаты 2-й точки>>3, 4 Первая точк">
Разветвляющимся называется алгоритм, в котором последовательность и количество выполняемых команд зависит от выполнения или не выполнения некоторых условий. В разветвляющихся алгоритмах используются команды ветвления и выбора из большого количества вариантов . Графическое изображение команд ветвления представлено на рис.3.1.
Рис. 3.1 Команды ветвления: а) – в полной форме; б) , в) – в сокращенной– форме
Для программирования ветвлений используется оператор if , а для программирования выбора – операторы switch и break .
3.2 Операторы управления разветвляющимся вычислительным процессом
3.2.1 Логические выражения
Логическое выражение (условие) - выражение, которое содержит знаки операций отношения и/или знаки логических операций . Значением логического выражения может быть только 1, если логическое выражение есть ИСТИНА (true), или 0, если логическое выражение ЛОЖЬ (false).
Операции отношения являются бинарными и обозначаются следующим образом (приведены в порядке уменьшения приоритета):
< (меньше);
<= (меньше или равно);
> (больше);
>= (больше или равно);
== (равно);
!= (не равно).
Примеры: a=8.1, d<>(w-c).
Логические операции – это операции:
&& - логическое И (бинарная операция);
|| - логическое ИЛИ (бинарная операция);
! - логическое НЕ (унарная операция).
Логические операции имеют более низкий приоритет, чем операции отношения. Результаты выполнения логических операций приведены в таблицах 3.1-3.3.
Таблица 3.1 Таблица3.2 Таблица 3.3
|
|
|
Например, логическое выражение a>3 && c<7 при a=5, c=6 будет иметь значение ИСТИНА, а при a=3, c=8 – ЛОЖЬ; логическое выражение a>3 || c<7 при a=5, c=6 будет иметь значение ИСТИНА, при a=2, c=6 – ЛОЖЬ; при a=7 логическое выражение!a>2 будет иметь значение ЛОЖЬ.
При составлении логических выражений следует учитывать приоритет выполнения операций.
Примеры записи логических выражений приведены в таблице 3.4.
Таблица 3.4
Таблица записи логических выражений
Условие |
Логическое выражение |
x>=a && x<=b |
|
xb |
|
или
|
x>=a && x<=b || x>=c && x<=d |
Хотя бы одно из чисел x, y положительное |
x>0 || y>0 |
Только одно из чисел x, y положительное |
(x>0 && !y>0) || (y>0 && !x>0) |
Ни одно из чисел x, y не является четным |
x % 2 !=0 && y % 2 !=0 |
Точка (x,y) принадлежит заштрихованной области |
x>=0 && x<=a && y>=0 && y<=b/a*x |