Merhaba ve hoş geldiniz.
Bir gösteri sunmak istiyorum uygulamak olan
önceki zorluğumuza çözüm Tahmin ve sayı türünde bir oyun.
Öyleyse kodu getirelim engeller, mevcut projemi
kapatır ve yeni bir proje oluşturur.
Bu yeni projede Tahmin numarası oyununu aramak için.
Bu bir konsol uygulaması.
O yüzden ben sadece Numarayı tahmin et.
Ve ben ne yapacağım Bu projeye başlamak için değişkenlerimi bildireceğim.
Her zaman beyan etmeyi severim ve Üstteki benim değişkenlerim.
Ama aynı zamanda şunları da kullanacağım rastgele sayı üreteci.
Bu yüzden emin olmak istiyorum ki Birkaç tane var.
Stdlib varsayılan olarak zaten oradadır.
Bu yüzden tek yapmam gereken Zaman. h çünkü bu yine rastgele sayı üreteci
içindir.
Bu temel olarak rastgele sayı üreteci koltuğu.
Diğer değişkenler Bu programda ihtiyacım olacak şey rastgele
sayılarımı saklamak istiyorum.
Bu yüzden sadece şunu söyleyeceğim. rastgele sayı, bunu 0'a başlatacağım
ta ki gerçek kütüphaneden al.
Bu yüzden initialize deyin.
için bir değişken oluşturacağım kullanıcıdan gelen tahmini saklayacağım
ve bunu 0 ile başlatacağım.
Başka bir değişken oluşturacağım tahmin sayısı
olacak, mevcut tahmin sayısı tahminler ya da aslında
maksimum tahmin sayısı demeliyim, maksimum tahmin sayısı ve ben bunu 5 olarak başlatacağım
çünkü sadece 5 kez tahmin edebilirler.
Ayrıca bir zaman yaratmak zorundayım değişkenini kullanarak rastgele sayı üretecim
için kullanabilirim.
Bu yüzden sadece zaman t t diyeceğim.
Önce yapmak istediğim ilk şey Kullanıcıdan rastgele sayı üretmek istediğime
dair girdi isteyin.
Sanırım bunu sorarak yapabilirim. kullanıcıdan girdi ister, ancak ilk yaptığınız
şeyi yapmak kolaydır.
Bu yüzden ben de rastgele sayı üreteci, oraya küçük bir
yorum koyacağım.
İyi anlamlı kullandığınızdan emin olun isimler ve girinti yaptığınızdan emin olun.
Bu srand fonksiyonunu kullanacak derste bahsettiğim şey.
Sadece geçebilirsin esasen bir tohumda.
Bu yüzden imzasız diyeceğim ve sadece t değişkenimi geçireceğim.
Bu biraz zaman alacak. geçerli saati alan işlev.
T harfini geçireceğim ki tohumlarını atacağım ve sonra da bitireceğim.
Şimdi gerçekten benim almam gerekiyor rastgele sayı üreteci, bu yüzden
rastgele sayı al diyeceğim.
Ve tüm bunlar rand fonksiyonundan döndürülen şeye bir
değişken atamaktır.
Diyelim ki rastgele sayı yerel değişkenim eşittir ve atama
operatörünü kullanarak rand bir fonksiyon çağırıyor.
Bunların hiçbirini bilmenize gerek yok, ama ben 21 ile tohumlayacağım.
Bu benim rastgele sayı sadece 0 ile 20 arasındadır.
Şimdi sadece bir Kullanıcının ne yaptığını bilmesi için ekrana
birkaç mesaj ekleyin.
Bu yüzden bir baskı uygulaması yapacağım ve bunun bir tahmin oyunu olduğunu söyleyeceğim.
Ve sonra da Onlara tekrar 0 ile 20 arasında
bir sayı seçtiğimi söyleyin, haberdar olsunlar diye.
Ve sonra 0 ve 20'yi tahmin edin ve satır beslemesiyle sonlandırın.
Şimdi onlara ne söylediğimi oyuna girmek istiyorum, gerçekten döngüye
başlayacağım.
Ve ben de tahmin sayısı 5'e eşittir.
Yani aslında tercih edeceğim şey burada tahminlerimin sayısını netleştirmek
istedim, ancak Başlatmak istemiyorum.
Döngümde başlatmak istiyorum Sadece bunu yapabileceğimi göstermek için.
Eğer orada başlattıysam, for döngüsündeki ilk noktalı virgülden önce, boş
tutabilirdim.
Örneğin şöyle bir şey yapabilirim bunun gibi, burada başlatın.
Ve sonra for döngümde sadece noktalı virgül koydum çünkü bir başlatma
yapmama gerek yok.
Çünkü hatırlayın, for döngümüzde, noktalı virgülden
önce sahip olduğunuz ilk şey başlatma işlemidir döngü kontrol değişkeni.
Zaten başlattım Yani bunu yapmama gerek yok
ama bunu yapmak da istemiyorum.
Sadece ilan edeceğim ve ben de onu burada
başlatacağım.
Maksimum diyeceğim. tahmin sayısı 5'e eşittir.
Bu benim döngü kontrol değişkenim, Onu başlatacağım.
Ben arabadan atlayacağım. maksimum tahmin sayısına
ulaşılırsa döngü.
Yani burada diyebilirim ki aslında ben farklı bir şekilde yazacağım.
Öyle yazacağım ki döngü 5'ten 0'a gider.
Yani maksimum sayım 5'e eşittir.
Bu daha iyi olurdu bu değişkeni yeniden adlandırın.
Hadi adını değiştirelim ve tahmin sayısını söyleyin.
Ve tahmin sayısı 5 olarak başlayacak.
Ve ben yapacağım Bu geriye doğru gider.
Ve tahmin sayısı 0, döngüden çıkmak istiyorum.
Yani benim döngü çıkış koşulum, Tahmin sayısının 0'dan büyük olduğunu
söyleyeceğim.
Bak burada ne yapıyorum.
Ben sadece Eğer başka tahminim kalmadıysa döngü.
Yani 0'dan büyüksem döngünün içinde kalacak.
Ve son olarak şunu söylemek istiyorum. ikinci iki nokta üst üste modifikasyonundan
sonra for döngüsünde sağlayın bu döngü kontrol değişkeninin.
Bu yüzden ben sadece eksi eksi tahmin sayısı.
Ve fark etmeniz gerekenler Bu for
döngüsünde... Neredeyse geriye doğru gidiyorum.
5'ten başlıyorum ve 0'a gidiyorum.
Burada verdiğimiz tüm örnekler için ders, 0'dan başlıyoruz ve yukarı çıkıyoruz.
Ama ikisini de yapabilirsiniz, Önemli değil.
Hala burada 5 kez yineliyorsun.
Şimdi de bir kaç denemeleri kaldığını belirten
bir mesaj gönderir.
Bu yüzden printf diyeceğim, ve aslında üçlü operatörü de dahil edeceğim
kullanmadığımız için burada.
Bu şekilde yapmana gerek yok, ama size nasıl yapacağınızı göstermek
için bu şekilde yapacağım. üçlü işleci kullanabilir.
Şimdi sana bir çıktı vereceğim. yüzde d denemeleri yüzde s kaldı.
Yüzde d olacak eşit sayıda tahmin ve yüzde
üç, değişecek.
Ya denemeler olacak ya da deneyeceğiz.
Ve bu yüzden değiştireceğim ne kadar tahminim kaldığına
bağlı olarak görüntülenir.
Eğer sayı tahminleri 1'e eşittir.
Denemeler planlamak istemiyorum, bir solda denemek, bu mantıklı değil.
Bir denemenin çıktısını almak istiyorum.
Bu yüzden burada terimsel operatör veya daha doğrusu
koşullu operatör.
Eğer tahmin sayısı 1'e eşitse, tahmin sayısını y'ye eşit olarak ayarlayın, aksi
takdirde IES olarak ayarlayın.
Ve bunu basacağım. yüzde s ne yapıyorsa, burada ne döndürülüyorsa.
Yani bu geri dönecek ya da bir IES ve doğru bilgileri görüntüleyin.
Bu yüzden bunu sadece terminali nasıl kullanabileceğinizi,
nasıl yazdırabileceğinizi doğru bilgiyi ortaya çıkarır.
Numaranın çıktısını aldıktan sonra Son denemeden sonra onlara bir tahmin girmelerini
söylemek istiyorum.
Bu yüzden ben de bazı bilgiler ve sadece
printf deyin sadece bir tahmin girin ve bu bir satır beslemesine sahip olacaktır.
O zaman bir tahmin girin ve ben de scanf kullanarak bu tahmini okumak için, klavyeden nasıl okuyacağımızı
biliyoruz.
Bir tamsayı olacak, bu yüzden yüzde d yapacağım ve bunu tahmin
değişkenine koyacağım.
Bu yüzden ve işareti kullanmam gerekiyor.
Şimdi kontrolümü yapmalıyım.
Tahminimin doğru olup olmadığını kontrol etmeliyim. Bu konuda endişeliyim.
İşte elimizde başka bir çıkış koşulu.
Bir if deyimi kullanacağım.
Diyeceğim o ki, eğer benim tahminim rastgele sayıma eşitse ne yapmak
istiyorum?
Şey, ilk önce şunu yazdırmak istiyorum ve onlara doğru tahmin
ettiklerini söyleyin.
Bu yüzden çıktısını alacağım, Tebrikler, tahmin ettiniz.
Başka ne yapmak istiyorum Eğer doğru tahmin ederlerse?
Döngüden çıkmak istiyorum.
Peki döngüden nasıl çıkabilirim?
Ara verebilirim.
Bir mola verebilirim. benim döngümden atlayacak.
Şimdi, eğer eşit olmasaydı Bir else if eklemek istiyorum.
Eğer eşit değilse, kontrol etmek istiyorum numarayı doğruladıklarından emin olun.
Yani ben söylemeden önce tekrar girmeleri için doğrulama için iç içe geçmiş
bir döngü bunu yapmanıza gerek yok, sadece bir f deyimine sahip
olabilirsiniz.
Bu yüzden burada numarayı doğrulamak istiyorum.
Eğer eşit değilse rastgele sayı, 0 ile 20 arasında
olduğundan emin olmak istiyorum.
Yani tahmin 0'dan küçükse veya mantıksal bir operatör veya
2 paralel çubuk kullanıyoruz veya tahmin 20'den büyükse, bu temelde geçersiz bir tahmin
olup olmadığını kontrol eder.
Eğer durum buysa ve ben parantez kullanacağım çünkü sadece bir ifadem
var Burada, yalnızca bir ifadeniz varsa parantezler isteğe
bağlıdır.
Yani eğer geçersiz tahmin girdilerse, tek yapacağım şey printf.
Çıktısını alacağım. sayı 0 ile 20 arasındadır.
Ve burada olacak olan hiçbir şey değildir.
Sadece yazdıracak ve bir sonraki
iterasyona geçecek.
Bu onlara nasıl kaç denemeleri kaldı ve bu bir
tahmine girecek.
Şimdi, eğer geçerli bir geçerli sayılar girmişlerse tahmin
olarak sayılmayacaktır, o zaman iç içe bir döngüye sahip olabilirsiniz.
Ama 25'lik bir şeye girerlerse, yine de bir tahmin olarak sayılacak.
Ben de diyorum ki 0 ile 20 arasında bir sayı.
Geçerli bir numara girmişlerse ama doğru değildi, bu başka
bir cümle olurdu.
Burada sadece şunu söyleyeceğim, Üzgünüm, yanlış numara, ve
onlara bunun daha büyük veya daha küçük.
Ve ben üçlü kullanabilirim Operatör burada, ama yapmayacağım.
Öyleyse buraya da bir eğer ekleyelim.
Else eğer rastgele daha büyükse Sanırım, o zaman ne yazdırmak istiyorum?
Üzgünüm yüzde d'yi yazdırmak istiyorum yanlışsa, d yüzdesi onların tahmini olacaktır.
Benim numaram yüzde s ilk kelime.
Rastgele daha büyükse, benim sayım daha fazla.
Benim sayım bundan daha fazla, ve herhangi bir yüzdelik
dilim kullanmıyorum ve sadece bir satır beslemem var.
Else eğer rastgele sayı Tahminden daha düşükse, onlara daha düşük olduğunu söylemek istiyorum.
Böylece kopyalama yapabilirim ve Aynı şeyi yapıştır.
Üzgünüm, numara yanlış diyebilirim, benim sayım bundan daha az.
Ve yine, aslında bu iki if'i koy.
Eğer bir tane daha varsa ve aslında
burada koşullu bir ifade yapabilirsiniz.
Üçlü operatöre sahip olabilirsiniz, Ama iki tane daha eğer kullanacağım ve bundan daha az olduğunu
söyleyeceğim.
Ve sonra bu olacak, Bu döngüyü sonlandıracak.
Ve eğer döngünün dışına çıkarsak ve doğru tahmin edemedik
ve deneme sayımızı aştık, o zaman onlara sadece 5 denemeleri
olduğunu ve numarayı tahmin edemediler ve ben de onlara numarayı
söyleyeceğim.
Bu yüzden kullanıcıya son bir çıktı olarak onlara oyunu kazanamadıklarını ve sayının
ne olduğunu söyleyin.
Yani 5 deneme yaptınız ve başarısız oldunuz, sayı rastgele bir sayıydı.
Tamam, bu mantıklı mı?
Burada pek çok şey yapıyoruz.
If deyimlerini kullanıyoruz, else deyimlerini bir döngüde birleştiriyoruz ve sayı
oyununu uyguluyoruz.
Ve son şey de ana işlevden geri döner.
Öyleyse devam edelim ve derleyelim ve tüm bu alıştırma
boyunca ne yapmalıydınız?
Test ediyor olmalıydın. ve küçük parçalar halinde çalışmak.
Muhtemelen önce rastgele numaranın çalışmasını
sağlayın, sonra test et ve derle ve test et.
Sonra döngüye başlayın.
Döngünüzün yalnızca Tahmin sayısını en fazla 5 kez artırın ve ardından bunu çalıştırın
ve test edin.
Ardından kullanıcıya cevap vermesini isteyin biraz bilgi edinin, bunu
çalıştırın ve test edin.
Ardından, aşağıdaki durumlarda ne zaman çıkılacağını karşılaştırın doğru tahmin ederlerse, test edin ve ardından
if ifadelerinizi yazın testi, ben olsam bu şekilde uygulardım.
Öyleyse şunu inşa edelim ve derlenip derlenmediğine bakın.
Umarım hata yapmamışımdır.
İnşa etmek diyeceğim.
Bir hata var, ben geçersiz numara var.
Rastgele bir sayı olmalı, rastgele değil çünkü değişkenimin
adı bu.
Ve bu sefer 0 hata 2 uyarı.
Bir yüzde d bazı eşleşen int.
Söndürmeyi unuttum. rastgele sayı veya tahmin.
Buradaki tahmin ve tahmin et ve diğeri.
Onlara tahminlerinin Üzgünüm tahminim yanlıştı, bunu yapmak zorunda değilim,
ama sadece küçük güzel bir şey.
Şimdi inşa edelim çünkü sen her zaman uyarılarınızı düzeltmek istersiniz.
0 uyarı 0 hata olmasını istiyorsunuz.
Şimdi bunu çalıştırdığımızda test etmeliyiz.
Ve birçok farklı test var Burada koşmak istediğin durumlar.
Birden fazla test yapmak isteyeceksiniz çünkü unutmayın, sadece tek bir şeyi test
etmek asla iyi değildir.
Yani burada bunun bir tahmin olduğu yazıyor Oyunda
0 ile 20 arasında bir sayı seçtim. Tahmin et, 5 denemen kaldı.
O yüzden 16 yazacağım.
Üzgünüm, 16 yanlış. sayı bundan daha azdır.
Sekiz tane almayı deneyeceğim.
8 yanlış, bundan daha az.
Ben 4 tane yapacağım.
4 yanlış, benim numaram bundan daha büyüktür.
Bir hata yaptım. önce bunu okumadım.
Yani 8'den büyük.
12'yi deneyelim.
Sadece iki denemem kaldı.
Sanırım 12 ile doğru.
Yani tebrikler diyor.
Ancak bir başarısızlığı da test etmek istersiniz.
Birkaç şeyi test etmek istiyorsunuz burada, ama burada test etmeme izin
verin ve tahminimi söyleyeceğim ve Sadece 0 yazacağım.
0 yanlış.
0'ı koymaya devam edeceğim ve Sanırım 5 kez yanıldım.
Diyor ki 5 deneme ve başarısız oldu.
Sizin belirlediğiniz numara 3 olduğunu tahmin etmek istedim.
Yani işe yarıyor.
Şimdi ne olduğundan emin olmak için test edelim geçersiz sayılar girersek ne olur?
45 girersem.
Sayının 0 ile 20 arasında olduğunu söyledim.
Yani bu da başka bir test vakası ve bu bir deneme olarak sayıldı.
Eğer bu hesabı bir deneyin, iç içe geçmiş bir döngü olabilir.
Sanırım hepsi bu kadar.
Tüm vakaları test ettik.
Aşağıdaki durumları test ettik başarıyla tahmin ettiniz.
Aşağıdaki durumları test ettik başarılı bir tahmin yapamadın.
Ve aşağıdaki durumları test ettik geçersiz bir numara girdiniz.
Belki de diğer tek test daha büyük ve daha küçük dediğinden emin olmak için, ki sanırım ilkinde
test ettiğimiz şey aslında bize daha
küçük veya daha büyük girmek için.
O zaman bunu deneyelim.
Yani bu sefer 20'ye girdiğimde, daha az diyor ki bu iyi bir şey.
Şimdi gireceğim 10 ve ben tahmin ettim.
Sanırım çabuk oldular.
Ama daha azını görmeliyiz ve aynı çıktıdakinden daha büyüktür.
Tekrar deneyin ve rastgele sayı çalışıyor çünkü farklı sayılar üretiyorum
programı her çalıştırdığımda.
20 yanlış.
Şimdi 19'u deneyelim.
1'i deneyelim ve Bundan daha büyük.
Bu yüzden daha büyük ve daha küçük görüyorum.
Yani işe yaradığından oldukça eminim.
Bana oldukça iyi göründü.
Fark etmeniz gereken bir şey var Programda küçük bir hata
vardı. Seni test ediyordum.
Yani onu çalıştırdığınızda çünkü bu kırılma burada, hala başarısız
olduğumu yazdıracak Başarılı olduğumda bile.
Yani fark etmiş olmalısın ki önceki çıktıda doğru sayı olduğunu
tahmin ediyorum.
Tebrikler.
Ama aynı zamanda başarısız oldu, bu doğru görünmüyor.
Yani bunu düzeltmenin yolu bir atılımınız yoksa, bir geri dönüş
elde etmek istersiniz.
Ve şimdi geri döndüğünde Kazanırsanız
39. satıra yazdırmayacaksınız.
Baskı yapmayacak. başarısız olduğunuzu.
Son bir test daha yapmalısınız bunu daha önce yakalayabilirdik, ancak
inşa ettiğimizde ve doğru tahmin ettiğimizde, bir hata göstermeyecektir.
Böylece çalıştırmayı kaydedebiliriz ve Bunu çalıştırın, 5 tahmininiz var.
10 diyeceğim, ondan daha az.
Diyeceğiz ki 6, ve ben tahmin ettim.
Ve orada fark edeceksiniz Tebrikler yazıyor.
Bu ekstra çıktıyı göremiyoruz Bu da benim başarısız olduğumu söylüyor.
Yani emin olmak istiyorsun Programın doğru şekilde çalışması
için 30. satıra bu dönüşü ekleyin.
Başka bir if ifadesi ekleyebilirsiniz if printf'i yazdırmamak
için istediniz, bir ara vermiş olabilirdiniz burada ve sonra printf'te kaç tane
sayım tahmini olduğunu kontrol edebilirdiniz 5'ten az olup olmadığını da belirlemeniz gerekiyordu,
o zaman tebrikler.
Ama orada küçük bir böcek ve Umarım test sırasında fark
etmişsinizdir, geri dönüş bunu düzeltecektir.
Yani küçük bir program.
Umarım bu size bir şeyler öğrenmenizde yardımcı olmuştur. döngü ve tüm karar
ifadeleriniz hakkında çok şey ve gerçekten problem çözme.
Umarım bunu çıkarmışsınızdır ve bunu gerçekten yazmaya başlamadan
önce tasarladınız Kod, bu her zaman önemlidir.
Umarım bu yardımcı olur.
Kaynak kodunu sağlayacağım, böylece karşılaştırabilir, görebilir ve analiz edebilir.
Teşekkür ederim.