İlk C++ projesi iyi mi?

TTfT

Decapat
Katılım
17 Temmuz 2023
Mesajlar
202
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Merhabalar 4 gündür C++ öğreniyorum. Bir kaç şey öğrendim ve ilk projemi yaptım

#include <iostream>

int main() {
int sayi1;

srand (time(NULL));
int sayi = rand() % 11;


std::cout << "0-10 arasında bir rakam tuttum.Tahmin et: \n" ;
do {
std::cin >> sayi1;


if (sayi1 == sayi) {
std::cout << "Tebrikler doğru tahmin ettin! \n";
}

else if (sayi1 > sayi){
std::cout << "Tahmin ettiğim rakan bu rakamdan küçük. :( \n";

}
else {
std::cout << "Tahmin ettiğim rakam bu rakamdan büyük. :( \n";

}

} while (sayi1 != sayi);


}


Bu ilk projem. do ve while yeni öğrendim. Yorumlarsınız ve eksiklerimi söylerseniz sevinirim teşekkürler.
 
Son düzenleyen: Moderatör:
Merhabalar 4 gündür C++ öğreniyorum. Bir kaç şey öğrendim ve ilk projemi yaptım

#include <iostream>

int main() {
int sayi1;

srand (time(NULL));
int sayi = rand() % 11;


std::cout << "0-10 arasında bir rakam tuttum.Tahmin et: \n" ;
do {
std::cin >> sayi1;


if (sayi1 == sayi) {
std::cout << "Tebrikler doğru tahmin ettin! \n";
}

else if (sayi1 > sayi){
std::cout << "Tahmin ettiğim rakan bu rakamdan küçük. :( \n";

}
else {
std::cout << "Tahmin ettiğim rakam bu rakamdan büyük. :( \n";

}

} while (sayi1 != sayi);


}


Bu ilk projem. do ve while yeni öğrendim. Yorumlarsınız ve eksiklerimi söylerseniz sevinirim teşekkürler.
Kod gayet güzel ama include <iostream> satırının altına using namespace std; satırını eklerseniz cout gibi fonksiyonların başına std:: yazmak zorunda kalmazsınız. Birde syntax hiç düzgün değil mesela int main() den sonra 1 tab boşlukluı yazılır, do dan sonra da bir tab (4 boşluk) bırakmanız lazım if te falanda aynı. Başka sıkıntı yok.
 
Son düzenleme:
Syntax'ı doğru yapmış evet ama dediğim using namespace std; sizin işinizi kolaylaştırması için, çoğu şeyin başına std:: eklemeyi kimse istemez.
using namespace std; bad practicedir. Asıl kimse bunu istemiyor. Large codebaselere baktığında sabah akşam std:: görürsün. Çok, çok, çok, çok, çok, çok nadiren using namespace std; kullanılır.

Arkasındaki sebep name collision önlemek. Standart library de, senin yazdığın program da günden güne büyüyecek. Eğer standart libraryde daha önce olmayan bir fonksiyonla aynı ismi kullandıysan, yeni versiyona geçtiğinde, eğer using namespace std; yaptıysan çakışma yaşayacaksın.

Bak buna örnek şöyle olur;
C++:
namespace A {
    class C {};
}

namespace B {
    class C {};
}

using namespace A;
using namespace B;

int main()
{
    C c;

    return 0;
}

Yukarıdaki kod aşağıdaki hatayı verecek. Bunun çözümü, hangi C'yi kullanmak istiyorsak, scope resolution operatörü (::) ile o scopetakine işaret etmek. Diyelim ki A'nın C'sini kullanacağım, o zaman yazmam gereken şey; A::C c;. A::C yazdıktan sonra using namespace A;'nin bir anlamı kalmıyor zaten. Gelecekte temizleme konusunda zorluk çıkaracak eğer geniş bir uygulamada çakışmalar yaşadıysak. Çünkü tek tek gidip hangi fonksiyonun, hangi namespace'ten çağrıldığı ayıklamam gerekecek. Bu yüzden de bad practice.
1721398532980.png
 
Son düzenleme:
Kod gayet güzel ama include <iostream> satırının altına using namespace std; satırını eklerseniz cout gibi fonksiyonların başına std:: yazmak zorunda kalmazsınız. Birde syntax hiç düzgün değil mesela int main() den sonra 1 tab boşlukluı yazılır, do dan sonra da bir tab (4 boşluk) bırakmanız lazım if te falanda aynı. Başka sıkıntı yok.
Anladım Hocam Teşekkürler.
Eyvallah hocam teşekküler.
 
Değişken isimlerini İngilizce olacak şekilde verebilirsin. Türkçe olarak alışmanı tavsiye etmem.
sayi1 gibi anlamsız bir isimlendirme yapma. Bunun yerine gerçekten ne anlama geliyorsa onu yaz. Mesela userGuess, guessNumber falan olabilir.
Güzel bir do-while örneği olmuş. Belki max kullanıcı deneme koşulu eklenebilir. Mesela max 5 sayı girebilir falan.
 

Technopat Haberler

Geri
Yukarı