C++ İf Else Yapısı

 Bu yazımızda C++ programlama dilinde if else yapılarına değineceğiz. Fakat bu yolculuğa çıkmadan önce algoritma ve koşul ifadelerine değineceğiz.


Algoritma

Algoritma, bir sorunu çözmek veya belirlenmiş bir hedefe ulaşmak için izlenen yoldur. Amaca ulaşmak için bir başlangıcı olan ve bir sonu olan işlemler bütünüdür. Yataktan kalkıp işe gitmek için genç bir idareci tarafından takip edilen "kalk ve ışılda" algoritmasını düşünün.,

  1. Yataktan kalk
  2. Pijamalarını çıkar
  3. Duş al
  4. Giyin
  5. Kahvaltı yap
  6. İşe git
Bu akış, genç idareciyi kritik kararlar vermeye iyi bir şekilde hazırlar. Aynı adımları farklı sırada yaptığını düşünün:
  1. Yataktan kalk
  2. Pijamalarını çıkar
  3. Giyin
  4. Duş al
  5. Kahvaltı yap
  6. İşe git
Bu durumda genç idarecimiz işe sırılsıklam gidecektir. Bir bilgisayar programında ifadelerin hangi sırada yürütüleceğini belirlemeye program kontrolü denir.


Sözde Kod


Sözde kod algoritma geliştirmemize yardımcı olan yapay ve gayri resmi bir dildir. Günlük bir dile benzer: gerçek bir bilgisayar programlama dili olmamasına rağmen uygun ve kullanıcı dostudur.
Bu kodları bilgisayarda çalıştıramayız. Aksine, bir programı C++ gibi bir bilgisayar programlama dilinde yazmaya başlamadan önce programı "planlama" mıza yardımcı olur. Yukarıda örnek olarak bahsettiğimiz "kalk ve ışılda algoritması" sözde koda örnek olarak verilebilir. 

Başka bir örnek:
  1. Bir sayıyı oku
  2. İkinci sayıyı oku
  3. Üçüncü sayıyı oku
  4. İlk iki sayıdan büyük olanı bul
  5. Eğer sonuç değişkeni üçüncü sayıdan büyük ise sonuç değerini yazdır
  6. Değilse
  7. Üçüncü sayıyı yazdır


Koşul İfadeleri


Koşul ifadelerini yazarken farklı değerleri karşılaştırmak için ilişkisel(relational) operatörler, ilişkisel ifadeleri birleştirmek için ise mantıksal(logical) operatörler kullanılır. Operatörler ile ilgili yazımızı buradan inceleye bilirisiniz.



İf Seçim İfadesi


Programlama sürecinde, kimi zaman farklı koşullarda programın farklı çalışması gerekmektedir. Örneğin bir bankamatiği ele alalım. Banka kartınızı aldıktan sonra bankamatik size şifre soracaktır. Eğer şifrenizi yanlış girerseniz size uyarı verecektir. Eğer şifrenizi doğru girerseniz sizi hesabınıza yönlendirecektir. Bu tip koşula bağlı karar verme işlemi için kullanabileceğimiz komutlardan ilki if komutudur.


if koşulu önce koşul ifadesinin denenmesi ile başlar. Eğer koşul ifadesi true döndürülürse, if koşulundan hemen sonra gelen komut yürütülür. Eğer koşul ifadesi false döndürülürse, bu komut atlanır ve program kaldığı yerden devam eder.

if komut söz dizimi:

if(koşul)
    komut;

Örnek bir kod:
if( yas >= 18 )
    cout<<"Oy kullanabilirsiniz."<endl

cout<<"Iyi gunler"<<endl;

Bu örnekte eğer yaş 19 ise (yas >= 18) koşul ifadesi true döndürür ve "Oy kullanabilirsiniz." yazan komut çalışır. Daha sonra program normal akışına devam eder ve "Iyi gunler" mesajını yazar. Bu durumda çıktı:
 Oy kullanabilirsiniz.
Iyi gunler

Eğer yaş değeri 17 ise, koşul ifadesi false döndürür. İlk komut yürütülmez ve çıktımız:
Iyi gunler



İf Else Seçim İfadesi


Aşağıda if..else yapısının syntax bulunmaktadır:

if (test expression) {
    Body of if
}
else {
    Body of else
}


if...else yapısı, koşulu değerlendirir ve yalnızca koşul "true" olduğunda if'in gövdesini çalıştırır. Koşulun "false" olması durumunda else gövdesi çalışır.

if...else'in akış şeması aşağıdaki gibidir:

Örnek:

#include <iostream>
using namespace std;
 
int main() {
  int age = 17;
  if (age > 18) {
    cout << "The person is an adult ";
  } 
  else {
    cout << "The person is not an adult ";
  } 
  return 0;
}

Çıktı:
The person is not an adult

Yukarıdaki örnekte: age değişkeninin değeri 17. if koşulunun true olabilmesi için age değişkeninin değerinin 18'den büyük olamsı gerekmektedir. Fakat 18'den küçük olduğu için if koşulu sağlanamaz, bu nedenle kod, else yapısının içinde çalışır ve daha sonra program normal akışına devam eder.



if..else if..else İfadeleri


Aşağıda if...else if...else yapısının syntax bulunmaktadır:

if (test expression 1) {
    Body of if
}
else if (test expression 2) {
    Body of else-if
}
else {
    Body of else
}

if... else if... else ifadesinde önce if ifadesinin koşulunu kontrol eder ve if gövdesini yalnızca koşulu True olduğunda çalıştırır.
Aksi takdirde, else if deyiminin koşuluna geçer. else if koşulunun True olması durumunda, else if'in gövdesi yürütülür. Birden fazla else if ifadesi olabileceğini unutmayın.
Kısaca, tüm koşulların False dönmesi durumunda else gövdesi çalıştırılacaktır.

Aşağıda if..else if..else yapısının akış şeması bulunmaktadır:

Örnek:
#include <iostream>
using namespace std;
 
int main() {
  int age = 11;
  if (age >= 13 && age < 20) {
    cout << "Person is a teenager ";
  } 
  else if (age >= 0 && age < 13) {
    cout << "Person is a prepubescent ";
  } 
  else {
    cout << "Person is an adult ";
  } 
  return 0;
}
Çıktı:
Person is a prepubescent 

Bu örnekte, age değişkeninin değeri 11'dir. İlk if koşulunun sağlanabilmesi için, age değişkeninin değerinin 13'e eşit ya da büyük ve 20'den küçük olması gerekmektedir. Fakat age değişkeninin değeri 11'dir. Bu neden bu koşul sağlanamadığı için else if yapısının koşuluna bakılmaktadır. else if yapısının koşulunun sağlanabilmesi için, age değişkeninin değerinin 0'a eşit ya da büyük ve 13'den küçük olması gerekmektedir. age değişkeninin değeri bu aralıkta olduğundan dolayı bu koşul sağlanır ve "true" olur. Bu sayede else if yapısının içine girer konsola "Person is a prepubescent " yazısı yazılır. else yapısının içine girmeyecektir. Çünkü else if yapısının koşulu sağlandığında else yapısına girmez. Fakat else if yapısının koşulu sağlanmasaydı, o zaman else yapısının içine girecektir.



Örnekler


1) Girilen sayının id değişkeninden büyük olması ya da küçük olması ya da eşit olması koşullarını kontrol eder:

#include <iostream>

using namespace std;

int main(void)
{
  int id;

  cout << "Bir int değer giriniz: ";
  cin >> id;
  
  if (id == 21) cout << "Girdiğiniz sayı 21'dir!";
  if (id < 21) cout << "Girdiğiniz sayı 21'den küçüktür!";
  if (id > 21) cout << "Girdiğiniz sayı 21'den büyüktür!";

  return 0;
}
Çıktı:

Bir int değer giriniz: 20
Girdiğiniz sayı 21'den küçüktür!

2)

#include <iostream>

using namespace std;

int main(void)
{
  int id1, id2;

  id1 = 21;
  id2 = 0;

  if (id1!=0) cout << "id1 değişken değeri 0'dan farklıdır!" << "\n";
  if (id2==0) cout << "id2 değişken değeri 0'a eşittir!" << "\n\n";

  if (id1) cout << "id1 değişken değeri 0'dan farklıdır!" << "\n";
  if (!id2) cout << "id2 değişken değeri 0'a eşittir!";

  return 0;
}

Çıktı:

id1 değişken değeri 0'dan farklıdır!
id2 değişken değeri 0'a eşittir!

3)
#include <iostream>

using namespace std;

int main(void)
{
  int id;

  cout << "8 * 9 = ? işleminin sonucunu giriniz: ";
  cin >> id;

  if (id == 72) cout << "Cevabınız doğrudur!";
  else cout << "Cevabınız yanlıştır!";

  return 0;
}

Çıktı:

8 * 9 = ? işleminin sonucunu giriniz: 70
Cevabınız yanlıştır!

4)
#include <iostream>

using namespace std;

int main(void)
{
  int id;

  cout << "Bir int değer giriniz: ";
  cin >> id;

  if(id%2) {
    cout << "Girdiğiniz sayı tek bir sayıdır: " << id << "\n";
    cout << "Sayının 3 katı: " << 3 * id;
  }
  else {
    cout << "Girdiğiniz sayı çift bir sayıdır: " << id << "\n";
    cout << "Sayının 2 katı: " << 2 * id;
  }

  return 0;
}

Çıktı:

Bir int değer giriniz: 35
Girdiğiniz sayı tek bir sayıdır: 35
Sayının 3 katı: 105


4)
#include <iostream>

using namespace std;

int main(void)
{
  int id;

  cout << "Bir int değer giriniz: ";
  cin >> id;

  if(id > 100) { // 1
     cout << "Girilen sayı 100'den büyüktür!" << "\n"; // 2
     if(id % 2 == 0) { // 3
        cout << "Girilen sayı çift bir sayıdır!" << "\n"; // 4
        if (id<=150) cout << "Girilen sayı 100-150 arasındadır!"; // 5
        else cout << "Girilen sayı 150'den büyüktür!"; // 6
     }
     else cout << "Girilen sayı tek bir sayıdır!"; // 7
  }
  else { // 8
     if(id == 100) cout << "Girilen sayı 100'dür!"; // 9
     else cout << "Girilen sayı 100'den küçüktür!"; // 10
  }

  return 0;
}

Çıktı:

Bir int değer giriniz: 398
Girilen sayı 100'den büyüktür!
Girilen sayı çift bir sayıdır!
Girilen sayı 150'den büyüktür!





















Kaynak

https://learn.microsoft.com/en-us/cpp/cpp/if-else-statement-cpp?view=msvc-170
https://www.shiksha.com/online-courses/articles/cpp-if-else-statement/#s2
https://www.programiz.com/cpp-programming/if-else
https://www.bilgigunlugum.net/prog/cppprog/cpp_if
https://www.javatpoint.com/cpp-if-else