Bir cümlelik özet
Bu projede ekranda bir robot kuklası yapıyorum; kukla renk ve dokunma algılayarak karar veriyor, engellerden kaçıyor ve hedefe ulaşıyor. Böylece algoritma modülünde öğrendiğimiz "algıla–karar–hareket" döngüsünü Scratch'te canlandırıyoruz.
Neden önemli?
Gerçek bir robot süpürge duvara çarpınca geri kaçar, bir çizgi izleyen robot siyah şeridi görünce yön düzeltir. Bunların hepsi aynı basit fikirle çalışır: algıla, karar ver, hareket et. Sensör bir şey ölçer, program bir koşulla karar verir, motor buna göre hareket eder. Sonra bu döngü baştan tekrarlanır.
Elimizde henüz gerçek bir robot yok, ama Scratch bu döngüyü ekranda birebir taklit edebilir. Kuklanın Algılama blokları sensör yerine geçer, Kontrol blokları karar verir, Hareket blokları da motor gibi kuklayı taşır. Bu proje bir öğretici simülasyondur; gerçek bir cihaz ürettiğimizi iddia etmiyoruz. Amacımız, bir robotun kafasındaki mantığı gözle görülebilir hâle getirmek. Aynı düşünce ileride gerçek bir robotu programladığımızda da işe yarayacak.
Görevi tanımla: algıla–karar–hareket döngüsü
Kod yazmadan önce robotun görevini net cümlelerle yazalım. Belirsiz bir görev, belirsiz bir program üretir.
Görev tanımı
Robot, sahnenin sol altındaki başlangıç noktasından yola çıkar. Yolda siyah duvarlar vardır. Robot bir duvara değerse geri çekilip yön değiştirir; değmiyorsa ileri gider. Amacı sağ üstteki yeşil hedefe ulaşmaktır. Hedefe değince "Ulaştım!" der ve durur.
Döngüyü kategorilere eşleştir
| Adım | Ne yapar? | Scratch kategorisi |
|---|---|---|
| Algıla | Duvara/hedefe değiyor muyum? | Algılama |
| Karar ver | Değiyorsam ne yapmalıyım? | Kontrol ("eğer ... ise") |
| Hareket et | İleri git ya da dön | Hareket |
| Tekrarla | Aynı döngüyü sürdür | Kontrol ("sürekli tekrarla") |
Dikkat et: bu tablo, algoritma modülündeki üç yapı taşının aynısıdır. Sıralama (adımların düzeni), koşul (eğer değiyorsa) ve tekrar (sürekli tekrarla) burada bir robota can veriyor.
Sahneyi ve robotu hazırla
Parkuru çiz
Yeni bir sahne çiz. Fırça aracıyla ekranda siyah çizgilerden birkaç duvar çiz; aralarından geçilecek bir yol bırak. Sağ üst köşeye yeşil dolu bir kare (hedef) koy. Renkler önemli, çünkü robot bu renkleri "görecek".
Robot kuklasını ekle
Kukla kütüphanesinden küçük bir kukla seç (örneğin bir top ya da robot çiz). Boyutunu küçült ki dar yollardan geçebilsin.
Değişkenleri oluştur
Değişkenler kategorisinden iki değişken kur:
| Değişken | Ne tutar? |
|---|---|
adim_sayaci | Robotun kaç kez ileri gittiği |
ulasti | Hedefe ulaştı mı? (0 ya da 1) |
Robotu programla: ana blok dizisi
Şimdi döngüyü kuralım. Aşağıdaki dizi robotun beynidir.
Örnek 1: Temel algıla–karar–hareket
yeşil bayrağa tıklandığında
x: -200 y: -150 konumuna git
90 yönüne dön
adim_sayaci değişkenini 0 yap
ulasti değişkenini 0 yap
sürekli tekrarla
eğer <renge [siyah] değiyor mu?> ise
-15 adım git
30 derece sağa dön
değilse
5 adım git
adim_sayaci değişkenini 1 artır
Bu döngü her karede tek bir soru sorar: "Siyaha değiyor muyum?" Değiyorsa robot 15 adım geri çekilir ve 30 derece döner (karar + hareket). Değmiyorsa 5 adım ileri gider ve sayacı bir artırır. İşte algıla–karar–hareket döngüsü tam olarak budur.
renge [siyah] değiyor mu? bloğu Algılama kategorisinde ve altıgen şeklindedir; cevabı "doğru" ya da "yanlış" olur. Rengi bloğun üzerindeki kareye tıklayıp ekrandaki duvardan damlalıkla seçmelisin.
Örnek 2: Hedefi de algıla ve dur
Robot sonsuza kadar dolaşmasın; hedefe varınca durmasını istiyoruz. Ana döngünün içine ikinci bir "eğer" ekliyoruz:
yeşil bayrağa tıklandığında
x: -200 y: -150 konumuna git
90 yönüne dön
adim_sayaci değişkenini 0 yap
ulasti değişkenini 0 yap
sürekli tekrarla
eğer <renge [siyah] değiyor mu?> ise
-15 adım git
30 derece sağa dön
değilse
5 adım git
adim_sayaci değişkenini 1 artır
eğer <renge [yeşil] değiyor mu?> ise
"Ulaştım!" de
ulasti değişkenini 1 yap
dur [bu kukla]
Artık robotun iki duyusu var: siyahı görünce kaçar, yeşili görünce durur. dur [bu kukla] bloğu (Kontrol) sürekli tekrarı bitirir. adim_sayaci sonunda robotun hedefe kaç adımda ulaştığını gösterir; farklı yolları karşılaştırmak için güzel bir ölçü.
Test parkuru ve hata ayıklama
Bir programı yazmak yarısı, test etmek diğer yarısıdır. Robotu farklı durumlarda dene:
| # | Test | Beklenen sonuç |
|---|---|---|
| 1 | Açık yolda başlat | Robot düz ilerler |
| 2 | Önüne duvar koy | Duvara değince geri döner |
| 3 | Yeşil hedefe sür | "Ulaştım!" der ve durur |
Bir hata ve düzeltmesi
İlk denememde robot duvarların içinden geçip gitti; hiç geri dönmedi. Beklediğim: siyaha değince geri çekilsin. Gerçekte olan: hiçbir şey algılamadı.
Amaç: Robot siyah duvara değince geri dönsün
Sorun: Robot duvarların içinden geçiyor
Kontrol: "renge değiyor mu?" bloğundaki renk gerçek siyahtan biraz farklı
Düzeltme: Renk karesine tıklayıp damlalıkla tam duvardan renk seç
Renk elle ayarlandığında ekrandaki gerçek renge birebir uymayabilir; o zaman blok hiç "doğru" olmaz. Damlalıkla seçince sorun çözüldü.
İkinci bir sık hata da şu: robot duvarın önünde titreyip takılıyor. Bunun nedeni geri çekilme veya dönüş açısının çok küçük olmasıdır. -15 adım git ve 30 derece dön değerlerini biraz büyütmek robotu köşeden kurtarır.
Sonraki adım: gerçek robota geçiş
Bu simülasyondaki mantık gerçek robotlarda da aynıdır. İleride gerçek bir robotta renge değiyor mu? bloğunun yerini bir çizgi sensörü ya da bir mesafe sensörü alır; adım git bloğunun yerini de bir motor komutu. Karar veren "eğer ... ise" kısmı ise neredeyse hiç değişmez. Yani bugün ekranda kurduğun bu beyin, yarın gerçek bir robotun beynine çok benziyor.
Mini uygulama
Projeyi kendi fikrinle büyüt. Şunlardan birini dene:
- İkinci bir duvar rengi ekle (örneğin kırmızı) ve robot kırmızıya değince farklı bir açıyla dönsün.
- Bir
zamandeğişkeni ekleyip robotun hedefe kaç saniyede ulaştığını ölç. - Robotu ok tuşlarıyla değil de tamamen kendi kararıyla (otomatik) hedefe ulaştırmayı dene; parkuru zorlaştır ve dönüş açısını ayarla.
Yaptığın değişikliği tek cümleyle yaz: robot artık ne yapıyor ve neyi daha iyi yapıyor?
Projeyi güçlendirme planı
Proje: Robot Görev Simülasyonu için yalnız çalışan bir gösterim hazırlamak yeterli değildir. İyi bir proje; hedefi, kullanıcıyı, sınırları, test koşullarını ve başarısız denemeleri de görünür kılar. Bu genişletme çalışmasında iki kuklanın mesajlarla sırayla konuştuğu animasyon bağlamını kullanarak çalışan bir Scratch sahnesi, blok düzeni ve test listesi oluştur. Dersin hedefi “Algıla-karar-hareket döngüsünü Scratch'te bir robot görev simülasyonuyla uygula” olsa da proje sayfasında ölçülmemiş bir sonucu kesin başarı gibi yazma.
1. Proje özeti ve kapsam
Önce üç cümle yaz: Çözmek istediğin sorun nedir, bu sorun kimin için önemlidir ve ilk sürüm özellikle neyi yapmayacaktır? Kapsam dışını belirtmek projeyi küçültmez; tamamlanabilir hâle getirir. Görevi tanımla: algıla–karar–hareket döngüsü ile Döngüyü kategorilere eşleştir arasındaki ilişkiyi projenin temel varsayımı olarak yaz ve bu varsayımı hangi testin doğrulayacağını belirt.
2. Kabul ölçütleri
- Yeşil bayrakla başlangıç durumu doğru kuruluyor mu?
- Olaylar yalnız gerektiğinde mi çalışıyor?
- Değişkenler anlaşılır adlarla mı kullanıldı?
- Klon veya döngü sayısı kontrol altında mı?
- Oyun yeniden başlatıldığında önceki durum temizleniyor mu?
“Proje: Robot Görev Simülasyonu” için kabul ölçütlerini “çalışıyor” gibi belirsiz sözcüklerle bırakma. Süre, mesafe, doğru deneme sayısı, ekran genişliği veya kullanıcı adımı gibi gözlenebilir bir ölçü seç. Ölçüm mümkün değilse en azından üç ardışık denemede aynı davranışın görülüp görülmediğini kaydet.
3. Test matrisi
| Test | Koşul | Beklenen | Gerçek sonuç | Sonraki karar |
|---|---|---|---|---|
| Normal | Standart giriş ve tam bağlantı | Temel görev tamamlanır | Test sırasında doldur | Koru veya küçük iyileştirme yap |
| Sınır | En düşük ya da en yüksek kabul edilen değer | Sistem kararlı kalır | Test sırasında doldur | Eşiği veya kuralı gözden geçir |
| Hata | Eksik, yanlış ya da beklenmeyen giriş | Güvenli ve anlaşılır tepki | Test sırasında doldur | Hata yönetimi ekle |
| Tekrar | Aynı koşulda en az üç deneme | Benzer sonuçlar | Test sırasında doldur | Tutarsızlığın kaynağını araştır |
4. Sürüm günlüğü
“Proje: Robot Görev Simülasyonu” projesinin her sürümü için tarih, değiştirdiğin tek ana karar, değişikliğin nedeni ve test sonucu yaz. İlk sürümün çalışmaması başarısızlık değildir; Görevi tanımla: algıla–karar–hareket döngüsü veya Döngüyü kategorilere eşleştir ile ilgili hangi varsayımın yeniden düşünülmesi gerektiğini gösteren veridir. Görsel kullanırken kişisel bilgi ve özel arka plan ayrıntılarını paylaşma.
5. Sunum ve öz değerlendirme
“Proje: Robot Görev Simülasyonu” projesini iki dakikada anlatacak şekilde hazırlan: sorun, çözüm yaklaşımı, iki kuklanın mesajlarla sırayla konuştuğu animasyon için en önemli test sonucu ve bir sonraki adım. “Tamamlandı” demek yerine hangi kısmın doğrulandığını ve hangi kısmın hâlâ geliştirilmesi gerektiğini açıkla.
Sık yapılan hatalar
"eğer" bloğunu sürekli tekrarla dışına koymak
Robotun sürekli çevresine bakması gerekir. "eğer" bloğunu sürekli tekrarla dışına koyarsan program tek bir kez kontrol eder ve unutur. Kontrolün her karede tekrarlanması için "eğer" mutlaka döngünün içinde olmalı.
Yanlış rengi seçmek
renge ... değiyor mu? bloğunda rengi mutlaka damlalıkla ekrandaki gerçek duvardan seç. Gözünle benzettiğin bir rengi elle ayarlarsan blok hiç "doğru" olmayabilir ve robot engelleri görmez.
Başlangıç konumunu sıfırlamamak
Yeşil bayrağa basınca robotu konuma git bloğuyla başlangıç noktasına döndürmezsen, robot bir önceki denemenin kaldığı yerden başlar. Her testin adil olması için başta konumu ve değişkenleri sıfırla.
Döngüyü durduracak koşulu unutmak
Yalnızca "duvara değince dön" yazıp hedefi kontrol etmezsen robot sonsuza kadar dolaşır. Hedefe değince dur [bu kukla] diyen ikinci koşulu eklemeyi unutma.
Güvenlik notu
Bu proje tamamen ekran üzerinde çalışır, fiziksel bir tehlike yoktur. Yine de iki şeye dikkat et: ekran başında 20 dakikada bir kalkıp gözlerini dinlendir. Scratch sitesinde projeni paylaşırken ad, soyad, okul veya adres gibi kişisel bilgileri yazma; paylaşımlarını herkes görebilir. Bu simülasyonu ileride gerçek bir robota taşırsan pil, motor, kesici alet veya sıcak yüzey içeren her adım bir yetişkin gözetiminde yapılmalı; şebeke elektriğiyle çalışılmaz.
Ders özeti
- Robotların temel mantığı "algıla–karar–hareket" döngüsüdür ve Scratch bunu ekranda taklit edebilir.
- Algılama blokları sensör, Kontrol blokları karar, Hareket blokları da motor gibi çalışır.
- Robot,
renge değiyor mu?ile duvarı ve hedefi görür; "eğer ... ise" ile karar verir. - Renkleri damlalıkla seçmek ve döngüyü doğru kurmak, robotun çevresini gerçekten algılaması için şarttır.
- Aynı algıla–karar–hareket mantığı ileride gerçek bir robotu programlarken de geçerlidir.
Kontrol soruları
- Robotun temel çalışma döngüsündeki üç adım nedir?
- Scratch'te sensörün görevini hangi blok kategorisi üstlenir?
renge [siyah] değiyor mu?bloğunda rengi doğru seçmenin yolu nedir?- "eğer" bloğunu neden
sürekli tekrarlabloğunun içine koyarız? - Bu simülasyonu gerçek bir robota taşırsak
renge değiyor mu?bloğunun yerini ne alır?
Cevaplar
- Algıla, karar ver, hareket et. Robot çevresini ölçer, bir koşulla karar verir, sonra buna göre hareket eder ve döngü baştan tekrarlanır.
- Algılama kategorisi.
renge değiyor mu?,... değiyor mu?gibi altıgen bloklar programın gözü kulağı gibidir. - Bloğun üzerindeki renk karesine tıklayıp damlalıkla ekrandaki gerçek duvardan tam o rengi seçerek. Renk elle ayarlanırsa ekrandaki renge uymayabilir.
- "eğer" tek başına koşulu bir kez kontrol edip unutur.
sürekli tekrarlaiçinde olduğunda program her karede yeniden bakar; böylece robot çevresini sürekli algılar. - Bir sensör (örneğin çizgi ya da mesafe sensörü). Hareket bloklarının yerini de motorlar alır; karar veren "eğer ... ise" kısmı ise neredeyse aynı kalır.
Kaynak ve doğrulama notu
“Proje: Robot Görev Simülasyonu” dersi için doğrulama odağı Görevi tanımla: algıla–karar–hareket döngüsü ile Döngüyü kategorilere eşleştir arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Blok adları Scratch’in güncel temel kategorileriyle uyumlu tutulmuştur. Proje davranışı; başlangıç, normal oyun, hata ve yeniden başlatma durumlarında ayrı ayrı denenmelidir.
Sonraki ders
Python Temelleri modülü: Blokları bırakıp yazılı kodla tanışıyor, aynı algoritma düşüncesini metin tabanlı bir dilde kurmaya başlıyoruz.