Программирование разветвленных алгоритмов. Программирование разветвляющихся алгоритмов

Разделы: Информатика

Класс: 9

Тип урока: комбинированный, изучение нового материала.

Место урока в теме : 1 урок

Цели урока:

  • Повторить и закрепить материал по теме “Алгоритм”
  • Ввести понятие “условный оператор”
  • Познакомить со способами записи разветвляющегося алгоритма на языке Pascal
  • Применить полученные знания при решении жизненных ситуаций и различных задач

Задачи урока:

  • Воспитательная – развитие познавательного интереса, логического мышления
  • Учебная – освоение умений составления разветвляющихся алгоритмов
  • Развивающая – развитие алгоритмического мышления, памяти, внимательности

Материально-техническое обеспечение урока:

  • Наглядные и дидактические материалы
  • Презентация для интерактивной доски, выполненная в программе Notebook (см. <Приложение 1 >)
  • Карточки с текстом задач

Технические средства обучения

  • ПК учителя
  • Мультимедийный проектор
  • Интерактивная доска SMART Board
  • ПК учащихся

Программные средства

  • Операционная система Windows ХР
  • Система программирования Free Pascal
  • Программное обеспечение интерактивной доски SMART Board

Учебно-методическое обеспечение урока:

  1. Семакин И.Г., Залогова Л.А, Русаков С.В., Шестакова Л.В. Информатика и ИКТ. Базовый курс: Учебник для 9 класса. – М.: БИНОМ. Лаборатория знаний, 2011
  2. Задачник-практикум по информатике в II ч. / И. Семакин, Е. Хеннер – М.:БИНОМ. Лаборатория Базовых Знаний, 2010

План урока

  1. Организационный момент (1 мин)
  2. Повторение (8 мин)
  3. Изучение нового материала (7 мин)
  4. Закрепление (8 мин)
  5. Практическая работа (18 мин)
  6. Подведение итогов урока и задание на дом (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