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:
- Yataktan kalk
- Pijamalarını çıkar
- DuÅŸ al
- Giyin
- Kahvaltı yap
- İş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:
- Yataktan kalk
- Pijamalarını çıkar
- Giyin
- DuÅŸ al
- Kahvaltı yap
- İş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 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:
Ö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:
Ö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