Пример программы с оператором case

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

case переключатель of
список выбора 1 : оператор1 ;
.
список выбора N : операторN ;
else список операторов
end;

Переключатель представляет собой выражение порядкового типа или строкового типа, а списки выбора содержат константы совместимого по присваиванию типа. Как и в операторе if , ветка else может отсутствовать.

Оператор case работает следующим образом. Если в одном из списков выбора найдено текущее значение переключателя, то выполняется оператор, соответствующий данному списку. Если же значение переключателя не найдено ни в одном списке, то выполняется список операторов по ветке else или, если ветка else отсутствует, оператор case не выполняет никаких действий.

Список выбора состоит либо из одной константы, либо для перечислимого типа из диапазона значений вида a..b (константа a должна быть меньше константы b ); можно также перечислить несколько констант или диапазонов через запятую. Например:

PHP & MYSQL пример работы с оператором Switch Case

case Country of
‘Россия’: Capital := ‘Москва’;
‘Франция’: Capital := ‘Париж’;
‘Италия’: Capital := ‘Рим’;
else Capital := ‘Страна отсутствует в базе данных’;
end;

case DayOfWeek of
1..5: writeln(‘Будний день’);
6,7: writeln(‘Выходной день’);
end;

Списки выбора не должны пересекаться. Например, следующий фрагмент

приведет к ошибке компиляции.

Источник: pascalabc.net

Оператор выбора Case в Паскале

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

Если вариантов всего два, то можно обойтись и условным оператором IF . Но если их, к примеру, десятки, то использование конструкции if then else становится затрудинительным. В этом случае оптимален оператор CASE варианта.

Оператор выбора Case в Паскале

Синтаксис оператора case

Case n of
1:Writeln(один);
2:Writeln(два);
else Writeln(много);
end;

Читайте также:
Лучшая программа для изменения голоса для айфона

Здесь 1 и 2 это те значения, которые может принимать переменная n. Если ничего не подходит, то выполняется тот оператор, который стоит после ELSE .
Не забываем, что оператор case заканчивается END;

Рассмотрим использование оператора выбора case на языке Паскаль на примере.

Условие задачи. Написать программу в Паскаль в которой необходимо указать номер месяца. В зависимости от введённого номера, программа в Паскаль должна вывести сообщение с указанием на то, к какому времени года относится введенный номер (зима, весна, лето, осень).

SWITCH C# | ЧТО ЭТО | ПРИМЕР | СИНТАКСИС | ОПЕРАТОР МНОЖЕСТВЕННОГО ВЫБОРА | C# 15

Попробуем решить задачу, используя условный оператор if

Program vremena_goda;
Var n:integer;
Begin
Write(Введите номер месяца =);
readln(n);
// 12,1,2 — зима
// 3,4,5 — весна
// 6,7,8 — лето
// 9,10,11 — осень
if (n>=3) and (n=5) then Writeln(весна);
if (n>=6) and (n=8) then Writeln(лето);
if (n>=9) and (n=11) then Writeln(осень);
if (n=12) or (n=1) or (n=2) then Writeln(зима);
End.

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

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

С помощью оператора case приведём нашу программу к следующему виду. Сейчас она стала более понятной, нежели с оператором if.

Program vremena_goda2_1;
Var n:integer;
Begin
Write(Введите номер месяца =);
readln(n);
Case n of
1:Writeln(зима);
2:Writeln(зима);
3:Writeln(весна);
4:Writeln(весна);
5:Writeln(весна);
6:Writeln(лето);
7:Writeln(лето);
8:Writeln(лето);
9:Writeln(осень);
10:Writeln(осень);
11:Writeln(осень);
12:Writeln(зима)
else Writeln(Вы ввели неправильный месяц);
end;
End.

В операторе case можно использовать перечисление через запятую

case x of
1,2,3,4: writeln(от одного до четырёх);

Программа понятна, но всё же, в ней достаточно много строк. Используя символ запятой в качестве перечисления, можно существенно уменьшить количество строк в программе:

Program vremena_goda2_2;
Var n:integer;
Begin
Write(Введите номер месяца =);
readln(n);
Case n of
1,2,12:Writeln(зима);
3,4,5:Writeln(весна);
6,7,8:Writeln(лето);
9,10,11:Writeln(осень);
else Writeln(Вы ввели неправильный месяц);
end;
End.

Читайте также:
Отзывы вшэ программа двух дипломов

Нашу программу можно ещё немного подсократить,если вместо запятой при указании диапазона использовать ..

.
case x of:
3..5: writeln(весна);
.

Применим это знание на практике:

Program vremena_goda2_3;
Var n:integer;
Begin
Write(Введите номер месяца =);
readln(n);
Case n of
1,2,12:Writeln(зима);
3..5:Writeln(весна);
6..8:Writeln(лето);
9..11:Writeln(осень);
else Writeln(Вы ввели неправильный месяц);
end;
End.

Источник: inphormatika.ru

Урок 10. Немного про Case и goto

image

Здравствуйте, дорогие читатели! Сегодня мы с вами поговорим про оператор выбора — case и оператор безусловного перехода — goto.

Если вы спросите любого программиста или учителя информатики, что такое goto, они скажут вам, что goto — зло. Но иногда, может быть, он необходим(для общего развития). Что же такое goto? Давайте разбираться.

GoTo

Goto — оператор безусловного перехода. Все, что необходимо вам — специальная метка. Вместо того, чтобы объяснять вам, что надо делать с этой меткой и куда ее вставлять, я решу простую задачу и вы сразу все поймете.

Условие задачи: считывать число и суммировать его со всеми предыдущими числами, пока это число меньше десяти и больше минус десяти.

program example; label 1; //Объявляем все метки через запятую var s, a: integer; // Блок меток расположен перед блоком объявление переменных. begin s := 0; a := 0; 1: // Наша метка S := S + a; // Плюсуем read(a); //Считываем а if (a > 10) or (a < -10) then write(s) // Если (a >10) or (a < -10), прекращаем работу программы else goto 1; // Иначе перемещаемся в метку end.

Более подробно про goto мы поговорим в следующий раз.

Case

Чаще всего case называют оператором выбора. Итак, предположим, что переменная по условию задачи может принимать ограниченный диапазон значений или только конкретные значения. Текущее значение переменной (селектора) сравнивается со значениями-случаями, перечисленными в теле оператора case. Если значение селектора совпадает с каким-либо значением в операторе case, то выполняется ветка, относящаяся к данному случаю.

Читайте также:
Программа чтобы работал джойстик

Общая форма записи:

case of
значение1 : оператор;
значение2 : оператор;
. .
значениеN : оператор
else оператор;
end;

В операторе может быть несколько действий, то есть использоваться begin, end, а может быть пустой оператор. Значений может быть несколько.

Кстати, вы заметили, что значения выступают в роли меток?

Приведем два классических примера задач, в которых требуется case.

Задача 1.
С клавиатуры вводится цифра. Вывести ее буквенное представление.

Program Numbers; Var a : integer; Begin write(‘Введите цифру: ‘); readln(a); case a of 0 : writeln (‘Вы ввели ноль.’); 1 : writeln (‘Вы ввели единицу.’); 2 : writeln (‘Вы ввели двойку.’); 3 : writeln (‘Вы ввели цифру три.’); 4 : writeln (‘Вы ввели цифру четыре.’); 5 : writeln (‘Вы ввели цифру пять.’); 6 : writeln (‘Вы ввели цифру шесть.’); 7 : writeln (‘Вы ввели цифру семь.’); 8 : writeln (‘Вы ввели цифру восемь.’); 9 : writeln (‘Вы ввели цифру девять.’) else writeln(‘Вы ввели не цифру.’); end; end.

Составьте программу, имитирующую своеобразный калькулятор, где 1-сумма двух чисел, 2-разность двух чисел, 3-произведение двух чисел, 4-целая часть от деления, 5-остаток от деления,6 — квадратный корень числа, иначе введен неизвестный номер операции.

program Calc; var a, b: real; i, c, d: integer; begin writeln(‘Калькулятор.’); writeln(‘1 — сумма двух чисел;’); writeln(‘2 — разность двух чисел;’); writeln(‘3 — произведение двух чисел;’); writeln(‘4 — целая часть от деления;’); writeln(‘5 — остаток от деления;’); writeln(‘6 — квадратный корень числа.’); write(‘Введите цифру: ‘); readln(i); case i of 1: begin write(‘Введите два числа: ‘); read(a, b); writeln(a + b); end; 2: begin write(‘Введите два числа: ‘); read(a, b); writeln(a — b); end; 3: begin write(‘Введите два числа: ‘); read(a, b); writeln(a * b); end; 4: begin write(‘Введите два числа: ‘); read(c, d); writeln(c div d); end; 5: begin write(‘Введите два числа: ‘); read(c, d); writeln(c mod d); end; 6: begin write(‘Введите число: ‘); read(c); writeln(sqrt(c):3:3); end; else writeln(‘Ошибка.’); end; end.

Источник: learnpascal.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru