Bir cümlelik özet
Değişken, micro:bit'in hatırladığı bir kutudur; döngü ise aynı adımları tekrar tekrar çalıştıran yapıdır. Bu ikisini birleştirince düğmeye her basışta artan bir sayaç yapabiliriz.
Neden önemli?
Algoritma modülünde "sıralama, koşul ve tekrar" üç temel yapı taşıydı. Python modülünde sayac = sayac + 1 gibi satırlar yazdık. Şimdi aynı fikirleri gerçek bir kartın üzerinde göreceğiz.
Bir programın çoğu zaman bir şeyi *hatırlaması* gerekir. Kaç kez düğmeye bastın? Kaç adım attın? Skor kaç oldu? Bu bilgileri saklamak için değişken kullanırız. Bir programın çoğu zaman bir işi *tekrar tekrar* yapması da gerekir. LED'i yakıp söndürmek, sensörü sürekli okumak, bir şekli çizmek gibi. Bunun için döngü kullanırız.
micro:bit bu iki fikri hem MakeCode blokları hem de MicroPython koduyla anlatmamıza izin verir. Bloklarda görünen mantık, kodda da birebir aynıdır; sadece yazım biçimi değişir.
Değişken nedir?
Değişken, üzerinde isim yazan bir kutu gibidir. Kutunun içine bir değer koyarız, sonra o değeri istediğimizde okuruz veya değiştiririz.
Kutu benzetmesi
Diyelim ki masanın üzerinde "puan" yazan bir kutu var. Başlangıçta içi boş, yani 0. Her doğru cevapta kutuya bir taş atıyorsun; içindeki taş sayısı artıyor. İşte değişken tam olarak böyle çalışır: içindeki değer zamanla değişebilir, adı ise aynı kalır.
micro:bit'te bir değişken oluşturup ekranda göstermek için:
başlangıçta
"sayac" değişkenini 0 yap
sayac göster
Aynı fikir MicroPython'da şöyle yazılır:
from microbit import *
sayac = 0
display.show(sayac)
Burada sayac değişkenin adı, 0 ise başlangıç değeridir. display.show(sayac) komutu değişkenin içindeki değeri 5×5 LED ekranında gösterir.
Değeri değiştirmek
Bir değişkenin en güçlü yanı, değerinin değişebilmesidir. Örneğin değeri bir artırmak:
sayac değişkenini 1 artır
sayac göster
MicroPython'da:
sayac = sayac + 1
display.show(sayac)
sayac = sayac + 1 satırını "kutunun eski değerini al, üzerine 1 ekle, sonucu tekrar kutuya koy" diye okuyabilirsin. Python modülünde gördüğün bu satır, micro:bit üzerinde de aynı şekilde çalışır.
Döngü nedir?
Döngü, aynı adımları tekrar tekrar çalıştıran bir yapıdır. Böylece aynı komutu on kez, yüz kez, hatta sonsuza kadar elle yazmak zorunda kalmayız.
"Tekrarla" döngüsü
Belirli sayıda tekrar için "tekrarla" (repeat) döngüsü kullanılır. Örnek: kalp simgesini 3 kez yakıp söndürmek.
4 kez tekrarla
kalp simgesi göster
yarım saniye bekle
ekranı temizle
yarım saniye bekle
MicroPython'da aynı döngü:
from microbit import *
for i in range(4):
display.show(Image.HEART)
sleep(500)
display.clear()
sleep(500)
Burada range(4) döngünün 4 kez döneceğini söyler. sleep(500) yarım saniye (500 milisaniye) bekler.
"Her zaman" döngüsü
Bazı programların hiç durmadan çalışması gerekir. micro:bit'te bunun için "sürekli" (forever) bloğu vardır. Bu blok, karta güç geldiği sürece içindeki adımları baştan sona tekrarlar.
sürekli
eğer <A düğmesine basıldı> ise
sayac değişkenini 1 artır
sayac göster
MicroPython'da "her zaman" döngüsü while True ile yazılır:
from microbit import *
sayac = 0
while True:
if button_a.was_pressed():
sayac = sayac + 1
display.show(sayac)
while True "koşul her zaman doğru olduğu için sonsuza kadar dön" demektir. button_a.was_pressed() ise A düğmesine son kontrolden beri basılıp basılmadığını söyler.
Değişken ve döngüyü birleştirmek: sayaç
Şimdi iki fikri birleştirelim. Amacımız: A düğmesine her basışta ekrandaki sayı bir artsın, B düğmesine basınca sayaç sıfırlansın.
MakeCode blokları
başlangıçta
sayac değişkenini 0 yap
sayac göster
sürekli
eğer <A düğmesine basıldı> ise
sayac değişkenini 1 artır
sayac göster
eğer <B düğmesine basıldı> ise
sayac değişkenini 0 yap
sayac göster
MicroPython
from microbit import *
sayac = 0
display.show(sayac)
while True:
if button_a.was_pressed():
sayac = sayac + 1
display.show(sayac)
if button_b.was_pressed():
sayac = 0
display.show(sayac)
Bu programda üç fikir bir arada çalışıyor: değişken (sayac) bilgiyi hatırlıyor, döngü (sürekli / while True) düğmeleri durmadan kontrol ediyor, koşul (eğer / if) sadece doğru anda değeri değiştiriyor.
Günlük hayattan iki örnek
Sayaç örneği: Basketbol antrenmanında kaç serbest atış attığını sayıyorsun. Her atıştan sonra aklında tuttuğun sayıyı bir artırıyorsun. Kafandaki bu "sayı" bir değişken, her atışta tekrar eden davranış ise bir döngüdür.
Turnike örneği: Bir spor salonunun girişindeki turnikeyi düşün. İçeri her giren kişide sayaç bir artar. Gün sonunda toplam giriş sayısı ekranda görünür. micro:bit sayacın da tam olarak böyle çalışır; sadece turnike yerine A düğmesi var.
Mini uygulama
Adım sayar yapalım. Kendi micro:bit'in veya çevrim içi MakeCode benzeticisiyle deneyebilirsin.
adimadında bir değişken oluştur ve başlangıçta0yap.- Başlangıçta bu değeri ekranda göster.
- "Sürekli" döngüsü içinde: A düğmesine basıldığında
adimdeğişkenini 1 artır ve göster. - B düğmesine basıldığında
adimdeğerini0yap ve göster. - Çalıştır: A'ya birkaç kez bas, sayının arttığını gör; sonra B'ye basıp sıfırlandığını kontrol et.
Hazırsan bir de şunu dene: sayı 9'u geçince ekrana tek rakam sığmaz. sayac göster yerine sayac sayısını kaydır (scroll) blokunu kullanırsan büyük sayılar soldan sağa akarak görünür.
Uygulama laboratuvarı: Değişkenler ve Döngüler
Değişkenler ve Döngüler 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ğeri değiştirmek arasındaki ilişkiyi kullanarak simülatörde ve kart üzerinde denenmiş micro:bit programı ile test notları 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: ışık ve sıcaklık değerlerini LED matriste gösteren ölçer. Dersin ana hedefi “micro:bit'te değişken ve döngülerle sayaç ve tekrar eden davranışlar kur” 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
- Program simülatörde beklenen olayı üretiyor mu?
- Kart yeniden başlatıldığında değerler doğru mu?
- A ve B düğmelerinin birlikte basılması denendi mi?
- Radyo grubu ve mesaj biçimi iki kartta aynı mı?
- Harici bileşenlerde pin ve gerilim sınırları kontrol edildi mi?
“Değişkenler ve Döngüler” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın ışık ve sıcaklık değerlerini LED matriste gösteren ölçer 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ğeri değiştirmek ilişkisini daha küçük adımlara bölerek düzelt.
Sık yapılan hatalar
Değişkeni başlangıçta ayarlamayı unutmak
Değişkene ilk değerini vermezsen program hangi sayıdan başlayacağını bilemez. Her zaman "başlangıçta" bloğunda (veya while True'dan önce) değişkeni 0 yap.
Değeri artırıp göstermeyi unutmak
sayac değişkenini 1 artır desen bile, ekranda görebilmen için bir de sayac göster demen gerekir. Artırmak ve göstermek iki ayrı adımdır.
Yanlış döngüyü seçmek
Sabit sayıda tekrar için "tekrarla", durmadan kontrol için "sürekli" kullan. Örneğin düğme kontrolünü "4 kez tekrarla" içine koyarsan program dört kontrolden sonra durur.
was_pressed yerine is_pressed karıştırmak
MicroPython'da button_a.is_pressed() düğme o an basılıysa doğrudur; parmağını çekmezsen sayaç çok hızlı artar. Sayaç için button_a.was_pressed() daha uygundur, çünkü her basışı bir kez sayar.
Güvenlik notu
micro:bit'i pil kutusuyla çalıştıracaksan pili takıp çıkarma işini bir yetişkinle birlikte yap ve yalnızca kart için önerilen düşük gerilimli (3V) pil kutusunu kullan. Kartı bir bilekliğe veya çantaya takarak "adım sayar" gibi giyilebilir bir projeye dönüştürürsen, kartı sağlam biçimde sabitle ve kabloların takılıp kopmayacağından emin ol. Kartı ıslak ellerle tutma ve metal yüzeylerin pinlere değmesine izin verme.
Ders özeti
- Değişken, program çalışırken bir değeri hatırlayan isimli bir kutudur.
sayac = sayac + 1gibi bir satır, değişkenin değerini güncellemenin temel yoludur.- "Tekrarla" döngüsü belirli sayıda, "her zaman" (sürekli / while True) döngüsü ise durmadan çalışır.
- Değişken, döngü ve koşulu birleştirerek düğmeye her basışta artan bir sayaç yapabiliriz.
- Aynı mantık MakeCode bloklarında ve MicroPython kodunda birebir aynıdır; sadece yazım değişir.
Kontrol soruları
- Değişken en basit haliyle neye benzetildi ve ne işe yarar?
sayac = sayac + 1satırını kendi cümlenle açıkla.- "Tekrarla" döngüsü ile "sürekli" döngüsü arasındaki temel fark nedir?
- Sayacı sıfırlamak için programda hangi adımı eklememiz gerekir?
- MicroPython'da düğmeye basmayı
is_pressedyerinewas_pressedile kontrol etmek sayaç için neden daha uygundur?
Cevaplar
- Üzerinde isim yazan bir kutuya benzetildi. İçine bir değer koyarız ve program çalışırken bu değeri okuyabilir veya değiştirebiliriz; böylece program bir bilgiyi hatırlar.
- Kutunun (değişkenin) eski değerini al, üzerine 1 ekle ve sonucu tekrar aynı kutuya koy. Yani değeri bir artırır.
- "Tekrarla" döngüsü önceden belirlenen sayıda döner ve sonra durur; "sürekli" döngüsü ise karta güç geldiği sürece durmadan çalışır.
- Değişkeni tekrar
0yapan bir adım eklemeliyiz (örneğin B düğmesine basılıncasayac değişkenini 0 yapvesayac göster). was_pressedher basışı yalnızca bir kez sayar.is_presseddüğme basılı kaldığı sürece doğru kaldığından sayaç çok hızlı ve kontrolsüz artar.
Kaynak ve doğrulama notu
“Değişkenler ve Döngüler” dersi için doğrulama odağı Değişken nedir? ile Değeri değiştirmek arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. MakeCode ve MicroPython adları sürüme göre küçük farklılık gösterebilir. Önce simülatörde test yapılmalı; harici bileşen bağlanacaksa kartın pin ve gerilim sınırları ayrıca kontrol edilmelidir.
Sonraki ders
İvmeölçer: micro:bit'in hareketi, eğilmeyi ve sarsılmayı nasıl algıladığını öğrenip sayaçlarımızı harekete tepki verecek şekilde geliştireceğiz.