C++ | Birlikte Yazılım Öğrenelim Serisi - else if, elif

YunusEmreOfficial

Online - Çevrimiçi
Premium Üye
Yardımsever Üye
Usta Üye
Mesaj
1.370
Çözümler
35
Beğeni
992
Puan
1.170
Ticaret Puanı
1
Merhaba arkadaşlar.
Bir önceki konumuzda if-else yapılarını detaylı bir şekilde incelemiştik. Hatırlarsanız, if-else kullanarak programımızın belirli bir koşula göre karar vermesini sağlıyorduk. Bugün, bu yapıyı biraz daha ileri taşıyacak ve çoklu koşullar için kullanılan else if yapısını öğreneceğiz


else if Yapısı Nedir?​


else if, birden fazla koşulu kontrol etmek ve programın bu koşullara göre farklı yollar izlemesini sağlamak için kullanılır. Eğer birden fazla durum söz konusuysa ve bu durumlar arasında bir seçim yapmanız gerekiyorsa, else if kullanımı idealdir.

Bu yapı, belirli bir sırayla koşulları kontrol eder ve ilk doğru koşula göre işlem yapar. Eğer hiçbir koşul doğru değilse, else bloğu çalışır.

Önceki konumuzdan hatırlayın. Eğer 1den fazla if varsa yani koşulumuz varsa önce ifler kontrol edilirdi. Ardından koşul doğru değilse else çalışırdı. Burda ise ilk if kontrol edilir. Eğer koşul geçersiz se elseifler kontrol edilir. Onlarda geçersiz ise o zaman else çalışır.
Yani ne demek bu ?
Demek oluyoki oradaki ifler birbirinden bağımsız çalışır. Tüm ifler sorgulanır. Ancak buradaki yapıda ise yani elseifte ise if, elseif ve else 3'üde birlikte çalışır. Önce if sorgulanır, yanlış ise elseife geçilir oda yanlış ise else çalışır.

else if Kullanım Şeması​


C++:
Genişlet Daralt Kopyala
if (koşul1) {
    // Koşul1 doğruysa burası çalışır
} else if (koşul2) {
    // Koşul1 yanlışsa ve Koşul2 doğruysa burası çalışır
} else if (koşul3) {
    // Koşul1 ve Koşul2 yanlışsa ve Koşul3 doğruysa burası çalışır
} else {
    // Yukarıdaki hiçbir koşul doğru değilse burası çalışır
}

Not: Sadece bir koşul doğru olabilir. İlk doğru koşul bulunduktan sonra diğerleri kontrol edilmez.
İstediğiniz kadar koşul (else if) ekleyebilirsiniz.


Şimdi gelelim örneğimize :
Kullanıcının Notuna Göre Derecelendirme

Soru : Bir öğrencinin notuna göre hangi derecelendirmeyi aldığını belirleyen bir program yazalım.

Cevap:
C++:
Genişlet Daralt Kopyala
#include <iostream>
using namespace std;

int main() {
    int notDegeri;

    cout << "Notunuzu girin (0-100): ";
    cin >> notDegeri;

    if (notDegeri >= 85) {
        cout << "Tebrikler! Pekiyi aldınız." << endl;
    } else if (notDegeri >= 70) {
        cout << "İyi bir not aldınız." << endl;
    } else if (notDegeri >= 50) {
        cout << "Geçtiniz." << endl;
    } else {
        cout << "Maalesef kaldınız." << endl;
    }

    return 0;
}

Kodun Çalışma Mantığı​

  1. Kullanıcıdan bir not girişi alınır.
  2. Not sırasıyla şu koşullara göre kontrol edilir:
  • Eğer not 85 veya üzeriyse, "Tebrikler! Pekiyi aldınız." mesajı gösterilir.
  • Eğer not 70-84 aralığındaysa, "İyi bir not aldınız."
  • Eğer not 50-69 aralığındaysa, "Geçtiniz."
  • Eğer not 49 veya altındaysa, "Maalesef kaldınız."
Örnek değer girelim :

Girdi :
Çıktı :
96İyi bir not aldınız.
75Tebrikler! Pekiyi aldınız.
57Geçtiniz
20Maalesef kaldınız.


Birden fazla durumu ele almamız gereken her yerde else if yapısı oldukça kullanışlıdır. Bugün öğrendiklerimizle birlikte, yazılımlarınızı daha etkili bir şekilde kontrol edebilirsiniz. Sıradaki konumuzda ise döngüleri inceleyerek, tekrarlayan işlemleri nasıl kolaylaştırabileceğinizi göreceğiz.

Soru ve yorumlarınızı bizimle paylaşmayı unutmayın! Bir sonraki yazıda görüşmek üzere...



Not : Olası hata bildirimleri, iletişim veya gelişmelerden erken haber almak için discord kanalıma gelebilirsiniz.
Linkleri görebilmek için giriş yap veya kayıt ol.


Önemli not: Bu konu ve açacağım diğer konular tamamen kendime ait konular herhangi bir yerden alıntı değildir.
Mmotutkunlarına özel içeriktir.
Lütfen alacaksanız bile kaynak gösteriniz.
Sevgilerle.
 
Konuda bilerek bi yanlışlık yaptım. Bulan ilk kişiye 3 aylık premium üyelik hediye. 😁

Konumuzun okuyucularına soru :
Trafik Işıklarına Göre Geçiş Durumu Belirleyin
Bir trafik ışığı sistemi simüle eden bir program yazın. Kullanıcıdan trafik ışığının rengini girmesini isteyin ve aşağıdaki kurallara göre mesajlar verin:
Kurallar :
  1. Eğer kullanıcı "kırmızı" girerse, "Durmanız gerekiyor." yazdırın.
  2. Eğer kullanıcı "sarı" girerse, "Hazırlanın, dikkatli olun." yazdırın.
  3. Eğer kullanıcı "yeşil" girerse, "Geçebilirsiniz." yazdırın.
  4. Eğer kullanıcı geçersiz bir renk girerse, "Geçersiz trafik ışığı rengi!" yazdırın.
 
Konuda bilerek bi yanlışlık yaptım. Bulan ilk kişiye 3 aylık premium üyelik hediye. 😁

Konumuzun okuyucularına soru :
Trafik Işıklarına Göre Geçiş Durumu Belirleyin

Kurallar :
Negatif sayı kontrolü yok. Girilen değerin 0 ile 100 arasında bir sayı olup olmadığı kontrol edilebilir.
 
Negatif sayı kontrolü yok. Girilen değerin 0 ile 100 arasında bir sayı olup olmadığı kontrol edilebilir.
Mantıken doğru kontrol ekli değil. Kullanıcıya 0 ile 100 arasında diyoruz ama kontrol olmadığı için 200de girebilir. Çıktısı Tebrikler! Pekiyi aldınız. olur.
Ama benim yaptığım yanlış bu değildi. 2.bir eksiklik bulmuş oldun. Tebrik ederim. 3 aylık premium hediyem.

Yaptığım yanlış hala bu konuda bi yerde bulana 3 aylık premium hediye.
 
Son düzenleme:
Mantıken doğru kontrol ekli değil. Kullanıcıya 0 ile 100 arasında diyoruz ama kontrol olmadığı için 200de girebilir. Çıktısı Maalesef kaldınız olur.
Ama benim yaptığım yanlış bu değildi. 2.bir eksiklik bulmuş oldun. Tebrik ederim. 3 aylık premium hediyem.

Yaptığım yanlış hala bu konuda bi yerde bulana 3 aylık premium hediye.
Teşekkürler. Sen öyle söyleyince hatayı merak ettim. Bahsettiğiniz hata mantıksal bir hata mı yoksa yazım yanlışı mı?
 
Mantıken doğru kontrol ekli değil. Kullanıcıya 0 ile 100 arasında diyoruz ama kontrol olmadığı için 200de girebilir. Çıktısı Maalesef kaldınız olur.
Ama benim yaptığım yanlış bu değildi. 2.bir eksiklik bulmuş oldun. Tebrik ederim. 3 aylık premium hediyem.

Yaptığım yanlış hala bu konuda bi yerde bulana 3 aylık premium hediye.
çıktı 200 olursa maalesef kaldınız yazmaz pekiyi yazar 100 üstü için bir koşul yok bende kazandım mı :D
 
  • Eğer not 70-84 aralığındaysa, "İyi bir not aldınız."

Bunun için verilen kod yanlış.
Aşağıdaki gibi olmalı:
C++:
Genişlet Daralt Kopyala
else if (notDegeri >= 70 && notDegeri <=84 )
{
    cout << "İyi bir not aldınız." << endl;
}


  • Eğer not 50-69 aralığındaysa, "Geçtiniz."
Bunun için de aynı şey geçerli:
C++:
Genişlet Daralt Kopyala
else if (notDegeri >= 50 && notDegeri <=69 )
{
    cout << "Geçtiniz." << endl;
}

Edit: iki türlü de olur ama dikkatimi çeken bu oldu :D nedense bu yolu tercih ettim direkt
 
  • Eğer not 70-84 aralığındaysa, "İyi bir not aldınız."

Bunun için verilen kod yanlış.
Aşağıdaki gibi olmalı:
C++:
Genişlet Daralt Kopyala
else if (notDegeri >= 70 && notDegeri <=84 )
{
    cout << "İyi bir not aldınız." << endl;
}


  • Eğer not 50-69 aralığındaysa, "Geçtiniz."
Bunun için de aynı şey geçerli:
C++:
Genişlet Daralt Kopyala
else if (notDegeri >= 50 && notDegeri <=69 )
{
    cout << "Geçtiniz." << endl;
}

Edit: iki türlü de olur ama dikkatimi çeken bu oldu :D nedense bu yolu tercih ettim direkt
Aslında editiniz de dediğiniz gibi net bir kontrol için bu uygun. Ancak zaten diğer kodlarda bunu sağlıyo. Yani 2 türlüsüde doğru olur.
 

Girdi :
Çıktı :
96İyi bir not aldınız.
75Tebrikler! Pekiyi aldınız.
57Geçtiniz
20Maalesef kaldınız.

Buradaki çıktı sonuçları yanlış gözüküyor.
Evet doğru cevap buydu. Tebrik ederim. Bilerek çıktıyı yanlış verdim. Doğrusu böyle olacaktı.

Girdi :
Çıktı :
96Tebrikler! Pekiyi aldınız.
75İyi bir not aldınız.
57Geçtiniz
20Maalesef kaldınız.
 
Sorumuza çözüm sunabilecek varmı peki ?
Kurallara uymayı unutmayın. 😇
C++:
Genişlet Daralt Kopyala
#include <iostream>
#include <string>
using namespace std;

int main() {
    string renk;

    cout << "Trafik ışığının rengini girin (kırmızı, sarı, yeşil): ";
    cin >> renk;

    if (renk == "kırmızı") {
        cout << "Durmanız gerekiyor." << endl;
    } else if (renk == "sarı") {
        cout << "Hazırlanın, dikkatli olun." << endl;
    } else if (renk == "yeşil") {
        cout << "Geçebilirsiniz." << endl;
    } else {
        cout << "Geçersiz trafik ışığı rengi!" << endl;
    }

    return 0;
}
Ancak, kullanıcı büyük harfler ile yazarsa Geçersiz trafik ışığı rengi! çıktısı atar.
 
C++:
Genişlet Daralt Kopyala
#include <iostream>
#include <string>
using namespace std;

int main() {
    string renk;

    cout << "Trafik ışığının rengini girin (kırmızı, sarı, yeşil): ";
    cin >> renk;

    if (renk == "kırmızı") {
        cout << "Durmanız gerekiyor." << endl;
    } else if (renk == "sarı") {
        cout << "Hazırlanın, dikkatli olun." << endl;
    } else if (renk == "yeşil") {
        cout << "Geçebilirsiniz." << endl;
    } else {
        cout << "Geçersiz trafik ışığı rengi!" << endl;
    }

    return 0;
}
Ancak, kullanıcı büyük harfler ile yazarsa Geçersiz trafik ışığı rengi! çıktısı atar.
Doğru, cevapların için çok teşekkür ederim. 😇

if (renk == "kırmızı" || renk == "Kırmızı" || renk == "Kirmizi" || renk == "kirmizi" )

Böylesi çok daha güzel olur. Kullanıcı bu ne gireceği belli olmaz. 😂😂
 
Doğru, cevapların için çok teşekkür ederim. 😇

if (renk == "kırmızı" || renk == "Kırmızı" || renk == "Kirmizi" || renk == "kirmizi" )

Böylesi çok daha güzel olur. Kullanıcı bu ne gireceği belli olmaz. 😂😂
Kullanıcı kIRMIZI yazarsa? Bu durumda çıktı yine Geçersiz trafik ışığı rengi! olur.
 
Kullanıcı kIRMIZI yazarsa? Bu durumda çıktı yine Geçersiz trafik ışığı rengi! olur.
Her harfi eklersek kod uzarda uzar. 😂😂
Önerin varmı ?
Ben mesela şuan mobildeyim. O yüzden i li de ekledim klavyemde tam tuşları açmaz isem ı harfi yok. 😂😂
 
trafik ışığı sistemi:
Genişlet Daralt Kopyala
#include <iostream>
#include <string>

// harfleri küçük harfe çevir
char kucukharfecevir(char harf)
{
    switch (harf)
    {
        case 'Ç': return 'ç';
        case 'Ğ': return 'ğ';
        case 'İ': return 'i';
        case 'Ş': return 'ş';
        case 'Ü': return 'ü';
        case 'Ö': return 'ö';
        default:
            if (harf >= 'A' && harf <= 'Z')
            {
                return harf + ('a' - 'A');
            }

            return harf;
    }
}

// Metni tamamen küçük harfe çevir
std::string metnikucukharfecevir(const std::string &metin)
{
    std::string sonuc = metin;

    for (char &harf : sonuc)
    {
        harf = kucukharfecevir(harf);
    }

    return sonuc;
}

// Trafik ışığı kontrolü
void trafikisigisistemi()
{
    std::string renk;

    std::cout << "Trafik ışığının rengini girin (kırmızı, sarı, yeşil): ";
    std::getline(std::cin, renk);

    // Kullanıcıdan alınan metni küçük harfe çevir
    renk = metnikucukharfecevir(renk);

    if (renk == "kırmızı")
    {
        std::cout << "Durmanız gerekiyor." << std::endl;
    }
    else if (renk == "sarı")
    {
        std::cout << "Hazırlanın, dikkatli olun." << std::endl;
    }
    else if (renk == "yeşil")
    {
        std::cout << "Geçebilirsiniz." << std::endl;
    }
    else
    {
        std::cout << "Geçersiz trafik ışığı rengi!" << std::endl;
    }
}

int main()
{
    trafikisigisistemi();//Fonksiyonu istediğin yerde çağırıp kullan
    return 0;
}
 
Geri
Üst