Bölüm 5: Kontrol Yapıları II (Yenilenme-Repetition) C++ Programming: Program Design Including Data Structures, Third Edition Bölüm 5: Kontrol Yapıları II (Yenilenme-Repetition)
Dersin Amacı Bu Bölümde: Döngü (looping) kontrol yapıları Sayaç-kontrollü (count-controlled), Sentinel kontrollü (sentinel-controlled), Bayrak-kontrollü ( flag-controlled), EOF-kontrollü (dosya sonu kontrollü) tekrarlanma yapıları öğrenilecektir. C++ Programming: From Problem Analysis to Program Design, Third Edition
Döngü (Looping) Döngü değişkenlerin etkin olarak kullanımının sağlanmasıdır. Bir programın giriş işlemleri, ekleme işlemleri, çarpma işlemleri sınırlı sayıda değişken kullanılarak gerçekleştirilebilir. Örnek olarak beş sayının toplamı için iki yol vardır: Her sayıya karşılık gelen bir değişken tanımlanır, bu değişkenlere giriş değerleri atanır ve bunlar toplanır. Bir döngü oluşturularak tek bir değişkenin okunması ve tüm sayıların değerlerinin bu değişkene atanarak tüm sayıların toplamı bulunabilir. C++ Programming: From Problem Analysis to Program Design, Third Edition
while Döngüsü while deyiminin genel ifadesi : while (ifade) deyim while anahtar sözcüktür (reserved word). Deyim basit (simple) ya da birleşik (compound) bir deyim olabilir. İfade (expression) bir karar verici olarak çalışır ve mantıksal bir ifadedir. Deyim döngünün gövdesi tarafından çağrılır. Parantezler sözdiziminin bir parçasıdır. C++ Programming: From Problem Analysis to Program Design, Third Edition
while Döngüsü İfade (expression) bir giriş koşulu içerir. İfadenin başlangıçta doğru olması durumunda deyim işlenir. Döngü koşulu yeniden değerlendirilir. İfade doğruluğunu sağladığı müddetçe deyim işlenmeye devam eder. C++ Programming: From Problem Analysis to Program Design, Third Edition
while Döngüsü Sonsuz döngü (Infinite loop): Döngü durmaksızın çalışmaya devam eder. Sonsuz döngüden kurtulmak için döngüdeki deyimler işlemlerin sonunda false olarak çıkış koşulunu sağlamalıdır C++ Programming: From Problem Analysis to Program Design, Third Edition
Sayaç Kontrollü (Counter-Controlled) while Döngüleri Programda okunacak veri (data) sayısı tam olarak biliniyorsa, while döngüsü sayaç kontrollü döngüye dönüşür. C++ Programming: From Problem Analysis to Program Design, Third Edition
Sentinel-Kontrollü (Gözcü- Kontrollü) while Döngüleri Sentinel (gözcü) değişkeni koşul içerisinde kontrol edilir ve bu değişken değeri sağlanınca döngü sonlandırılır C++ Programming: From Problem Analysis to Program Design, Third Edition
Flag-Controlled (Bayrak kontrollü) while Döngüleri Bayrak (flag) kontrollü bir while föngüsü bool tipinde bir değişken kullanır. Bu değişken döngünün kontrolünü gerçekleştirir. C++ Programming: From Problem Analysis to Program Design, Third Edition
EOF-Kontrollü (Dosya Sonu) while Döngüleri (End Of File)- kontrollü while döngüsünün, cin ile okuma gerçekleştiği sürece, mantıksal değeri, true olur ve döngü devam eder. Okunacak veri kalmadığında döngü false olur C++ Programming: From Problem Analysis to Program Design, Third Edition
eof fonksiyonu eof fonksiyonu dosya durumunun sonunu gösterir. Diğer I/O (giriş/çıkış) fonksiyonlarında olduğu gibi (get, ignore, peek), eof istream veri tipinin bir üyesidir. eof fonksiyonunun sözdizimi : istreamVar.eof() istreamVar bir «input stream» değişkenidir. cin ile aynı anlamdadır. C++ Programming: From Problem Analysis to Program Design, Third Edition
for Döngüsü for deyiminin genel ifadesi : güncelleme deyimi ) deyim for (başlangıç deyimi; döngü koşulu; güncelleme deyimi ) deyim Başlangıç deyimi, döngü koşulu ve güncelleme deyimi for döngüsünün kontrol deyimleri olarak adlandırılır. C++ Programming: From Problem Analysis to Program Design, Third Edition
for döngüsünün işleyişi : 1. Başlangıç deyimi çalıştırılır Koşul kontrol edilir. Koşul doğru ise: i. for döngüsü deyimi çalıştırılır ii. Parantez içindeki üçüncü ifade olan güncelleme deyimi çalıştırılır Döngü koşulu false değerini alana kadar Adım 2 yeniden değerlendirilerek tekrarlanır. Başlangıç deyimi ile , döngü kontrolü için çoğunlukla bir değişkene başlangıç değeri verilir. C++ dilinde , for bir anahtar sözcüktür (reserved word).
for Döngüsü ile İlgili Önemli Yorumlar Eğer döngü koşulu başlangıçta false ise, döngünün gövdesi ({ } arası) çalışmayacaktır. Güncelleme ifadesi çalıştırıldığında, döngü kontrol değişkeninin değeri (başlangıç ifadesi ile başlangıç değeri verilmiş olan) değişir ve sonunda döngü koşuluna false değerini verir. for döngüsü sonsuz döngüye girdiğinde, döngü koşulu her zaman true olarak çalışacaktır. C++ Programming: From Problem Analysis to Program Design, Third Edition
for Döngüsü for deyimi sonundaki ; sözdizimi hatası verir. Bu durumda for döngüsü hiçbir eylem gerçekleştirmeyecektir. Eğer döngü koşulu göz önüne alınmayacak olursa, for deyimi içerisindeki deyim true olarak değerlendirilir. for deyimi içindeki üç ifade de yazılmayabilir. Başlangıç deyimi, döngü koşulu ve güncelleme deyimi yazılmadığında for döngüsü aşağıdaki gibidir. for (;;) cout << "Hello" << endl; C++ Programming: From Problem Analysis to Program Design, Third Edition
do…while Döngüsü do...while deyiminin genel ifadesi : deyim while (ifade); Deyim başlangıçta bir defa çalıştırılır ve daha sonra yeniden değerlendirilir. Eğer ifade değeri true ise, deyim yeniden çalıştırılacaktır do...while deyimi içerisindeki ifade true olduğu sürece, deyim çalışmaya devam eder. C++ Programming: From Problem Analysis to Program Design, Third Edition
do…while Döngüsü Sonsuz döngünün oluşmaması için, gövde bir ifade içerilmelidir. İfade daha sonra false değerini alabilir. Deyim basit ya da bileşik olabilir. Bileşik ise, { } arasına yazılmalıdır. do...while döngüsünün bir çıkış koşulu vardır ve en az bir kere iterasyona girer (for ve while döngülerinin aksine) C++ Programming: From Problem Analysis to Program Design, Third Edition