Презентация, доклад на тему Решение С1 по информатике - поиск ошибок в программе со сложным условием

Содержание

в программе осуществлен ввод лишних данных; ошибка в операторе условия (> вместо

Слайд 1Решение С1 по информатике - поиск ошибок в программе со сложным

условием

(повышенный уровень, время – 30 мин)

Решение С1 по информатике - поиск ошибок в программе со сложным условием (повышенный уровень, время – 30

Слайд 2 в программе осуществлен ввод лишних данных;
ошибка в операторе условия

(> вместо <, + вместо -) или в условии выхода из области;
несоответствие количества «скобок» в условии (while и if, ошибка до или после else);
возможно строки в программе поменяны местами (или строка удалена)

ВОЗМОЖНЫЕ ВАРИАНТЫ ОШИБОК:

в программе осуществлен ввод лишних данных; ошибка в операторе условия (> вместо

Слайд 3входные данные – числовые выражения и задание содержит три вопроса:
определить при

каких входных данных программа работает неверно (вопрос для всех классов заданий С1);
определить лишнюю часть представленной программы;
исправить предложенную программу.
входные данные – числовые выражения, но вопросов два (т.е. в исходной части программы две ошибки);
входные данные – числовые, вопросов два, оба касаются исправления программы, но второй вопрос сформулирован довольно жёстко (требует не содержать логических функций и т.д.)
входные данные – строковые переменные, а в остальном соответствует первому классу заданий С1.

Классификация заданий С1

входные данные – числовые выражения и задание содержит три вопроса:определить при каких входных данных программа работает неверно

Слайд 4Задача№1. Тре­бо­ва­лось на­пи­сать про­грам­му, при вы­пол­не­нии ко­то­рой с кла­ви­а­ту­ры счи­ты­ва­ют­ся ко­ор­ди­на­ты

точки на плос­ко­сти (x, y — дей­стви­тель­ные числа) и опре­де­ля­ет­ся при­над­леж­ность этой точки за­дан­ной за­штри­хо­ван­ной об­ла­сти (вклю­чая гра­ни­цы). Про­грам­мист то­ро­пил­ся и на­пи­сал про­грам­му не­пра­виль­но.
Задача№1. Тре­бо­ва­лось на­пи­сать про­грам­му, при вы­пол­не­нии ко­то­рой с кла­ви­а­ту­ры счи­ты­ва­ют­ся ко­ор­ди­на­ты точки на плос­ко­сти (x, y —

Слайд 5
Пе­ре­ри­суй­те и за­пол­ни­те таб­ли­цу, ко­то­рая по­ка­зы­ва­ет, как ра­бо­та­ет про­грам­ма при ар­гу­мен­тах,

при­над­ле­жа­щих раз­лич­ным об­ла­стям (A, B, C, D, E, F, G и H).
Точки, ле­жа­щие на гра­ни­цах об­ла­стей, от­дель­но не рас­смат­ри­вать. В столб­цах усло­вий ука­жи­те "да", если усло­вие вы­пол­нит­ся, "нет", если усло­вие не вы­пол­нит­ся, "—" (про­черк), если усло­вие не будет про­ве­рять­ся, "не изв.", если про­грам­ма ведет себя по-раз­но­му для раз­ных зна­че­ний, при­над­ле­жа­щих дан­ной об­ла­сти. В столб­це "Про­грам­ма вы­ве­дет" ука­жи­те, что про­грам­ма вы­ве­дет на экран. Если про­грам­ма ни­че­го не вы­во­дит, на­пи­ши­те "—" (про­черк). Если для раз­ных зна­че­ний, при­над­ле­жа­щих об­ла­сти, будут вы­ве­де­ны раз­ные тек­сты, на­пи­ши­те "не изв". В по­след­нем столб­це ука­жи­те "да" или "нет".
Ука­жи­те, как нужно до­ра­бо­тать про­грам­му, чтобы не было слу­ча­ев ее не­пра­виль­ной ра­бо­ты. (Это можно сде­лать не­сколь­ки­ми спо­со­ба­ми, до­ста­точ­но ука­зать любой спо­соб до­ра­бот­ки ис­ход­ной про­грам­мы.)

По­сле­до­ва­тель­но вы­пол­ни­те сле­ду­ю­щее:

Пе­ре­ри­суй­те и за­пол­ни­те таб­ли­цу, ко­то­рая по­ка­зы­ва­ет, как ра­бо­та­ет про­грам­ма при ар­гу­мен­тах, при­над­ле­жа­щих раз­лич­ным об­ла­стям (A, B, C,

Слайд 6Эле­мен­ты от­ве­та:
Показать график

Эле­мен­ты от­ве­та:Показать график

Слайд 7Вернуться

Вернуться

Слайд 8Воз­мож­ная до­ра­бот­ка (Пас­каль, раз­би­е­ние об­ла­сти на две части пря­мой x =

0):
if ((y>=x*x─2) and (y<=x) and (x>=0)) or ((x<=0) and (y<=-x)) then write('при­над­ле­жит')
else write('не при­над­ле­жит')

Ва­ри­ан­тов до­ра­бот­ки может быть до­ста­точ­но много, но обыч­но пра­виль­ное опи­са­ние за­штри­хо­ван­ных об­ла­стей в них пред­став­ля­ет собой или объ­еди­не­ние двух (или более) воз­мож­но пе­ре­се­ка­ю­щих­ся об­ла­стей, или ис­клю­че­ние одной об­ла­сти из дру­гой.
 При раз­де­ле­нии об­ла­сти вдоль какой-либо линии точки, ко­то­рые лежат на этой линии внут­ри об­ла­сти, могут быть при­чис­ле­ны к одной части, к дру­гой или к обеим (то есть, на­при­мер, в при­ве­ден­ном ре­ше­нии на языке Пас­каль одно из усло­вий (x >= 0) или (x <= 0) может быть стро­гим).

Воз­мож­ная до­ра­бот­ка (Пас­каль, раз­би­е­ние об­ла­сти на две части пря­мой x = 0):if ((y>=x*x─2) and (y=0)) or ((x

Слайд 9Задача №2. Тре­бо­ва­лось на­пи­сать про­грам­му, ко­то­рая ре­ша­ет урав­не­ние «a |x|

= 6» от­но­си­тель­но х для любых чисел а и b, вве­ден­ных с кла­ви­а­ту­ры. Все числа счи­та­ют­ся дей­стви­тель­ны­ми. Про­грам­мист то­ро­пил­ся и на­пи­сал про­грам­му не­пра­виль­но.

По­сле­до­ва­тель­но вы­пол­ни­те три за­да­ния:
При­ве­ди­те при­мер таких чисел a, b, x, при ко­то­рых про­грам­ма не­вер­но ре­ша­ет по­став­лен­ную за­да­чу.
Ука­жи­те, какая часть про­грам­мы яв­ля­ет­ся лиш­ней.
Ука­жи­те, как нужно до­ра­бо­тать про­грам­му, чтобы не было слу­ча­ев ее не­пра­виль­ной ра­бо­ты. (Это можно сде­лать не­сколь­ки­ми спо­со­ба­ми, по­это­му можно ука­зать любой спо­соб до­ра­бот­ки ис­ход­ной про­грам­мы).

Задача №2. Тре­бо­ва­лось на­пи­сать про­грам­му, ко­то­рая ре­ша­ет урав­не­ние  «a |x| = 6» от­но­си­тель­но х для любых

Слайд 10По­яс­не­ние
a = 1, b = −1, x = 0.
Зна­че­ние x может

быть не ука­за­но. Зна­че­ния а и b могут быть лю­бы­ми не­ну­ле­вы­ми
чис­ла­ми с раз­ны­ми зна­ка­ми. Ошиб­ка про­грам­ми­ста со­сто­ит в том, что про­грам­ма
ра­бо­та­ет не­пра­виль­но при любых не­ну­ле­вых а и Ь, име­ю­щих раз­ные знаки.
 
Лиш­няя часть: не нужно вво­дить х с кла­ви­а­ту­ры; верно: readln(a, Ь).
 
Воз­мож­ная до­ра­бот­ка:
readln(а, b);
if а = 0 then
if b = 0 then write('любое число')
else write('нет ре­ше­ний')
else
if b/а > 0 then write('х =', Ь/а, ' или х =', -Ь/а)
else
if b = 0 then write('х =0')
else write('нет ре­ше­ний');


По­яс­не­ниеa = 1, b = −1, x = 0.Зна­че­ние x может быть не ука­за­но. Зна­че­ния а и

Слайд 11Задача№3 Тре­бо­ва­лось на­пи­сать про­грам­му, при вы­пол­не­нии ко­то­рой с кла­ви­а­ту­ры счи­ты­ва­ют­ся ко­ор­ди­на­ты

точки на плос­ко­сти (x, y — дей­стви­тель­ные числа) и опре­де­ля­ет­ся при­над­леж­ность этой точки за­дан­ной за­кра­шен­ной об­ла­сти (вклю­чая гра­ни­цы). Уче­ник на­пи­сал такую про­грам­му:
Задача№3 Тре­бо­ва­лось на­пи­сать про­грам­му, при вы­пол­не­нии ко­то­рой с кла­ви­а­ту­ры счи­ты­ва­ют­ся ко­ор­ди­на­ты точки на плос­ко­сти (x, y —

Слайд 12При про­вер­ке ра­бо­ты про­грам­ма вы­пол­ня­лась по шагам для не­ко­то­рых кон­троль­ных зна­че­ний

х и у, при этом был за­пол­нен про­то­кол те­сти­ро­ва­ния. В ре­зуль­та­те не­ак­ку­рат­но­го об­ра­ще­ния про­то­кол был ис­пор­чен, ча­стич­но со­хра­ни­лись толь­ко че­ты­ре стро­ки:

По­сле­до­ва­тель­но вы­пол­ни­те сле­ду­ю­щее.
Вос­ста­но­ви­те уце­лев­шие стро­ки про­то­ко­ла, за­пол­нив все клет­ки таб­ли­цы. Там, где со­дер­жа­ние вос­ста­нав­ли­ва­ет­ся не­од­но­знач­но, за­пи­ши­те любое воз­мож­ное зна­че­ние. На­при­мер, если для не­сколь­ких об­ла­стей по­лу­ча­ет­ся оди­на­ко­вая стро­ка таб­ли­цы, ука­жи­те в графе «Об­ласть» любую из этих об­ла­стей.
2. Ука­жи­те, как нужно до­ра­бо­тать про­грам­му, чтобы не было слу­ча­ев её не­пра­виль­ной ра­бо­ты.

При про­вер­ке ра­бо­ты про­грам­ма вы­пол­ня­лась по шагам для не­ко­то­рых кон­троль­ных зна­че­ний х и у, при этом был

Слайд 13По­яс­не­ние
2. Для на­пи­са­ния пра­виль­ной про­грам­мы не­об­хо­ди­мо раз­де­лить тре­бу­е­мую об­ласть на части

и опи­сать каж­дую из них. На­при­мер, можно вы­де­лить об­ла­сти FGLM, HN и QR. При этом по­лу­ча­ет­ся такой фраг­мент про­грам­мы (при­мер на Пас­ка­ле):
 
if (y<=1-x) and (y>=x*x-5) and (x*y<=0) or (y<=2-2*x*x) and (y>=0)
then
write('при­над­ле­жит')
else
write('не при­над­ле­жит')

1.

График

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

Слайд 14Вернуться

Вернуться

Слайд 15Задача№4
Тре­бо­ва­лось на­пи­сать про­грам­му, при вы­пол­не­нии ко­то­рой с кла­ви­а­ту­ры счи­ты­ва­ет­ся на­ту­раль­ное число

N, не пре­вос­хо­дя­щее 109, и вы­во­дит­ся ко­ли­че­ство цифр этого числа. Про­грам­мист то­ро­пил­ся и на­пи­сал про­грам­му не­пра­виль­но.

По­сле­до­ва­тель­но вы­пол­ни­те сле­ду­ю­щее.
 
1. На­пи­ши­те, что вы­ве­дет эта про­грам­ма при вводе числа 584.
 
3. Ука­жи­те одно число для ко­то­ро­го эта про­грам­ма будет ра­бо­тать верно.
 
2. Най­ди­те все ошиб­ки в этой про­грам­ме (их может быть одна или не­сколь­ко). Ука­жи­те все стро­ки (одну или более), со­дер­жа­щие ошиб­ки, и для каж­дой такой стро­ки при­ве­ди­те пра­виль­ный ва­ри­ант. Об­ра­ти­те вни­ма­ние, что тре­бу­ет­ся найти ошиб­ки в име­ю­щей­ся про­грам­ме, а не на­пи­сать свою, воз­мож­но, ис­поль­зу­ю­щую дру­гой ал­го­ритм ре­ше­ния. Ис­прав­ле­ние ошиб­ки долж­но за­тра­ги­вать толь­ко стро­ку, в ко­то­рой на­хо­дит­ся ошиб­ка.

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

Слайд 16Про­грам­ма вы­ве­дет число 2.

Про­грам­ма ра­бо­та­ет верно для всех чисел, на­чи­на­ю­щих­ся на

9. в том числе для числа 9. [До­ста­точ­но ука­зать любое такое число.]

В ка­че­стве от­ве­та для осталь­ных чисел про­грам­ма выдаёт число на 1 мень­шее, чем нужно. Воз­мож­ные (не все) ва­ри­ан­ты ис­прав­ле­ния для языка Пас­каль:
1) ис­прав­ле­ние усло­вия про­дол­же­ния цикла на while (N >= 1) do или while (N > 0) do. При этом за­ме­на на while (N >= 0) do кор­рект­ной не яв­ля­ет­ся.
2) ис­прав­ле­ние ини­ци­а­ли­за­ции на sum := 1, а усло­вие про­дол­же­ния цикла на while (N > 9) do или while (N >= 10) do.

По­яс­не­ние

Про­грам­ма вы­ве­дет число 2.Про­грам­ма ра­бо­та­ет верно для всех чисел, на­чи­на­ю­щих­ся на 9. в том числе для числа

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

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


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

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

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

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