Организация ветвлений. Операторы выбора
Оператор IF можно представить в виде следующей синтаксической диаграммы: Конструкция "Условие" есть логическое выражение, которое принимает два значения типа 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. Ниже следуют два способа вложения конструкции IF в конструкцию IF:
Первый способ предпочтительнее, чем второй, т.к. конструкция THEN-IF менее удобна, чем ELSE-IF. С помощью конструкции ELSE-IF чаще всего осуществляется выбор одного из нескольких альтернативных путей. Заметим, однако, что иногда такое вложение лучше заменить на последовательность короткой формы оператора IF-THEN. Это видно на следующем примере: program QUARD; var A,B,C: real; DETER: real; begin read(A,B,C); DETER:= sqr(B)-4*A-C;
end однако в Паскале существует оператор, позволяющий сделать выбор из нескольких альтернатив - множественное ветвление. Оператор варианта состоит из выражения и списка операторов, каждому из которых предшествует одна или более констант, называемых константами выбора, что видно из синтаксической диаграммы: ОБЩАЯ ФОРМА ЗАПИСИ: CASE <выражение> OF константы: оператор; константы: оператор ELSE < оператор > END. Выражение, стоящее между CASE и OF, называется селектором. Константы (значения выражения), предшествующие двоеточию, называются метками случаев. Порядок работы оператора - сначала вычисляется значение селектора, затем выполняется оператор, метка которого совпадает со значением селектора. Все остальные операторы не выполняются, управление передается на следующий после END оператор. Если же в операторе есть строка ELSE, то при несовпадении значения селектора ни с одной константой выполняется оператор, следующий за ELSE. Выражение "селектор" может относиться к любому скалярному типу, кроме REAL. Метки случаев должны принадлежать тому же типу, что и селектор. Недопустимо, чтобы одна и та же метка появлялась более одного раза в операторе CASE. Оператор CASE особенно удобно использовать, во-первых, когда характер действий определяется значениями, которые не попадают в последовательно расположенные интервалы, во-вторых, когда нескольким дискретным значениям селектора соответствует одно и то же действие. ПРИМЕР 1. Печать названия десятичных цифр program DICITS; var DIGIT: integer; label 1; begin 1: writeln ('Введите цифру'); readln(DIGIT); if (DIGIT < 0) or (DIGIT > 9) then begin writeln ('Это не цифра'); GOTO 1 end else case DIGIT of 0: writeln('нуль'); 1: writeln('один'); 9: 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. ПРИМЕР 3. Вывод на печать, является ли введенный с клавиатуры символ гласной буквой или знаком препинания program SIMVOL; var CH: char; begin write('Введите символ - '"; readln(CH); write (CH,' есть '); case CH of 'A','E','I','O','U': write('гласная'); '.',';',',',':','?','!': write('знак препинания'); end; end. ЗАМЕЧАНИЕ. В операторе CASE нет условий как таковых, однако проверка условий осуществляется в неявном виде. Действительно, строке 'A','E','I','O','U': WRITE('гласная') примера 3 равносилен оператор IF (ch='A") OR (ch='E') OR (ch='I') OR (ch='O') OR (ch='U') THEN WRITE(' гласная').
Популярное: Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (262)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |