Урок по теме: «Оператор множественного выбора Case»
Класс: 11
Общеобразовательный Тип урока:
урок изучения и первичного закрепления знаний. Цель урока:
Личностные:
Метапредметные:
развитие умения обращаться к использованию знаково-символических средств в виде схемы;
умение анализировать собственную учебную деятельность с позиций соответствия полученных результатов учебной задаче, способам действий;
умение адекватно самостоятельно оценивать правильность выполнения действия и вносить необходимые коррективы в исполнение, владеть основами самоконтроля и самооценки;
Предметные:
Коммуникативные:
умения слушать и вступать в диалог, вступать в коллективное обсуждение;
выражать свои мысли в соответствии с поставленной задачей;
учиться работать в группе, формулировать собственное мнение и позицию.
Задачи урока:
1. Образовательная: ознакомить с оператором выбора и принципами его работы; продолжить формирование практических умений за счет включения оператора «Выбор»;
2. Развивающая: способствовать развитию логического мышления, познавательной активности;
3. Воспитывающая: прививать навыки самостоятельной работы; воспитывать умение высказывать личное мнение и прислушиваться к мнению другого.
Учащиеся должны знать:
понятие оператора выбора;
принцип работы оператора выбора
правила записи оператора выбора на Pascal;
научиться реализовывать в программе выбор из многих вариантов;
Учащиеся должны уметь:
Планируемые образовательные результаты:
Основные понятия, рассматриваемые на уроке:
оператор выбора Case;
синтаксис оператора выбора Case;
списки значений селектора;
правила при работе с множественным оператором выбора
Используемые на уроке средства ИКТ:
Персональный компьютер учителя
Персональный компьютер учащегося
Программное обеспечение –АВС Pascal
Карточки с заданиями, памятка «Оператор выбора», тест.
Методы обучения: беседа, проблемно-поисковые, с/р.
Организационные формы: индивидуальная, фронтальная, групповая.
Межпредметные связи: математика, анг. яз.
Структура и ход урока
Этапы урока:
1.Организационный этап
Приветствие учащихся
Самоопределение к деятельности Цель: Включить учащихся в деятельность на личностно-значимом уровне .
Каждый день мы с вами стоим перед выбором, выбираем, что одеть, что скушать на завтрак, каким путём пойти в школу и многое другое.
Ребята, ответьте, пожалуйста, на вопрос, что такое выбор?
Выбор – разрешение неопределенности в деятельности
человека в условиях множественности алтернатив.
Значение слова Выбор по Ефремовой:
Выбор
1. Действие
2. То, из чего можно выбрать; ассортимент.
3. То, что выбрано.
Значение слова Выбор по Бизнес словарю:
Выбор - главный этап процесса принятия решения, состоящий в отборе одного варианта из нескольких возможных.
Как вы думаете, можем мы обойтись без выбора в жизни? Ответ обоснуйте.
Зачем нужен оператор выбора?
Открываем тетради для конспектов, записываем тему урока:
«Оператор выбора»
Определите, к какому разделу относится тема нашего урока, как она звучит и какие знания, полученные ранее, нам понадобятся? (ветвление, условный оператор).
Итак, сегодня мы познакомимся с новым оператором- оператором выбора и научимся составлять программы с данным оператором.
Но прежде, повторим пройденный материал.
Актуализация опорных знаний
Фронтальный опрос.
(Дома вы должны были подготовить вопросы по теме «Ветвление», сейчас вы можете их задавать друг другу и отвечать на них)
Вопросы: 1) Какие алгоритмы называются разветвляющимися?
2) Какой фигурой условие обозначается на блок-схеме?
3) Какие формы ветвления вы знаете?
4) Записать на языке Паскаль форму записи и изобразить блок схему для каждого из этих видов? (двое у доски –полная и неполная форма).
5) Отличие полной и неполной форм ветвления? (Примеры).
6) Простые и сложные условия.
7) Почему наибольшее число вариантов 2 и не более?
(Ответ: условие –это логическое выражение, которое может принимать только 2 значения False/true, ложь/истина, да/нет).
Проверь себя тест (учащиеся сами выбирают с каким тестом будут работать)
Тест (два уровня А и В), ( ответы есть для учителя в тесте) каждый учащийся выбирает свой уровень.
(Тест проводиться с целью подготовки учащихся к восприятию новой темы и проверки усвоения материала прошлых уроков).
Тест на листочках, листочки подписать, записывать номер вопроса рядом букву ответа.
После проведения теста - поменяться листочками, проверить друг у друга, поставить оценки в соответствии с критериями.
После теста – вопрос: Сколько и какие операторы мы знаем? (4: ввода, вывода, присваивания, условный).
Сегодня как мы уже, в начале, говорили, познакомимся с пятым: оператором выбора. Как уже отмечали, что в жизни часто приходиться выбирать между несколькими решениями. Алгоритмы решения задач с выбором вариантов называются разветвляющимися алгоритмами. И хотя компьютеру не дано испытать всю гамму человеческих сомнений и надежд, ему очень часто приходиться решать задачи принятия решений. Без лишних эмоций, руководствуясь холодным расчетом и обладая безукоризненной логикой, компьютер способен проанализировать условие и из ряда предложенных решений выбрать необходимое, единственно верное.
Решим задачу, активизируя знания по данной теме.
Задача
По номеру дня недели вывести соответствующее ему название.
Пояснение: У нас есть 7 дней недели (понедельник,вторник…….воскресенье). Пользователя попросили ввести номер дня недели, например, 2, на экране вывод – вторник.
Давайте решим данную задачу, используя материал предыдущих уроков.
Решим задачу несколькими способами (работа в группах)
(Используя памятку на тему: «Ветвление. Условный оператор» решают одну задачу разными способами. Представляют свои работы на обсуждение).
Организация работы учащихся в группах: - составить программу на языке программирования ABC Pascal;
(Обеспечение каждой группы необходимым раздаточным материалом: раздаточный материал, который содержит формулировку задачи
Задания для групп
1. Решить задачу, используя неполное ветвление
2. Решить задачу, используя полное ветвление
Задача: (Возможное решение 1)
program prim1;
var n: integer;
begin
writeln('введи номер дня недели');
readln(n);
if n=1 then writeln('Понедельник')
else if n=2 then writeln('вторник')
else if n=3 then writeln('среда')
else if n=4 then writeln('четверг')
else if n=5 then writeln('пятница')
else if n=6 then writeln('суббота')
else if n=7 then writeln('воскресенье')
else writeln('нет такого дня недели'); ( без этой неполное ветвление)
end.
2-е возможное решение (полное ветвление)
Program vremena;
var n:integer;
begin
writeln('Введите число – номер дня недели:);
Readln(n);
if n=1 then writeln('понедельник');
if n=2 then writeln(' вторник ');
if n=3 then writeln('среда');
if n=4 then writeln('четверг');
if n= 5then writeln('пятница');
if n=6 then writeln('суббота');
if n=7 then writeln('воскресенье')
else writeln(‘Нет такого дня');
end.
Постановка учебной задачи. Формулирование проблемы
Цель: Определение конкретных направлений деятельности учащихся
Выявление причин затруднений, возникающих при прочтении исходного текста, планирование результата.
Условный оператор предназначен, прежде всего, для выбора одного из двух вариантов (простое ветвление).
Итак, вы реализовали программу с помощью условного оператора If, т.е. проверили какое число ввел пользователь, и в зависимости от того какое это число, на экране выводится определенный день недели. Сначала завели переменную, например, назвали ее n (можно назвать и day (день), вообще желательно стараться по возможности использовать более понятные имена переменных, если у нее есть какое-то логическое обозначение), затем с помощью оператора IF записали решение, получили вложенность операторов. Что видим? Это некрасиво, непонятно в плане читаемости кода и много кодов, неудобно.
Ставиться проблемный вопрос : Нельзя ли эту структуру усовершенствовать? Как облегчить работу с определенным видом условий? Как огромный блок записать в несколько строк?
Есть еще одна конструкция, о которой мы сегодня упоминали, называется оператор выбора Case.
Смотрим памятку.
Памятка, учащимся предлагается сравнить две программы, проанализировать и ответить на вопрос в чём сходство и различие данных программ?
Влияет ли изменения на результат выполнения программы?
Вывод: программа работает так же.
Какие можем сделать выводы?
Очень похожие, почти не отличаются, только в case меньше символов.
После каждой строки ставится точка с запятой.
Почему же Вирту, автору Паскаль понадобилась данная структура?
Рассмотрим данную программу на деле.
(работа в среде Паскаль.)
Попробуйте, используя эту конструкцию, изменить нашу программу.
(на доске записать с обратной стороны) (вначале написать без else).
решение задачи
Var n : integer;
Begin
writeln(‘Введите число – номер дня недели: ’);
readln(n);
Сase n of
1: writeln(‘понедельник’);
2: writeln(‘вторник’);
3: writeln(‘среда’);
4: writeln(‘четверг’);
5: writeln(‘пятница’);
6: writeln(‘суббота’);
7: writeln(‘воскресенье’);
Else writeln(‘В неделе только 7 дней!’) (без этого вначале записать)
End;
End.
Видим как преобразовалась наша программа. Она более совершенна.
(среда)
Часто приходиться иметь дело с более многообразными ситуациями, когда из многих возможных вариантов приходиться выбирать что-то одно.
Оператор варианта в таких ситуациях может быть использован именно тогда, когда выполнение одного из нескольких действий зависит от значения выражения порядкового типа. Т.е. тех типов, количество значений которых можно чётко указать, а сами значения перечислить. (Это целочисленные типы, символьный, логический, перечисляемый, интервальный типы).
Оператор Case работает следующим образом. Сначала вычисляется значение выражения-селектора, затем обеспечивается реализация того оператора, константа выбора которого равна текущему значению селектора. Если ни одна из констант не равна текущему значению селектора, то выполняется оператор стоящий за словом Else. Если слово Else отсутствует, то активируется оператор, находящийся за словом End, т.е. первый оператор за границей Case. Селектор должен относится к одному из целочисленных типов. Список констант выбора состоит из произвольного количества значений,
или диапазонов, отделенных друг от друга запятыми. Границы диапазона записываются двумя константами через разграничитель “..”. Тип константы должен совпадать с типом селектора.
Смотрим нашу задачу: видим, что делает оператор case:
Он берет наше значение n, сравнивает его с каждым из значений, которые мы ему представили в нашем списке, и какие-то выполняет действия, которые идут после двоеточия. Мы ему можем приписать не только «понедельник», но и, например, вывести еще что-то, например, следующей строчкой «День тяжелый». Запишем в программу задачи 1: begin writeln(‘понедельник’); writeln(‘день тяжелый’); end; дальше не меняем.
В чем тут суть? В том, что если мы раньше значение сравнивали для случая с 1 отдельно, не подходит, отдельно сравнивали с 2, не подходит, далее с 3 и т.д., причем делали это в цикле условного алгоритма, здесь у нас гораздо проще, программа сама определяет наш выбор. Оператор case сравнивает с 1, если подходит-выбирает этот блок (1: begin writeln(‘понедельник’); writeln(‘день тяжелый’); end;). Если не подходит, то ищет соответственно, ищет среди наших значений (2, 3, ..7) подходящее, и таким образом, проходит весь блок, пока не найдет нужного. Если значение не найдено, то для этого предусмотрен оператор else . Вообще он в данном случае и не обязателен, если мы его не ввели, то ничего страшного не произойдет, просто программа закончиться и все. Но мы с вами сейчас допищем else, как говорят надо делать защиту от того, что если пользователь напишет не соответствующую нашему условию чепуху, нам надо как-то защититься. (Дописываем в прграмму оператор else writeln(‘Нет такого номера дня’). Пробуем вывести нашу чудесную программу. Вводим 1 и видим, что выводиться «понедельник» «День тяжелый». Вводим 6, видим все работает. Вводим 12-нет такого номера дня.
Таким образом работает оператор case of. В его работе ничего сложного нет. Просто надо запомнить, что он берет значение, которое есть в переменной(n) и сравнивает с допустимыми значениями, которые мы здесь описали.
Можно ли еще улучшить эту программу? (Можно).
Рассмотрим еще один аспект работы оператора case of.
Сделаем таким образом, оставим всего лишь 2 значения, и проверим будни это или выходной. Как это делается?
В операторе case of мы можем сравнить значение переменной не дней с числом, а с диапазоном чисел, если у нас будет допустим диапазон от 1 до 5, то таким образом мы введем будний день, если с 6 до 7, то выходной.
Преобразуем нашу программу.
Var n : integer;
Begin
writeln(‘Введите число – номер дня недели: ’);
readln(n);
Сase n of
1..5: writeln(‘Будни’);
6..7: writeln(‘Выходной’);
Else writeln(‘В неделе только 7 дней!’) (без этого вначале записать)
End;
End. (Проверям, вводим 5-будни, вводим 7- выходной, вводим 12- в неделе 7 дней). Все работает. Единственное неудобство в том, что мы не можем записать допустим 6. В условном операторе If писали такой алгоритм, в case не подходит.
Первичное закрепление.
Цель: Усвоение нового способа действий.
Закрепить полученные знания в ходе индивидуальной работы
Организация работы учащихся на выполнение типовых заданий с использованием оператора выбора Case. Текст задачи раздается в печатном виде и выводится на экран.
Решение задач
1. Подумайте и напишите, что (кого) вы будете выбирать в ближайшие два года, расставьте приоритеты.
Например: выбор экзаменов, профессии, учебного заведения, города, места проживания, спутника жизни и др.
Составьте программу, используя оператор выбора case
Возможный вариант программы:
Program vibor;
var n:integer;
begin
writeln (‘Введите мой выбор’);
readln(n);
case n of
1:writeln (‘экзамены’);
2:writeln (‘учебное заведение’);
3:writeln (‘профессия’);
4:writeln (‘место проживания’);
5:writeln (‘дополнительное образование’);
else writeln (‘неправильный ввод’);
end;
end.
2. В зависимости от набранного количества баллов, напишите ваши планы.
Например:
80..100 – поступлю на бюджет
60..79 – есть шанс поступить на бюджет
40..59 – экзамены сданы, рассматриваю все варианты
0..39 – «А знаешь, всё ещё будет!».
Составьте программу, используя оператор выбора case и предложите ваши варианты ответов
Возможный вариант программы:
Program vibor1;
var n:integer;
begin
writeln (‘Введите количество набранных баллов за экзамен’);
readln(n);
case n of
80..100:writeln (‘поступлю на бюджет’);
60..79:writeln (‘есть шанс поступить на бюджет’);
40..59:writeln (‘экзамены сданы, рассматриваю все варианты’);
0..39:writeln (‘«А знаешь, всё ещё будет!»’);
else writeln (‘неправильный ввод’);
end;
end.
Самостоятельное решение задач (по уровням) (дать без критериев оценки за задачу)
Критерии оценивани заданий
Отметка «3» - Задача Времена года
Напишите программу, которая вводит номер месяца и выводит название времени года на английском языке. При вводе неверного номера месяца должно быть выведено слово 'NO'.
Входные данные
Входная строка содержит единственное число – номер месяца (возможно, неверный).
Выходные данные
Нужно вывести название времени года (на английском языке), соответ-ствующее введённому номеру месяца ('winter' – зима, 'spring' – весна, 'summer' - лето, 'autumn' осень). Если введён неверный номер месяца, программы должна вывести слово 'NO'.
Отметка «4» - Задача Сколько дней в месяце
Напишите программу, которая вводит с клавиатуры номер месяца и определяет, сколько дней в этом месяце. При вводе неверного номера месяца должно быть выведено сообщение об ошибке. Считается, что год невисокосный.
Входные данные
Входная строка содержит единственное целое число – номер месяца (возможно, неправильный).
Выходные данные
Выходная строка должна содержать одно целое число – количество дней в этом месяце или 0, если был введён неверный номер месяца.
Отметка «5» - Задача Новый год
Отметка «5» - Задача «Сколько нашли грибов»
Напишите программу, которая вводит с клавиатуры фразу «Мы нашли в лесу …..грибов». Согласно окончанию слова «гриб» с числом. Например, 1- гриб, 22 – гриба.
Входные данные
Входная строка содержит одно целое число: количество грибов.
Выходные данные
Программа должна вывести количество грибов, согласно окончанию слова «гриб» с числом.
Итог урока: Сегодня на уроке мы1) познакомились со структурой оператора множественного выбора Case.
2) Научились составлять программы, используя оператор выбора Case в среде программирования ABC Pascal.
Поднимите руки, кто сегодня на уроке все понял.
У кого-нибудь есть вопросы?
Поднимите руки, кто считает, что сегодня работал на оценку пять. Четыре?
Всем оценки (объявить).
Рефлексия.
Цель: Осознание учащимися своей учебной деятельности, самооценка результатов своей и всего
(Рефлексная карта)
Домашнее задание
Предлагается список задач
Для получения отметки необходимо выбрать, решить две задачи, из предложенных критериев
Отметка «3» - задачи 1, 5, 6, 8
Отметка «4» задачи 2,3, 4,7
Отметка «5» задачи 9,10,11
Задачи для домашнего решения.
1. Написать алгоритм, позволяющий получить словесное наименование школьных оценок.
2. Написать алгоритм, классифицирующий треугольники (остроугольные, прямоугольные, тупоугольные), если даны углы.
3. Написать алгоритм, который по номеру дня недели - целому числу от 1 до 7 выдавать в качестве результата количество уроков в классе в соответствующий день.
4. Написать алгоритм нахождения числа дней в месяце, если даны: номер месяца n - целое число а, равное 1 для високосного года и равное 0 в противном случае.
5. По номеру дня недели вывести его название.
6. В зависимости от того введена ли открытая скобка или закрытая, напечатать "открытая круглая скобка" или "закрытая фигурная скобка". (Учитывать круглые, квадратные, фигурные скобки).
7. В зависимости от введённого символа L, S, V программа должна вычислять длину окружности; площадь круга; объём цилиндра.