📌 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ı belirle | Doğ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 etsin | Döngü yapısı | Kaç kez tekrarlayacağı baştan belli değil |
| Deneme sayısını kaydet | Değişken | Her tahminde 1 artırılmalı, sonunda gösterilmeli |
📚 Bu Haftanın Kod Blokları
| Blok | Kategori | Ne Yapar? |
|---|---|---|
| 🔶 … olana kadar tekrarla | Kontrol | Koşul sağlanana kadar içindeki komutları tekrar eder. |
| 🟢 1 ile 100 arasında rastgele sayı | Operatörler | Her ç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ştur | Değişkenler | Gizli sayıyı ve deneme sayacını saklamak için kullanırız. |
| 🟠 [değişkeni] 1 artır | Değişkenler | Her 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ışı:
- Rastgele 1–100 arası bir sayı üret →
gizlideğişkenine kaydet denemesayacını 0 yap- Kullanıcıdan tahmin al
- Deneme sayacını 1 artır
- Tahmin < gizli → “Daha büyük bir sayı söyle”
- Tahmin > gizli → “Daha küçük bir sayı söyle”
- Tahmin = gizli → döngüden çık
- 3–7 arası adımları doğru bulunana kadar tekrarla (döngü)
- 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:
gizlideğ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çinedenemedeğ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:
| Test | Ne Dene? | Beklenen Davranış |
|---|---|---|
| Küçük tahmin | Gizli sayıdan kesinlikle küçük bir sayı yaz (örn: 1) | “Daha büyük bir sayı söyle” mesajı çıkmalı |
| Büyük tahmin | Gizli sayıdan kesinlikle büyük bir sayı yaz (örn: 100) | “Daha küçük bir sayı söyle” mesajı çıkmalı |
| Doğru tahmin | Gizli sayıyı bul (geliştirici olarak değişkeni görebilirsin) | Döngü durmalı, tebrik mesajı çıkmalı |
| Sayaç testi | Tam 5 denemede bul | “5 denemede buldun!” yazmalı |
| Yeniden oyna | Yeşil bayrağa tekrar tıkla | Sayaç 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 saniyeBu 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ım | Oyundaki Karşılığı |
|---|---|
| Döngü yapısını test ederek hata ayıkla | 5 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 üret | Rastgele sayı + döngü + karar + değişken hepsini entegre ettik |

