Оператор варианта применяется для выполнения одного оператора из нескольких, в зависимости от значения переменной (или результата вычисления выражения), которая указывается между словами case и of .
2. Какой общий вид оператора выбора case ?
Общий вид оператора выбора:
case ordinal_expression of 1: statement1; // выполняется если ordinal_expression=1 2, 3: statement2; // выполняется если ordinal_expression = 2 или // ordinal_expression = 3 else statement 3; // выполняется во всех других случаях end;
Здесь переменная ordinal_expression называется селектором. Селектор имеет обязательно порядковый тип.
statement1 , statement2 , statement3 – один или несколько операторов (берутся в операторные скобки begin и end ).
Цифры 1 , 2 , 3 есть метками. Метки отделяются от операторов двоеточием. Метки представляют значения, которые может принимать селектор. При обращении к оператору case выполняется оператор, метка которого отвечает значению селектора. Метки в операторе case могут быть заданы в виде диапазонов.
Switch. Что это. Пример. Синтаксис. Оператор множественного выбора. Урок #13.
Оператор варианта case может выполняться и без использования блока else . В этом случае общий вид оператора case следующий:
case ordinal_expression of 1: statement1; // выполняется если ordinal_expression=1 2, 3: statement2; // выполняется если ordinal_expression = 2 или // ordinal_expression = 3 end;
Если значение ordinal_expression не содержит ни одного из тех, что указаны в метках ( 1 , 2 , 3 ), то выполняется оператор, который следует сразу за оператором case .
3. Какое назначение блока else в операторе case?
Оператор , размещенный после else , выполняется в том случае, если значение селектора не отвечает ни одной из указанных меток.
4. Пример использования оператора case без использования блока else.
Задано число n ( n = 1..3 ), которое есть номером функции. По значению n вычислить:
Фрагмент кода, который решает данную задачу:
. case n of 1: y:=sin(x); 2: y:=cos(x); 3: y:=sin(x)/cos(x); end; .
5. Пример использования оператора case с использованием блока else .
Написать фрагмент программного кода, который по заданному номеру месяца n определяет количество дней в этом месяце. Количество дней сохраняется в переменной k .
case n of 2: k:=28; 4, 6, 9, 11: k:=30; else k:=31; end;
6. Пример использования оператора case , в котором метки задаются диапазоном значений.
Фрагмент кода, в котором по номеру дня n = 1..7 , определяется выходной этот день ( true ) или рабочий ( false ).
. case num of 1..5: f_day_off := false; 6,7: f_day_off := true; end; .
Программирование: теория и практика
- C# (176)
- Практика (46)
- MS Visual Studio 2010 (34)
- MS Visual Studio 2017 (7)
- MS Visual Studio 2019 (13)
- ADO .NET (7)
- Практика (31)
- Borland C++ Builder 2007 (16)
- MS Visual Studio 2010 (18)
- Visual C++ (133)
- Практика (6)
- Теория (102)
- Практика (1)
- Теория (21)
- Практика (1)
- Теория (21)
- Практика (20)
- Delphi-7 (4)
- Embarcadero RAD Studio 2010 (18)
- Практика (4)
- Теория (92)
- SQL (4)
- C++. Шаблоны классов. Полная специализация. Частичная специализация 25 июня, 2023
- C++. Множественное наследование. Дублирование класса и его данных. Проблема ромба 7 июня, 2023
- C++. STL. Алгоритмы обрабатывающие последовательность в целом 23 мая, 2023
- C++. STL. Модифицирующие методы. Часть 4. Алгоритмы, извлекающие из последовательности отдельные элементы или группы элементов 5 мая, 2023
- C++. STL. Алгоритмы выполняющие замену элементов последовательности 31 марта, 2023
- C++. STL. Алгоритмы. Алгоритмы обмена значениями элементов последовательности 21 марта, 2023
- C++. STL. Алгоритмы. Алгоритмы, изменяющие все элементы последовательности 20 марта, 2023
- C++. STL. Алгоритмы для работы с множествами 15 марта, 2023
- C++. STL. Немодифицирующие алгоритмы 4 марта, 2023
- C++. STL. Алгоритмы, не изменяющие значения и порядок следования элементов 24 февраля, 2023
При использовании материалов сайта, ссылка на сайт обязательна.
Паскаль с нуля [ч9]. Оператор выбора case-of и решение задачи про дни недели
Источник: www.bestprog.net
Оператор выбора case
Если один оператор if может обеспечить выбор из двух альтернатив, то оператор выбора case позволяет сделать выбор из произвольного числа имеющихся вариантов. Он состоит из выражения, называемого селектором (selection — выбор альтернативы), и списка параметров, каждому из которых предшествует список констант выбора (список может состоять и из одной константы).
Формат записи оператора case:
Оператор case работает следующим образом. Сначала вычисляется значение выражения-селектора, затем обеспечивается реализация того оператора, константа выбора которого равна текущему значению селектора. Если ни одна из констант не равна текущему значению селектора, выполняется оператор, стоящий за словом else. Если слово else отсутствует, активизируется оператор, находящийся за словом end, т. е. первый оператор за границей case.
Селектор должен относиться к одному из целочисленных типов (находящихся в диапазоне — 32768..32767): булевскому, литерному или пользовательскому. Список констант выбора состоит из произвольного количества значений, или диапазонов, отделенных друг от друга запятыми. Границы диапазона записываются двумя константами через разграничитель «..».
Тип констант в любом случае должен совпадать с типом селектора. В синтаксическом описании, приведенном выше, предполагается использование одного оператора для каждой альтернативы, но при необходимости можно задать несколько операторов, сгруппировав их в составной оператор. В то же время ветвь else допускает использование последовательности операторов, разделенных символом «;».
Правила использования оператора сase. При использовании оператора выбора case должны выполняться следующие правила:
1. Значения выражения «переключателя», записанного после служебного слова case, должны принадлежать дискретному типу (лат. discretus — прерывистый, дробный, состоящий из отдельных частей); для целого типа они должны лежать в диапазоне integer.
2. Все константы, предшествующие операторам альтернатив, должны иметь тип, совместимый с типом выражения.
3. Все константы в альтернативах должны быть уникальны в пределах оператора варианта (т. е. повторения констант в альтернативах не допускаются); диапазоны не должны пересекаться и не должны содержать констант, указанных в данной или других альтернативах.
Формы записи оператора case.
Селектор интервального типа:
1..10 : Writeln (‘число ‘, I: 4, ‘ в диапазоне 1- 10’);
11.. 20 : Writeln (‘число ‘, I:4, ‘ в диапазоне 11-20’);
21.. 30 : Writein (‘число’, I:4, ‘ в диапазоне 21-30’)
else Writeln (‘число ‘, I:4, ‘ вне пределов контроля’);
Селектор целочисленного типа:
Селектор перечисляемого пользовательского типа:
Season: (Winter, Spring, Summer, Autumn) ;
Suauner: Writeln (‘ Summer’) ;
Пример 2. Составить программу, которая по введенному пользователем номеру дня недели выводит на экран его название.
Write (‘Введите номер дня недели: ‘);
В данном примере на экран выводится приглашение: ‘Введите номер дня недели:’, с клавиатуры считывается целочисленное значение дня недели и присваивается переменной Day. Затем в зависимости от значения селектора DAY обеспечивается реализация того оператора, константа выбора которого равна текущему значению селектора.
Например, если значение Day равно 3, то реализуется оператор Writeln(‘Cpeдa’). Если значение Day равно 7, а ни одна из констант не равна этому значению селектора, то выполняется оператор, стоящий за словом else (на экран выводится текст ‘Воскресенье’). Если слово else отсутствует, активизируется оператор, находящийся за словом end, т. е. первый оператор за границей case. Если значение Day не равно значению ни одной из констант выбора (например, Day=8 или Day=0), то активизируется оператор, находящийся за словом end, т. е. первый оператор за границей case — оператор end.
Источник: studfile.net
Оператор выбора case of
Условная конструкция if then else позволяет нам реализовать несколько ветвлений в программе. Та же задача может быть реализована, более простым способом, с помощью оператора выбора — case of.
Синтаксис оператора case следующий:
case (выражение) of метка1: оператор1; метка2: оператор2; . меткаN: операторN else операторE; end;
Где метка1..N — метки регистра или входные значения, которые могут быть целыми числами, символами, логическими или перечисляемыми элементами данных.
Оператор1..N — оператор Паскаля, каждый из них может иметь одну или несколько меток регистра, связанных с ним.
ОператорE — выполняется только в том случае, если не было совпадения метки и выражения.
Оператор 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:
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:
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.
Рассмотрим пример программы конвертации номера дня недели в название:
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, оператора выбора, используется для присваивания переменной информации об ошибке.
Источник: programm.top