Örnek: Dışarıdan rast gele girilen 10 tane sayıdan kaç tanesi tek ve kaç tanesi çift ayrıca tekleri ve çiftleri ayrı ayrı toplayan programı yazınız. var i,tek,cif,tektop,ciftop,sayi:integer; begin tek:=0;cif:=0; tektop:=0;ciftop:=0; for i:=1 to 10 do write(i,'. sayiyi giriniz : '); readln(sayi); if sayi mod 2=0 then cif:=cif+1; ciftop:=ciftop+sayi; end else begin tek:=tek+1; tektop:=tektop+sayi; end; writeln(tek,' Adet tek sayı girdiniz bunların toplamı = ',tektop); writeln(cif,' Adet cift sayı girdiniz bunların toplamı = ',ciftop); readln; end.
5.2. 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 örneği bir de case ile çözelim. Tabii öncelikle Case’in genel yazılışını veriyoruz.
case degişken of durum-1 : işlem(ler); 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 ya a 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.
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. 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. if ile çözüm 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
Case of ile çözüm 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.
Örnek: Aşağıda kişinin yaşı girildiğinde, yaşına uygun mesajlar veren bir Pascal programı verilmiştir. Var yas:integer; Begin Write(‘Yaşınızı Giriniz :’); ReadLn(yas); CASE yas OF 0..5:Writeln(‘Yaşınız 0-5 arasında’); 6..15:Writeln(‘Yaşınız 6-15 arasında’); 16..35:Writeln(‘Yaşınız 16-35 arasında’); 36..50:Writeln(‘Yaşınız 36-50 arasında’); 51..85:Writeln(‘Yaşınız 51-85 arasında’); else Writeln(‘Çok Yaşayın’); end; Readln; End.
Örnek : Dışardan iki sayı ve işlem okuyup işleme göre sonucu hesaplayıp yazdıran programı yazınız. var x,y:integer; a:char; sonuc: real; begin writeln('1.sayıyı giriniz..');readln(x); writeln('2.sayıyı giriniz...');readln(y); writeln('işlem seciniz....');readln(a); case a of '+':sonuc:=x+y; '-':sonuc:=x-y; '/':sonuc:=x/y; '*':sonuc:=x*y; else write('yanlış işlem yaptınız'); end; write('işlemim sonucu:',sonuc:4:2); readln; end.