Презентация, доклад на тему Решаем С1 по информатике ЕГЭ

Ветвление – это выбор одного из двух возможных вариантов действий в зависимости от того, выполняется ли некоторое условие.В неполной форме условного оператора блок-2 пустой (отсутствует); Если условие, записанное внутри ромба, истинно (ответ «да» на вопрос «a=b?»),

Слайд 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;

Ветвление – это выбор одного из двух возможных вариантов действий в зависимости от того, выполняется ли некоторое

Слайд 3Одна команда ветвления может находиться внутри другой, например, так:
На этой схеме

блок-10 выполняется, когда a=b; блок-11 – когда a=b=c, блок-12 – когда a=b, но ac и, наконец, блок-2 – когда ab.

Если блок-12 будет пустой (отсутствует), внутреннее ветвление имеет неполную форму; аналогично, если блок-2 пустой, то внешнее ветвление имеет неполную форму

Одна команда ветвления может находиться внутри другой, например, так:На этой схеме блок-10 выполняется, когда a=b; блок-11 –

Слайд 4Задача 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. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы) .

Задача 1:Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (x, y – действительные числа)

Слайд 51. Условие y>=x истинно выше прямой y=x, то есть в областях

A, B, E, F

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

да

да

да

да

нет

нет

нет

1. Условие y>=x истинно выше прямой y=x, то есть в областях A, B, E, FНачнем заполнять таблицу,

Слайд 6да
да
да
да
нет
нет
нет
2.Условие y>=0 истинно выше прямой y=0, то есть в областях A,

E, G, однако это условие проверяется только тогда, когда первое условие, y>=x, истинно; поэтому для всех областей, где первое условие неверно (это области C, D, G), сразу в столбце второго условия ставим прочерк (условие не будет проверяться)

да

да

нет

нет

--

--

--

дадададанетнетнет2.Условие y>=0 истинно выше прямой y=0, то есть в областях A, E, G, однако это условие проверяется

Слайд 7да
да
да
да
нет
нет
нет
3. Третье условие выполняется для областей «внутри» параболы, то есть для

E, F, G, D; однако оно проверяется только тогда, когда первые два истинны (для А и Е), в остальных строках ставим прочерк:

да

да

нет

нет

--

--

--

нет

да

--

--

--

--

--

дадададанетнетнет3. Третье условие выполняется для областей «внутри» параболы, то есть для E, F, G, D; однако оно

Слайд 8да
да
да
да
нет
нет
нет
4.Как следует из текста программы, она выведет что-то на экран только

в том случае, когда выполняются первые два условия и программа выходит на третье: для области А будет выведено «не принадлежит», для области Е – «принадлежит», именно в этих двух случаях программа работает правильно, в остальных – нет:

да

да

нет

нет

--

--

--

нет

да

--

--

--

--

--

не принадлежит

принадлежит

--

--

--

--

--

да

нет

нет

нет

да

нет

нет

дадададанетнетнет4.Как следует из текста программы, она выведет что-то на экран только в том случае, когда выполняются первые

Слайд 9var x,y: real;
begin
readln(x,y);
if (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))
Доработанная программа выглядит так:

var x,y: real;beginreadln(x,y);if (y =x) or (y>=0)) then write('принадлежит')else write('не принадлежит')end.Для того, чтобы доработать программу, проще всего

Слайд 10Задачи для тренировки

Задачи для тренировки

Слайд 11Вспомни!
Запись вида 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;
Вспомни!Запись вида a mod b означает остаток от деления a на bЗапись вида a := b +

Слайд 12Задача 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, при которых программа неверно решает поставленную задачу.
Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).

Задача 1Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (x, y – действительные числа)

Слайд 13Задача 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.
Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
Выпишите строку, в которой сделана ошибка;
Укажите, как надо исправить ошибку - приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, имеющую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Задача 2Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и

Слайд 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('не принадлежит');

Требовалось написать программу, при выполнении которой с клавиатуры считывается координата точки на прямой (х – действительное

Слайд 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('не принадлежит');

Требовалось написать программу, при выполнении которой с клавиатуры считываются коорди наты точки на плоскости (х, у -

Что такое shareslide.ru?

Это сайт презентаций, где можно хранить и обмениваться своими презентациями, докладами, проектами, шаблонами в формате PowerPoint с другими пользователями. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами.


Для правообладателей

Яндекс.Метрика

Обратная связь

Email: Нажмите что бы посмотреть