КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Общая форма записи. Оператор варианта CASE
Оператор варианта CASE Оператор ветвления IF
Оператор IF можно представить в общей форме записи как
IF <Условие> THEN <Оператор 1> ELSE <Оператор 2>,
где конструкция «Условие» есть логическое выражение, которое принимает два значения типа BOOLEAN: TRUE, FALSE (истинно или ложно). Само логическое выражение складывается из операций сравнения: >, >=, <, <=, =, <>. Результат сравнения может быть TRUE или FALSE. Логические выражения могут формироваться также и с помощью трех логических операций: NOT, AND, OR. Приоритеты всех используемых в Паскале операций таковы: Высший: () NOT *, /, DIV, MOD AND OR +, - Низший: >, =, <, >=, <>, <=
В качестве условия может быть использована и логическая переменная, например: I and J or K ---> (I and J) or K; not X and Y ---> (not X) and Y, где I, J, K, X, Y – переменные типа BOOLEAN; (A < B) or (B = 0), где A, B – переменные простого типа.
В операторе IF всегда за словами THEN и ELSE должен следовать один оператор. Этим оператором может быть не только оператор присваивания, но и любой другой. Если хотя бы один из них является снова оператором IF, то полученную конструкцию называют вложением.
П р и м е р: IF <условие1> THEN <ветвь 1> ELSE IF <условие2> THEN <ветвь 2> ELSE <ветвь 3>; Такое вложение используется для уменьшения числа необходимых проверок. Этот метод часто обеспечивает большую эффективность, чем составное условие, однако одновременно он уменьшает надежность программы. Не рекомендуется использовать более двух-трех уровней вложения IF. Вложения могут идти и после слова THEN. Первый способ предпочтительнее, чем второй, так как конструкция THEN-IF менее удобна, чем ELSE-IF. С помощью конструкции ELSE-IF чаще всего осуществляется выбор одного из нескольких альтернативных вариантов. Заметим, однако, что иногда такое вложение можно заменить на последовательность операторов короткой формы IF-THEN. Это видно на следующем примере:
program QUARD; var A, B, C: real; D: real; begin read (A, B, C); D:= sqr (B) – 4 * A - C;
end. Рис. 2. Пример программы двух разных вложений
Однако в данном примере 2-й вариант более эффективен, так как имеет на одно сравнение меньше, и в случае D < 0 сразу же дает ответ, не делая последующих проверок. В Паскале существует специальный оператор, позволяющий сделать выбор из нескольких альтернатив – множественное ветвление, или оператор варианта.
Оператор варианта состоит из выражения и списка операторов, каждому из которых предшествует одна или более констант, называемых константами выбора. CASE <выражение> OF константы: оператор; .................... константы: оператор ELSE <оператор> END;
Выражение, стоящее между CASE и OF, называется селектором. Константы (значения выражения), предшествующие двоеточию, называются метками случаев. Порядок работы оператора: сначала вычисляется значение селектора, затем выполняется оператор, одна из меток которого совпадает со значением селектора. Все остальные операторы не выполняются, и управление передается следующему после END оператору. В случае короткой формы оператора CASE при несовпадении значения селектора (ключа) ни с одной из констант из списка никакой оператор не подлежит исполнению. Если же в операторе есть строка ELSE, то при несовпадении значения селектора ни с одной константой выполняется оператор, следующий за ELSE. Выражение «селектор» может относиться к любому скалярному типу, кроме REAL. Метки случаев должны принадлежать тому же типу, что и селектор. Нежелательно, чтобы одна и та же метка появлялась более одного раза в операторе CASE. Если же это произойдет (компилятор не проверяет повторяемость меток), то выполнится тот оператор, который соответствует первому вхождению метки в список констант. Оператор CASE особенно удобно использовать, во-первых, когда характер действий определяется значениями, которые не попадают в последовательно расположенные интервалы, во-вторых, когда нескольким дискретным значениям селектора соответствует одно и то же действие. П р и м е р 1. Печать названия десятичных цифр.
program DICITS; var DIGIT: integer; begin writeln ('Введите цифру'); readln (DIGIT); case DIGIT of 0: writeln ('нуль'); 1: writeln ('один'); .................. 9: writeln ('девять'); else writeln ('это не цифра'); end; end. П р и м е р 2. Печать номера квартала года.
program NUMKVART; var MESIATZ: 1..12; begin write ('Введите номер месяца года – '); read (MESIATZ); case MESIATZ of 1, 2, 3: writeln ('Первый квартал'); 4, 5, 6: writeln ('Второй квартал'); 7, 8, 9: writeln ('Третий квартал'); 10, 11, 12: writeln ('Четвертый квартал'); end; end.
Примечание. В операторе CASE формально нет условий как таковых, однако проверка условий осуществляется в неявном виде на предмет совпадения константы со значением селектора.
Дата добавления: 2014-12-16; Просмотров: 618; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |