Организация действий над данными: операторы ветвления

advertisement
Тема урока:
«Организация действий над данными: операторы ветвления»
Базовый курс «Информатика» 10 – 11 класс
Семакин И.Г. 68 часов, 1 час в неделю (2 часа, (*) 4 часа)
Профиль
Естественно-математический (А)
Рекомендации по изучению раздела
Программирование – одна из самых традиционных тем в курсе информатики. Изучение
этой темы возможно на разных уровнях. Какие вопросы необходимо рассмотреть в обязательном минимуме:

Что такое Программирование как предметная область?

Для чего нужно изучать программирование в школе?

Изучение методов построения вычислительных алгоритмов.

Изучение языка программирования.

Изучение и практическое освоение системы программирования.
Основные цели раздела
Познакомить учащихся с разделом информатики «Программирование». Обучить приемам
построения простых вычислительных алгоритмов и их программированию на языке высокого уровня. Обучить начальным навыкам работы с системой программирования.
Рекомендации к уроку
Дидактические основания урока:
 метод обучения:
объяснительно-иллюстративный;
 тип урока:
комбинированный;
 формы учебной работы учащихся: фронтальная работа, работа в парах, работа
в группах.
Для проведения объяснительно-иллюстративной лекции эффективно использовать возможности диска «1С:Школа. Вычислительная математики и программирование, 10-11
класс», раздел «Программирование на языке Turbo Pascal». Также диск содержит тесты по
каждой теме раздела и практические работы.
Компьютерная лекция предполагает различные формы работы учителя и ученика:
 слайд-лекция (для работы учителя с классом)
 слайд-лекции + текст лекции (для индивидуальной работы ученика на компьютере
по теме урока)
 слайд-лекция + конспект (для расширенной индивидуальной работы ученика на
компьютере по теме урока)
 текст лекции, текст конспекта без слайдов
1
В ходе урока учащиеся делают записи в конспектах, которые в разработке отмечены восклицательным знаком и выделены зеленым цветом.
Теоретическая часть урока построена на основе текста лекций и текста конспектов диска
«1С:Школа. Вычислительная математики и программирование, 10-11 класс», раздел
«Программирование на языке Turbo Pascal».
Практическая часть урока построена на основе работы с тестом к уроку №16 и практической работой №4.
Цель урока
Научиться создавать программы с использованием оператора ветвления.
Оборудование
доска, мультимедийная установка, компьютеры для учащихся.
Учебно-методический комплект
 И.Семакин Базовый курс информатики», М.: Лаборатория Базовых Знаний, 2001,
п.12.4, п.12.5.
 И.Семакин Задачник к базовому курсу информатики. М.: Лаборатория Базовых
Знаний.
 И.Семакин, Т.Шеина Преподавание базового курса информатики в средней школе.
М.: Лаборатория Базовых Знаний, 2000. Часть 2, раздел «Введение в программирование».
Программное обеспечение
Диск «1С:Школа. Вычислительная математика и программирование, 10-11 класс»:
 Урок 16. Ветвление алгоритма на три и более рукавов
 Тест к уроку 16.
 Практикум 4. Программирование алгоритмов с ветвлением
2
План урока (2 часа)
 Орг. момент.
 Теоретическая часть, мультимедийная лекция учителя (диск «1С:Школа. Вычислительная математика и программирование, 10-11 класс», Урок 16. «Ветвление алгоритма на три и более рукавов»).
 Контрольные вопросы.
 Рефлексивный тест, индивидуальная работа учащихся с компьютерным тестом
(диск «1С:Школа. Вычислительная математика и программирование, 10-11 класс»,
тест к уроку №16).
 Практическая работа, парная работа учащихся под руководством учителя (диск
«1С:Школа. Вычислительная математика и программирование, 10-11 класс», Практикум 4. Программирование алгоритмов с ветвлением)
 Домашнее задание
 Вопросы учеников.

(*) Дополнительные задания (при наличии времени)

Итог урока.
Ход урока
I. Орг. момент
Приветствие, проверка присутствующих. Объяснение хода урока.
II. Теоретическая часть
Учитель проводит интерактивную лекцию (проектор + экран) в диалоге с учащимися с
использованием программного обеспечения: диск «1С:Школа. Вычислительная математика и программирование, 10-11 класс», Урок 16. Ветвление алгоритма на три и более рукавов).
Общая информация
Иногда действия зависят от того или иного условия. Например:
 если воскресенье, то не идём на занятия;
 если дождь, то берём зонт, если нет, зонт не берём;
 если число отрицательное, то нельзя из него извлечь действительный квадратный
корень;
 если знаменатель дроби равен нулю, то дробь вычислить нельзя, иначе – можно.
Выбор того или иного действия означает выбор той или иной 'ветки'. Ветвление – это алгоритмическая конструкция, в которой в зависимости от условия выполняется та или
иная последовательность действий.
Конспект!
Ветвление – это алгоритмическая конструкция, в которой в зависимости от условия
выполняется та или иная последовательность действий.
3
Слайд №1 «Введение»
До сих пор, изучая ветвление в алгоритмах, мы в основном рассматривали случаи ветвления на два рукава. Сегодня наша задача – познакомиться со способами организации в программах ветвления на три и более рукавов (или, как еще говорят, ветвей).
Слайд №2 «Оператор безусловного перехода GoTo»
Особенность разветвляющихся алгоритмов состоит в том, что последовательность выполнения шагов алгоритма может изменяться. В Турбо-Паскале для изменения последовательности выполнения операторов используются условные операторы и операторы перехода.
При описании разветвляющихся процессов обычно используют понятие условного и безусловного перехода. Если в программе требуется нарушить порядок выполнения операторов без предварительных проверок каких-либо условий, переход называется безусловным.
Для реализации такого перехода в языке Турбо-Паскаль служит оператор безусловного
перехода
GoTo n
Здесь n – метка той строки в программе, которая должна выполняться после перехода.
Метка – это либо целое число без знака в диапазоне 0…9999, либо идентификатор, определяемый программистом. Метки используются в разделе операторов. Они ставятся перед
операторами и отделяются от них двоеточием. Метки должны быть объявлены в разделе
описания меток прежде, чем они будут использоваться. Объявление метки начинается
словом Label, за которым следует список используемых меток, разделенных запятыми.
Но лучше метками и, соответственно, оператором GoTo не пользоваться, так как они
усложняют программу и противоречат принципам структурного программирования. Турбо-Паскаль обладает средствами, позволяющими обходится без использования меток и
оператора Goto.
Конспект!
GoTo – оператор безусловного перехода.
Общий вид записи:
GoTo n;
N – метка перехода. Ставится перед оператором и отделяется от них двоеточием.
Метки должны быть объявлены в разделе описания меток прежде, чем они будут использоваться. Объявление метки начинается словом Label, за которым следует список используемых меток, разделенных запятыми.
Слайд №3 «Пример»
Один из способов реализации ветвления на несколько рукавов – проверка условий до тех
пор, пока одно из них не окажется истинным, выполнение предусмотренных этим условием действий и выход из ветвления.
Рассмотрим пример
Пусть необходимо для заданного Х вычислить значение А по формулам:
A = Х + 1, если Х < 0
А = 2Х, если 0 =< Х < 10
A = 0, если Х >= 10
Здесь можно пойти разными путями.
Первый способ
4
В алгоритме вычисления по данной формуле предусмотреть проверку первого условия (и
вычисление по первой формуле, если оно истинно); затем проверку второго условия, но
только в том случае, если первое ложно; вычисление по второй формуле, если второе
условие истинно и по третьей, если ложно. Причем если истинно первое условие, то после
вычисления по первой формуле происходит выход из структуры Ветвление.
Конспект!
Учащиеся записывает пример и составляют блок-схему
Слайд №4 «Составление программу к блок-схеме»
Программу по этой блок-схеме можно составить по-разному.
Первый вариант алгоритма – с использованием операторов безусловного перехода.
Program P1;
Var a,x: real;
Label 1,2,3;
Begin
Writeln('Введите x')
Read (x);
If x<0 Then Goto 1;
If x>=10 Then Goto 2;
1: a: = 2*x;
Goto 3;
1: a: = x+1;
Goto 3;
2: a: = 0;
Writeln (a);
End.
Конспект!
Учащиеся записывают программу в тетради.
Слайд №5 «Управляющие конструкции if»
Управляющие конструкции If можно вкладывать друг в друга.
Конспект!
Оператор ветвления (условный оператор) if.
 Формат полного оператора ветвления следующий:
if <логическое выражение>then<оператор1>else<оператор2>;
 Формат сокращенного оператора ветвления следующий:
if <логическое выражение>then<оператор>;
Можно поместить одну управляющую конструкцию If внутрь другой. Программа для
нашего примера примет вид:
5
Program P2;
Var a,x;
Begin
Writeln('Введите x')
Read (x);
If x<0 then a:=x+1
Else
If x<10
Then a := 2+x
Else a := 0;
Writeln (a);
End.
Конспект!
Составной оператор.
Если на какой-то из ветвей оператора ветвления находится несколько последовательных операторов, то их нужно записывать между служебными словами begin и end.
Какую задачу выполняет данная программа?
Слайд №6 (* - по образовательной программе 136 часов) «Оператор выбора Case»
Существует и еще один способ составления программы по этому алгоритму – с использованием оператора выбора.
Оператор выбора в отличие от условного дает возможность выполнения большого количества различных блоков операторов. Его общая форма такова:
Case expression of
<список 1> <cписок 1> : <действие 1>;
<cписок 2> : <действие 2>;
...
Else
<действие n+1>
End.
Здесь expression – проверяемое целое арифметическое, логическое или символьное выражение, которое в процессе выполнения программы принимает то или иное значение. Причем значение выражения должно определяться до или в момент выполнения строки заголовка оператора выбора. Обратите внимание, что expression может принимать значения
лишь некоторых типов, общим свойством для которых является то, что их значения известны точно. Поэтому, в частности, expression не может быть вещественного типа (Real),
так как значения этого типа известны (представлены в оперативной памяти) с конечной
точностью.
<Списки> представляют собой перечисления возможных значений выражения expression.
При совпадении значения выражения хотя бы с одним из значений <списка> будет выполняться соответствующее <действие> и на этом выполнение команды выбора завершается. <Списки> могут быть заданы следующими способами:
6
Вид списка
Список, состоящий из одного значения
Список, содержащий перечисление значений
‘a’
1, 4, 5
Список, содержащий интервалы значений
1…5, 20…30
Список, содержащий смешанную форму
представления значений
1…5, 15, 55
Тип элементов <списки> должен соответствовать типу <expression>.
Что выполняет данная программа?
case mesiac of
'Декабрь','Январь','Февраль': writeln('Зима');
'Март','Апрель','Май': writeln('Весна');
'Июнь','Июль','Август': writeln('Лето');
'Сентябрь','Октябрь','Ноябрь': writeln('Осень');
else wrteln('Такого месяца не существует!');
end.
Конспект!
Общая форма оператора выбора:
Case expression of
<список 1> <cписок 1> : <действие 1>;
<cписок 2> : <действие 2>;
...
Else
<действие n+1>
End;
Здесь expression – проверяемое целое арифметическое, логическое или символьное
выражение, которое в процессе выполнения программы принимает то или иное значение.
<Списки> представляют собой перечисления возможных значений выражения
expression.
<Списки> могут быть заданы следующими способами (приведенная выше таблица):
Тип элементов <списки> должен соответствовать типу <expression>.
Слайд №7 (*) «Пример»
Работу этого оператора можно проиллюстрировать примером реализации вот такого алгоритма (см. слайд и конспект).
Работу этого оператора можно проиллюстрировать следующим примером:
Program Pr;
Var a: Integer;
Begin
Read (a);
7
Case a of
1,5: Writeln (‘a равно 1 или 5’);
7..10: Writeln (‘a принимает значения от 7 до 10’);
Else
Writeln (‘Ни одно условие не выполняется’);
End;
End.
Вернемся к нашему начальному примеру:
A = Х + 1, если Х < 0
А = 2Х, если 0 =< Х < 10
A = 0, если Х >= 10
С использованием оператора выбора программа для этого примера примет вид:
Program P3;
Var a,x: real;
c : integer;
Begin
Writeln('Введите x')
Read (x);
If x < 0 Then c := 1;
If x >= 10 Then c := 2;
Case c of
1: a := x + 1;
2: a := 0;
Else a := 2*x;
End;
Writeln (a);
End.
Конспект!
Запись программы первым и вторым способами.
Слайд №8 «*)
Все рассмотренные способы имеют общим то, что проверка условий в них производится
только до тех пор, пока одно из них не станет истинным. Поэтому, все рассмотренные
программы, собственно, и реализуют один и тот же алгоритм. Но алгоритм решения
нашей задачи может быть и принципиально иным.
Второй способ организации ветвления.
Вновь рассмотрим наш пример.
Пусть необходимо для заданного Х вычислить значение А по формулам:
Х + 1, если Х < 0
А = 2Х, если 0 =< Х < 10
0, если Х >= 10
В алгоритме вычисления по данной формуле можно предусмотреть проверку каждого
условия (и выполнение серии операторов, если условие истинно). То есть, в отличие от
первого способа, после выполнения операторов, соответствующих истинному условию,
проверка условий не заканчивается. Таким образом, при выполнении алгоритма первого
способа наибольшее число проверяемых условий на 1 меньше числа разветвлений, а при
8
выполнении алгоритма второго способа число проверяемых условий равно числу разветвлений.
Программа, реализующая второй способ, такова:
Program P4;
Var a, x: real;
Begin
Writeln('Введите x')
Read (x);
If x<0 Then a:=x+1;
If (0<=x) and (x<10) Then a:=2*x;
If x>=10 Then a:=0;
Writeln(a);
End.
Обратите внимание на то, как записано условие, что x находится в промежутке от 0 до 10.
К сожалению, в условии нельзя непосредственно записать 0<х<10, но зато можно объединить несколько простых условий в одно сложное, в данном случае – таким образом:
0<=х and х<10
(Это означает, что условие будет выполнено, если одновременно выполняются оба данных неравенства.)
Можно заметить, что эта программа заметно проще предыдущих.
Конспект!
Запись программы.
Слайд №9 «Итог»
Этот урок был посвящен различным способам реализации ветвления на три и более рукавов – как с помощью условного оператора, так и с помощью множественного выбора.
III. Контрольные вопросы
(учащиеся отвечают устно на вопросы учителя)
1 Что понимают под алгоритмом ветвления?
2 Привести примеры случаев ветвления.
3 Как обозначается ветвление в блок-схемах?
4 Какие операторы ветвления существуют в языке Turbo Pascal?
5 Какой формат имеет оператор IF?
6 Какие различия между полной и сокращенной формой оператора IF?
7 Какой форма имеет безусловный оператор GoTo?
8 (*) Какой формат имеет оператор выбора Case?
IV. Рефлексивный тест к уроку №16 «Свойства алгоритма»
Учащиеся работают индивидуально с компьютерным тестом программы («1С:Школа. Вычислительная математика и программирование»).
9
Состоит из четырех вопросов, с возможностью повторного ответа. Результаты ответов на
вопросы выводится в виде следующей таблицы:
Результаты прохождения урока
Урок:
Язык Turbo Pascal • Ветвление алгоритма на три и более рукавов
Пользователь:
Администратор
Время:
Начало
Окончание
03.05.2006 13:41:48 03.05.2006 13:43:17
Задания:
пройдено - 4, из них:
с попыткой ответа - 1
без попытки ответа - 0
правильных ответов - 100%
Общий результат: 100%
Последние попытки прохождения данного урока:
Начало
Завершение
Оценка
03.04.2002 22:41:48
03.04.2002 22:43:17
100%
V. Практикум
Выполняется учащимися в парах на компьютерах. Задание из Практикума №4, диск
«1С:Школа. Вычислительная математика и программирование». Выполняется задание в
системе программирования Pascal.

В ходе этого практикума нам необходимо
научиться создавать программы, использующие условные операторы.

Это задание непростое. Сложность его от
шага к шагу нарастает. Необязательно
проходить до конца все упражнения. По
окончании урока ученики могут остановится, покажите учителю, до какого
упражнения вы дошли.
10

Напишите программу, которая рисует окружность фиксированного радиуса в
центре экрана.

(*- для образовательной программы 136 часов). Еще усложните программу. Сделайте так, чтобы она выдавала сообщение об ошибке ввода.

Сообщение об ошибке ввода – важный элемент программирования. В случае, когда пользователь ввел недопустимое значение, программа не должна выполнять
ошибочных действий, а должна предупредить пользователя.

В нашем случае, если пользователь ввел числа 1 или 2, программа рисует окружность или квадрат. Если пользователь
ввел число, отличное от 1 или 2, выдается
текстовое сообщение: «Вы ввели недопустимое значение. Исправьте его», и программа вновь возвращается к вводу.

Теперь сделайте программу интеллектуальной. Пусть при вводе 1 программа рисует круг с заливкой синим цветом, при
вводе 2 – квадрат с заливкой красным
цветом. При вводе числа 12 программа
рисует квадрат ПОВЕРХ круга, а при вводе 21 – круг поверх квадрата.

Добавьте еще один элемент – желтый
треугольник. Таким образом, программа выводит:
1 – круг;
2 – квадрат;
3 – треугольник;
12, 21 – квадрат и треугольник;
13, 31 – круг и треугольник;
23, 32 – квадрат и треугольник;
123, 213, 231, 312, 321 – квадрат, круг и треугольник.
Другие значения – сообщение об ошибке.

Постарайтесь оптимизировать алгоритм программы, чтобы количество условных
операторов было минимальным.
V. Домашнее задание:
1. Знание основных определений по теме урока.
2. Выполнение заданий из раздела «Дополнительные задания к уроку»
3. Творческое задание. Составить текст контрольной (лабораторной) работы по теме
урока. Разработать критерии оценки контрольной работы
VI. Дополнительные задания к уроку
Дополнительный материал используется для развития алгоритмического и логического
мышления учащихся. Возможны различные формы работы: индивидуальная, парная,
групповая.
11
Примеры (Задания выполняются учащимися индивидуально. Работа может проводиться
как на компьютере в системе программирования Pascal, так и в тетрадях.):
Задача 1. Определить, какое из двух чисел больше.
(Правильная программа)
write('Введите два числа: ');
readln(B,D);
if D<B then write('первое число больше');
if D>B then write('второе число больше');
if D=B then write('числа равны');
Задача 2. Является ли целое число однозначным.
(Правильная программа)
write('Введите целое число: ');
readln(E);
if abs(E)<=9 then write(число однозначное)
else write(число неоднозначное);
Задача 3. Делителем каких из трёх любых целых чисел является число 7.
(Правильная программа)
write('Введите целые числа A,B,C : ');
readln(A,B,C);
if (A mod 7)=0 then writeln('7 делитель ', A) else writeln('7 не делитель ', A);
if (B mod 7)=0 then writeln('7 делитель ', B) else writeln('7 не делитель ', B);
if (C mod 7)=0 then writeln('7 делитель ', C) else writeln('7 не делитель ', C);
Задание 4. Записать проверку того, что точка с координатами (X,Y) лежит на координатной плоскости:
1.
2.
3.
4.
5.
6.
7.
8.
в третьй четверти;
на оси Х;
является началом координат;
не лежит в первой четверти;
лежит либо во второй либо в третьей четвертях;
лежит внутри параболы у=х^2-4 под осью Х;
лежат на окружности с центром (0,0) радиусом r;
числа x и y лежат вне окружности с центром (0,0) радиусом r;
Задание 5. Запишите в виде условия:
1.
2.
3.
4.
число а является квадратом целого числа n;
число x содержит не более трёх цифр;
сумма двух последних цифр равна 7;
число а не является двухзначным отрицательным;
Задание 6(*). Подсчитать количество нечетных цифр в записи натурального числа n.
Идея решения. Из заданного числа выбирать из младшего разряда цифру за цифрой до тех
пор, пока оно не исчерпается, т.е. станет равным нулю. Каждую нечётную цифру учитывать.
12
1. Ввести число n
2. K := 0 {подготавливаем счётчик}
3. Если n = 0, переход к п. 7
4. Если n mod 10 mod 2 = 1, то K := K +1
5. n := n div 10
6. Переход к п. 3
7. Вывод K
8. Конец
Задача решена двумя способами. Слева решение оформлено с использованием цикла с
предусловием, справа — с постусловием.
Пример 2. Дана последовательность, общий член которой определяется формулой
Вычислить при n>2 сумму тех ее членов, которые больше заданного числа .
При решении задачи находится очередной член последовательно и, если он больше , добавляется к сумме.
13
1. Ввести 
2. S := 0
3. A := 1/4
4. n := 3
5. Сравнить А с . Если A>=, переход к п.
10
6. S := S + A
7. A := (n-1)/(n*n)
8. n := n + 1
9. Переход к п. 5
10. Вывод S
11. Конец
В рассмотренных выше примерах количество повторений заранее неизвестно. В первом
оно зависит от количества цифр в записи натурального числа, во втором — от числа .
Задание 7(*) . Найти произведение первых k натуральных чисел, кратных трём.
При составлении алгоритма учтем, что первое натуральное число, кратное 3, есть тройка,
а все последующие больше предыдущего на 3.
14
1. Ввод k
2. P := 1 {здесь накапливаем произведение}
3. T := 0 {здесь будут числа, кратные 3}
4. I := 1
5. Если I > k, переход к п. 10
6. T := T + 3
7. P := P * T
8. I := I + 1
9. Перейти к п. 5
10. Вывод P
11. Конец
Библиография
1. http://hosting.ulstu.ru/ip/index.html
Интерактивный учебник по программированию, Ульяновский Педагогический Университет, Ульяновский Государственный Технический Университет
2. http://www.vzmakh.ru/info/pascal/default.htm
Алгордром, Основы программирования на языке Pascal
3. Вальвачев А.Н., Крисевич В.С. Программирование на языке Паскаль для персональных ЭВМ: Справочное пособие.-Минск: Вышейш. шк., 1989.-223с.
4. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. – М.: Нолидж,
2000. – 576с.
15
Download