Оператор выбора Case Of в Pascal.

Помимо условного оператора If в языке программирования Pascal существует оператор выбора Case of. Рассмотрим его применение на примере программы, которая выводит на экран то или иное сообщение, в зависимости от введенного числа.

Ввод логических переменных с клавиатуры.

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

GotoXY в Pascal.

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

Циклы и массивы

Примеры использования различных операторов цикла.

Примеры использования различных операторов цикла.

Массив символов.

Одномерный массив символов по своим свойствам существенно отличается от всех остальных массивов языка Паскаль. Свойства одномерного массива символов приближены к свойствам коротких строк (String).

Помимо условного оператора If в языке программирования Pascal существует оператор выбора Case of. Рассмотрим его применение на примере программы, которая выводит на экран то или иное сообщение, в зависимости от введенного числа.

Вывод сообщения на экран с помощью If.


program vetvlenija7;
uses crt;
var NUM :integer;
begin
clrscr;
writeln(‘Введите число от 1 до 4:’);
readln (NUM);
if NUM=0 then
writeln (‘Нуль’);
if NUM=1 then
writeln (‘Один’);
if NUM=2 then
writeln (‘Два’)
if NUM=3 then
writeln (‘Три’)
if NUM=4 then
writeln (‘Четыре’);
readln
end.

Эта программа выводит на экран сообщение (Нуль, Один и т. д.) в зависимости от того какое мы введем число. Однако, ту же задачу можно выполнить более простым способом с помощью оператора Case of.

Использование Case Of.


program vetvlenija7;
uses crt;
var NUM :integer;
begin
clrscr;
writeln(‘Введите число от 0 до 4:’);
readln (NUM);
case NUM of
0:writeln (‘Нуль’);
1:writeln (‘Один’);
2:writeln (‘Два’);
3:writeln (‘Три’);
4:writeln (‘Четыре’);
end;
readln
end.

В строке №8 записывается оператор выбора Case Of. Сначала записывается слово Case, затем записывается переменная, затем слово Of. После служебного слова Of идет перечисление всех возможных значений переменной (строка №9 - №13), а через двоеточие указывается действие, которое нужно сделать, если переменная принимает то или иное значение. Таким образом, если мы вводим с клавиатуры 0, то на экран выводится сообщение «Нуль» (строка №9), если вводим 1, то выводится сообщение «Один» (строка №10) и т.д.

Нам не нужно каждый раз писать конструкцию If…Then.
Достаточно указать CASE «переменная» OF, а затем для каждого значения этой переменной через двоеточие прописать вывод на экран. После перечисления всех операторов необходимо поставить служебное слово End.

case of

Запустим программу и введем любое число от 0 до 4 (например, 4)

case of.


Напишем программу, которая определяет квартал года по введенному числу месяца.

Использование Case Of Else.


program vetvlenija8;
uses crt;
var NUM :integer;
begin
clrscr;
write (‘Введите номер месяца’);
readln (NUM);
case NUM of
1,2,3: writeln (‘Первый квартал’);
4,5,6: writeln (‘Второй квартал’);
7,8,9: writeln (‘Третий квартал’);
10,11,12: writeln (‘Четвертый квартал’)
else
writeln (‘Вы неправильно указали месяц’)
end;
readln
end.

В строке №8 записываем оператор выбора Case Of. После слова Of (в строках №9 - №12) указываем возможные значения нашей переменной. Причем несколько значений можно указать в одной строке. Например, в строке №9 мы указываем 3 значения для переменной и действие, которое нужно совершить, если будут введены эти переменные. Т.е. если мы вводим с клавиатуры 1 или 2 или 3, то на экран выводится сообщение «Первый квартал».

В строке №13 записывается служебное слово Else. Если мы вводим с клавиатуры число, которое лежит вне диапазона чисел от 1 до 12, то должно совершиться действие, которое указывается после слова Else (строка №14).

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

case of else

case of else.


Дополнение к материалу.

В данном примере вместо перечисления значений переменной можно использовать диапазон значений переменной. Например, строку №9 можно записать так: 1..3: writeln (‘Первый квартал’); Т.е. сначала указывается первое значение переменной, а затем через 2 точки указывается последнее значение переменной.


Следующая статья : Циклы в Паскаль.


Комментарии  

 
+1 # Юрий 20.03.2012 17:04
А в строку 3 Примера№23. Вывод сообщения на экран с помощью If. просится NAM.
Ответить
 
 
+4 # Zzzzzz 04.12.2012 14:58
Cool 8)
Ответить
 
 
+3 # Нео 16.12.2012 14:31
Das ist fantastisch! :lol:
Ответить
 
 
+7 # Нео 16.12.2012 14:33
А теперь вопрос можно ли case вказывать как меньше 3 или больше 100?
Ответить
 
 
0 # nexta 13.03.2016 16:36
используешь

case NUM of
3:оператор;
...
100:оператор;
else
оператор;
Ответить
 
 
-1 # I 20.12.2012 13:57
а как с помощью case допустим пишешь букву и он выводит комментарий???
Ответить
 
 
0 # Zmey 14.02.2013 12:31
Case n of
a:writeln('Bukva A');
b:writeln('Bukva B');
C:...
Ответить
 
 
0 # Nastya 06.02.2014 08:06
только где буквы нужно поставить апострофы, иначе программой будут читаться как переменные
Ответить
 
 
+2 # BIG CRAB 10.01.2013 14:08
спасибо )
помогли с билетом при подготовке :-)
Ответить
 
 
-1 # AndreW 27.02.2013 14:53
Спасибо, помогли 8)
Ответить
 
 
-1 # саня 02.04.2014 06:04
:o :o :o :o :o :o :o :o :o :o :o
Ответить
 
 
0 # Леха 02.04.2014 12:24
program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils;
Var I: Integer;
A,Q,E:string;
Begin
Write('Think of a number of from 1 to 5 and press Enter');
ReadLn;
WriteLn('This number is greater than or equal to two?');
ReadLn(A);
If A='No'
Then I:=1
Else
Begin
WriteLn('This number is split into two?');
ReadLn(Q);
End;
Case Q Of
'Yes': WriteLn('This number is more than three?');
ReadLn(E); If E='Yes' Then I:=4
Else I:=2;
'No': WriteLn('This number is more than four?');
ReadLn(E); If E='Yes' Then I:=5
Else I:=4;
end;
ReadLn;
{ TODO -oUser -cConsole Main : Insert code here }
End.
Выдает ошибку:[Error] Project2.dpr(25 ): Incompatible types: 'Integer' and 'String' что делать?
Ответить
 
 
+6 # ivan 02.01.2015 05:25
Возможно все дело в оперторе case при работе со строковыми данными
Ответить
 
 
-9 # ти баран 11.11.2015 13:13
кей так не працює йому можна присвоювати тіки чилса
Ответить
 
 
+1 # zulika 17.04.2014 18:51
sposibo pomogli :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:
Ответить
 
 
0 # dfyz 19.06.2014 17:39
как с помощю оператора case выбрать модуль
Ответить
 
 
+1 # гьаджимуса 28.04.2015 15:32
;-)
Ответить
 
 
0 # GOOD BOY 24.12.2015 21:26
Выходит ошибка с надписью "Ожидалась константа". Дело в том что у меня в операторе CASE вместо элемента списка стоит перемененная, буква которая с каждым запуском программы разная из-за рандома. Так-вот можно ли поставить переменную как элемент списка выбора в CASE что-бы ошибки не было. :P
Ответить
 
 
+2 # илья 16.01.2016 07:23
:lol: :lol: :lol: :lol: :lol:
Ответить
 
 
+1 # спс 23.08.2016 10:35
:lol:
Ответить
 
 
-12 # влад 11.11.2016 13:16
:-x :o :oops: :P :sigh: всё правильно я программист))
Ответить
 
 
-3 # Андрей 19.11.2016 17:17
Помогите пожалуйста с 2-мя задачами в паскале!!!!!!!! !!! 1)Нарисовать N кругов с радиусом от 5 до 50 в случайном месте случайным цветом в рамке. 2) Найти сумму 1/2+2/3+3/4+... +29/30
Ответить
 
 
+1 # Casil 16.03.2018 10:36
uses graphABC;
var x1,y1,x2,y2,i,n,x,y,r:integer;
begin
randomize;
write('n=');
readln(n);
x1:=20;
y1:=20;
x2:=windowwidth-20;
y2:=windowheight-20;
setbrushstyle(bsClear);
setpenwidth(5);
setpencolor(clRed);
rectangle(x1,y1,x2,y2);
setpenwidth(2);
for i:=1 to n do
begin
r:=5+random(46) ;
x:=x1+r+5+rando m(x2-2*(x1+r)-1 0);
y:=y1+r+5+rando m(y2-2*(y1+r)-1 0);
setpencolor(clr andom);
circle(x,y,r);
end;
end.
Ответить
 
 
-6 # дб 05.12.2016 18:23
:sigh: :roll: :P :sad: :sad: :-|
Ответить
 
 
+3 # gex 06.11.2017 18:00
спасибо очень нужная команда :lol: :lol: :lol:
Ответить
 
 
+2 # Vasil 29.09.2021 18:36
Хороший оператор case of
Ответить
 
 
-3 # Serg 06.10.2021 11:17
:D
Ответить
 

Добавить комментарий

   ГлавнаяПаскальВетвления в ПаскальОператор выбора Case Of в Pascal.