Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Readln(x,y);. write('не принадлежит')






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

Решение:

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

22) условие y> =x истинно выше прямой y=x, то есть в областях A, B, E, F

Область y> =x? y> =0? y< =2-x*x? вывод верно?
A да        
B да        
C нет        
D нет        
E да        
F да        
G нет        

23) условие 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 нет      

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

Область y> =x? y> =0? y< =2-x*x? вывод верно?
A да да нет    
B да нет    
C нет    
D нет    
E да да да    
F да нет    
G нет    

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

Область y> =x? y> =0? y< =2-x*x? вывод верно?
A да да нет не принадлежит да
B да нет нет
C нет нет
D нет нет
E да да да принадлежит да
F да нет нет
G нет нет

26) для того, чтобы доработать программу, проще всего составить одно сложное условие, описывающее всю заштрихованную область

27) в данном случае удобно представить данную область в виде объединения областей, первая из которых включает области E+G, а вторая – области E+F

28) область E+G соответствует условию (y> =0) and (y < =2-x*x)

29) область E+F соответствует условию (y> =x) and (y < =2-x*x)

30) объединение областей выполняется с помощью операции ИЛИ (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))

31) поскольку в обоих условиях есть условие y < =2-x*x, запись можно немного сократить:

(y < =2-x*x) and ((y> =x) or (y> =0))

32) доработанная программа выглядит так:

var x, y: real;

Begin






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.