Programımızdaki ifadeler normalde sırasıyla yukarıdan aşağıya doğru tek tek çalışır. Bazı durumlarda bu akışı bozmak, farklı satırlara yönlendirmek isteriz. Bunu gerçekleştirmek için çeşitli karar yapılarımız vardır.
if, else, else if
Eğer bazı kodların çalışması, bir koşulun varlığına bağlı ise if yapısını kullanıyoruz. “Eğer” anlamına gelir.
- Eğer yağmur yağıyorsa, şemşiye al
- Eğer not ortalamısı 45’ten küçükse, başarısız say
- Eğer iyi bir çocuk olursak, şirinleri görebiliriz.
int main(){
int not_ortalamasi = 30;
if (not_ortalamasi < 45) {
cout << "Basarisiz" << endl;
}
}Şimdi yapısını inceleyelim. if ten sonra 2 tane parantezimiz var. 1
- Parantezde koşulumuzu yazıyoruz. Eğer şu olursa, Eğer bu olursa ….
- Parantezde ise çalışacak kodlarımızı yazıyoruz. Koşulun true gelmesi sonucunda bu kodlar çalışacaktır.
if (koşul) {
//çalışacak kodlar
}Şimdi biraz daha geliştirelim. Yağmur yağması durumunda şemşiye alsın, yağmama durumunda dondurma yesin.
int main(){
bool yagmurlu = false;
if (yagmurlu) {
cout << "Semsiye al" << endl;
}
else {
cout << "Dondurma ye" << endl;
}
}Tek bir ifade olduğu için aslında {} curly brackets (kıvrık parantezlere) ihtiyacımızı yok.
int main(){
bool yagmurlu = false;
if (yagmurlu)
cout << "Semsiye al" << endl;
else
cout << "Dondurma ye" << endl;
}Peki, birden fazla birbiriyle bağlantılı koşulu ardı ardına sorgulamak istiyorsak ne yapmamız gerekli? Birden fazla if kullanabiliriz ama daha güzel bir yapımız var:
#include <iostream>
using namespace std;
int main(){
// 0 yagmursuz
// 1 yagmurlu
// 2 saganak yagmurlu
int yagmurlu = 2;
if (yagmurlu == 0)
cout << "Dondurma ye" << endl;
else if (yagmurlu == 1)
cout << "Semsiye al" << endl;
else if (yagmurlu == 2)
cout << "Yagmurluk giy" << endl;
else
cout << "bilemiyorum Altan" << endl;
}else if, tıpkı if yapısı gibi bir koşul alır ve koşul doğru ise içindeki kodu çalıştırır. Diyebilirsiniz ki “ne gerek var ard arda if yazarak halledebiliriz” LAKİN işin aslı öyle değil. Şimdi yapıyı daha iyi anlamanız için else if i biraz dönüştürelim
if (yagmurlu == 0) {
cout << "Dondurma ye" << endl;
}
else {
if (yagmurlu == 1) {
cout << "Semsiye al" << endl;
}
else {
if (yagmurlu == 2) {
cout << "Yagmurluk giy" << endl;
}
else {
cout << "bilemiyorum Altan" << endl;
}
}
}Şimdi de akış diyagramına bakalım:

Şimdi olayımız şu:
- Öncelikle if’in koşuluna bak. Eğer koşul doğru ise if bloğunu çalıştır
- Yanlışsa else if koşuluna bak. Eğer else if’in koşulu doğru ise çalıştır
- …
- Yanlışsa else if koşuluna bak. Eğer else if’in koşulu doğru ise çalıştır
- Yanlışsa else bloğunu çalıştır.
switch-case
anahtar-kasa mantığıyla çalışır. Her kasa’yı açan belli bir değer vardır. Eğer verilen anahtar o değerle uyuşursa o kasa açılır.
#include <iostream>
using namespace std;
int main() {
// 0 yagmursuz
// 1 yagmurlu
// 2 saganak yagmurlu
int yagmurlu = -1;
//if (yagmurlu == 0)
// cout << "Dondurma ye" << endl;
//else if (yagmurlu == 1)
// cout << "Semsiye al" << endl;
//else if (yagmurlu == 2)
// cout << "Yagmurluk giy" << endl;
//else
// cout << "bilemiyorum Altan" << endl;
switch (yagmurlu) // anahtarımız
{
case 0: // eğer anahtarın değeri 0 ise
cout << "Dondurma ye" << endl;
break;
case 1: // eğer anahtarın değeri 0 ise
cout << "Semsiye al" << endl;
break;
case 2: // eğer anahtarın değeri 0 ise
cout << "Yagmurluk giy" << endl;
break;
default: // eğer herhangi bir durum çalışmazsa
cout << "bilemiyorum Altan" << endl;
break;
}
}
her case in sonunda bir breakifadesi görürüz. Bu ifade artık case in bitmiş olduğunu ve switch bloğundan çıkabileceğimiz anlamına gelir. Eğer break kullanmazsak devam edilen satırlar da sırasıyla çalışır örneğin:
int yagmurlu = 1;
switch (yagmurlu)
{
case 0:
cout << "Dondurma ye" << endl;
break;
case 1:
cout << "Semsiye al" << endl;
case 2:
cout << "Yagmurluk giy" << endl;
break;
default:
cout << "bilemiyorum Altan" << endl;
break;
}
// Çıktı:
// Semsiye al
// Yagmurluk giyTernary conditional operator (question mark operator)
Kabaca tanımlamak gerekirse if else yapısının daha kısa halidir ama tam da birbirinin yerini tutmazlar.
- ? işaretinden önce koşul yazılır
- sonra ilk önce true gelmesi halinde çalışacak ifade
- :
- false gelmesi halinde çalışacak ifade
bool kontrol = true;
kontrol ? cout << "dogru" << endl : cout << "yanlis" << endl;
// Çıktı: dogru aynı ifadeyi şu şekilde de yazabilirdik
bool kontrol = true;
if (kontrol) cout << "dogru" << endl; else cout << "yanlis" << endl;genelde şu tip şeyler yapmak için kullanıyoruz.
bool kontrol = true;
string isim = kontrol ? "Esat" : "Muhammet";
cout << isim << endl; // Esat 

Leave a Reply