Студопедия

КАТЕГОРИИ:


Архитектура-(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;

 

1-й вариант 2-й вариант
if D < 0 then write ('Не имеет корней'); if D < 0 then write ('Нет корней') else if D = 0 then write ('Один корень')
if D = 0 then write ('Один корень'); if D > 0 then write ('Два корня'); else write ('Два корня');
     

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; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.