36. Hafta: Sayı Tahmin Oyunu – Döngü, Karar ve Değişkeni Birleştirmek

Bu hafta Scratch'te rastgele sayı, döngü ve karar yapısını bir arada kullanarak Sayı Tahmin Oyunu oluşturduk.

📌 Kazanım:
BT.6.5.2.12. Döngü yapısını içeren programları test ederek hatalarını ayıklar.
BT.6.5.2.13. Bir algoritmayı uyarlamak için en uygun karar yapılarını seçer.
BT.6.5.2.14. Farklı programlama yapılarını kullanarak karmaşık problemlere çözüm üretir.
⏱ Süre: 2 Ders Saati

🎯 Bu Konuda Neler Öğreneceğiz?

  • Döngü yapısını içeren programları nasıl test eder, hatalarını nasıl ayıklarız?
  • Bir problem için en uygun karar ve döngü yapısını nasıl seçeriz?
  • Karar yapısı, döngü ve değişkeni bir arada kullanarak karmaşık bir problemi nasıl çözeriz?
  • Scratch’te Sayı Tahmin Oyunu nasıl oluşturulur?

🧠 En Uygun Yapıyı Seçmek

Artık elimizde birden fazla araç var: doğrusal yapıkarar yapısı ve döngü yapısı. İyi bir programcı, problemi okuyunca hangi yapıyı nerede kullanacağına karar verebilir. Sayı Tahmin Oyunu’nu düşünelim:

Problem ParçasıEn Uygun YapıNeden?
Oyunu tanıt, sayıyı belirleDoğrusal yapıHer seferinde aynı sırayla çalışır, dallanma yok
Tahmin doğru mu, büyük mü, küçük mü?Karar yapısıKoşula göre farklı yol izlenmeli
Kullanıcı doğru bulana kadar tahmin etsinDöngü yapısıKaç kez tekrarlayacağı baştan belli değil
Deneme sayısını kaydetDeğişkenHer tahminde 1 artırılmalı, sonunda gösterilmeli

📚 Bu Haftanın Kod Blokları

BlokKategoriNe Yapar?
🔶 … olana kadar tekrarlaKontrolKoşul sağlanana kadar içindeki komutları tekrar eder.
🟢 1 ile 100 arasında rastgele sayıOperatörlerHer çalışmada farklı bir sayı üretir.
🟢 […] < […] ve […] > […]Operatörlerİki sayıyı karşılaştırır; büyük/küçük ilişkisini test eder.
🟢 […] = […]Operatörlerİki değerin eşit olup olmadığını test eder.
🟠 değişken oluşturDeğişkenlerGizli sayıyı ve deneme sayacını saklamak için kullanırız.
🟠 [değişkeni] 1 artırDeğişkenlerHer tahminde deneme sayacını 1 artırır.
🟢 … ve …Operatörlerİki koşulu aynı anda test eder; ikisi de doğruysa sonuç doğrudur. (Ekstra görev)

🎮 Etkinlik: Sayı Tahmin Oyunu

Bu oyunda Scratch rastgele 1–100 arasında bir sayı seçer. Kullanıcı tahmin eder; program “Daha büyük bir sayı söyle”“Daha küçük bir sayı söyle” ya da “Tebrikler, doğru!” der. Oyun kullanıcı doğru sayıyı bulana kadar devam eder ve sonunda kaç denemede bulduğunu söyler. Programın Akışı:

  1. Rastgele 1–100 arası bir sayı üret → gizli değişkenine kaydet
  2. deneme sayacını 0 yap
  3. Kullanıcıdan tahmin al
  4. Deneme sayacını 1 artır
  5. Tahmin < gizli → “Daha büyük bir sayı söyle”
  6. Tahmin > gizli → “Daha küçük bir sayı söyle”
  7. Tahmin = gizli → döngüden çık
  8. 3–7 arası adımları doğru bulunana kadar tekrarla (döngü)
  9. Kaç denemede bulduğunu söyle

🛠️ Adım Adım Yapım

Adım 1 – Sahneyi Hazırla

Scratch’i aç (scratch.mit.edu). Kütüphaneden eğlenceli bir karakter seç — bir sihirbaz, robot ya da dedektif bu oyuna çok yaraşır. Arka plan olarak “Mystery” veya “Space” seç. Ardından Değişkenler menüsünden iki değişken oluştur:

  • gizli (gizli sayıyı saklar — sahne üzerinde gösterme!)
  • deneme (kaç kez tahmin edildiğini sayar)

💡 İpucu: gizli değişkenini sahnede göstermemek için Değişkenler menüsündeki kutucuğun işaretini kaldır. Oyuncu gizli sayıyı görmemeli!

Adım 2 – Başlangıç Kodu (Doğrusal Yapı)

Bu kısım her zaman aynı sırayla çalışır; dallanma yoktur.

🟡 yeşil bayrak tıklandığında
   gizli'yi (1) ile (100) arasında rastgele sayı yap
   deneme'yi 0 yap
   "Aklımda 1 ile 100 arasında bir sayı var. Tahmin edebilir misin? 🔮" de, 3 saniye

Adım 3 – Döngü Kurulumu

Kullanıcı doğru sayıyı bulana kadar tahmin etmeye devam etsin. Doğru sayıyı bulduğu an döngü durmalı.

🔶 <cevap = gizli> olana kadar tekrarla
   [tahmin alma ve geri bildirim kodları buraya gelecek]

⚠️ Dikkat: Döngünün koşulu <cevap = gizli> şeklinde kurulur. Cevap gizli sayıya eşit olunca döngü durur. Eşit olmadığı sürece döngü çalışmaya devam eder.

Adım 4 – Tahmin Al ve Sayacı Artır

Döngünün içine şu komutları yaz:

   sor "Tahminini yaz:" ve bekle
   deneme'yi 1 artır

Her tahminde sayacı artırmayı unutma! Bu, sonunda “X denemede buldun” diyebilmemizi sağlar.

Adım 5 – Karar Yapısı (Geri Bildirim)

Bu kısım çoklu karar yapısıdır. Tahminin gizli sayıyla ilişkisine göre üç farklı yol var:

   eğer <cevap < gizli> ise
      "Daha büyük bir sayı söyle! 📈" de, 2 saniye
   değilse
      eğer <cevap > gizli> ise
         "Daha küçük bir sayı söyle! 📉" de, 2 saniye

🤔 Neden üçüncü “eğer” yok? Tahmin ne gizli’den küçük ne de büyükse, yani eşitse döngü zaten durur. O yüzden eşitlik durumu için ayrı bir “eğer” bloğuna gerek yok — döngüden çıkınca zaten doğru bulunmuş demektir!

Adım 6 – Bitiş Mesajı (Döngü Dışı)

Döngüden çıkıldıktan sonra, döngünün dışına şu kodları ekle:

"Tebrikler! Sayıyı buldun! 🎉" de, 2 saniye
deneme ile " denemede buldun!" birleştir → söyle, 3 saniye

💡 İpucu: Deneme sayısıyla metni birleştirmek için Operatörler menüsündeki … birleştir … bloğunu kullan. Örnek: "deneme" birleştir " denemede buldun!" bloğunun içine deneme değişkenini yerleştir.


✅ Tam Kod Şeması

🟡 yeşil bayrak tıklandığında
   gizli'yi (1) ile (100) arasında rastgele sayı yap
   deneme'yi 0 yap
   "Aklımda 1 ile 100 arasında bir sayı var. Tahmin edebilir misin? 🔮" de, 3 saniye

🔶 <cevap = gizli> olana kadar tekrarla

   sor "Tahminini yaz:" ve bekle
   deneme'yi 1 artır

   eğer <cevap < gizli> ise
      "Daha büyük bir sayı söyle! 📈" de, 2 saniye
   değilse
      eğer <cevap > gizli> ise
         "Daha küçük bir sayı söyle! 📉" de, 2 saniye

"Tebrikler! Sayıyı buldun! 🎉" de, 2 saniye
deneme ile " denemede buldun!" birleştir → söyle, 3 saniye

🔍 Hata Ayıklama: Neyi Yanlış Yaptım?

🐛 Hata 1 – Doğru sayıyı yazdım ama döngü durmuyor!

Sorun nedir? Döngü koşulunda gizli değişkeni yerine yanlışlıkla sabit bir sayı yazılmış olabilir. Ya da cevap bloğu yerine deneme değişkeni kullanılmış olabilir. ✅ Düzeltme: Döngünün koşulunu kontrol et: <cevap = gizli> olmalı. cevap Algılama menüsünden, gizli Değişkenler menüsünden alınmalı.


🐛 Hata 2 – Her seferinde aynı sayıyı buluyor, rastgele değişmiyor!

Sorun nedir?gizli'yi rastgele sayı yap komutu döngünün içine konulmuş. Bu yüzden her tahminde yeni bir gizli sayı üretiliyor ve kullanıcı hiç bitiremez. ✅ Düzeltme: Rastgele sayı üretme komutu kesinlikle döngünün dışında ve başında olmalı — yeşil bayrak tıklandığında, döngü başlamadan önce.


🐛 Hata 3 – Deneme sayısı yanlış çıkıyor!

Sorun nedir?deneme'yi 0 yap komutu unutulmuş. Oyun ikinci kez oynanınca önceki sayının üstüne ekleniyor. ✅ Düzeltme: Yeşil bayrak bloğunun hemen altına deneme'yi 0 yap komutunu ekle. Değişkeni her oyun başında sıfırlamak zorunludur.


🐛 Hata 4 – “Daha büyük” ve “Daha küçük” mesajları ters çıkıyor!

Sorun nedir? Karar yapısındaki karşılaştırma operatörleri (< ve >) yanlış yerleştirilmiş. ✅ Düzeltme:

  • cevap < gizli → Kullanıcının tahmini gizli sayıdan küçük → “Daha büyük bir sayı söyle”
  • cevap > gizli → Kullanıcının tahmini gizli sayıdan büyük → “Daha küçük bir sayı söyle”

Mantığı düz Türkçeyle oku: “Tahminim 30, gizli sayı 30’dan büyükse daha büyük söylemem gerekir.”


🧪 Test Senaryoları

Programını aşağıdaki senaryolarla sistematik olarak test et:

TestNe Dene?Beklenen Davranış
Küçük tahminGizli sayıdan kesinlikle küçük bir sayı yaz (örn: 1)“Daha büyük bir sayı söyle” mesajı çıkmalı
Büyük tahminGizli sayıdan kesinlikle büyük bir sayı yaz (örn: 100)“Daha küçük bir sayı söyle” mesajı çıkmalı
Doğru tahminGizli sayıyı bul (geliştirici olarak değişkeni görebilirsin)Döngü durmalı, tebrik mesajı çıkmalı
Sayaç testiTam 5 denemede bul“5 denemede buldun!” yazmalı
Yeniden oynaYeşil bayrağa tekrar tıklaSayaç sıfırlanmalı, yeni gizli sayı üretilmeli

💡 Bunu da Dene! (Ekstra Görev)

🏆 Maksimum Deneme Sınırı Ekle! Kullanıcıya 7 tahmin hakkı ver. 7 denemede bulamazsa oyun “Kaybettin!” diyerek bitsin. Bunun için döngü koşulunu değiştirmemiz gerekiyor. Artık iki koşul var: doğru sayıyı bulsun VEYA 7 deneme dolsun.

🔶 <(cevap = gizli) veya (deneme = 7)> olana kadar tekrarla
   [aynı kodlar]

Döngüden sonra kim kazandı? Onu da karar yapısıyla belirle:

eğer <cevap = gizli> ise
   "Tebrikler! Kazandın! 🎉" de, 2 saniye
değilse
   "Üzgünüm, 7 hakkın doldu. 😔 Gizli sayı: " birleştir gizli söyle, 3 saniye

Bu ekstra görev hem döngü hem karar yapısını hem de mantıksal operatörü bir arada kullanmanın mükemmel örneğidir!


🔑 Bu Haftanın Özeti

KazanımOyundaki Karşılığı
Döngü yapısını test ederek hata ayıkla5 farklı test senaryosuyla döngünün doğru çalıştığını doğruladık
En uygun karar yapısını seç“Büyük mü / küçük mü / eşit mi?” sorusu için iç içe eğer/değilse seçtik
Karmaşık probleme çözüm üretRastgele sayı + döngü + karar + değişken hepsini entegre ettik

Bir Cevap Yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir