You need to enable JavaScript to run this app.

Skip to main content

Posting Freak
Case...Of
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 : ‘Wink;
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.
[Resim: 114ld.jpg]



Ben göremem daha uzun boyunu
Ahret derler kısaltamam yolunu
Bugün Sahı Merdan sarsın oglunu
Yetis Ya Üseyin baban gidiyo

İçerik sağlayıcı paylaşım sitesi olarak hizmet veren Pir Zöhre Ana Forum sitemizde 5651 sayılı kanunun 8. maddesine ve T.C.K'nın 125. maddesine göre tüm üyelerimiz yaptıkları paylaşımlardan kendileri sorumludur. Sitemiz hakkında yapılacak tüm hukuksal şikayetleri İletişim bağlantısından bize ulaşıldıktan en geç 3 (üç) gün içerisinde ilgili kanunlar ve yönetmenlikler çerçevesinde tarafımızca incelenerek, gereken işlemler yapılacak ve site yöneticilerimiz tarafından bilgi verilecektir.