Автор – Богачёва Г. В. Учитель информатики Лицей 144 Санкт - Петербурга Решение задач С 1 части С Единого государственного экзамена.

Презентация:



Advertisements
Похожие презентации
Ключевая тема этого задания ЕГЭ – использование вложенных условных операторов, причем в тексте задания фрагмент программы обычно записан без отступов «лесенкой»
Advertisements

Найдите ошибки: 1. if a = b then begin c:=1 else c:=0; 2. if a = b then c:=1; end else c:=0; 3. if a = b then c:=1; d:=1; else x:=1; Исправлено if a =
Разбор заданий ЕГЭ Типичные задания С1. Содержание Задача С1 варианта 1 и другие типичные задачиС1 варианта 1 другие типичные задачи Задача С1 варианта.
ВетвлениеВетвлениеопределение Разветвляющимся называется процесс, в котором естественный порядок выполнения нарушается в зависимости от условия.
Урок информатики «Программирование ветвлений. Логические выражения» 9 класс Учитель информатики МБОУ «Гимназия г. Азнакаево» Губайдуллина Альбина Рафинатовна.
Методика решения и оценивания задач «С1», «С2» Единого Государственного Экзамена.
Условный оператор Автор: Облицова Татьяна Александровна, учитель информатики МБОУ СОШ 6, г.Боготол, Красноярский край.
Умение прочесть фрагмент программы на языке программирования и исправить допущенные ошибки С1, время – 30 мин, П, 3 балла.
Программирование ветвлений на Паскале. Оператор ветвления или условный оператор if then else if - " если ", then - " то ", else - " иначе "
ТЕМА: «ПРОВЕРКА УСЛОВИЯ» 8 – 9 класс Логунова Наталия Борисовна учитель информатики и ИКТ высшей категории МОСКВА, 2012.
Условный оператор Полная форма Неполная форма If условие Then оператор_1 If условие Then оператор Else оператор_2 Пример: Построить алгоритм вычисления.
Условный оператор. Ветвление Ветвление – это такая форма организации действий, при которой в зависимости от выполнения или не выполнения некоторого условия.
1 Программирование на языке Паскаль Тема 2. Ветвления.
Сайт для подготовки к ЕГЭ: kpolyakov.narod.ru Презентация будет выложена на сайте elschool11.ru ученикам – информатика –Подготовка к ЕГЭ (внизу странички)
Ветвления 8 класс. 2 Основные теоретические сведения Примеры решения задач.
Задачи на пересечение областей (C1): «на стыке алгебры и логики» Д.Ю. Усенков, О.Б. Богомолова.
Составные условия в разветвляющихся алгоритмах © М.Е.Макарова
Условный оператор Структура ветвления. Условный оператор реализует выполнение определённых команд при условии, что некоторое логическое выражение (условие)
Условный оператор. Ветвление Ветвление – это такая форма организации действий, при которой в зависимости от выполнения или не выполнения некоторого условия.
З АДАНИЕ С1 ( ЗАПОЛНЕНИЕ ТАБЛИЦЫ, ДОРАБОТКА ПРОГРАММЫ ) ЕГЭ 11 класс.
Транксрипт:

Автор – Богачёва Г. В. Учитель информатики Лицей 144 Санкт - Петербурга Решение задач С 1 части С Единого государственного экзамена

Для решения задач С 1 необходимо : Проанализировать геометрический чертёж, выделив условия, ограничивающие заштрихованную область ( причём в задаче 2010 года, а также в демоверсии 2011 года условие задачи значительно усложнилось с математической точки зрения ) Выяснить, как связаны между собой эти условия ( если областей несколько, определить, в каких отношениях находятся фигуры – разбиение, объединение, исключение и т. д ), другими словами, составить сложное условие, описывающее выделенную область.

Для решения задач С 1 необходимо : Проанализировать данную в условии программу, выявив ошибки : недостаток условий и ошибку в алгоритме, связанную с использованием вложенных условных операторов. Чётко ответить на вопросы задачи : указать координаты точки, для которой программа не выводит « не принадлежит ». Предложить метод доработки, лучше с использованием сложных условий, это исключит ошибки при написании вложенных условных операторов.

Для решения задач С 1 необходимо : При решении задач этого типа основные методы – анализ и синтез. При подготовке к решению задач последовательно изучаются следующие темы : правила построения программы на изучаемом языке, правила работы с переменными, полная и неполная формы ветвления, использование операторных скобок begin end в операторах ветвления, составление сложных условий с помощью логических операций и, наконец, использование вложенных условных операторов. Весь материал по этой теме блестяще изложен у К. Ю. Полякова, презентациями и сайтом которого я регулярно пользуюсь.

Условие задачи 1:

Решение задачи 1: не обращая внимание на программу, анализируем чертёж, выявив условия, которым отвечают координаты точек заштрихованной области. заштрихованная область находится 1. справа от оси абсцисс, что равносильно первому условию ( с учетом границы здесь и далее получаем нестрогие неравенства ) 2. слева от линии 1,5, поэтому получаем второе условие

Решение задачи 1: заштрихованная область ограничена с двух сторон по координате ординат : она находится 1. ниже линии y <= x 2, откуда следует третье условие 2. выше линии, что дает четвертое условие значит, точка находится в заданной области, если все эти четыре условия выполняются одновременно ; отсюда следует, что в программе нужно использовать четыре вложенных условных оператора или один условный оператор со сложным условием, в котором четыре простых условия связаны с помощью логической операции and (« И », одновременное выполнение всех условий )

Решение задачи 1: анализируем программу : здесь только три вложенных условных оператора с простыми отношениями, поэтому какое - то условие не учтено ; определяем, что не учтено условие оператор write(' принадлежит ') помещен внутрь всех трех условных операторов, то есть, он выполнится тогда, когда только три условия истинны ; отметим на рисунке область, где выполняются все нужные условия, кроме ( красная зона );

Решение задачи 1: для всех точек, которые находятся в « красной » зоне программа выдаст сообщение « принадлежит », хотя в самом деле эти точки не принадлежит заданной области ; одна из таких точек имеет координаты теперь выясним, когда программа выдает сообщение « не принадлежит » if y <= x*x then if x <= 1.5 then if y >= 0 then write(' принадлежит ') else write(' не принадлежит ') x = -2, y = 1

Решение задачи 1: можно подумать, else относится к самому первому оператору if, однако в самом деле это не так ; перед словом else нет end, поэтому ищем ближайший if: это самый внутренний оператор, правильная запись « лесенкой » выглядит так : if y <= x*x then if x<=1.5 then if y >= 0 then write(' принадлежит ') else write(' не принадлежит ')

Решение задачи 1: этот фрагмент программы соответствует блок - схеме, которая показана на рисунке : да нет принадлежит y >= 0 да x<=1.5 да y <= x*x не принадлежит нет

Решение задачи 1: по схеме видим, что при ( первое условие ложно ), а также при ( второе условие ложно ) программа вообще не выдает никакого сообщения, то есть, работает неправильно ; таким образом, координаты любой точки, для которой или, могут быть указаны в ответе как пример набора входных данных, при которых программа работает неправильно x=2, y=6 итак, первая часть ответа примеры входных данных, на которых программа работает неверно : (x= -2, y= 1) ( неправильно определяет принадлежность точки области ) (x=2, y=6) или (x= 5, y=0) ( не выдает вообще никакого сообщения )

Решение задачи 1: остается исправить эту программу ; 1 способ : добавим в программу четвертый ( вложенный ) условный оператор, проверяющий условие, и еще три блока else, чтобы выводить строку « не принадлежит » в том случае, когда хотя бы один из них не сработал : if x >= 0 then if y <= x*x then if x<=1.5 then if y >= 0 then write(' принадлежит ') else write(' не принадлежит ') else write(' не принадлежит ');

Решение задачи 1: обратите внимание, что точка с запятой есть только после самого последнего оператора write, так как остальные стоят перед ключевым словом else, перед которым точка с запятой не ставится хотя приведенный выше метод дает работоспособную программу, она нерациональна для такой задачи ; видно, что оператор write(' не принадлежит ') повторяется в тексте 4 раза

Решение задачи 1: более элегантное решение формулируется на словах так : « точка принадлежит области, если выполняются одновременно 4 приведенных выше условия, а иначе – не принадлежит »; а вот реализация на Паскале : var x,y: real; begin readln(x,y); if (x >= 0) and (y = 0) then write(' принадлежит ') else write(' не принадлежит '); end. здесь использовано сложное условие, в котором 4 отношения связаны операциями and (« И », требуется одновременное выполнение всех условий )

Условие задачи 2:

Решение задачи 2: Изложим решение менее подробно, чем в первой задаче. Анализируем чертёж, определяем условия : разбиваем заштрихованную область на 2 части прямой x=0: 1 фигура : y <= 2-x 2,,. Точка находится в заданной области, если все эти три условия выполняются одновременно. 2 фигура :,, y <= 2-x 2. Точка находится в заданной области, если все эти три условия выполняются одновременно. Объединяем две пересекающиеся области с помощью логической операции дизъюнкции.

Решение задачи 2: Анализируем приведённую в задании программу. Отметим на рисунке область, где выполняются все условия, проверка которых есть в программе, красным цветом. Видно, что точки частей выделенной области, закрашенных синим цветом, в проверяемую область не входят, и, следовательно, программа ошибочно даст « не принадлежит ». Координаты одной из таких точек x = 0,5, y = 0,2

Решение задачи 2: Теперь выясним, когда программа выдает сообщение « не принадлежит ». Анализируя вложенные условия, видим, что ветвь else относится к внутреннему оператору, соответственно, при y <= x ( первое условие ложно ), а также при y <= 0 ( второе условие ложно ) программа вообще не выдает никакого сообщения, то есть, работает неправильно ; таким образом, координаты любой точки, для которой y <= x или y <= 0, могут быть указаны в ответе как пример набора входных данных, при которых программа работает неправильно, например, x=1, y= -3

Решение задачи 2: Первая часть ответа такова : примеры входных данных, на которых программа работает неверно : (x = 0,5, y = 0,2) ( неправильно определяет принадлежность точки области ) (x=1, y= -3) ( не выдает вообще никакого сообщения ) Приведём наиболее рациональную форму доработки программы, использование которой исключает ошибки при написании вложенных условных операторов : var x,y: real; begin readln(x,y); if (y = 0) and (x>=0) or (x = x) and (y <= 2-x*x) then write(' принадлежит ') else write(' не принадлежит '); end.

Источники : 1. ( сайт К. Ю. Полякова ) 2. Условия задач взяты из экзаменационных материалов прошлых лет.