CPP 010 – if else else if ?

Daha önceki derslerimizde if ve else ifadelerini bol miktarda kullanmıştık. Bu ifadeler ne yapıyordu? Programın akışını değiştirerek farklı kodlara yönelmesini sağlıyordu.

#include <iostream>
using namespace std;

int main() {
	int sayi = 2;
	
	cout << "Merhaba" << endl;

	if (sayi < 3) {
		cout << "sayi 3'ten kucuk" << endl;
	}

	cout << "Gule gule!" << endl;

}

Peki else eklersek programımız nasıl bir davranış gösterir

#include <iostream>
using namespace std;

int main() {
	int sayi = 2;
	
	cout << "Merhaba" << endl;

	if (sayi < 3) {
		cout << "sayi 3'ten kucuk" << endl;
	}
	else {
		cout << "sayi 3'e esit veya buyuk" << endl;
	}

	cout << "Gule gule!" << endl;

}

if ve else ye ek olarak else if ‘imiz var. Ne işe yarıyor bu else if ? Bir örnekle anatalım:

Karne notlarını harf notlarına çeviren bir kod yazmak istiyoruz.

  • 100 – 80 -> A
  • 80 – 65 -> B
  • 65 – 50 -> C
  • 50 – 35 -> D
  • 35 – 0 -> F

(Harf notlarını iyi, pek iyi, orta, … gibi düşünebilirsiniz.)

Bunu şuanki bilgimizle nasıl yapabiliriz?

#include <iostream>
using namespace std;

int main() {
	float karne_notu = 66;
	
	if (karne_notu >= 80 && karne_notu <= 100)
		cout << "A" << endl;
	if (karne_notu >= 65 && karne_notu < 80)
		cout << "B" << endl;
	if (karne_notu >= 50 && karne_notu < 65)
		cout << "C" << endl;
	if (karne_notu >= 35 && karne_notu < 50)
		cout << "D" << endl;
	if (karne_notu >= 0 && karne_notu < 35)
		cout << "F" << endl;
	if (karne_notu < 0 && karne_notu > 100)
		cout << "Gecersiz bir not girdiniz!" << endl;

}

Aynı işi else if ile yapalım

#include <iostream>
using namespace std;

int main() {
	float karne_notu = 66;
	

	if (karne_notu >= 80 && karne_notu <= 100)
		cout << "A" << endl;
	else if (karne_notu >= 65 && karne_notu < 80)
		cout << "B" << endl;
	else if (karne_notu >= 50 && karne_notu < 65)
		cout << "C" << endl;
	else if (karne_notu >= 35 && karne_notu < 50)
		cout << "D" << endl;
	else if (karne_notu >= 0 && karne_notu < 35)
		cout << "F" << endl;
	else
		cout << "Gecersiz bir not girdiniz!" << endl;


}

Aslında biraz daha iyi şekilde yapabiliriz

#include <iostream>
using namespace std;

int main() {
	float karne_notu = 66;
	
	if (karne_notu < 0 && karne_notu > 100) // 1. koşul
		cout << "Gecersiz bir not girdiniz!" << endl;
	else if(karne_notu >= 80)	// 2. koşul
		cout << "A" << endl;
	else if (karne_notu >= 65)	// 3. koşul
		cout << "B" << endl;
	else if (karne_notu >= 50)	// 4. koşul 
		cout << "C" << endl;
	else if (karne_notu >= 35)	// 5. koşul
		cout << "D" << endl;
	else
		cout << "F" << endl;
}

1.koşuldan başlayarak sırasıyla koşulları kontrol ediyor. Eğer tüm koşullar yanlış ise else çalışıyor. Koşullardan biri doğru ise o koşulun bloğu çalışıp if-elseif-else bloğundan çıkıyor.

Şöyle güzel bir flowchart ile gösterebiliriz. Ne avantajı var? Doğru koşulu bulduğunda onu çalıştırıp öteki koşulları sorgulamıyor. if ile yaptığımızda (ilk başta yaptığımız gibi) doğru koşulu bulup çalıştırsak bile öteki koşulları da test ediyor.


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *