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ı “planlamamıza” yardımcı olur. Yukarıda örnek olarak bahsettiğimiz “kalk ve ışılda” algoritması sözde koda örnek olarak verilebilir.

Başka bir örnek:

Bir sayıyı oku
İkinci sayıyı oku
Üçüncü sayıyı oku
İlk iki sayıdan büyük olanı bul
Eğer sonuç değişkeni üçüncü sayıdan büyük ise sonuç değerini yazdır
Değilse
    Üçü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 inceleyebilirsiniz.

If 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 yapısı akış şeması

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 << "İyi günler" << 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 “İyi günler” mesajını yazar. Bu durumda çıktı:

Oy kullanabilirsiniz.
İyi günler

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:

İyi günler

If 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:

if...else akış şeması

Ö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 olması 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:

if..else if..else akış şeması

Ö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 nedenle 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’ten 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 ve 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 girecekti.

Ö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!

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

5)

#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