7. Bölüm Atlama, Karar ve Çevrim Kontrol Yapıları
Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ
96
7.1. Atlama Komutları
Program akışının yönlendirilmesinde atlama deyimleri kullanılmaktadır. mikroC derleyicisinin
desteklediği atlama deyimleri şunlardır:
goto
break
continue
return
goto
goto deyimi, program akışının herhangi bir şarta bağlı olmaksızın yönlendirilmesi amacıyla
kullanılmaktadır (Şekil 7.1). Programı karmaşıklaştırdığı ve mantık hatalarına yol açtığı
gerekçesiyle yapısal programlamada kullanılması önerilmemektedir.
Program akışının goto deyiminin bulunduğu noktadan daha önceki bir konuma yönlendirilmesi
Geri Sapma, daha sonraki bir konuma yönlendirilmesi de İleri Sapma olarak
adlandırılmaktadır.
Şekil 7.1. Şartsız Dallanma (goto) komutu
...
goto Etiket;
…
…
…
Etiket:
...
(b) İleri Sapma
...
Etiket:
…
…
…
goto Etiket;
...
(a) Geri Sapma
7. Bölüm: Atlama, Karar ve Çevrim Kontrol Yapıları
97
Örnek
(01)
Şartsız Dallanma
( goto )
Program Kodları
Ekran Çıktısı
Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ
98
break
break deyimi blok sonundan itibaren program akışının devam etmesi amacıyla kullanılmaktadır.
Not: Çevrim Kontrol Komutları konusunda örnek verilmiştir.
continue
continue deyimi çevrim kontrol blokları içerisinde kullanılarak, kullanıldığı noktadan blok
sonuna kadar olan kodların atlanarak o çevrim turunun sonlandırılmasını sağlar. Eğer şart ifadesi
True değer üretiyorsa çevrim devam eder.
Not: Çevrim Kontrol Komutları konusunda örnek verilmiştir.
return
return deyimi fonksiyondan geriye değer döndürmek amacıyla kullanılmaktadır.
Not: Metotlar konusunda örnek verilmiştir.
7. Bölüm: Atlama, Karar ve Çevrim Kontrol Yapıları
99
7.2. Karar Kontrol Komutları
Karar Kontrol Komutları, program akışının birtakım koşullara bağlı olarak kontrol edilmesi,
yönlendirilmesi amacıyla kullanılır. Karar verme işlemlerinde başta Karşılaştırma ve Mantıksal
Operatörleri olmak üzere çeşitli operatörlerden yararlanılmaktadır.
C# derleyicisi tarafından desteklenen Karar Kontrol Komutları şu şekilde sınıflandırılabilir:
Şartlı Dallanmalar (if) (?)
Çoklu Dallanmalar (switch) (if / else / else if …)
Şartlı Dallanmalar (if)
if komutu; belirtilen şarta göre program akışını yönlendirerek, ilgili program satırı ya da
bloğunun çalıştırılmasını sağlayan kontrol komutudur. if komutları bloklu yapıda ve iç-içe
kullanılabilmektedir. if komut kullanılmasına yönelik akış şeması ve programlama formatı Şekil
7.2’de görülmektedir.
Şekil 7.2. Şartlı Dallanma (if) komutu
...
if(şart_ifadesi)
{
…
…
}
else
{
…
…
}
...
(b)
...
if (şart_ifadesi)
{
…
…
}
...
(a)
KOŞUL
İŞLEM
(A) İŞLEM
(B)
TRUE
FALSE KOŞUL
İŞLEM
TRUE
FALSE
Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ
100
Örnek
(02)
Şartlı Dallanma
( if )
Program Kodları
Ekran Çıktısı
7. Bölüm: Atlama, Karar ve Çevrim Kontrol Yapıları
101
Örnek
(03)
Şartlı Dallanma
( if ) Klavyeden girilen sayının TEK veya ÇİFT olduğunun bulunması.
Program Kodları
Ekran Çıktısı
Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ
102
?:
?: koşul operatörü, şarta bağlı olarak çalıştırılacak program kodunun belirtilmesini sağlayan
deyimdir (Şekil 7.3). Şart ifadesi true değer üretiyorsa deyim_true, değilse deyim_false
çalıştırılır.
Şekil 7.3. Çoklu Dallanma ( ?: ) komutu genel formatı
Örnek
(04)
Koşul Operatörü
( ?: )
Program Kodları
Ekran Çıktısı
...
(Şart) ? deyim_true : deyim_false;
...
7. Bölüm: Atlama, Karar ve Çevrim Kontrol Yapıları
103
Çoklu Dallanma (if / else if / else )
if dallanma komutlarının iç içe kullanılması ile çoklu dallanma yapmak da mümkündür. if
komutu ile çoklu dallanma yapılmasına yönelik program kodları Şekil 7.4’te görülmektedir.
Şekil 7.4. Çoklu Dallanma (if/else if /else ) komutu
...
if(şart_ifadesi_1)
{
…
…
…
}
else if (şart_ifadesi_2)
{
…
…
…
}
else
{
…
…
…
};
...
(b)
Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ
104
if karar kontrol komutunun farklı kullanımları Şekil 7.5’te görülmektedir.
Format Örnek
if (şart) Deyim_1; if(x==5) ++a;
if (şart) Deyim_1; else Deyim_2; if(x==5) ++a; else --a;
if (şart) {
…
}
if(x==5){
++a;
++b;
}
if (şart){
…
}
else {
…
}
if(x==5) {
++a;
++b;
}
else {
--a;
--b;
}
if(şart_1) Deyim_1;
else if (şart_2) Deyim _2;
else if (şart_3) Deyim _3;
else Deyim _4;
if(x==1) a *=2;
else if (x==2) a *=4;
else if (x==3) a *=6;
else a *= 13;
Şekil 7.5. Şartlı Dallanma Kullanımları
7. Bölüm: Atlama, Karar ve Çevrim Kontrol Yapıları
105
Örnek
(05)
Çoklu Dallanma
( if / else if / else)
Program Kodları
Ekran Çıktısı
Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ
106
Çoklu Dallanma Komutu (switch )
switch çoklu dallanma komutu, program akışının çoklu yönlendirilmesi amacıyla kullanılan bir
karar kontrol komutudur. switch komutunun kullanılmasına yönelik program kodları Şekil
7.6’da görülmektedir. switch deyimi, program akışının ifade’nin karşılığı case satırına
yönlendirilmesini sağlar. case satır sonlarında break deyimi kullanılmadığı taktirde,
yönlendirilen case ve altındaki satırlar da çalıştırılır.
Şekil 7.6. Çoklu dallanma (switch) komutu
…
switch (ifade)
{
case Sabit_İfade_1 : Deyim_1; break;
case Sabit_ifade_2 : Deyim_2; break;
.
.
.
case Sabit_İfade_n : Deyim_n; break;
[default : Deyim;]
}
…
switch
case 1
… case 2
… case n
… default
…
1 2 n Diğer
7. Bölüm: Atlama, Karar ve Çevrim Kontrol Yapıları
107
Örnek
(06)
Çoklu Dallanma
(switch)
Program Kodları
…
i=3;
switch(i){
case 0:
case 1:
case 2:
case 3:++a; break;
case 4:
case 5:++b;
case 6:
case 7:++c;
default: ++d;
}
…
Açıklamalar
i indis değeri 0, 1, 2 ve 3 olduğunda sadece a’nın değeri 1 artırılır.
i indis değeri 4 veya 5 olduğunda ise b, c, ve d’nin üçünün de değeri 1 artırılır.
i indis değeri 7 olduğunda ise c ve d’nin değeri 1 artırılır.
i indis değeri case ile belirtilen 0-7 arası sabitlerden farklı bir değer ise sadece d’nin
değeri 1 artırılır.
Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ
108
Örnek
(07)
Çoklu Dallanma
(switch)
Program Kodları
Ekran Çıktısı
7. Bölüm: Atlama, Karar ve Çevrim Kontrol Yapıları
109
Örnek
(08)
Çoklu Dallanma
(switch)
Program Kodları
Ekran Çıktısı
Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ
110
7.3. Çevrim Kontrol Komutları
Bir program parçasının tekrar tekrar çalıştırılması amacıyla kullanılan çevrim kontrol komutları
şu şekilde sınıflandırılabilir:
Sayaç Çevrimleri (for)
Dışlayıcı Çevrimler (do)
Dışlayıcı Olmayan Çevrimler (do / while)
Sonsuz Çevrimler
Sayaç Çevrimi (for)
for sayaç çevrimi sayesinde, bir program bloğu tanımlanan sayı kadar tekrarlanabilmektedir. for
çevriminde komutların tekrar edilme sayısı bir sayaç değişkeni (iteratör) yardımıyla kontrol
edilmektedir. Şekil 7.7’de for sayaç çevrim komutu kullanımı anlatılmaktadır. Burada i iteratör
değeri 1 başlayıp n değerini alana kadar her i değeri için ilgili program bloğu çalıştırılmaktadır.
7. Bölüm: Atlama, Karar ve Çevrim Kontrol Yapıları
111
for Çevrimi Açıklama
for( ; ; )
{
.
.
.
}
(Sonsuz Çevrim)
Bu çevrimde blok sürekli çalıştırılır.
for(i=0 ; i<=10 ; ++i)
{
.
.
.
}
i'nin değeri 0’dan başlayarak 1’er 1’er artar.
i'nin aldığı her değer için blok çalıştırılır.
i’nin değeri 10’dan büyük olduğunda ise çevrim sona
erer.
Şekil 7.7. Sayaç Çevrim ( for ) kontrol komutu
…
for ( Başlangıç_Değerleri ; Şart_İfadeleri ; Sayaçlar )
{
.
.
.
}
…
Çevrim Bloğu
for(i=0;i<10;++i)
TRUE
FALSE
Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ
112
Örnek
(09)
Sayaç Çevrimi
(for)
Program Kodları
Ekran Çıktısı
7. Bölüm: Atlama, Karar ve Çevrim Kontrol Yapıları
113
Örnek
(10)
Sayaç Çevrimi
(for)
Program Kodları
Ekran Çıktısı
Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ
114
Örnek
(11)
Sayaç Çevrimi
(for)
Program Kodları
Ekran Çıktısı
7. Bölüm: Atlama, Karar ve Çevrim Kontrol Yapıları
115
Örnek
(12)
Sayaç Çevrimi
(for)
Program Kodları
Ekran Çıktısı
Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ
116
Örnek
(13)
Sayaç Çevrimi
(for)
Program Kodları
Ekran Çıktısı
7. Bölüm: Atlama, Karar ve Çevrim Kontrol Yapıları
117
Dışlayıcı Çevrim (while)
while dışlayıcı (önceden kontrollü) çevrimler, şart ifadesi true sonuç verdiği sürece program bloğunun çalıştırıldığı
çevrimlerdir. while çevrimlerinde şart kontrolü çevrim başında yapılmaktadır. Dolayısıyla şart sağlanmıyorsa
çevrim içerisindeki komutlar hiç çalıştırılmayabilir. while komutunun kullanılmasına yönelik program kodları Şekil
7.8’de görülmektedir.
Şekil 7.8. Dışlayıcı çevrim (while) kontrol komutu
…
while (şart_ifadesi)
{
…
…
…
}
…
Çevrim Bloğu
TRUE
FALSE while …
Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ
118
Örnek
(14)
Dışlayıcı Çevrim
(while)
Program Kodları
Ekran Çıktısı
7. Bölüm: Atlama, Karar ve Çevrim Kontrol Yapıları
119
Dışlayıcı Olmayan Çevrimler (do/while)
do/while dışlayıcı olmayan (sonradan kontrollü) çevrimlerde şart kontrolü çevrim sonunda
yapılmaktadır. Bundan dolayı bu çevrimlerde, program bloğu bir kez çalıştırıldıktan sonra şart
kontrolü yapılmaktadır. Dolayısıyla do/while dışlayıcı olmayan (sonradan kontrollü) çevrimler
şart ne olursa olsun en az bir kez çalıştırılmaktadır. Çevrim sonundaki şart ifadesi true sonuç
verdiği sürece program bloğu yeniden çalıştırılır. do/while komutunun kullanılmasına yönelik
program kodları Şekil 7.9’da görülmektedir.
Şekil 7.9. Dışlayıcı olmayan (do/while) çevrim kontrol komutu
…
do
{
…
…
…
} while (şart_ifadesi);
…
Çevrim
Bloğu
TRUE
FALSE
do
while
Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ
120
Örnek
(15)
do/while
Dışlayıcı Olmayan Çevrimler
Program Kodları
Ekran Çıktısı
7. Bölüm: Atlama, Karar ve Çevrim Kontrol Yapıları
121
Örnek
(16)
do/while
Dışlayıcı Olmayan Çevrimler
Program Kodları
Ekran Çıktısı
Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ
122
Örnek
(17)
do/while
Dışlayıcı Olmayan Çevrimler
Program Kodları
Ekran Çıktısı
7. Bölüm: Atlama, Karar ve Çevrim Kontrol Yapıları
123
foreach
foreach çevrim yapısında, çevrim değişkeni dizi içerisindeki değerleri sırasıyla alarak ilgili blok
çalıştırılır (Şekil 7.10). foreach çevrimi dizi eleman sayısı kadar tekrar edilir.
Şekil 7.10. Çevrim (foreach) komutu
Örnek
(18)
Çevrimler
( foreach )
Program Kodları
Ekran Çıktısı
…
foreach (Çevrim_Degiskeni in Dizi)
{
.
.
}
…
Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ
124
Sonsuz Çevrimler
Sonsuz çevrim, bir program bloğunun herhangi bir şart aranmaksızın sonsuz kez tekrarlanmasını
sağlamaktadır. Sonsuz çevrimden istenirse; exit fonksiyonu kullanılarak çıkmak mümkün
olabilmektedir. Sonsuz çevrim yapılarının kullanılması Şekil 7.11’de görülmektedir.
Şekil 7.11. Sonsuz Çevrim kullanımları
…
while (true)
{
…
}
…
…
do
{
…
}while(true)
…
…
for ( ; ; )
{
…
}
…
…
Etiket:
…
…
…
goto Etiket;
…
Çevrim Bloğu
Çevrim
TRUE
7. Bölüm: Atlama, Karar ve Çevrim Kontrol Yapıları
125
Örnek
(19)
Sonsuz Çevrimler
for ( ; ; )
Program Kodları
Ekran Çıktısı
Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ
126
Örnek
(20)
Sonsuz Çevrimler
while ( true )
Program Kodları
Ekran Çıktısı
7. Bölüm: Atlama, Karar ve Çevrim Kontrol Yapıları
127
İç İçe Çevrimler (Nested Loop)
Şekil 7.12’de iç içe çevrim akış şeması ve kodlama yapıları görülmektedir.
Şekil 7.12. İç içe çevrimler
…
for (i=0 ; i<10; ++i )
for (j=0 ; j<5 ; ++j)
{
…
…
…
}
…
…
while (şart_ifadesi_1)
{
…
while (şart_ifadesi_2)
{
…
}
}
…
Çevrim Bloğu
TRUE
FALSE
TRUE
FALSE
for …
for …