Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСНОВЫ АЛГОРИТМИЗАЦИИ.doc
Скачиваний:
188
Добавлен:
16.03.2015
Размер:
1.82 Mб
Скачать

6.3. Оператор выбора (варианта)

Характерной чертой многих алгоритмов является широкая разветвляемость, задаваемых ими вычислительных процессов. Для задания таких разветвлений используют условный оператор, по которому выбирается ход вычисления в зависимости от выполнения одного, двух условий. Но на практике часто встречаются случаи, когда вычислительный процесс надо разветвить не по двум, а по К (К>2) возможным путям. Это можно сделать и при помощи условного оператора, но в этом случае структура программы будет громоздкой:

IF B1 THEN S1 ELSE

IF B2 THEN S2 ELSE

IF BK THEN SK ELSE

В языке Паскаль предусмотрен производный от условного оператор, называемый оператором варианта или выбора. Позволяет выбрать одно из нескольких возможных продолжений программы. Этот оператор относится к сложным.

Полный формат оператора:

CASE<ключ_выбора>OF

константа1 : оператор1;

константа2 : оператор2;

константаN: операторN;

elseоператор;

end;

Краткий формат оператора:

CASE<ключ_выбора>OF

константа1 : оператор1;

константа2 : оператор2;

константаN: операторN;

end;

Здесь CASE (в случае), OF (из), END (конец) – служебные слова. <ключ_выбора> - является селектором, значение которого может быть целого, литерного, логического типа, либо типом, определяемым пользователем (за исключением действительного типа REAL).

Константы должны быть того же типа, что и селектор. Выбор оператора определяется совпадением значений селектора и константы, стоящей перед оператором: если значение выражения равно одной из констант, то выполняется соответствующий ей оператор, а управление передаётся за пределы оператора выбора. Если значение выражения не совпадает ни с одной константой, то управление передаётся за пределы оператора.

Пример 6.1.

CASE I MOD 3 OF

0: M:=0;

1: M:=2;

2: M:=3;

end;

Пример 6.2.

CASE S OF

‘=’, ‘*’, ‘/’, ‘+’: K:=1;

‘!’, ‘-’: K:=2;

‘A’: K:=;

end;

Задача 6.1. Ввести с клавиатуры букву, в ответ на мониторе будет выведена фамилия, начинающаяся на эту букву.

Листинг программы

PROGRAM FAM;

USES CRT;

VAR

OP: CHAR;

BEGIN

CLRSCR;

WRITELN (‘Введите букву’);

OP:= READKEY;

CASE OP OF

‘A’:WRITELN (‘Анисимов’);

‘B’:WRITELN (‘Владимиров’);

ELSEWRITELN(‘Фамилии на данную букву нет’);

END;

END.

Задача 6.2. Написать программу, имитирующую работу калькулятора.

Листинг программы

PROGRAM CALC;

USES CRT;

VAR

OP:CHAR; X, Y, Z : REAL; STOP : BOOLEAN;

BEGIN

CLRSCR;

STOP:= FALSE;

WRITELN (‘Введите X, Y’);

READLN (X, Y);

OP:= READKEY;

CASE OP OF

‘+’: Z:= X+Y;

‘-’: Z:= X-Y;

‘*’: Z:= X*Y;

‘/’: Z:= X/Y;

ELSE STOP := TRUE;

END;

IF NOT STOP THEN WRITELN (‘Результат = ’, Z:6:2);

END.

Задача 6.3. Использовать оператор варианта для ввода и вывода значений перечислимых скалярных типов.

Листинг программы

PROGRAM CAS;

USES CRT;

TYPE COLOR = (RED, BLUE, BLACK);

VAR CLR : COLOR; N : 0..2;

BEGIN

CLRSCR;

WRITELN ('ENTER THE NUMBER OF COLOR 0..2');

READLN (N);

CASE N OF

0 : CLR := RED;

1 : CLR := BLUE;

2 : CLR := BLACK;

END;

WRITELN ('THE LIST OF COLORS:');

CASE CLR OF

RED : WRITELN ('RED');

BLUE : WRITELN ('BLUE');

BLACK : WRITELN ('BLACK');

END;

READLN; END.

Задача 6.4. Использовать оператор выбора (варианта) для определения принадлежности буквы и латинскому и русскому алфавиту.

Листинг программы

PROGRAM TASK1;

USES CRT;

VAR S: 'A'..'G';

BEGIN

CLRSCR;

READLN (S);

CASE S OF

'A', 'B', 'C', 'E': WRITELN ('THE WORD TO BELONG BOTH ALPHABETS');

'D', 'E', 'F', 'G': WRITELN ('THE WORD TO BELONG LATIN ALPHABET');

END; END.

Задача 6.5. Использовать оператор выбора для определения чётности/ нечётности числа на промежутке 1..9.

Листинг программы

PROGRAM TASK2;

USES CRT;

VAR I : 1..9;

BEGIN

CLRSCR;

READLN (I);

CASE I OF

2, 4, 6, 8 : WRITELN ('THE NUMBER IS EVEN');

1, 3, 5, 7, 9 : WRITELN ('THE NUMBER IS UNEVEN');

END;

END.