İf deyimi: genel biçimi şöyledir;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
if (var1 == 1) -> <if’ in içi bool türdendir(herzaman)> { // Do something. Birden fazla deyim gelebilir } else { if (var1 == 2) { // Do something else. } else { if (var1 == 3 || var1 == 4) { // Do something else. } else { // Do something else. } } } |
if deyiminin doğruysa ve yanlıssa kısmında birer deyim bulunmaktadır. Eğer programcı birden fazla deyim bulundurmak istiyorsa kırlangıç içerisine almak zorunda.
Semantic açıklama: derleyici ilk parantezin içerisindeki ifadenin sayısal degerini hesaplar. Bu deger true ise doğruysa kısmındaki deyimi calstırır, yanlssa kısmındaki deyimi atlar ve if deyiminin calsması bitmiştir. Eğer if parantezi içerisindeki ifadenin değeri false ise bu durumda else kısmından sonraki deyim çalıştırılır.
Bir if deyiminin else kısmı bulunmak zorunda değildir. Eger if deyiminin iç kısmından sonra else anahtar szcüğü gelmez ise bu else kısmı olmayan bir if deyimidir.
Bazen if deyiminin yanlışlıkla boş deyim ile kapatılmasıyla karşılasılmaktadır.
Örneğin;
1 2 |
if(<ifade>); İfade; |
Burada if parantezinden sonraki noktalı virgül bir deyim olarak if deyiminin doğruysa kısmını olusturur. Bu noktalı virgülden sonra else anahtar sözcüğü gelmediğinden dolayı if deyimi bitmiştir dolayısıyla else kısmı yoktur…
Örneğin:
1 2 3 4 5 |
if(<ifade>); İfade; İfade; Else İfade; |
Burada bloklama yapılmamasından dolayı derleyici if deyiminin bittigini düşünür. Dolayısıyla else kısmı olmayan bir if söz konusu olur.
İf deyimine dısarıdan baktıgımızda tamamı tek bir deyimdir.
…
…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
if (ifade) if (ifade) { ifade; ifade; } else ifade; else ifade; ifade; … … |
İki if deyimi için tek bir else deyimi bulunuyorsa, else kısmının, içerideki if deyiminin oldugunu kabul ediyoruz.
Örneğin:
1 2 3 4 |
İf(ifade1) if(ifade2) İfade3; else ifade4; |
eğer else kısmı dısarıdaki if’ in else ksımı olsun isteniyorsa o zaman bilinçli bloklama yapılmalıdır.
1 2 3 4 5 6 7 |
if(ifade1) { if(ifade2) İfade3; } else ifade4; |
Bir karşılaştırma doğruyken diğer karşılaştırmanın doğru olma olsılığı yoksa buna ayrık karşılaştırma denir.
1 2 3 4 5 |
x==10 x==11 a>10 a<0 karşılaştırması ayrıktır. |
Oysa a>10 a>0 karşılaştırmaları ayrık değildir. Ayrık karşılaştırmaları ayrık if deyimleriyle karşılaştırmak iyi bir teknik değildir.
1 2 3 4 5 6 7 8 9 |
Ör: if(x==1) { //………… } if(x==2) { //………… } |
ayrık karşılaştırmaları else-if biçiminde ifade edilmesi iyi bir tekniktir.
Ör:
1 2 3 4 5 6 7 8 |
if(x==1) { //………… }else if(x==2) { //…. } |
Burada artık x 1 e eşitse boşuna diğer karşılaştırma yapılmayacaktır.
birden fazla karşılaştırma söz konusu olduğunda eğer bunlardan biri doğruyken diğerinin doğru olma olsılığı yoksa bunlar karşılıklı ayrıktır ve else-if merdivenleriyle ifade edilirler.
1 2 3 4 5 6 7 8 9 10 |
if(x==1) ifade1; else if(x==2) ifade2; else if(x==3) ifade3; else ifade4; |
Birbirleriyle ilişkili fakat ayrık olmayan if deyimleri söz konusu olabilir. Bu durumda ortak paralel öğeler anlamlı bir biçimde toplanabilir.
Ör : biz x>0 iken bir şey yapmak isteyelim fakat özel olarak x>10 ikende baska birsey yapmak isteyelim
1 2 3 4 5 6 7 8 |
if(x>0) { if(x>10) { //………… } //…………… ortak işlemler için kullanılır } |
Şimdi her iki karşılaştırmada da ortak yapılcak bieşeyler varsa bu yapı bunu için uygundur.
1 2 3 4 5 6 7 |
if (a==10) if (b==20) ifade3; else ifade4; else ifade4; |
Karmaşık if deyimlerinde tekrarlanan kısımlara dikkat edilmesi ve bunlar mümkün olduğunca sadeleştirerek birleştirilmelidir. Örneğin:
1 2 3 4 5 6 7 |
if (ifade1) if (ifade2) ifade3; else ifade4; else ifade4; |
Burada ifade4 tekrarlanmaktadır. Acaba bu if deyiminin daha basit bir eşdeğeri yok mudur?
Bu işlem şöyle kısaltılabilir.
1 2 3 4 |
if (a==10 && b==20) ifade3; else ifade4; |
1 comments On Kontrol Deyimleri
Burada & ( ve) , | ( veya ) kullanımı iki şekildedir…
1.durum = if ( şart1 && şart2)
2.durum = if ( şart1 & şart2 )
1. durumda ilk önce şart1 kontrol edilir. Eğer şart1 true dönerse şart2 kontrol edilir..
2. durumda ise her durumda da 2 şartta kontrol edilir..
Sonuç aynı döner ancak çalışma prensipleri farklıdır..