7. bölümdislitas.com/files/apg/pdf/07_apg_atlama_karar_cevrim... · 2019-02-11 · algoritma ve...

34
7. Bölüm Atlama, Karar ve Çevrim Kontrol Yapıları

Upload: others

Post on 03-Feb-2020

17 views

Category:

Documents


3 download

TRANSCRIPT

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 …

Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ

128

Örnek

(21)

İç İçe Çevrimler

(Nested Loop)

Program Kodları

Ekran Çıktısı