C++ / Örnekler - 3 / Kullanıcı Girişi / Basit Düzey

YunusEmreOfficial

yedmedya.com.tr
Premium Üye
Yardımsever Üye
Usta Üye
Mesaj
1.384
Çözümler
36
Beğeni
1.000
Puan
1.370
Ticaret Puanı
2
Merhaba arkadaşlar,
Daha öncesinde 2 konu paylaşmıştım. İf else ve else if olarak. Şimdi pekiştirmek adına 1 örnek yapalım.

Basit düzey de kullanıcı girişi yapan kodları yazalım.

C++:
Genişlet Daralt Kopyala
#include <iostream>
#include <string>
using namespace std;
int main() {
    string kullaniciAdi, sifre;
    string DefaultKullaniciAdi = "admin";
    string DefaultSifre = "12345";

geri: // Etiket
    cout << "Kullanıcı Adı: ";
    cin >> kullaniciAdi;

    cout << "Şifre: ";
    cin >> sifre;

    if (kullaniciAdi == DefaultKullaniciAdi && sifre == DefaultSifre) {
        cout << "Giriş başarılı. Hoş geldiniz!" << endl;
    } else {
        if (kullaniciAdi != DefaultKullaniciAdi && sifre == DefaultSifre) {
            cout << "Kullanıcı adı hatalı!" << endl;
        } else if (kullaniciAdi == DefaultKullaniciAdi && sifre != DefaultSifre) {
            cout << "Şifre hatalı!" << endl;
        } else {
            cout << "Kullanıcı adı ve şifre hatalı!" << endl;
        }
        cout << "Lütfen tekrar deneyin.\n" << endl;
        goto geri; // Etikete dön
    }

    return 0;
}

Öncelikle bilmeniz gereken goto kullanımı,
goto daha öncesinde belirlediğiniz etikete gider ve kodlar oradan çalışmaya devam eder.
Şeklinde kullanılır. Yukarıdaki örnekte görebilirsiniz. Goto güncel kodlarda pek önerilmez. Onun yerine daha işlevsel döngüler kullanılır. Ancak henüz paylaşmadığım için goto kullanmayı tercih ettim.

Kodların açıklaması :

1.Kütüphane ve namespace Kullanımı​

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

  • #include <iostream>: Ekrana yazı yazmak (cout) ve klavyeden veri almak (cin) için gerekli standart giriş/çıkış kütüphanesini ekler.
  • #include <string>: string veri türünü kullanabilmek için gerekli olan kütüphaneyi ekler.
  • using namespace std;: std isim alanını kullanarak her yerde std:: yazmak zorunda kalmaktan kurtarır. Örneğin, std::cout yerine doğrudan cout yazabiliriz.

2. Değişken Tanımlamaları​

C++:
Genişlet Daralt Kopyala
string kullaniciAdi, sifre;
string DefaultKullaniciAdi = "admin";
string DefaultSifre = "12345";

  • kullaniciAdi ve sifre: Kullanıcıdan alınacak verileri saklamak için tanımlanmıştır.
  • DefaultKullaniciAdi ve DefaultSifre: Doğru kabul edilen kullanıcı adı ve şifreyi tutar. Bu değerlerle karşılaştırma yapılır. Değerler default olarak yani bilerek böyle verilmiştir. İsterseniz kullanıcıya girdirebilirsiniz. İlerleyen konularda sql öğrendiğimizde bilgiler veritabanından gelecektir.

3. Giriş Etiketi ve Kullanıcı Girdisi

C++:
Genişlet Daralt Kopyala
geri: // Etiket
    cout << "Kullanıcı Adı: ";
    cin >> kullaniciAdi;

    cout << "Şifre: ";
    cin >> sifre;

  • Etiket (geri): Programın belirli bir satırına tekrar dönebilmek için tanımlanmıştır. Bu etikete goto komutuyla dönülebilir.
  • Kullanıcıdan önce kullanıcı adı istenir (cin >> kullaniciAdi;), ardından şifre istenir (cin >> sifre;).

4. Giriş Kontrolü

C++:
Genişlet Daralt Kopyala
if (kullaniciAdi == DefaultKullaniciAdi && sifre == DefaultSifre) {
    cout << "Giriş başarılı. Hoş geldiniz!" << endl;
} else {
  • Kullanıcı adı ve şifre doğruysa:
    • Kullanıcıya "Giriş başarılı. Hoş geldiniz!" mesajı verilir.
  • Aksi halde, program else bloğuna girer ve hataları kontrol eder.

5. Hata Kontrolü

C++:
Genişlet Daralt Kopyala
if (kullaniciAdi != DefaultKullaniciAdi && sifre == DefaultSifre) {
    cout << "Kullanıcı adı hatalı!" << endl;
} else if (kullaniciAdi == DefaultKullaniciAdi && sifre != DefaultSifre) {
    cout << "Şifre hatalı!" << endl;
} else {
    cout << "Kullanıcı adı ve şifre hatalı!" << endl;
}

  • Kullanıcı adı hatalıysa(şifre doğru):
    • kullaniciAdi != DefaultKullaniciAdi && sifre == DefaultSifre
    • Kullanıcıya "Kullanıcı adı hatalı!" mesajı gösterilir.
  • Şifre hatalıysa(kullanıcı adı doğru):
    • kullaniciAdi == DefaultKullaniciAdi && sifre != DefaultSifre
    • Kullanıcıya "Şifre hatalı!" mesajı gösterilir.
  • Hem kullanıcı adı hem şifre hatalıysa:
    • kullaniciAdi != DefaultKullaniciAdi && sifre != DefaultSifre
    • Kullanıcıya "Kullanıcı adı ve şifre hatalı!" mesajı gösterilir.

6. Hata Sonrası Yeniden Giriş

C++:
Genişlet Daralt Kopyala
cout << "Lütfen tekrar deneyin.\n" << endl;
goto geri; // Etikete dön

  • Kullanıcı yanlış bilgi girdiğinde, "Lütfen tekrar deneyin." mesajı gösterilir.
  • goto geri;: Program, geri etiketine döner ve kullanıcı adı/şifre girişini tekrar başlatır.

7. Başarılı Çıkış

C++:
Genişlet Daralt Kopyala
return 0;

  • Eğer kullanıcı doğru bilgileri girerse, program "Giriş başarılı. Hoş geldiniz!" mesajını verir ve return 0; ile sona erer.

Not: Baştan sona en basit haliyle bu şekildeydi. İsterseniz özelleştirebilirsiniz. İlerleyen konularda döngüye alacağız daha sonradan oopye ( Nesne yönelimli ) geçtiğimiz zaman ise görselleştireceğiz.

Compilerden çıktı görüntüsü :

1733933323200.webp

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.
 
Son düzenleme:
Geri
Üst