7

Решаем С1 по информатике ЕГЭ

Автор публикации:
Дата публикации:
Краткое описание:

1
Тема: Исправление ошибок в простой программе с условными операторами ЕГЭ, С1...
Тема: Исправление ошибок в простой программе с условными операторами ЕГЭ, С1 Морозова О.Г.
2
Ветвление – это выбор одного из двух возможных вариантов действий в зависимос...
Ветвление – это выбор одного из двух возможных вариантов действий в зависимости от того, выполняется ли некоторое условие. В неполной форме условного оператора блок-2 пустой (отсутствует), Если условие, записанное внутри ромба, истинно (ответ «да» на вопрос «a=b?»), выполняются все команды, входящие в блок-1 (ветка «да»), иначе (если условие ложно) выполняются все команды в блоке-2 (ветка «нет») if a = b then begin { блок-1 } end else begin { блок-2 } end, if a = b then begin { блок-1 } end, a = b? нет да полная форма ветвления блок-1 блок-2 Рисунок 1 a = b? нет да неполная форма ветвления блок-1 Рисунок 2
0
 
Благодаря этой рекламе сайт может продолжать свое существование, спасибо за просмотр.
3
Одна команда ветвления может находиться внутри другой, например, так: На этой...
Одна команда ветвления может находиться внутри другой, например, так: На этой схеме блок-10 выполняется, когда a=b, блок-11 – когда a=b=c, блок-12 – когда a=b, но ac и, наконец, блок-2 – когда ab. Если блок-12 будет пустой (отсутствует), внутреннее ветвление имеет неполную форму, аналогично, если блок-2 пустой, то внешнее ветвление имеет неполную форму a = b? нет да блок-10 блок-2 a = c? да блок-11 блок-12 нет Рисунок 3
4
Задача 1: Требовалось написать программу, которая вводит с клавиатуры координ...
Задача 1: Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (x, y – действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно. Вот она: var x,y: real, begin readln(x,y), if y>,=x then if y>,=0 then if y<,=2-x*x then write(принадлежит) else write(не принадлежит) End. Последовательно выполните следующее: 1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D, E, F и G). Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите да, если условие выполнится, нет если условие не выполнится, — (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце Программа выведет укажите, что программа выведет на экран. Если программа ничего не выводит, напишите — (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв». В последнем столбце укажите да или нет. 2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы) .
5
1. Условие y>=x истинно выше прямой y=x, то есть в областях A, B, E, F Начнем...
1. Условие y>,=x истинно выше прямой y=x, то есть в областях A, B, E, F Начнем заполнять таблицу, выписывая истинность каждого из трёх условий. да да да да нет нет нет Область y>,=x? y>,=0? y<,=2-x*x? вывод верно? A B C D E F G
6
да да да да нет нет нет 2.Условие y>=0 истинно выше прямой y=0, то есть в об...
да да да да нет нет нет 2.Условие y>,=0 истинно выше прямой y=0, то есть в областях A, E, G, однако это условие проверяется только тогда, когда первое условие, y>,=x, истинно, поэтому для всех областей, где первое условие неверно (это области C, D, G), сразу в столбце второго условия ставим прочерк (условие не будет проверяться) да да нет нет -- -- -- Область y>,=x? y>,=0? y<,=2-x*x? вывод верно? A B C D E F G
7
да да да да нет нет нет 3. Третье условие выполняется для областей «внутри»...
да да да да нет нет нет 3. Третье условие выполняется для областей «внутри» параболы, то есть для E, F, G, D, однако оно проверяется только тогда, когда первые два истинны (для А и Е), в остальных строках ставим прочерк: да да нет нет -- -- -- нет да -- -- -- -- -- Область y>,=x? y>,=0? y<,=2-x*x? вывод верно? A B C D E F G
8
да да да да нет нет нет 4.Как следует из текста программы, она выведет что-т...
да да да да нет нет нет 4.Как следует из текста программы, она выведет что-то на экран только в том случае, когда выполняются первые два условия и программа выходит на третье: для области А будет выведено «не принадлежит», для области Е – «принадлежит», именно в этих двух случаях программа работает правильно, в остальных – нет: да да нет нет -- -- -- нет да -- -- -- -- -- не принадлежит принадлежит -- -- -- -- -- да нет нет нет да нет нет Область y>,=x? y>,=0? y<,=2-x*x? вывод верно? A B C D E F G
9
var x,y: real; begin readln(x,y); if (y =x) or (y>=0)) then write('принадлежи...
var x,y: real, begin readln(x,y), if (y <,=2-x*x) and ((y>,=x) or (y>,=0)) then write(принадлежит) else write(не принадлежит) end. Для того, чтобы доработать программу, проще всего составить одно сложное условие, описывающее всю заштрихованную область В данном случае удобно представить данную область в виде объединения областей, первая из которых включает области E+G, а вторая – области E+F область E+G соответствует условию (y>,=0) and (y <,=2-x*x) область E+F соответствует условию (y>,=x) and (y <,=2-x*x) объединение областей выполняется с помощью операции ИЛИ (or), так что полное условие принимает вид (y>,=0) and (y <,=2-x*x) or (y>,=x) and (y <,=2-x*x) поскольку операция И (and) имеет более высокий приоритет, чем ИЛИ (or), порядок выполнения операций тут правильный, в случае сомнений можно поставить дополнительные скобки: ((y>,=0) and (y <,=2-x*x)) or ((y>,=x) and (y <,=2-x*x)) поскольку в обоих условиях есть условие y <,=2-x*x, запись можно немного сократить: (y <,=2-x*x) and ((y>,=x) or (y>,=0)) Доработанная программа выглядит так:
10
Задачи для тренировки
Задачи для тренировки
11
Вспомни! Запись вида a mod b означает остаток от деления a на b Запись вида a...
Вспомни! Запись вида a mod b означает остаток от деления a на b Запись вида a := b + 2*c + 3, означает «вычислить значения выражения справа от знака присваивания := и записать результат в переменную a», при этом значения других переменных (кроме a) не изменяются Для многократного выполнения одинаковых операций используют циклы: цикл с переменной выполняется N раз, в этом примере переменная i принимает последовательно все значения от 1 до N с шагом 1: for i:=1 to N do begin { что-то делаем } end, цикл с условием выполняется до тех пор, пока условие в заголовке цикла не нарушится: while { условие } do begin { что-то делаем } end,
12
Задача 1 Требовалось написать программу, которая вводит с клавиатуры координа...
Задача 1 Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (x, y – действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно. Вот она: var x, y: real, begin readln(x, y), if y <,= x*x then if x-y >,= -2 then if x+y <,= 2 then write(принадлежит) else write(не принадлежит), End. Ответ: Для исправления этих ошибок нужно добавить условие y >,= 0 и объединить все 4 условия с помощью операции И (в паскале – and) в одно сложное условие в одном условном операторе: var x, y: real, begin readln(x, y), if (y <,= x*x) and (y <,= x+2) and (y <,= 2-x) and (y >,=0) then write(принадлежит) else write(не принадлежит), End. Последовательно выполните следующее: Приведите пример таких чисел x, y, при которых программа неверно решает поставленную задачу. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
13
Задача 2 Требовалось написать программу, при выполнении которой с клавиатуры...
Задача 2 Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальную цифру этого числа. Программист торопился и написал программу неправильно: var N: longint, digit, min_digit: integer, begin readln(N), min_digit := 0, while N >, 0 do begin digit := N mod 10, if digit >, min_digit then min_digit := digit, N := N div 10, end, writeln(min_digit), end. ОТВЕТ 1) При вводе числа 532 программа выводит 5. 2) Ошибка 1: начальное значение переменной min_digit строка: min_digit := 0, исправление: min_digit := 9, (любое значение, большее или равное 9) Ошибка 2: условие изменения переменной min_digit строка: if digit >, min_digit then исправление: if digit <, min_digit then Последовательно выполните следующее: Определите, что выведет программа при вводе числа 532. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки: Выпишите строку, в которой сделана ошибка, Укажите, как надо исправить ошибку - приведите правильный вариант строки. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, имеющую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
14
Требовалось написать программу, при выполнении которой с клавиатуры считывае...
Требовалось написать программу, при выполнении которой с клавиатуры считывается координата точки на прямой (х – действительное число) и определяется принадлежность этой точки одному из выделенных отрезков В и D (включая границы). Программист торопился и написал программу неправильно. var x: real, begin readln(x) , if x>,l then if x>,=7 then if x>,13 then write(не принадлежит) else write(принадлежит) End. Задача 3 Последовательно выполните следующее. 1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (А, В, С, D и Е). Границы (точки -5, 1, 7 и 13) принадлежат заштрихованным областям. В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «Да» или «Нет». 2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.) Последовательно выполните следующее. 1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (А, В, С, D и Е). Границы (точки -5, 1, 7 и 13) принадлежат заштрихованным областям. В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «Да» или «Нет». 2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.) Ответ: if (-5 <,= x) and (x <,= 1) or (7 <,= x) and (x <,= 13) then write(принадлежит) else write(не принадлежит), Область Условие 1 (x>,1) Условие 2 (х>,=7) Условие 3 (х>,13) Программа выведет Область обрабатывается верно А В С D Е Область Условие 1 (x>,1) Условие 2 (х>,=7) Условие 3 (х>,13) Программа выведет Область обрабатывается верно А нет – – – нет В нет – – – нет С да нет – – нет D да да нет принадлежит да Е да да да не принадлежит да
15
Требовалось написать программу, при выполнении которой с клавиатуры считывают...
Требовалось написать программу, при выполнении которой с клавиатуры считываются коорди наты точки на плоскости (х, у - действительные числа) и определяется принадлежность этой точки заданной закрашенной области (включая границы). Ученик написал такую программу: var x, y: real, begin readln(x,у), if у >,= x*x-6 then begin if x*x + у* у <,=16 then write(принадлежит) end else if x >,= 0 then write(принадлежит) else write(не принадлежит) end. Задача 4 Последовательно выполните следующее. Восстановите уцелевшие строки протокола, заполнив все клетки таблицы. Там, где содержание восстанавливается неоднозначно, запишите любое возможное значение. Например, если для нескольких областей получается одинаковая строка таблицы, укажите в графе «Область» любую из этих областей. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.) При проверке работы программа выполнялась по шагам для некоторых контрольных значений х и у, при этом был заполнен протокол тестирования. В результате неаккуратного обращения протокол был испорчен, частично сохранились только четыре строки.  Графы протокола содержат следующую информацию. Область - часть плоскости, которой принадлежит проверяемая точка. (Все возможные области отмечены на рисунке буквами А, В, С, ... S.) Условие 1, Условие2, Условие 3 - результат проверки соответствующего условия (да или нет). Если условие не проверялось, в протокол записывался прочерк. Вывод – сообщение, которое вывела программа. Если программа ничего не вывела, в протокол записывался прочерк. Верно - итоговое заключение (да или нет) о правильности результата работы программы при данных значениях х и у. Ответ: if (y>,=x*x-6) and (x*x+y*y<,=16) or (y>,=x*x-6) and (y=<,0) or (x*x+y*y<,=16) and (x>,=0) then write(принадлежит) else write(не принадлежит), Область Условие 1 (y >,= x*x-6) Условие 2 (x*x+y*y<,= 16) Условие 3 (x >,=0) Вывод Верно да — принадлежит нет не принадлежит да – да Область Условие 1 (y >,= x*x-6) Условие 2 (x*x+y*y<,= 16) Условие 3 (x >,=0) Вывод Верно 1 B, C, Q, R да нет – — нет 2 D, S нет – да принадлежит нет 3 A, E, K, P нет – нет не принадлежит да 4 F, G, L, M да да – принадлежит да
 
 
X

Чтобы скачать данную презентацию, порекомендуйте её своим друзьям в любой соц. сети.

После этого кнопка ЗАГРУЗКИ станет активной!

Кнопки рекомендации:

загрузить презентацию