Case…Of

Bir önceki konuda bahsedilen kontrol deyimi if..then..else genellikle az sayıda olan karşılaştırmalarda kullanılır. Ama eğer yapılan karşılaştırma çok karmaşıksa o zaman bu deyimi kullanmak oldukça zor olur ve çok fazla miktarda mantık hataları bulunur. Bunu engellemek için blok if deyimi diyebileceğimiz Case yapısını kullanırız.

Case yapısında karşılaştırmanın yapılacağı değişkenin alabileceği değerler göre çeşitli işlemleri toplu olarak yapabiliriz. Bir önceki konuda gösterdiğimiz örneği ele alalım. Bir if deyimi için oldukça karmaşık olan bu örnekği bir de case ile çözelim. Tabii öncelikle Case’in genel yazılışını veriyoruz.

case degişken of
durum-1 : işlem(ler);

durum-n : işlem(ler);
end;

Veya

case değişken of
durum-1 : işlem(ler);

durum-n : işlem(ler);
else
işlem(ler)
end;

Durum dediğimiz yerlerde bir yada daha fazla, virgülle ayrılmış, sabitler veya aralıklar olabilir. Mesela :

case Ch of
‘A’..’Z’, ‘a’..’z’ : WriteLn(‘Harf’);
‘0’..’9′ : WriteLn(‘Rakam’);
‘+’, ‘-‘, ‘*’, ‘/’ : WriteLn(‘Operator’);
else
WriteLn(‘Özel karakter’);

Else kısmı ise tamamen seçimliktir. İstemezseniz kullanmayabilirsiniz. Şimdi gelelim örneğimize… Eğer daha bakmadıysanız önceki konuyu (if-then-else)okumanızı tavsiye ederim. Yine de soruyu tekrar soruyorum. Bu sorunun hiçbir amacı olmadığını sadece bir örnek olduğunu belirtmek isterim. Boşboşuna “Buna bu nedir?..Ne işe yarar?..Ben kimim?.. Niye burdayım?” gibi felsefi konulara girmeyin. Siz örneği anlayın yeter.

Yazdığımız bir programda girilmiş olan sayı eğer 0’dan büyükse ve 128’den küçükse I değişkenine 1 eklesin, 128..256 arasında ise I’ya 10 eklesin, 256’dan büyükse I’ya 100 eklesin. Aynı zamanda eğer bu sayı 0’dan küçükse ve –127’den büyükse 1 eksiltsin, -127..-255 arasındaysa 10 eksiltsin ve –255’den de küçükse I’dan 100 eksiltsin.

Const
I : integer = 500;
Var
Sayi : integer;
Begin
Write(‘Bir sayı girin : ‘);
Readln(Sayi);
If (sayi > 0) and (sayi < 128) then
I := I+1;
If (sayi >= 128) and (sayi < 256) then
I := I+10;
If (sayi >= 256) then
I := I+100;
If (sayi < 0) and (sayi > -127) then
I := I-1;
If (sayi <= -127) and (sayi > -255) then
I := I-10;
If (sayi =< -255) then
I := I-100;
Writeln(‘İşlem sonucu I da kalan=‘ , I);
End.
Const
I : integer = 500;
Var
Sayi : integer;
Begin
Write(‘Bir sayi girin : ‘);
readln(Sayi);
case Sayi of
0..128: I:= I + 1;
128..256: I := I + 10 ;
256..32767 : I := I + 100;
-127..0 : I := I – 1;
-255..-128 : I := I – 10;
-32768..-256 : I := I – 100;
end;
writeln(‘Islem sonunda I değeri =’,I);
end.

Yazar: webmaster

sitemizde 2 yazı eklemiş...

Share