Konu: C++ Dersleri
Tekil Mesaj gösterimi
Alt 02 Ocak 2010, 14:05   #11
Çevrimdışı
toXic
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: C++ Dersleri




break Komutu

Bazı durumlarda, döngüyü aniden sonlandırmak isteriz. Bunun için 'break' komutunu kullanırız. Döngüyü aniden sonlandırmak veya döngüyü kırmak işlemini, zaten daha önce switch case'lerde kullanmıştık. Bahsetmediğimiz şey, bunun her döngü içersinde kullanılabileceğiydi.
Aşağıdaki programı inceleyelim:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
/* 0 ile 99 arasında tesadüfi sayılar üreten bir programın, kaçıncı seferde 61 sayısını bulacağını yazan program aşağıdadır. */ #include<stdio.h> int main( void ) { int i,tesadufi_sayi; int deneme_sayisi = 0; //while içinde 1 olduğundan sonsuza kadar döngü çalışır. while( 1 ){ //tesadufi_sayi değişkenine, 0 ile 99 arasında //her seferinde farklı bir sayı atanır. //rand( ) fonksiyonu tesadüfi sayı atamaya yarar. //mod 100 işlemiyse, atanacak sayının 0 ile 99 //arasında olmasını garantiler. tesadufi_sayi = rand() % 100; //Döngünün kaç defa çalıştığını deneme_sayisi //değişkeniyle buluruz. deneme_sayisi++; //Eğer tesadufi sayı 61'e eşit olursa, //döngü kırılıp, sonlandırılır. if( tesadufi_sayi == 61 ) break; } printf("Toplam deneme sayısı: %d\n",deneme_sayisi); return 0; }


Program için koyulmuş açıklamalar ( comment ) zaten neyin n'olduğunu açıklıyor. Kısaca bir şeyler eklemek gerekirse, bitişinin nerede olacağını bilmediğimiz bir döngüyü ancak, break komutuyla sonlandırabiliriz. Şartlar sağlandığında, break komutu devreye girer ve döngü sonlandırılır. Bunun gibi bir çok örnek yaratmak mümkündür.
continue Komutu

break komutunun, döngüyü kırmak için olduğundan bahsetmiştik. Bunun dışında işlem yapmadan döngüyü devam ettirmek gibi durumlara da ihtiyacımız vardır. Bunun içinde continue ( Türkçe: devam ) komutunu kullanırız.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
/* Sadece tek sayıları yazdıran bir program */ #include<stdio.h> int main( void ) { int i; for( i = 0; i < 10; i++ ) { //i değişkeninin 2'ye göre modu //0 sonucunu veriyorsa, bu onun //bir çift sayı olduğunu gösterir. //Bu durumda ekrana yazdırılmaması //için döngü bir sonraki adıma geçer. if( i%2 == 0 ) continue; printf("%2d\n",i); } return 0; }


0 ile 10 arasındaki tek sayıları gösteren program örneğini yukarda görebilirsiniz. Elbette ki bu işi daha farklı ve daha iyi yapan bir program yazabilirdik. Ama şimdilik continue komutunun nasıl kullanıldığını inceleyelim.
Program bir for döngüsü çalıştırmaktadır. Her defasında i değişkenin 2'ye göre modu alınır. Eğer sonuç 0'sa, bu sayının çift olduğunu gösterir. Dolayısıyla, bunun ekrana yazdırılmaması gerekir. Bu yüzden, döngü içersindeki işlemleri sürdürmek yerine, altta kalan kodları atlarız. Burada continue komutu kullanılır ve kullanıldığı noktadan itibaren olan işlemler yapılmaz. Döngü başa döner, aynı işlemleri yapar. Bu sefer i tek sayı olacağından continue komutu çalışmaz ve sayıyı ekrana bastırırız.
goto Yapısı

C programlama dilinde bulunan bir başka yapı, goto deyimidir. Koyacağınız etiketler sayesinde, programın bir noktasından bir başka noktasına atlamanızı sağlar. goto, bir döngü değildir ancak döngü olarak kullanılabilir.
goto, çalışabilmek için etiketlere ihtiyaç duyar. Etiketler, vereceğiniz herhangi bir isme sahip olabilir. Etiket oluşturmak için bütün yapmanız gereken; etiket adını belirleyip, sonuna iki nokta üst üste eklemek ( : ) ve programın herhangi bir yerine bunu yazmaktır. goto deyimi kullanarak bu etiketleri çağırırsanız, etiketin altında bulunan kodlardan devam edilir. goto ve etiketlere dair genel yapıyı, akış diyagramıyla birlikte aşağıda bulabilirsiniz:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
label_name: . . . if( kosul ) { goto label_name } . . .

NOT: goto deyimi tek başına da kullanılabilir. Fakat mantıksal bir sınama olmadan, goto yapısını kullanmanız, sonsuz döngüye neden olacaktır.
Şimdi goto ifadesiyle basit bir döngü örneği oluşturalım. Önceki seferlerde olduğu gibi ekrana 10 defa "Merhaba Dünya" yazdıralım:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
#include<stdio.h> int main( void ) { int i = 0; // baslangic_noktasi adinda bir etiket koyuyoruz. // i degiskeni 10 degerine ulasmadigi surece, // program buraya donecektir. baslangic_noktasi: printf( "Merhaba Dünya\n" ); // i degerini arttiriyoruz. i++; // i degeri kontrol ediliyor. Sayet 10'dan kucukse, // en basa donuyor. if( i<10 ) goto baslangic_noktasi; return 0; }

İstediğiniz sayıda etiket koyup, goto kullanarak, programın herhangi bir noktasına ulaşabilirsiniz. Programınız, etiket altında kalan kısımdan itibaren çalışır. goto yapısıyla gelen esneklik, ilk bakışta oldukça güzel görünüyor. Ancak goto için birçok kaynak, "ya hiç kullanmayın ya da olabildiğince az kullanın" demektedir.
Okunup, anlaşılması zor ve üzerinde çalışılması güç bir koddan, herkesin uzak durması gerekir. İngilizce'de, karman çorman koda, "spagetti kod" adı verilmiştir. goto deyimi, kodunuzun spagetti koda dönüşmesine neden olur. Çünkü program akışının takibini zorlaştırıp, kodun okunabilirliğini azaltır. Diliyorsanız, goto deyimini kullanabilirsiniz. Ama zorunlu kalmadıkça kaçınmak en iyisi...
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları reklam ver Benimmekan Mobil Sohbet