Bir cümlelik özet
Değişken, programın bir sayıyı ya da yazıyı hatırlamasını sağlayan bir kutudur; liste ise birden çok değeri sırayla saklayan uzun bir kutu takımıdır.
Neden önemli?
Bir önceki derste döngülerle aynı adımları tekrar tekrar çalıştırdık. Ama çoğu oyunda program bir şeyi hatırlamak zorundadır: kaç puan topladın, kaç can kaldı, hangi bölümde olduğun.
Scratch bu bilgiyi ekranda kendiliğinden tutmaz. Biz ona “şu sayıyı bir yerde sakla ve ben istediğimde değiştir” demeliyiz. İşte bu saklama kutusuna değişken denir.
Değişkenleri öğrendiğinde artık sadece hareket eden bir karakter değil, puan sayan, seviye atlayan, geri sayım yapan gerçek oyunlar kurabilirsin. Bu yüzden değişkenler, ilk basit animasyondan ilk gerçek oyuna geçişin anahtarıdır.
Değişken nedir?
Değişken, içine bir değer koyabildiğimiz ve o değerin sonradan değişebildiği isimli bir kutudur. Kutunun bir adı vardır (örneğin puan) ve içinde bir değer bulunur (örneğin 0).
Scratch'te değişken oluşturmak için Değişkenler (Variables) kategorisine gidip “Bir değişken oluştur” düğmesine basarız. Değişkene açık bir isim veririz: puan, can, süre gibi.
“Yap” ve “kadar değiştir” arasındaki fark
Değişkenler kategorisinde iki temel blok vardır ve bunları karıştırmak çok yaygındır:
[puan] değişkenini [0] yap→ kutunun içindekini siler ve yerine yazdığın değeri koyar. Değer ne olursa olsun artık0’dır.[puan] değişkenini [1] kadar değiştir→ kutudaki değerin üstüne ekler.puan5 ise, bu blok onu 6 yapar.
Bir örnekle görelim. Oyun başında puanı sıfırlamak isteriz:
yeşil bayrağa tıklandığında
puan değişkenini 0 yap
Oyun sırasında her doğru harekette puanı bir artırmak isteriz:
bu kukla tıklandığında
puan değişkenini 1 kadar değiştir
Buradaki fark önemlidir: yap sabit bir değer atar, kadar değiştir ise var olan değeri artırır veya azaltır. Azaltmak için negatif sayı kullanırız: can değişkenini -1 kadar değiştir.
Değişkeni sahnede gösterme
Her değişkenin yanında küçük bir onay kutusu vardır. Bu kutuyu işaretlersen değişkenin adı ve değeri sahnenin köşesinde görünür. Örneğin oyuncu ekranda puan: 7 yazısını canlı olarak görür.
Kutunun işaretini kaldırırsan değişken hâlâ çalışır, sadece ekranda görünmez. Puanı oyuncuya göstermek istiyorsak onay kutusunu açık bırakırız.
İlk oyun: Her tıklamada puan artan oyun
Şimdi öğrendiklerimizi küçük bir oyunda birleştirelim. Amaç basit: ekranda bir hedefe her tıkladığında puan bir artsın.
Adım adım kurulum
- Değişkenler kategorisinden
puanadında bir değişken oluştur. - Sahnede görünmesi için
puandeğişkeninin onay kutusunu işaretle. - Bir kukla seç (örneğin bir elma ya da yıldız).
- Aşağıdaki iki blok yığınını kur.
Oyun başında puanı sıfırla:
yeşil bayrağa tıklandığında
puan değişkenini 0 yap
Kuklaya her tıklandığında puanı artır ve küçük bir tepki ver:
bu kukla tıklandığında
puan değişkenini 1 kadar değiştir
Miyav sesini çal
0.1 saniye 1.2 kat büyü
0.1 saniye bekle
normal boyuta dön
Yeşil bayrağa bastığında puan 0 olur. Elmaya her tıkladığında puan bir artar ve elma kısa bir an büyüyüp küçülerek tepki verir. İşte bu, senin ilk puan sayan oyunun.
Oyunu zorlaştırmak: geri sayım
Gerçek oyunlarda sınırlı süre vardır. İkinci bir değişken ekleyelim: süre.
yeşil bayrağa tıklandığında
süre değişkenini 20 yap
20 kez tekrarla
1 saniye bekle
süre değişkenini -1 kadar değiştir
"Süre bitti" de
Burada döngü dersinden gelen tekrar yapısını değişkenle birleştirdik. Süre her saniye bir azalır; sıfıra ulaşınca oyun biter. İki değişken (puan ve süre) aynı anda çalışır: biri artar, biri azalır.
Listeye kısa giriş
Bazen tek bir değer yetmez. Örneğin bir sınav oyununda birçok soru ya da bir yüksek skor tablosunda birçok oyuncu adı saklaman gerekir. Her biri için ayrı değişken açmak çok zahmetlidir.
Liste, birden çok değeri sırayla saklayan bir kutu takımıdır. Listedeki her değere öğe denir ve her öğenin bir sıra numarası vardır: 1. öğe, 2. öğe, 3. öğe…
Scratch'te liste oluşturmak için yine Değişkenler kategorisinde “Bir liste oluştur” düğmesine basarız. Örneğin isimler adında bir liste açalım.
Öğe ekleme ve silme
Liste blokları arasında en çok kullanacağın ikisi şunlardır:
[Ada] öğesini [isimler] listesine ekle→ listenin sonuna yeni bir öğe koyar.[isimler] listesinden [1] numaralı öğeyi sil→ seçtiğin sıradaki öğeyi çıkarır.
Örnek: Oyuncu adlarını bir listeye toplayalım.
yeşil bayrağa tıklandığında
isimler listesinin tümünü sil
Ada öğesini isimler listesine ekle
Bora öğesini isimler listesine ekle
Ceren öğesini isimler listesine ekle
Bu bloklar çalıştığında liste şu hâle gelir: 1. Ada, 2. Bora, 3. Ceren. isimler listesinin uzunluğu bloğu ise sana listede kaç öğe olduğunu (burada 3) söyler.
Bir öğeyi silmek istersen:
isimler listesinden 2 numaralı öğeyi sil
Artık listede sadece Ada ve Ceren kalır. Değişken tek bir değer tutar; liste ise bir sürü değeri düzenli bir sırayla tutar. İkisi de bilginin hafızada saklanmasını sağlar.
Mini uygulama
Kendi tıklama oyununu iki değişkenle geliştir:
puanvetıklamaadında iki değişken oluştur ve ikisini de sahnede göster.- Yeşil bayrağa basınca ikisini de 0 yap.
- Kuklaya her tıklandığında
tıklamadeğişkenini 1 kadar değiştir. - Bir koşul ekle: eğer tıklama sayısı 3’e bölünüyorsa
puandeğişkenini 5 kadar, değilse 1 kadar değiştir. - Oyunu yeşil bayrakla birkaç kez test et ve puanın beklediğin gibi arttığını doğrula.
Bittiğinde kendine sor: 6 kez tıkladığımda puan kaç olmalı? Gerçekten o kadar mı oldu?
Uygulama laboratuvarı: Değişkenler ve Listeler
Değişkenler ve Listeler konusunu kalıcı hâle getirmenin en iyi yolu, kavramı küçük ve ölçülebilir bir göreve dönüştürmektir. Bu çalışmada Değişken nedir? ile Değişkeni sahnede gösterme arasındaki ilişkiyi kullanarak çalışan bir Scratch sahnesi, blok düzeni ve test listesi hazırlayacaksın. Amaç yalnız sonucun çalışması değil; hangi kararı neden verdiğini, neyi test ettiğini ve hangi durumda tasarımı değiştireceğini açıklayabilmektir.
Görev senaryosu
Şu senaryoyu ele al: bir robotun görevleri doğru sırada tamamladığı simülasyon. Dersin ana hedefi “Puan ve sayaç için değişken oluştur, güncelle ve listeye kısa bir giriş yap” olduğuna göre önce problemi tek cümleyle tanımla. Ardından sistemin alacağı girdiyi, uygulayacağı işlemi ve üreteceği çıktıyı ayrı ayrı yaz. Bilmediğin bir ayrıntı varsa onu varsayım olarak işaretle; varsayımı gerçek bilgi gibi kullanma.
- Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
- En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
- Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
- Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
- Tek değişiklik yap: Aynı anda birçok şeyi değiştirmek yerine bir kararı düzeltip testi yeniden çalıştır.
Başarı ö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?
“Değişkenler ve Listeler” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın bir robotun görevleri doğru sırada tamamladığı simülasyon senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, Değişken nedir? ve Değişkeni sahnede gösterme ilişkisini daha küçük adımlara bölerek düzelt.
Sık yapılan hatalar
“yap” yerine “kadar değiştir” kullanmak (veya tersi)
Oyun başında puan değişkenini 1 kadar değiştir yazarsan puan her oyunda bir önceki değerin üstüne eklenir ve sıfırdan başlamaz. Başlangıç için her zaman ... yap bloğunu kullan.
Puanı sıfırlamayı unutmak
Yeşil bayrak bloğunda puan değişkenini 0 yap yoksa, ikinci oyunda puan bir öncekinin kaldığı yerden devam eder. Her oyunu temiz başlatmak için değişkenleri sıfırla.
Listeyi temizlemeyi unutmak
Oyun her başladığında listeye yeniden öğe eklersen, birkaç denemeden sonra listede aynı isimler defalarca birikir. Önce ... listesinin tümünü sil bloğunu kullan.
Anlamsız isim vermek
degisken1 gibi bir isim ne işe yaradığını hatırlatmaz. puan, can, süre gibi açık isimler seçersen kodun kendini anlatır.
Güvenlik notu
Scratch ekran başında çalışılan bir uygulamadır. Uzun süre aralıksız ekrana bakmamak için her 30 dakikada bir kısa mola verip gözlerini dinlendir. Projelerini paylaşırken gerçek soyadını, okulunu, adresini veya telefon numaranı değişken ya da liste içine yazma; bunun yerine yalnızca takma ad kullan. İnternette proje paylaşmadan önce bir yetişkine danış.
Ders özeti
- Değişken, programın bir değeri hatırlamasını sağlayan isimli bir kutudur.
... yapbloğu değere sabit bir değer atar;... kadar değiştirbloğu var olan değeri artırır veya azaltır.- Değişkenin onay kutusunu işaretleyerek değerini sahnede oyuncuya gösterebiliriz.
- Puan sayan bir oyun, değişkenleri döngü ve koşullarla birleştirmenin en açık örneğidir.
- Liste birden çok öğeyi sırayla saklar; öğe ekleyebilir, silebilir ve uzunluğunu ölçebiliriz.
Kontrol soruları
- Değişken nedir ve neden kullanırız?
puan değişkenini 0 yapilepuan değişkenini 0 kadar değiştirarasındaki fark nedir?- Bir değişkenin değerini oyuncunun ekranda görmesini nasıl sağlarız?
canbaşlangıçta 3 ikencan değişkenini -1 kadar değiştirbloğu iki kez çalışırsacankaç olur?- Liste ile değişken arasındaki temel fark nedir?
Cevaplar
- Değişken, bir değeri (sayı ya da yazı) hafızada saklayan isimli bir kutudur. Programın puan, can, süre gibi bilgileri hatırlamasını sağlamak için kullanırız.
... 0 yapdeğişkenin içindekini silip yerine 0 koyar.... 0 kadar değiştirise değere 0 ekler, yani değeri hiç değiştirmez.- Değişkenler kategorisinde o değişkenin yanındaki onay kutusunu işaretleriz; böylece adı ve değeri sahnenin köşesinde görünür.
caniki kez birer azalır: 3 → 2 → 1. Sonuç 1’dir.- Değişken tek bir değer tutar; liste ise birden çok değeri sıralı öğeler hâlinde tutar ve her öğenin bir sıra numarası vardır.
Kaynak ve doğrulama notu
“Değişkenler ve Listeler” dersi için doğrulama odağı Değişken nedir? ile Değişkeni sahnede gösterme 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
Mesaj Yayınlama ve Sahne Yönetimi: Kuklaların birbirine haber gönderip sahneleri değiştirdiği, birden çok bölümden oluşan projeler.