If...Then...Else Eğer…ise…değilse (If..then..else) Karar yapısı : Program yazarken en çok yapılan işlerin başında elinizdeki verilere bakarak bir karar vermek ve programın akışını bu karara göre yönlendirmek gelir. İyi programda gerekli yerlerde doğru ve etkili karar yapıları oluşturmak çok önemlidir. Çünkü bir programda en yavaş işleyen komutlardan birisi karşılaştırma komutlarıdır. Pascalda en çok kullanılan karşılaştırma ve kontrol komutu If..then..else dir.
If deyiminden sonra yapılacak karşılaştırmanın sonucu doğru(True) ise then deyiminden sonraki blok işler. Eğer karşılaştırmanın sonucu yanlış(False) ise bu sefer de else deyiminden sonraki blok işler.Else deyimi seçimlik bir deyimdir. Yani isterseniz, ya da gerekmezse bu kısmı kullanmayabilirsiniz. Bu durumda eğer karşılaştırma sonucu yanlış ise program bir sonraki komutla akışına devam eder.
Eğer else kullanacaksanız else den önceki satırda noktalı virgül kullanmamalısınız.
...
If then
begin
...
komutlar
...
end;
[ else
begin
...
komutlar
...
end;]
...
Karşılaştırma için kullanabileceğiniz operatörler için buraya tıklayın.
ÖRNEK:
Girilen bir sayının pozitif veya negatif olduğunu söyleyen program.
Var
Sayi : integer;
begin
write(‘Bir sayı girin : ‘);
readln(Sayi);
if Sayi < 0 then
writeln(‘Sayi negatiftir’)
else
writeln(‘Sayi Poszitiftir’);
end.
Eğer isterseniz iç içe if kullanmaya devam edebilirsiniz. Bu oldukça karmaşık bir yapı oluşturabilir ancak bazı durumlarda böylesi uygulamalar zaruri olur.
Örneğin, yazdığımız bir programda eğer girilmiş olan sayı 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 100 I’dan 100 eksiltsin. Bir okuyuşta anlaması bile zor olan böyle bir işlem için karşılaştırma işlemlerini ayrı ayrı yapmak veya iç içe if kullanmak durumunda kalırız ve tabii sonuç genellikle yanlış çıkar. Fakat biraz dikkat ve biraz da pratik yapmakla bu işi halletmek mümkündür. Şimdi size 2 çalışır program örnegi vereceğim. İkisi de doğru çalışıyor fakat birisi daha profesyonelce hazırlanmış. Örnekleri incelerseniz karşılaştırma komutlarından ilki olan if..then..else deyimi ile hiçbir probleminiz kalmaz.
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 sayı girin : ‘);
Readln(Sayi);
If sayı > 0 then
If sayı > 128 then
If sayı > 256 then
I := I + 100
Else
I := I +10
Else
I:= I+1
Else
If sayi < -127 then
If sayi < -256 then
I := I – 100
Else
I := I – 10
Else
I := I – 1;
Writeln(‘İşlem sonucu I da kalan=‘ , I);
End.