You are on page 1of 4

Наредба за условен премин case

Наредбата if е добра за избирање меѓу два избора, или пак за ограничен број на
услови. Меѓутоа ако треба да се изврши избор меѓу повеќе можни избори, користењето на
оваа наредба постанува во најмала рака непријатно и макотрпно. За таа цел се користи
наредбата case. Наредбата ја тестира вредноста на споредбената променлива со неколку
понудени избори. Споредбената променлива мора да е од целоброен тип (int, char…). Кога
ќе го пронајде изборот кој се бара, ја извршува наредбата (или наредбите) кои се поврзани
со соодветниот избор.

Општата форма на case наредбата е:

Case promenliva of

1: s1;
2: s2;
3: s3;
.
.
.
end;

Блок шемата на оваа наредба за условен премин е дадена на следната слика:

Старт

Услов

1
S1
2
S2

3
S3
4
S4 Стоп
Каде што, 1, 2, 3 ... се case ознаките или влезни вредности кои би можеле да бидат
цели броеви, карактери, рационален или набројани податочни ставки. S1, S2, ... Sn се Паскал
изкази. Секој од овие искази може да има еден или повеќе од една case ознака поврзани со
неа. Изразот се нарекува case селектор или case индекс. Сase индексот може да се
претпостави како вредности кои одговараат на case ознаките. Вредности на селекторот
можат да бидат целобројни, знаковни или булов тип. Реалниот тип несмее да биде.

Сase изјавата секогаш мора да има end изјава поврзана со неа.

Следните правила важат за case наредбата :

Може да се има неограничен број на case наредби во case наредбата. Секоја case наредба
е проследена со вредност да се спореди со одредена колона.

Сase за вредностите за case наредбата мора да бидат од ист податочен тип како изразот
во case изјавата, и тоа мора да биде константа или карактер.

Компајлерот ќе го процени case изразот. Ако една од вредностите на case наредбата


одговара на вредноста на изразот таа вредност ќе се изврши. После тоа, програмата
продолжува до конечниот крај.

Ако ниту една од case влезниот податок не одговара на вредноста во изразот, тогаш
наредбата продолжува после else или друга наредба се извршува.

Сase наредбата може да содржи и комбинирани наредби (на пр. Begin ….. end block ).

Пример за case наредбата

program checkCase;
uses wincrt;
var
oddelenie: char;
begin
oddelenie := 'A';

case (oddelenie) of
'A' : writeln('Odlicno!' );
'B', 'C': writeln('Dobro napraveno' );
'D' : writeln('Ti pomina ' );
'F' : writeln('Podobro obidi se povtorno' );
end;
writeln('Vaseto oddelenie e ', oddelenie );
end.
1. Da se napi{е programa, со наредбатa case, so koja }e se pe~ati denot od sedmicata
spored pritisnat broj~an taster. Пример: 1 за понеделник, 2 за вторник и тн.

program denovi;
uses wincrt;

var
x:integer;
begin

writeln ('Vnesete broj za den od 1 do 7:');


read(x);

case x of

1: writeln ('Ponedelnik');
2: writeln('Vtornik');
3: writeln ('Sreda');
4: writeln ('Cetvrtok');
5: writeln ('Petok');
6: writeln ('Sabota');
7: writeln ('Nedela');

else
writeln ('Pogresen broj ');
end;

end.

2. Да се напише програма, со наредбата case, со која ќе се печати денот од седмицата според


притиснат буквен тастер. Пример: а за понеделник, v за вторник и тн.

program denovi;
uses wincrt;

var
x:char;
begin

writeln ('Vnesete bukva za den:');


read(x);

case x of

'p': writeln ('Ponedelnik');


'v': writeln('Vtornik');
's': writeln ('Sreda');
'c': writeln ('Cetvrtok');
'e': writeln ('Petok');
'a': writeln ('Sabota');
'n': writeln ('Nedela');

else
writeln ('Pogresna bukva');
end;

end.

You might also like