Главная страница
Случайная страница
КАТЕГОРИИ:
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Readln(x,y);. else write('не принадлежит');
if (x > = 0) and (x < = pi/2) and
(y < = 1) and (y > = sin(x)) then
write('принадлежит')
else write('не принадлежит');
End.
здесь использовано сложное условие, в котором 4 отношения связаны операциями and («И», требуется одновременное выполнение всех условий)
Возможные проблемы:
· как правило, в этой задаче требуется использовать знания из курса математики (решение уравнений, графики функций, область допустимых значений, составление уравнений прямой по приведенному графику)
· как показывает анализ опубликованных задач этого типа, нужно уметь, прежде всего, разбираться в серии вложенных условных операторов в полной и неполной форме
· неправильная «лесенка» в записи сбивает с толку и подталкивает к неверному решению; чтобы разобраться в программе, лучше на черновике построить блок-схему алгоритма и правильную «лесенку»
· чтобы не запутаться, к какому оператору относится else, используйте следующее правило:
o если перед else нет слова end, нужно искать ближайший сверху условный оператор if
o если перед else стоит end (конец блока), нужно искать парный ему begin (начало блока) и соответствующий условный оператор if... then begin
· проверяйте, все ли необходимые условия учтены в программе, это особенно актуально для немонотонных функций типа синуса или косинуса (немонотонные функции на некоторых участках возрастают при увеличении аргумента, а на некоторых – убывают); например, в этой задаче можно пропустить необходимость выполнения условия
· не перепутайте, где нужно использовать операцию and («И», одновременное выполнение условий), а где –or («ИЛИ», хотя бы одно условие)
· нужно внимательно проверять, всегда ли программа выдает сообщение, если заданное условие не выполняется
· часто бывает полезно нарисовать блок-схему алгоритма, которая позволяет увидеть ход выполнения программы при всех возможных вариантах
· проверяйте, включает ли заданная область свои границы; если включает – в отношениях будут нестрогие неравенства (< =, > =), если не включает – строгие (<, >)
· при оценке работы можно (при абсолютно правильном решении) потерять баллы из-за синтаксических ошибок в программе (скобки, точки с запятой, неправильное написание оператора и т.п.); не забывайте, что
o в сложном условии все простые условия (отношения) нужно брать в скобки, так как в Паскале отношения при вычислении логического выражения имеют самый низкий приоритет
o перед else точка с запятой никогда не ставится
o в конце программы после последнего end ставится точка
|
За что снимают баллы:
· неправильно определены входные данные, при которых исходная программа работает неверно
· исправлены не все ошибки в программе, например, легко «просмотреть», что необходимо еще условие
· программа работает правильно в большем количестве случаев, чем исходная, но не для всех возможных исходных данных
· перепутаны знаки < и >, логические операции or и and
· неверно расставлены операторные скобки begin-end
· синтаксические ошибки (знаки пунктуации – запятые, точки, точки с запятой; неверное написание ключевых слов); чтобы получить 3 балла, нужно при абсолютно правильном решении сделать не более одной синтаксической ошибки; на 2 балла – до двух ошибок, на 1 балл – до трех ошибок
| Задачи для тренировки [2]:
1) Требовалось написать программу, которая решает уравнение « » относительно x для любых чисел a и b, введенных с клавиатуры. Все числа считаются действительными. Программист торопился и написал программу неправильно:
var a, b, x: real;
Begin
|