Урок 7. Оператор выбора Сase

Урок из серии: «Язык программирования Паскаль»

В этом уроке будет рассмотрено использование оператора выбора Select Case.

На предыдущем уроке было показано, как использовать оператор If … hten для выбора одного из двух возможных продолжений алгоритма.

Если один оператор If может обеспечить выбор из двух альтернатив, то оператор выбора case позволяет сделать выбор из произвольного числа имеющихся вариантов.

С помощью операторе If … them тоже можно организовать проверку более двух условий, если использовать вложенные операторы If … then, но запись с оператором Select Case получается более компактной и более понятной.

Оператор выбора case состоит из выражения, называемого селектором (selection — выбор альтернативы) и списка операторов, каждому из которых предшествует список констант выбора (список может состоять из одной константы).

case <выражение -селектор> of
   <список 1>: <оператор 1;>
   <список 2>: <оператор 2;>
   . . .
   <список n>: <оператор n;>
[else <оператор>]
end;

Здесь ветвь else заключается в квадратные скобки, что говорит о том, что эта часть  оператора выбора не обязательна.

Алгоритм выполнения оператора выбора:

  1. Вычисляется  выражение, которое должно принимать значение, принадлежащее порядковому типу (например, оно не может быть вещественного типа).
  2. В случае если результат вычисления равен одной из перечисленных констант, то выполняется соответствующий оператор. Затем управление передается за пределы оператора выбора.
  3. Если значение выражения не совпадает ни с одной константой, то выполняется оператор, стоящий после else, если он есть, либо управление передается на оператор end и выполнение программы продолжается.

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

Правила использования оператора:

  1. Тип константы должен совпадать с типом выражения
  2. В этой конструкции перед else стоит точка с запятой.
  3. Все константы в альтернативах должны быть уникальны в пределах оператора выбора (т.е. повторение констант в альтернативах не допускается).

Урок 7. Оператор выбора Сase Пример 1. По введенному номеру дня недели вывести на экран его название.

program primer7_1;
var day:byte;
begin
  writeln('Введите номер дня недели: ');
  readln(day);
  case day of
    1: writeln('Понедельник');
    2: writeln('Вторник');
    3: writeln('Среда');
    4: writeln('Четверг');
    5: writeln('Пятница');
    6: writeln('Суббота');
  else
    writeln('Воскресенье');
  end;
end.

Урок 7. Оператор выбора СaseПример 2. В восточном календаре принят 60-летний цикл, состоящий из 12-летних подциклов, обозначаемых названиями цвета: зеленый, красный, желтый, белый и черный.

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

По номеру года выведите его название, если 1984 год был началом цикла — годом зеленой крысы.

Восточный календарь

program case_a;
var k, ost_12, ost_10, god_n, god_k: integer;
       color, animal: string;
begin
writeln('Введите номер года:  ');
readln(god_k);
god_n := 1984;        // Начало цикла
k:= god_k - god_n+1;  // Порядковый номер года  в цикле
ost_12:= k mod 12;
ost_10:= k mod 10;

case ost_12 of
   1: animal:='крысы';
   2: animal:='коровы';
   3: animal:='тигра';
   4: animal:='зайца ';
   5: animal:='дракона';
   6: animal:='змеи';
   7: animal:='лошади';
   8: animal:='овцы';
   9: animal:='обезьяны ';
   10: animal:='курицы';
  11: animal:= 'собаки';
  0: animal:='свиньи';
end;

case ost_10 of
   1,2: if (ost_12=3) or (ost_12=4) then color:='зеленого' else color:='зеленой';
   3,4: if (ost_12=3) or (ost_12=4) then color:='красного' else color:='красной';
   5,6: if (ost_12=3) or (ost_12=4) then color:='желтого' else color:='желтой';
   7,8: if (ost_12=3) or (ost_12=4) then color:='белого' else color:='белой ';
   9,0: if (ost_12=3) or (ost_12=4) then color:='черного' else color:='черной';
end;
writeln('Год ', color, ' ', animal);
end.

Урок 7. Оператор выбора СaseПример 3. Составьте программу, которая по заданному году и номеру месяца определяет количество дней в этом месяце.

program case_b1;
var god, mes, k: integer;
begin
// Год является високосным в двух случаях: либо он кратен 4, но при этом не кратен 100, либо кратен 400.
writeln('Введите год и номер месяца:');
readln(god, mes);
case mes of
   1, 3, 5, 7, 8, 10, 12 : k:=31;
   4, 6, 9, 11: k:=30;
   2: if ((god mod 4 =0) and  (god mod 100 <> 0)) or (god mod 400 = 0) then k:=29 else k:=28;
else k:=0
end;
 If k<>0 then writeln('Кол-во дней в месяце:', k) else writeln('Неверный номер месяца.');
end.

Задания для самостоятельного выполнения

  1. Составьте программу, которая переводила бы арабские цифры в римские.
  2. Составить программу, которая по номеру месяца определяла время года.

В этом уроке было показано, как использовать оператор Select Case для выбора из нескольких вариантов.

ТестПроверь себя!

На следующем уроке Вы познакомитесь со средой программирования Pascal ABC.

Следующий урок:  Язык программирования Pascal ABC. Структура окна.

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии