Хелпикс

Главная

Контакты

Случайная статья





Оператор выбора case of



Условная конструкция if then else позволяет нам реализовать несколько ветвлений в программе. Та же задача может быть реализована, более простым способом, с помощью оператора выбора - case of.

Синтаксис оператора case следующий:

case (выражение) of

метка1: оператор1;

метка2: оператор2;

...

меткаN: операторN

else

операторE;

end;

Где метка1.. N - метки регистра или входные значения, которые могут быть целыми числами, символами, логическими или перечисляемыми элементами данных.

Оператор1.. N - оператор Паскаля, каждый из них может иметь одну или несколько меток регистра, связанных с ним.

 

 

Оператор Else - выполняется только в том случае, если не было совпадения метки и выражения.

Оператор case в Паскале, может содержать необязательный блок else, и должен завершается ключевым словом end.

При использовании оператора case of соблюдать следующие правила:

  • Выражение, используемое в операторе case, должно иметь целочисленный, перечисляемый, логический или символьный тип данных;
  • Операторы case могут быть составными, то есть быть блоками begin end, if then else, содержать в себе второй case of;
  • Метка должна быть константой или литералом, и быть того же типа, что и выражение в операторе;
  • Если оператору соответствует несколько меток, их записывают через запятую, или указывают диапазон значений: 1.. 4, ‘a’.. ‘c’. При этом нужно следить чтобы диапазоны не перекрывались, поскольку дублирование меток в Free Pascal запрещено;
  • Если одно из значений метки регистра соответствует значению выражения, выполняется инструкция, следующая за этой меткой. После этого программа выходит из блока case;
  • Если ни одна из меток case of не соответствует значению выражения, выполняется список операторов после ключевого слова else.

Рассмотрим пример программы конвертации оценок пятибалльной шкалы в текст с помощью оператора ветвления if:

{$CODEPAGE UTF8}

program RatingToText;

var

rate: integer;

begin

write('Введите оценку 1-5 ');

readln(rate);

 

if (rate = 1) or (rate = 2) then

writeln('Неудовлетворительно');

if rate = 3 then

writeln('Удовлетворительно');

if rate = 4 then

writeln('Хорошо');

if rate = 5 then

writeln('Отлично');

 

readln;

end.  

Более простая запись того же кода с использованием конструкции case of:

{$CODEPAGE UTF8}

program RateToText;

var

rating: integer;

begin

write('Введите оценку 1-5 ');

readln(rating);

 

case(rating) of

1, 2: writeln('Неудовлетворительно');

3: writeln('Удовлетворительно');

4: writeln('Хорошо');

5: writeln('Отлично');

end;

 

readln;

end.

Рассмотрим пример программы конвертации номера дня недели в название:

{$CODEPAGE UTF8}

program NumDayToText;

var

day: integer;

dayName: string;

begin

write('Номер дня недели ');

readln(day);

 

case(day) of

1: dayName: = 'Понедельник';

2: dayName: = 'Вторник';

3: dayName: = 'Среда';

4: dayName: = 'Четверг';

5: dayName: = 'Пятница';

6: dayName: = 'Суббота';

7: dayName: = 'Воскресение'

else

dayName: = 'Ошибка: Значение не определено';

end;

write(dayName);

readln;

end.

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

 

 

Пример 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: =0end; If k< > 0 then writeln('Кол-во дней в месяце: ', k) else writeln('Неверный номер месяца. '); end.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.