C++ | Birlikte Yazılım Öğrenelim Serisi - Do While döngüsü

YunusEmreOfficial

yedmedya.com.tr
Premium Üye
Yardımsever Üye
Usta Üye
Mesaj
1.410
Çözümler
37
Beğeni
1.063
Puan
1.370
Ticaret Puanı
2
do while döngüsü, bir kod bloğunu çalıştırdıktan sonra koşulu kontrol eder. Eğer koşul doğruysa, döngü tekrar çalıştırılır. Bu yapı, en az bir kez çalıştırılması gereken durumlarda kullanışlıdır. Yani önce kodlar 1 kez çalışır ve sonra koşul sorgulanır.

Kullanışı :

C++:
Genişlet Daralt Kopyala
do {
    // Çalıştırılacak kod bloğu
} while (koşul);

Çalışma Şekli :

  1. Kod Bloğunun Çalıştırılması: İlk olarak do bloğundaki kod çalıştırılır.
  2. Koşul Kontrolü: Daha sonra while koşulu kontrol edilir.
  3. Döngü Devamı: Eğer koşul doğruysa, döngü başa döner ve kod bloğu tekrar çalıştırılır. Koşul yanlışsa, döngü sonlanır.

Örnek :

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

int main() {
    int sayi;
    
    do {
        cout << "Bir sayı girin (0 ile çıkmak için): ";
        cin >> sayi;
        cout << "Girdiğiniz sayı: " << sayi << endl;
    } while (sayi != 0);

    cout << "Programdan çıkıldı." << endl;
    return 0;
}

Kod Açıklaması :

  • Kullanıcıdan bir sayı girmesi istenir.
  • Kullanıcı 0 girmediği sürece, döngü devam eder ve girilen sayı ekrana yazdırılır.
  • Kullanıcı 0 girdiğinde, döngü sonlanır ve program sonlanır.

1735582235852.webp


do while döngüsü, kod bloğunun en az bir kez çalıştırılmasını garanti eder., Kullanıcıdan girdi almak gibi durumlarda kullanışlıdır.
Ancak dikkat edilmesi gereken bir konu, kodların 1 kez çalışacağı için girdi durumunu sonsuz döngüye sokacak durumlar oluşabilir. Dikkat edilmelidir.


Özet olarak ;

do while döngüsü, belirli bir koşul sağlanana kadar bir kod bloğunu çalıştırmak için etkili bir yöntemdir. Kullanım alanları arasında kullanıcı girdisi almak ve belirli işlemleri tekrar etmek yer alır.



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.
 
Bu sefer birazcık zor bi soru soralım.

Soru:
  1. Aşağıda gördüğünüz programın işlevi nedir?
  2. Kullanıcı hangi koşulda döngüden çıkacaktır?
  3. Kullanıcı pozitif sayılar girdiğinde toplam ve sayac değişkenlerinin son durumu ne olur?
  4. Kullanıcı negatif bir sayı girdiğinde, programın çıktısı ne olacaktır?
C++:
Genişlet Daralt Kopyala
#include <iostream>
using namespace std;

int main() {
    int sayi;
    int toplam = 0;
    int sayac = 0;

    do {
        cout << "Bir sayı girin (negatif bir sayı ile çıkmak için): ";
        cin >> sayi;

        if (sayi >= 0) {
            toplam += sayi;
            sayac++;
        }

    } while (sayi >= 0);

    if (sayac > 0) {
        cout << "Girdiğiniz pozitif sayıların toplamı: " << toplam << endl;
        cout << "Girdiğiniz pozitif sayıların adedi: " << sayac << endl;
    } else {
        cout << "Hiç pozitif sayı girmediniz." << endl;
    }

    return 0;
}


Not :
Eğitim serimizi olabildiğince hızlı götürmeye çalışıyorum. Faydalı oluyor mu bilmiyorum açıkçası, ancak bazen katılımlar çok güzel oluyor ve buda beni çok motive ediyor. Paylaşımlar hakkında görüş ve önerileriniz olursa mutlaka söylemekten çekinmeyin. Kodla kalın. Bug'suz yaşayın. :) :heyo:
Not2 :
Projelerde kullanılabilecek veyahut farklı örnekleri github repoma ekledim. İnceleyip farklı örnekler bulabilirsiniz. Bu konuyla ilgili başka bir örnek :

Linkleri görebilmek için giriş yap veya kayıt ol.
 
1 - Kullanıcıdan bir sayı girmesi istenir girilen sayı pozitifse toplam değişkenine eklenir ve sayaç 1 artar, negatifse döngü sonlanır.

2 - Herhangi bir negatif sayı girdiğinde döngüden çıkacaktır.

3 - Girilen sayı pozitifse toplam değişkenine eklenir ve sayaç 1 artar.

4 - Direkt negatif bir sayı girilirse çıktı "Hiç pozitif sayı girmediniz." şeklinde olur.

Girdi bir harf olursa sonsuz döngüye girmemesi için bu yapılabilir;

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

int main()
{
    int sayi;
    int toplam = 0;
    int sayac = 0;

    do
    {
        cout << "Bir sayı girin (negatif bir sayı ile çıkmak için): ";
        cin >> sayi;

        if (cin.fail())
        {
            cin.clear();
            cin.ignore(numeric_limits<streamsize>::max(), '\n');
            cout << "Lütfen yalnızca bir sayı girin!" << endl;
            continue;
        }

        if (sayi >= 0)
        {
            toplam += sayi;
            sayac++;
        }

    } while (sayi >= 0);

    if (sayac > 0)
    {
        cout << "Girdiğiniz pozitif sayıların toplamı: " << toplam << endl;
        cout << "Girdiğiniz pozitif sayıların adedi: " << sayac << endl;
    }
    else
    {
        cout << "Hiç pozitif sayı girmediniz." << endl;
    }

    return 0;
}
 
1 - Kullanıcıdan bir sayı girmesi istenir girilen sayı pozitifse toplam değişkenine eklenir ve sayaç 1 artar, negatifse döngü sonlanır.

2 - Herhangi bir negatif sayı girdiğinde döngüden çıkacaktır.

3 - Girilen sayı pozitifse toplam değişkenine eklenir ve sayaç 1 artar.

4 - Direkt negatif bir sayı girilirse çıktı "Hiç pozitif sayı girmediniz." şeklinde olur.

Girdi bir harf olursa sonsuz döngüye girmemesi için bu yapılabilir;

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

int main()
{
    int sayi;
    int toplam = 0;
    int sayac = 0;

    do
    {
        cout << "Bir sayı girin (negatif bir sayı ile çıkmak için): ";
        cin >> sayi;

        if (cin.fail())
        {
            cin.clear();
            cin.ignore(numeric_limits<streamsize>::max(), '\n');
            cout << "Lütfen yalnızca bir sayı girin!" << endl;
            continue;
        }

        if (sayi >= 0)
        {
            toplam += sayi;
            sayac++;
        }

    } while (sayi >= 0);

    if (sayac > 0)
    {
        cout << "Girdiğiniz pozitif sayıların toplamı: " << toplam << endl;
        cout << "Girdiğiniz pozitif sayıların adedi: " << sayac << endl;
    }
    else
    {
        cout << "Hiç pozitif sayı girmediniz." << endl;
    }

    return 0;
}
Çok net ve açıklayıcı cevaplar. Çok teşekkür ederim doğru cevaplar için. Tebrikler.

Girdi bir harf olursa sonsuz döngüye girmemesi için bu yapılabilir;

Önerin içinde ayrıca teşekkürler.
:disney-is-frozen18:
 
Bence c++ olarak en kapsamlı Eğitimi veren yazılımcı isteyen olursa eğer link bırakıyorum 300 den fazla ders var


Güzel bir kaynağa benziyor fakat bu alanda üstüne tanıyamacağım bir kişi varsa oda
Linkleri görebilmek için giriş yap veya kayıt ol.
'dur. Kendisinin yapmış olduğu
Linkleri görebilmek için giriş yap veya kayıt ol.
var. C++ konusunda çok fazla içeriğe sahip ve hala aktif olarak devam ediyor. Sadece c++ öğretmekle kalmıyor ayrıca Code Review serisi var, farklı insanların yazdığı C++ kodlarını inceliyip neleri daha iyi yapabilirdi tarzında feedbackler veriyor. Golden gem olduğuunu düşünüyorum bu kanalın.
 
Güzel bir kaynağa benziyor fakat bu alanda üstüne tanıyamacağım bir kişi varsa oda
Linkleri görebilmek için giriş yap veya kayıt ol.
'dur. Kendisinin yapmış olduğu
Linkleri görebilmek için giriş yap veya kayıt ol.
var. C++ konusunda çok fazla içeriğe sahip ve hala aktif olarak devam ediyor. Sadece c++ öğretmekle kalmıyor ayrıca Code Review serisi var, farklı insanların yazdığı C++ kodlarını inceliyip neleri daha iyi yapabilirdi tarzında feedbackler veriyor. Golden gem olduğuunu düşünüyorum bu kanalın.
Hocam dili öğrenmeye sıfırdan başlayacak biri için code review veya feedbackler bir anlam ifade etmiyor. oynatma listesine gelecek olursak her konu için 1 video yüklemiş ve derinlemesine anlatım yapmamış. Bu arkadaş dilin kurallarını vs çok detaylı şekilde her konuda 5-10 video çekiyor süreleri 15-20dk arası. Kimin ne projeler yaptığını bilemem, ayrıca c++ dışında da dersleri var sistem dinamiği, ayrık kontrol teorileri, sistem modülleri python vs
 
Hocam dili öğrenmeye sıfırdan başlayacak biri için code review veya feedbackler bir anlam ifade etmiyor. oynatma listesine gelecek olursak her konu için 1 video yüklemiş ve derinlemesine anlatım yapmamış. Bu arkadaş dilin kurallarını vs çok detaylı şekilde her konuda 5-10 video çekiyor süreleri 15-20dk arası. Kimin ne projeler yaptığını bilemem, ayrıca c++ dışında da dersleri var sistem dinamiği, ayrık kontrol teorileri, sistem modülleri python vs
Code review yeni başlayan birinin işine bile çok rahat yarayabilir. İnsanların problemlere nasıl yaklaştığını gösteriyor sonuçta. Şahsi görüşüm ki üniversitede de aynı şeyleri görmekten çok sıkılmıştım, basit bir örneği 20 dakika dinlemektense onu 5 dakika dinleyip kendim sürekli farklı farklı kullanrak öğrenmeyi tercih ederim. Bir konuyu tek bir kaynaktan öğrenmek zordur herkesin hedefine göre fakat benim önerdiğim kanal genel olarak c++ ile game development üzerine ve bu forumda en nihayetinde Metin2 üzerine olduğundan benzer hedefler sunuyor.

Tabi burada C++ öğrenmeye vakit ayıracak kaç kişi var tartışılır çünkü gerçekten çok büyük emek istiyor. Senin paylaştığın kaynakta bir başlangıç noktası olabilir elbette, önemli olan C++ syntaxini öğrenmek değil, c++'ı nerede kullanmak istiyorsan onu öğrenmek. Burada senin kaynağın çok kötü bunu kullan demiyorum fark ettiysen, ek olarak bir kaynak belirtiyorum ki şahsımca bu kanal ben beginnerken çok işime yaradı ve hala yarıyorda. Code reviewları eğlencesine izliyorum hala ve çok güzel bilgiler içeriyor.

Sonuçta yazılım dilleri birer tooldur, önceliğiniz her zaman hedefiniz olmalı. İlk soru C++'ı neden öğrenmek istiyorum olmalı. Eğer bu oyun programlamak için ise hali hazırda bu konuya değinen kaynaklar daha yararlı olacaktır.

Ek olarak , yeni başlayan birisinin string'in 50 tane fonksiyonunu bilmesine gerek yok, veya belki ilk başladığında çok fazla kullanmayacağı konularıda saatlerce izlemesine ve öğrenmeye çalışmasınada gerek yok. Temeli attıktan sonra hedefine ilerlerken onları öğrenirse emin ol daha kalıcı oluyor.
 
@cosion
@weto
Her ikinizede kaynaklarınız için teşekkür ederim.
Ancak şunu unutmayın ki her ne kadar detaylı anlatıyor olsalarda, herkesin anlama yorumlama mekanizması farklı çalışıyor. Bir kişi kitaptan daha iyi öğrenir, diğer kişi videolardan, bir başkasıda birisinin kendisine anlatmasından. Burada önemli olan kaynakların ne kadar detaylı olması değil sizin ne kadar çok işinize yaradığı ve anlayıp, öğrenebildiğiniz.
Sonuçta yazılım dilleri birer tooldur, önceliğiniz her zaman hedefiniz olmalı. İlk soru C++'ı neden öğrenmek istiyorum olmalı. Eğer bu oyun programlamak için ise hali hazırda bu konuya değinen kaynaklar daha yararlı olacaktır.

Ek olarak , yeni başlayan birisinin string'in 50 tane fonksiyonunu bilmesine gerek yok, veya belki ilk başladığında çok fazla kullanmayacağı konularıda saatlerce izlemesine ve öğrenmeye çalışmasınada gerek yok. Temeli attıktan sonra hedefine ilerlerken onları öğrenirse emin ol daha kalıcı oluyor.
Burada çok güzel özetlemişsiniz. Bence c++ yada başka bir dilde ( Hangisi olduğu fark etmez. ) en en önemli şeyin hedef olması gerektiğini düşünüyorum. Çünkü bir yazılım dilini öğrenirken hedef olmadığında, öğrendiğinizin bir kıymeti olmuyor. Daha sonra kaynak arayışına girilirse çok daha güzel bir yol gidilebileceğini düşünüyorum.
Benim bu konuları açmam daki sebepde, C++ öğrenmeyi bir hedefe bağlamış olmam. Çoğu kez detaya girmesini çok düşünüyorum. Ama çok fazla bilgiyle insanları boğup sıkmak istemiyorum, şuanlık video çekme imkanım olmadığından yazılı kaynak çünkü. Daha önceki konularda da bahsettiğim gibi aynı zamanda bende öğreniyorum. Bir kaç konu ilerisinden gidip bu seriye devam ediyorum. Yararlandığım şuanlık 2 3 kaynak var okuyup öğrenip en doğrusunu en güncelini aktarmaya çalışıyorum. Şuanlık konular basit ilerliyo amacım basitten ileri seviyeye getirmek. Tam anlamıyla bittiğinde emin olun. Hiç bişey bilmeyen bi insanın bile bu seriyi bitirdiğinde çoğu şeyi biliyo olacak seviyeye çıkarmak. Verdiğiniz kaynaklarıda inceleyip konularımda kullanacağımdan emin olabilirsiniz.
Mesela @CppOgrencem arkadaşımdan learncpp.com adresini öğrenmiştim. Konu açmadan orayada bakıyorum extra söylenebilecek birşey varmı diye.
Tekrardan konuya kattığınız kaynaklar ve yorumlar için çok teşekkür ederim. 😊

Düzeltme :
Her 2 kaynağıda inceledim. 2 side çok güzel anlatıyor ve her ikiside alanında başarılı insanlar. Mehmet İşcan detaylamasına anlatmış yaklaşık 79+ saatlik bir eğitimi var. Bir eğitim ortalama 20 ila 40 saat arasında olur. Oda maximum herşeyi detaylandırarak. 79 saati özellikle hesapladım. Ne kadar detayına girdiğini öğrenenilirsiniz.
2. Olarak The Cerno da aynı şekilde çok başarılı birisi, kendine özel blueprintli oyun motoru yazmış. Gördüğüm kadarıyla ue5 gibi de güçlü görünüyor. Ancak ben olsam ue5 seçerdim. Çünkü herhangi bir sorunda ya da her hangi birşeyde ue5 için daha çok kaynak bulabilecek olmam. Ancak bunun eğitimle hiç bir alakası yok. Eğitimi şahsen dil bilmeyen birisi için çok zor gelebilir. Çünkü eğitim dili ingilizce. Oda aynı şekilde eğitimi güzel 25+ saatlik bir eğitimi var. Kanalını incelerseniz farklı alanlarda da çalışmalarını görürsünüz. Burada önemli olan bir kaynağın ne kadar detaylı yada videodaki dil önemli değil. Tabi önemli aslında ama iyi anlıyosanız o durumu bi şekilde çözüyosunuz. Önemli olan dili ne için kullanacaksınız. Öncelik olarak benim düşüncemce bunu bilmeniz. Daha sonrasında zaten yüzlerce kaynak var. Gerek udemy, gerek youtube, gerek forumlar, gerek çeşitli platformdaki videolar, gerekse kitaplar. Binlerce eğitim makale ders bulabilirsiniz. Hangisini daha iyi anlıyo daha iyi öğrenebiliyosanız onu seçersiniz. Burada yazdıklarım tamamen kendi fikir ve düşüncelerim. Size farklı gelebiliyo olabilir. Tartışma yaratmadan fikirinizi belirtirseniz belki bizede bişeyler katabilirsiniz. Sevgilerle. 😇
 
Son düzenleme:
Geri
Üst