C++ Koşul Operatörleri ile Karar Yapıları Oluşturmak

C++ Koşul Operatörleri ile Karar Yapıları Oluşturmak

C++ dilinde kullanılan koşul operatörleri ile program akışını kontrol etmek mümkündür If-else yapısı sadece iki seçenekli koşullar için uygundurken, switch-case yapısı birden fazla koşulda farklı işlemler yapmak için kullanılabilir If-else yapısı kullanarak bir koşul kontrol edilir ve doğru ya da yanlış olması durumunda farklı işlemler yapılır Else-if yapısı ise birden fazla koşul kontrolünde kullanılabilir Koşulları kontrol ederek programlama yapmak, sadece istenen işlemlerin gerçekleştirilmesini sağlamakla kalmaz, kodu kısaltarak daha az kod yazmamızı da sağlar

C++ Koşul Operatörleri ile Karar Yapıları Oluşturmak

C++ dilinde programlama yaparken karar yapısı oluşturma işlemi oldukça önemli bir konudur. Karar yapısı, programın belirli bir koşula göre farklı işlemler yapmasının sağlanması için kullanılır. Bu işlemi yapmak için C++ dilinde kullanabileceğimiz koşul operatörleri mevcuttur.

Koşul operatörleri, programlama yaparken belirli koşulların sağlandığında farklı işlemleri yapmamızı sağlar. Bu operatörler, if-else ve switch-case yapısı kullanılarak uygulanabilir. İf-else yapısı, sadece iki seçenekli koşullar için uygundur. Ancak switch-case yapısı, birden fazla koşulda farklı işlemler yapmak istediğimizde tercih edilir.


Karar Yapıları

Karar yapıları, program içinde belirli koşulların karşılanıp karşılanmadığını, bir değişkenin değerinin hangi aralıkta olduğunu ya da fonksiyonların belirli şartları sağlayıp sağlamadığını kontrol etmek için kullanılır. Bu kontrol yapısında, belirli bir koşul sağlandıysa belirli bir işlem gerçekleştirilir, aksi takdirde farklı bir işlem gerçekleştirilir. Yani, karar yapıları programın akışını kontrol eder ve belirli şartlara göre işlem yapar.

Bu yapılar programlama dillerinde sıklıkla kullanılır ve belirli bir koşulun doğru olup olmadığına ilişkin kararlar vermek için ideal bir çözümdür. Karar yapılarının kullanımı sayesinde, programların başarısı artar ve programcılar istenen işlemleri gerçekleştirmek için daha az kod yazmak zorunda kalır.


Koşul Operatörleri

C++ dilinde karar yapısı oluşturmak için kullanılan koşul operatörleri kullanımı oldukça önemlidir. Koşul operatörleri, belirtilen koşullara göre program akışını yönlendiren ve belirli işlemlerin gerçekleşmesini sağlayan önemli yapılardır. Bu nedenle, C++ dilinde koşul operatörlerini bilmek bir yazılımcının ihtiyaç duyacağı temel bilgilerden biridir.

C++ dilinde koşul operatörleri "if-else" ve "switch-case" yapısı olarak iki farklı şekilde kullanılmaktadır. "if-else" yapısında, belirtilen koşul sağlanırsa "if" bloğu çalışacak, aksi durumda "else" bloğu çalışacaktır. Bu yapının kullanımı oldukça basittir ve özellikle tek bir koşulun kontrol edilmesi gerektiğinde sıklıkla tercih edilir.

Koşul Açıklama
true Koşul doğru ise if bloğu çalışır
false Koşul yanlış ise else bloğu çalışır

Öte yandan, "switch-case" yapısı birden fazla koşulun kontrol edilmesinde kullanılır. Bu yapıda, değişkenin aldığı değere göre çalışacak blok belirlenir ve sadece belirlenen blok çalışır. Bu yapının kullanımı da oldukça basittir ve sıklıkla birden fazla koşulun kontrol edilmesi gerektiğinde tercih edilir.

  • Değişkenin aldığı değer her ifadeyle karşılaştırılır
  • Eğer eşitlik sağlanır ise, ilgili case bloğu çalışır
  • Bir case bloğu çalıştırıldıktan sonra diğer case blokları atlanır ve switch-case yapısı sona erer
  • Eşitlik sağlanmazsa default bloğu çalışır ve switch-case yapısı sona erer

if-else Yapısı

if-else yapısı, C++ dilinde karar yapısı oluşturmak için en sık kullanılan yöntemlerden biridir. Bu yapı bir koşulu kontrol eder ve koşulun doğru ya da yanlış olduğuna bağlı olarak farklı işlemler yapar.

if-else yapısında, ilk olarak koşul kontrol edilir. Eğer koşul doğruysa, if bloğu çalıştırılır ve eğer koşul yanlışsa, else bloğu çalıştırılır. Eğer else bloğu yoksa, sadece if bloğu çalıştırılır.

Örneğin, bir kullanıcının girdiği sayının pozitif ya da negatif olduğunu kontrol etmek için if-else yapısı kullanılabilir.

Koşul İşlem
sayi > 0 Sayı Pozitif
sayi < 0 Sayı Negatif
sayi == 0 Sayı Sıfır

Yukarıdaki tabloda, if-else yapısı kullanılarak sayının pozitif, negatif ya da sıfır olduğunu belirleyen bir program gösteriliyor. Eğer sayı 0'dan büyükse, "Sayı Pozitif" yazdırılır. Eğer sayı 0'dan küçükse, "Sayı Negatif" yazdırılır. Eğer sayı 0'a eşitse, "Sayı Sıfır" yazdırılır.

if-else yapısının başka bir örneği, bir kullanıcının girdiği iki sayının farkını hesaplamaktır. Eğer ilk sayı ikinci sayıdan büyükse, farklarını yazdırmak için if-else yapısı kullanılabilir. Aşağıdaki örnek, if-else yapısını kullanarak iki sayının farkını hesaplamak için bir program gösterir:

#include using namespace std;int main() {  int sayi1, sayi2, fark;  cout << "İlk sayıyı girin: ";  cin >> sayi1;  cout << "İkinci sayıyı girin: ";  cin >> sayi2;  if (sayi1 > sayi2) {    fark = sayi1 - sayi2;    cout << "Sayıların farkı: " << fark;  }  else {    fark = sayi2 - sayi1;    cout << "Sayıların farkı: " << fark;  }  return 0;}

Yukarıdaki program, kullanıcının girdiği iki sayıyı kontrol eder ve if-else yapısı kullanarak farklarını hesaplar. Eğer ilk sayı ikinci sayıdan büyükse, farklarını hesaplar ve ekrana yazdırır. Eğer ikinci sayı ilk sayıdan büyükse, farkını hesaplar ve ekrana yazdırır.


else-if Yapısı

else-if yapısı, C++ dilinde if-else yapısının bir türevi olarak kullanılmaktadır. Birden fazla şart koşulunda kullanılır ve sadece bir koşulun sağlanması durumunda kod bloğuna girilir. else-if yapısı, birinci if koşulu sağlandığında ekrana bir değer yazdıracak, aksi takdirde ikinci bir koşula bakacaktır. Eğer bu koşul da sağlanmazsa kod bloğu else kısmına geçecektir.

else-if yapısı, kısa ve basit kodlar oluşturmak için kullanışlı bir yöntemdir. Aşağıdaki örnekte else-if yapısının nasıl kullanıldığı anlatıyor olacağız.

Örnek:

AmaçVerilen sayıyı yüzler basamağından kontrol ederek belirtilen kelimeyi yazdırmak
Kullanımıelse-if yapısı kullanılarak koşullar belirlenecektir
#include <iostream>using namespace std;int main(){    int sayi;    cout << "Sayi giriniz: ";    cin >> sayi;    if(sayi <= 0 || sayi > 1000)    {        cout << "Gecersiz sayi!" << endl;    }    else if(sayi >= 1 && sayi <= 99)    {        cout << "1-99 arasinda bir sayi girdiniz" << endl;    }    else if(sayi >= 100 && sayi <= 999)    {        cout << "100-999 arasinda bir sayi girdiniz" << endl;    }    else    {        cout << "1000'den buyuk bir sayi girdiniz" << endl;    }    return 0;}

Yukarıdaki örnekte, kullanıcı bir sayı girer ve sayının yüzler basamağına göre hangi aralığa girdiği belirlenir. Eğer sayı 0'dan küçük ya da 1000'den büyük ise <> yazısı ekrana gelir. Eğer sayı 1 ila 99 arasında ise <<1-99 arasinda bir sayi girdiniz>> yazısı, sayı 100 ila 999 arasında ise <<100-999 arasinda bir sayi girdiniz>> yazısı, ve sayı 1000'den büyük ise <<1000'den buyuk bir sayi girdiniz>> yazısı ekrana basılır.

else-if yapısı, C++ dilinde sıkça kullanılan karar yapılarından biridir. Farklı koşullara göre farklı işlemler yapmak istediğimizde else-if yapısını kullanarak kodlarımızı daha anlaşılır hale getirebiliriz.


Nested if-else Yapısı

Nested if-else Yapısı

Nested if-else yapısı, iç içe if-else yapılarının kullanılmasıdır. Yani, bir if içinde başka bir if-else yapısı kullanılmasıdır. Bu yapı, karar yapılarının daha karmaşık olduğu durumlarda kullanılır. Çoğu zaman, bir koşulun doğruluğuna göre başka bir koşulun karar vermesi gerektiği durumlarda uygulanır. Nested if-else yapısı, düzenli ve anlaşılır olduğu sürece kullanışlıdır.

Örneğin, bir okulda öğrencinin başarı ortalaması hesaplanırken, öğrenci ortalamanın üzerinde ise geçici olarak geçirilir, ama aynı zamanda derslerinden en az ikisinde 50'den düşük not almamış olması gerekmektedir. Bu durum için nested if-else yapısı kullanılabilir.

Koşullar Sonuç
Ortalama > Geçme Notu
                    eğer(ortalama >= gecme_notu) {                        eğer(ders1>=50 && ders2>=50) {                            geçerli;                           }                        else {                            kalır;                        }                    }                

Bu durumlar için uygulanan kodların anlaşılırlığı için nested if-else yapısı kullanılması önemlidir. Bu sayede, kod okunabilirliği arttırılabilir ve hata yapma riski azaltılabilir.


switch-case Yapısı

C++ dilinde karar yapıları oluşturmanın bir diğer yolu da switch-case yapısıdır. Bu yapı, birden fazla koşulu karşılaştırıp işlem yapmanın daha kolay ve hızlı bir yoludur. İşleyiş olarak bir değerin diğer değerler ile karşılaştırılması ve hangi koşulu sağladığına göre işlem yapılması şeklinde gerçekleşir.

Switch-case yapısı şu şekilde kullanılır:

switch(değişken) Değişkenin değeri, karşılaştırılacak olan değerdir.
case değer1: Değişken değeri değer1'e eşit ise bu blok çalışacak.
break; Bu kod bloğunun bitirildiğini belirtmek için kullanılır. Break olmadan diğer blokların da çalışması devam eder.
case değer2: Değişken değeri değer2'ye eşit ise bu blok çalışacak.
break; Bu kod bloğunun bitirildiğini belirtmek için kullanılır. Break olmadan diğer blokların da çalışması devam eder.
... Diğer koşullar da yukarıdaki şekilde sıralanabilir.
default: Yukarıdaki koşulların hiçbiri sağlanmazsa bu blok çalışır.
break; Bu kod bloğunun bitirildiğini belirtmek için kullanılır.

Örneğin, kullanıcının girdiği bir sayının hangi ayda olduğunu belirleyen bir program yazalım:

#include <iostream>using namespace std;int main() {    int ay;    cout << "Bir sayı girin (1-12):\n";    cin >> ay;    switch(ay) {        case 1:            cout << "Ocak ayındasınız\n";            break;        case 2:            cout << "Şubat ayındasınız\n";            break;        case 3:            cout << "Mart ayındasınız\n";            break;        case 4:            cout << "Nisan ayındasınız\n";            break;        case 5:            cout << "Mayıs ayındasınız\n";            break;        case 6:            cout << "Haziran ayındasınız\n";            break;        case 7:            cout << "Temmuz ayındasınız\n";            break;        case 8:            cout << "Ağustos ayındasınız\n";            break;        case 9:            cout << "Eylül ayındasınız\n";            break;        case 10:            cout << "Ekim ayındasınız\n";            break;        case 11:            cout << "Kasım ayındasınız\n";            break;        case 12:            cout << "Aralık ayındasınız\n";            break;        default:            cout << "Geçersiz bir ay girdiniz\n";            break;    }    return 0;}

Yukarıdaki örnekte switch-case yapısı ile kullanıcının girdiği sayı doğrultusunda hangi ayda olduğunu belirleyen bir program yazılmıştır. Özellikle birden fazla koşul olduğunda if-else yerine switch-case yapısını kullanmak daha kolay ve anlaşılır bir kod yazmamızı sağlar.


Örneklerle Uygulama

C++ dilinde koşul operatörleri, yazılımcıların belirli koşulların sağlanıp sağlanmadığını kontrol etmesine ve buna göre farklı işlemler yapmasına olanak tanır. Bu nedenle, C++ dilinde karar yapısı oluşturmak için sıklıkla koşul operatörleri kullanılır. Bu işlem, programlama dünyasında oldukça önemli bir yer tutar.

C++ dilinde koşul operatörleriyle yapılabilecek pek çok uygulama mevcuttur. Örneğin; kullanıcının girdiği sayının pozitif, negatif ya da sıfır olup olmadığını belirleyen, kullanıcının girdiği iki sayı arasındaki en büyük sayıyı bulan, ya da kullanıcının girdiği iki sayıyı tersten yazdıran programlar bu uygulamalardan bazılarıdır.

Bu uygulamaların kodları, C++ dilindeki koşul operatörleri ile yapılmıştır ve yazılımcılara bu operatörleri kullanma konusunda örnek teşkil edebilecek niteliktedir. Ayrıca, bu uygulamaların öğrencilere de faydası vardır. Öğrenciler, bu uygulamalar üzerinde çalışarak, koşul operatörlerinin kullanımını daha iyi anlayabilirler.

Kullanıcının Girdiği Sayı Sonuç
4 Pozitif
-8 Negatif
0 Sıfır

Bu program, kullanıcının girdiği sayının pozitif, negatif ya da sıfır olduğunu belirler. Program, kullanıcının girdiği sayıyı kontrol ederek, koşulları yerine getirir ve sonuç olarak sayının pozitif, negatif ya da sıfır olduğunu belirtir.

Kullanıcının Girdiği Birinci Sayı Kullanıcının Girdiği İkinci Sayı Sonuç
5 7 7
-6 -2 -2
2.5 5.7 5.7

Bu program, kullanıcının girdiği iki sayı arasındaki en büyük sayıyı belirler. Program, girilen iki sayıyı karşılaştırarak en büyük olanını bulur ve sonuç olarak bu sayıyı belirtir.

Kullanıcının Girdiği Birinci Sayı Kullanıcının Girdiği İkinci Sayı Sonuç
54 28 82
71 35 53
0 6 60

Bu program, kullanıcının girdiği iki sayıyı tersten yazdırır. Program, girilen iki sayıyı arka arkaya yazarak tersten yazılmış hallerini belirtir.


Uygulama1

Uygulama1 örneği, kullanıcının program tarafından belirtilen bir kutucuğa sayı girmesi durumunda, bu sayının pozitif mi, negatif mi yoksa sıfır mı olduğunu belirleyen bir programı içeriyor. Bu uygulama, koşul operatörlerinin C++ dilinde nasıl kullanıldığının en basit örneklerinden biridir.

Program, kullanıcının girdiği sayıyı koşul operatörü kullanarak kontrol edecektir. Örneğin, kullanıcı 5 sayısını girerse, program 5 sayısının pozitif olduğunu belirtecektir. Eğer kullanıcı -5 sayısını girerse, program -5 sayısının negatif olduğunu belirtecektir. Son olarak, eğer kullanıcı 0 sayısını girerse, program sıfır olduğunu belirtecektir.

Aşağıda yer alan tablo, programın nasıl çalıştığını belirten örnek verileri göstermektedir:

Kullanıcının Girdiği Sayı Programın Verdiği Cevap
5 Pozitif
-5 Negatif
0 Sıfır

Yukarıdaki örnekte de görülebileceği gibi, C++ dilinde koşul operatörleri kullanarak karar yapısını oluşturmak oldukça kolaydır. Bu sayede programlama işlemleri daha hızlı ve verimli bir şekilde yapılabilmektedir.


Uygulama2

Uygulama2, iki sayı arasındaki en büyük sayıyı bulmak için bir program yazmayı amaçlar. Kullanıcı tarafından istenen sayılar, C++ dilindeki koşul operatörleri kullanılarak karşılaştırılır ve sonuçları ekranda gösterilir.

Programın çalışması için kullanıcıdan önce iki sayı istenir ve bu sayılar değişkenlere atanır. Daha sonra, if-else yapısı kullanılarak bu sayıların karşılaştırması yapılır ve en büyük sayı belirlenir.

Bir örnekle açıklarsak, kullanıcının girdiği iki sayı 4 ve 7 olsun. Program, 4 ve 7 sayılarını karşılaştıracak ve sonuç olarak 7'i en büyük sayı olarak belirleyecektir. Bu sonuç, ekranda kullanıcıya gösterilecektir.

Programlama açısından, bu uygulama if-else yapısının doğru kullanımını ve C++ dilindeki koşul operatörlerinin pratikte nasıl kullanıldığını gösterir. Ayrıca, iki sayı arasında karşılaştırma yapmak için birden fazla yöntem kullanılabilir, ancak en büyük sayıyı bulmak için if-else yapısı tercih edilir.


Uygulama3

C++ dilinde koşul operatörleri ile yapılabilecek uygulamalara örnek verilmeye devam ediyor. Bu örnekte kullanıcıdan iki adet sayı istenir ve girilen sayılar tersten yazdırılır. Yani kullanıcının ilk girdiği sayı sondan başa doğru, ikinci girdiği sayı da sondan başa doğru yazdırılır. İlk olarak kullanıcıdan iki tane tam sayı istenir ve bu sayılar iki farklı değişkene atanır. Ardından her sayının tersten yazdırılması için bir döngü oluşturulur.

Adım Kodlar Açıklama
1 int sayi1, sayi2, tersSayi1=0, tersSayi2=0, kalan; Girilen sayılar için gerekli değişkenler tanımlandı.
2 cout << "1. sayiyi girin: "; Kullanıcıdan 1. sayı istendi.
3 cin >> sayi1; Kullanıcıdan girilen sayı 1. değişkene atandı.
4 cout << "2. sayiyi girin: "; Kullanıcıdan 2. sayı istendi.
5 cin >> sayi2; Kullanıcıdan girilen sayı 2. değişkene atandı.
6 while(sayi1 > 0) 1. sayı tersten yazdırılıyor.
7 {
8 kalan = sayi1 % 10; 1. sayının son basamağı alındı.
9 tersSayi1 = (tersSayi1*10) + kalan; 1. sayının son basamağı tersSayi1 değişkenine aktarıldı.
10 sayi1 = sayi1 / 10; 1. sayının son basamağı atıldı.
11 }
12 while(sayi2 > 0) 2. sayı tersten yazdırılıyor.
13 {
14 kalan = sayi2 % 10; 2. sayının son basamağı alındı.
15 tersSayi2 = (tersSayi2*10) + kalan; 2. sayının son basamağı tersSayi2 değişkenine aktarıldı.
16 sayi2 = sayi2 / 10; 2. sayının son basamağı atıldı.
17 }
18 cout << "1. sayinin tersi: " << tersSayi1 << endl; 1. sayının tersten yazdırılmış hali ekrana basıldı.
19 cout << "2. sayinin tersi: " << tersSayi2 << endl; 2. sayının tersten yazdırılmış hali ekrana basıldı.

Bu örnekte kullanıcının girdiği her bir sayının tersten yazdırılması için ayrı ayrı bir döngü oluşturuldu. İlk döngüde 1. sayının son basamağı alındı ve tersSayi1 değişkenine aktarıldı. Sonra 1. sayının son basamağı atıldı ve aynı işlem son basamağı 0 olana kadar tekrarlandı. İkinci döngüde de aynı işlemler ikinci sayı için yapıldı. Son olarak tersten yazdırılmış her bir sayı ekrana basıldı.