Bölüm 4: Kontrol Yapıları I (Seçim Yapma) C++ Programming: Program Design Including Data Structures, Third Edition Bölüm 4: Kontrol Yapıları I (Seçim Yapma)
Dersin Amaçları Bu Bölümde : Kontrol yapıları ile ilgili bilgi verilecektir. İlişkisel (relational) ve mantıksal ( logical) operatörler üzerinde işlemler yapılacaktır. Mantıksal (Boolean) ifadelerin oluşturulması ve bunlarla ilgili ifadeler incelenecektir. Seçmeli kontrol yapılarının nasıl kullanıldığı if, if...else, ve switch ifadeleri açıklancaktır. C++ Programming: From Problem Analysis to Program Design, Third Edition
Kontrol Yapıları Bilgisayarların işleyişi - Sıralı komutların işlenmesi ile - Seçmeli (dallanma ile , seçim yaparak) olarak - İteratif olarak tekrarlama ile (looping) gerçekleşebilir. Program belli koşullar sağlandığında bazı deyimleri çalıştırır. Mantıksal (Boolean) bir ifadenin betimlenmesi ile bir koşul doğru ya da yanlış olacaktır. Herhangi bir koşulun doğru değerlendirilmesi bunun karşılanmış olduğu anlamına gelir. C++ Programming: From Problem Analysis to Program Design, Third Edition
İlişkisel Operatörler (İşleçler) İlişkisel Operatörler (Relational operators): Çeşitli karşılaştırmalar yapar. İki operand (binary-ikili) gerektirir İfade true (doğru) ise 1 , aksi taktirde 0 döndürür Farklı veri tiplerinin karşılaştırması öngörülemeyen sonuçlar verebilir. Örneğin, 8 < '5' karşılaştırması yapılamaz Karşılaştırmada sıfırdan farklı herhangi bir değer true olarak değerlendirilir. C++ Programming: From Problem Analysis to Program Design, Third Edition
string Tiplerinin Karşılaştırması İlişkisel operatörler dizgilere de (strings) uygulanır. Dizgiler ilk karakterden başlamak üzere karakter karakter karşılaştırılır. Bu karşılaştırma: ya bir uyuşmazlık (mismatch) ile karşılaşana kadar, ya da karakterlerin hepsi eşit bulunana kadar devam eder. Farklı uzunluktaki iki dizgi karşılaştırılıyorsa, karşılaştırma daha kısa olan dizginin son karakterine eşittir. Kısa olan dizgi uzun olan dizgiden daha küçüktür. C++ Programming: From Problem Analysis to Program Design, Third Edition
string Veri Tipinin Karşılaştırılması Aşağıdaki bildirimler veriliyor: string str1 = "Hello"; string str2 = "Hi"; string str3 = "Air"; string str4 = "Bill"; C++ Programming: From Problem Analysis to Program Design, Third Edition
Mantıksal (Boolean) Operatörler Mantıksal (Boolean) operatörler kullanılarak mantıksal ifadeler birleştirilir. Üç tane mantıksal (Boolean) operatör tanımlanır: ! - değil (tekli operatör) && – ve (ikili operatör) || - veya (ikili operatör) Mantıksal operatörler işleneç (operand) olarak sağına ve soluna mantıksal değeler alırlar Mantıksal bir ifadenin önüne ! konulduğunda sonuç ifadenin değerinin tersidir. C++ Programming: From Problem Analysis to Program Design, Third Edition
Operatörlerin Önceliği İlişkisel ve mantıksal operatörler soldan sağa doğru değerlendirilir. Birleşme özelliği (associativity) soldan sağa doğrudur. Parantezler önceliklidir. C++ Programming: From Problem Analysis to Program Design, Third Edition
Kestirme Hesaplamalar Kestirme hesaplamalar: Mantıksal bir ifadenin değerlendirmesi ifadenin değeri belirlendiğinde sonlandırılır. Örnek: : (age >= 21) || ( x == 5) //Satır 1 (grade == ‘A’) && (x >= 7) //Satır 2 C++ Programming: From Problem Analysis to Program Design, Third Edition
Mantıksal İfadeler bool veri tipi ve mantıksal ifadeler bool veri tipinin sadece mantıksal (logical) true ve false değerleri vardır bool, true, ve false birer anahtar sözcüktür (reserved word). true tanıtıcısının değeri 1 false tanıtıcısının değeri 0 olarak tanımlanır. C++ Programming: From Problem Analysis to Program Design, Third Edition
Mantıksal (Boolean) İfadeler Mantıksal ifadeler tahmin edilemezler Aşağıdaki ifade 0 , num ve 10 arasındaki karşılaştırmayı simgelemektedir. 0 <= num <= 10 Bu karşılaştırma sonucu her zaman true olacaktır. Çünkü 0 <= num eşitsizliği 0 ya da 1 sonucunu verir. Böylece: 0 <= 10 true ve 1 <= 10 true olarak sonuçlanacaktır. Bu ifadeyi doğru yazımı aşağıdadır: 0 <= num && num <= 10
Tek-yollu (if) Seçim Tek yollu seçimin sözdizimi : şeklindedir. if (ifade) deyim şeklindedir. Deyimin çalıştırılması için ifadenin değeri true olmalıdır. İfadenin değeri false ise ifade işleme girmez ve program bir sonraki deyime geçer. C++ Programming: From Problem Analysis to Program Design, Third Edition
Tek Yollu (if) Seçimi İfade karar verici olarak da adlandırılır; çünkü ifade ile sonraki deyimin çalıştırılıp çalıştırılmayacağına karar verilir. İfadeyi takip eden deyim eylem deyimi (action- statement) olarak adlandırılır. İfade genellikle mantıksal bir ifadedir. Deyim herhangi birC++ deyimidir. if anahtar sözcüktür C++ Programming: From Problem Analysis to Program Design, Third Edition
İki Yollu (if…else) Seçim İki yollu seçim if (ifade ) deyim1 else deyim2 şeklinde gerçekleşir. İfade true ise, deyim1 çalıştırılır Aksi halde deyim2 çalıştırılır. deyim1 ve deyim2 herhangi C++ deyimleridir. else anahtar sözcüktür (reserved word) C++ Programming: From Problem Analysis to Program Design, Third Edition
Bileşik Deyim Compound Statement Bileşik değim (block of statements): { deyim1; deyim2; . deyimn; } şeklinde verilir. Bileşik deyim tek bir deyimdir. C++ Programming: From Problem Analysis to Program Design, Third Edition
Bişleşik Deyim Örneği if (age > 18) { cout << "Eligible to vote." < <endl; cout << "No longer a minor." << endl; } else cout << "Not eligible to vote.“ << endl; cout << "Still a minor." << endl; C++ Programming: From Problem Analysis to Program Design, Third Edition
Yuvalanmış (Nested) if deyimi Yuvalanma (Nested) : Bir kontrol deyimi diğerinin içindedir. else anahtar sözcüğü, en son yazılan ve bir else ile ilişkilendirilmemiş olan bir if sözcüğü ile ilişkilidir. C++ Programming: From Problem Analysis to Program Design, Third Edition
Şartlı Operatör (Conditional Operator) (?:) Şartlı operatör (?:) üç tane (ternary) argüman alır. Şartı operatör kullanmanın sentaksı : ifade1 ? ifade2 : ifade3 Eğer expression1 true ise , koşullu ifadenin sonucu ifade2 olur. aksi halde sonuç ifade3 olacaktır. C++ Programming: From Problem Analysis to Program Design, Third Edition
switch Yapıları switch yapısı : if-else yapısına alternatiftir. Önce switch ifadesi değerlendirilir. İfadenin değeri hangi eylemin gerçekleştirileceğini belirler İfade bazen seçici (selector) olarak ifade edilir. C++ Programming: From Problem Analysis to Program Design, Third Edition
switch Yapıları İfade değeri sadece tamamlanmış bir birim (entegral) olmalıdır. İfadenin değeri çalıştırılmak üzere hangi değerin seçildiğini belirler. Herhangi bir durum sadece bir kere gerçekleşecektir. C++ Programming: From Problem Analysis to Program Design, Third Edition
switch Deyimi Kuralları İfadenin değeri bir bir case değeri ile eşleştiğinde - -Deyimler break deyimine kadar çalışacaktır. İfadenin değeri herhangi bir case değeri ile eşleşmezse - default anahtar sözcüğünü izleyen deyimler çalıştırılır Eğer hiçbir default anahtar sözcüğü yoksa, ve hiçbir eşleşme oluşmamışsa tüm switch deyimi atlanır. Herhangi bir break deyimi ise, switch yapısından çıkılmasına neden olur.