Algoritma Nedir? Çocuklar İçin Örnekler ve Etkinlikler
Algoritmayı günlük hayattan örneklerle öğren: akış şeması çiz, bilgisayarsız etkinliklerle dene, sonra Python ve JavaScript koduna dök. Çocuklar için.
Sabah dişlerini fırçalarken, çay demlerken ya da bir oyunun kurallarını arkadaşına anlatırken aslında bir algoritma kullanıyorsun. Algoritma, bir işi yapmak için izlenen sıralı ve net adımlar listesidir. Bilgisayar programları da algoritmaların bir programlama diliyle yazılmış hâlidir.
Bu rehberin sonunda şunları yapabileceksin:
- Günlük bir işi adım adım, eksiksiz bir algoritma olarak yazmak,
- Basit bir akış şeması çizmek ve şekillerin ne anlama geldiğini bilmek,
- Bilgisayarsız (unplugged) etkinliklerle algoritma mantığını oyun gibi denemek,
- Yazdığın algoritmayı Python ve JavaScript koduna dökmek.
Kodları denemek için hiçbir şey kurman gerekmiyor: tarayıcıdaki kod editörünü açman yeterli.
1. Algoritma nedir? Günlük hayattan örnekler
Bir yemek tarifi düşün. Malzemeler yazılıdır, sonra "önce suyu kaynat, sonra makarnayı at, 10 dakika pişir, süz" gibi adımlar gelir. Bu sıralamayı bozarsan (önce süz, sonra kaynat) sonuç çalışmaz. İşte algoritma budur: doğru sırayla uygulanınca bir sonuca ulaştıran adımlar.
Günlük hayattan birkaç algoritma:
- Diş fırçalamak: fırçayı al, ıslat, macun sür, fırçala, çalkala, fırçayı yıka.
- Karşıdan karşıya geçmek: kaldırımda dur, sola bak, sağa bak, tekrar sola bak, yol boşsa geç, değilse bekle.
- Okul çantası hazırlamak: ders programına bak, her ders için kitap ve defteri çantaya koy, kalem kutusunu kontrol et.
Dikkat edersen "yol boşsa geç, değilse bekle" adımı bir karar içeriyor. "Her ders için" ifadesi de bir tekrar anlamına geliyor. Programlamada bunlara koşul ve döngü diyoruz. Bu iki fikri ayrıntılı öğrenmek istersen Değişken, Koşul, Döngü rehberine göz at.
İyi bir algoritmanın 4 özelliği
| Özellik | Anlamı | Örnek |
|---|---|---|
| Net | Her adım tek bir şekilde anlaşılır. | "Biraz bekle" yerine "2 dakika bekle". |
| Sıralı | Adımların sırası bellidir. | Önce macun sür, sonra fırçala. |
| Sonlu | Bir noktada biter. | "Bitti" adımına mutlaka ulaşılır. |
| Girdi ve çıktı | Bir şeyle başlar, bir sonuç üretir. | Girdi: hava durumu. Çıktı: şemsiye al ya da alma. |
2. Bilgisayar neden "aptal" bir yardımcıdır?
İnsanlar eksik bir talimatı kafalarında tamamlar. "Çayı koy" dediğinde bir arkadaşın bardağı alır, çaydanlığı bulur, gerekirse su ekler. Bilgisayar ise yalnızca yazdığını yapar. "Bardağı al" demediysen bardak yokmuş gibi davranır ya da hata verir.
Bu yüzden algoritma yazarken kendine şu soruyu sor: "Bu adımı hiç bilmeyen biri okusa, başka türlü anlayabilir mi?" Cevap evetse adımı daha da küçük parçalara böl.
3. Akış şeması: Algoritmayı çizmek
Akış şeması, algoritmanın resmidir. Adımları kutularla, aralarındaki geçişleri oklarla gösterir. Her şeklin belirli bir anlamı vardır:
| Şekil | Anlamı | Örnek yazı |
|---|---|---|
| Oval | Başla / Bitir | BAŞLA |
| Paralelkenar | Girdi veya çıktı | Hava durumunu öğren |
| Dikdörtgen | İşlem (bir şey yap) | Ayakkabını giy |
| Eşkenar dörtgen (baklava) | Karar (evet/hayır sorusu) | Yağmur yağıyor mu? |
| Ok | Sonraki adıma geçiş | → |
"Şemsiye alayım mı?" algoritmasının akış şeması yazıyla şöyle görünür:
( BAŞLA )
|
/Hava durumunu öğren/
|
< Yağmur var mı? >
|evet |hayır
[Şemsiye al] |
| |
+-----+------+
|
[Okula git]
|
( BİTİR )
Kâğıda çizerken baklava şeklinden her zaman iki ok çıkar: biri "evet", biri "hayır". Bir okun boşta kaldığı şema, cevabı belirsiz bir soru demektir.
4. Bilgisayarsız (unplugged) etkinlikler
Algoritma düşüncesini öğrenmek için ekrana ihtiyacın yok. Aşağıdaki etkinlikler evde ya da sınıfta birkaç kâğıt ve kalemle yapılabilir.
Etkinlik 1: Robot ebeveyn (sandviç algoritması)
Çocuk talimat verir, yetişkin "robot" olur ve talimatları kelimesi kelimesine uygular. "Ekmeğe peynir koy" denirse robot peynir paketini kapalı hâliyle ekmeğin üstüne koyar. Bu komik sonuçlar, adımların ne kadar net olması gerektiğini çok iyi gösterir. Sonunda çocuk talimatlarını kâğıda yazar ve numaralandırır: bu artık bir algoritmadır.
Etkinlik 2: Kareli kâğıtta robot
Kareli bir kâğıda 5×5 bir ızgara çiz. Bir köşeye robotu, başka bir kareye hazineyi koy. Yalnızca üç komut kullanılabilir: İLERİ (bir kare), SAĞ (yerinde sağa dön), SOL (yerinde sola dön). Bir kişi komut listesini yazar, diğeri parmağıyla uygular. Hazineye ulaşıldı mı? Daha kısa bir yol var mı?
Etkinlik 3: En büyük kartı bul
Numaralı kartları ters çevirip sıraya diz. Kural: Aynı anda en fazla bir kartı elinde tutabilirsin. İlk kartı al. Sonra sıradaki kartı çevir; elindekinden büyükse onu al, eskisini bırak. Sona geldiğinde elindeki kart en büyüktür. Bu, bilgisayarların da kullandığı gerçek bir algoritmadır.
Etkinlik 4: Sayı tutma oyunu
Biri 1 ile 100 arasında bir sayı tutar. Diğeri tahmin eder, cevap yalnızca "büyük", "küçük" ya da "doğru" olabilir. Her seferinde kalan aralığın tam ortasını söylersen sayıyı en fazla 7 tahminde bulursun, çünkü her tahmin ihtimalleri yarıya indirir. Bu stratejinin adı ikili aramadır.
5. Algoritmayı koda dökmek
Şimdi bilgisayarsız yaptığın etkinlikleri koda çevirelim. Aşağıdaki kodların hepsini Editör'e yapıştırıp çalıştırabilirsin.
Sıralı adımlar: Diş fırçalama
Adımları bir listeye koyup sırayla yazdırıyoruz. for döngüsü listedeki her adımı tek tek ele alır.
# Algoritma 1: Diş fırçalama adımları
adimlar = [
"Diş fırçasını al",
"Fırçayı ıslat",
"Fırçaya biraz macun sür",
"Dişlerini 2 dakika fırçala",
"Ağzını çalkala",
"Fırçayı yıka ve yerine koy",
]
sira = 1
for adim in adimlar:
print(sira, "-", adim)
sira = sira + 1
print("Bitti!")
Çıktının ilk satırı 1 - Diş fırçasını al, son satırı Bitti! olur.
Karar: Şemsiye alayım mı?
Akış şemasındaki baklava şekli, kodda if / else olur.
# Algoritma 2: Şemsiye alayım mı? (karar)
hava = "yagmurlu"
if hava == "yagmurlu":
print("Şemsiyeni al.")
else:
print("Şemsiyeye gerek yok.")
print("Okula git.")
Çıktı: Şemsiyeni al. ve Okula git. Şimdi hava = "gunesli" yapıp tekrar çalıştır; diğer yolun çalıştığını göreceksin. "Okula git." satırı if'in dışında olduğu için her iki durumda da çalışır, tıpkı şemadaki birleşen oklar gibi.
Tekrar + karar: En büyük kartı bul
Etkinlik 3'ün birebir kod hâli. Yorum satırları, kart oyunundaki hareketleri anlatıyor.
# Algoritma 3: Kart destesindeki en büyük sayıyı bul
kartlar = [7, 3, 12, 5, 9]
en_buyuk = kartlar[0] # ilk kartı elinde tut
for kart in kartlar: # sıradaki her karta bak
if kart > en_buyuk: # elindekinden büyük mü?
en_buyuk = kart # evetse onu eline al
print("En büyük kart:", en_buyuk)
Çıktı: En büyük kart: 12. Aynı algoritma JavaScript'te de aynı adımlardan oluşur, yalnızca yazım kuralları değişir:
// Algoritma 3'ün JavaScript hâli
const kartlar = [7, 3, 12, 5, 9];
let enBuyuk = kartlar[0];
for (const kart of kartlar) {
if (kart > enBuyuk) {
enBuyuk = kart;
}
}
console.log("En büyük kart:", enBuyuk);
Bu, önemli bir fikri gösteriyor: Algoritma dilden bağımsızdır. Önce adımları düşünürsün, sonra hangi dili kullanacağına karar verirsin. Diller arası farkları merak ediyorsan 40 dil sayfasına bakabilirsin.
Kareli kâğıttaki robot
Etkinlik 2'deki robotu kodla yürütelim. Robot (0, 0) noktasında, kuzeye bakarak başlıyor. Her komuttan sonra konumunu yazdırıyoruz.
# Algoritma 4: Robot ızgarada yürüyor
x = 0
y = 0
yon = "kuzey"
komutlar = ["ileri", "ileri", "sag", "ileri", "sol", "ileri"]
donus_sag = {"kuzey": "dogu", "dogu": "guney", "guney": "bati", "bati": "kuzey"}
donus_sol = {"kuzey": "bati", "bati": "guney", "guney": "dogu", "dogu": "kuzey"}
for komut in komutlar:
if komut == "ileri":
if yon == "kuzey":
y = y + 1
elif yon == "guney":
y = y - 1
elif yon == "dogu":
x = x + 1
else:
x = x - 1
elif komut == "sag":
yon = donus_sag[yon]
elif komut == "sol":
yon = donus_sol[yon]
print(komut, "->", "konum:", (x, y), "yön:", yon)
Son satırda ileri -> konum: (1, 3) yön: kuzey yazar. Kâğıt üzerinde parmağınla aynı komutları uygula ve sonucun eşleştiğini kontrol et. Kodu ve kâğıdı karşılaştırmak, hata bulmanın en iyi yollarından biridir.
İkili arama: Bilgisayar senin sayını bulsun
Etkinlik 4'ü tersine çeviriyoruz: Sen bir sayı tutuyorsun, bilgisayar tahmin ediyor.
# Algoritma 5: Bilgisayar senin tuttuğun sayıyı bulur (1-100)
alt = 1
ust = 100
deneme = 0
while True:
tahmin = (alt + ust) // 2
deneme = deneme + 1
cevap = input("Sayın " + str(tahmin) + " mi? (b: büyük, k: küçük, d: doğru) ")
if cevap == "d":
print(deneme, "denemede buldum!")
break
elif cevap == "b":
alt = tahmin + 1
elif cevap == "k":
ust = tahmin - 1
37 sayısını tuttuğunu düşün: bilgisayar 50 der (sen "k"), 25 der (sen "b"), 37 der (sen "d") ve 3 denemede buldum! yazar. 1 ile 100 arasındaki her sayı en fazla 7 denemede bulunur. Tersini, yani senin tahmin ettiğin oyunu yazmak için Python sayı tahmin oyunu rehberine geç.
6. Sık yapılan hatalar
- Adım atlamak: "Fırçala" yazıp "macun sür"ü unutmak. Çözüm: Algoritmayı bir başkasına kelimesi kelimesine uygulat.
- Belirsiz ifade: "Biraz", "bir süre", "uygun bir yere" gibi sözcükler. Bilgisayar için sayı ya da açık bir koşul gerekir.
- Bitmeyen tekrar: "Yol boşalana kadar bekle" der ama yolu tekrar kontrol etmeyi yazmazsan bekleme hiç bitmez. Kodda bu, sonsuz döngü olur. Her döngüde bir şeyin değiştiğinden emin ol.
- Kararın tek kolunu düşünmek: "Yağmur varsa şemsiye al" dedin; yağmur yoksa ne olacak? Her sorunun evet ve hayır yolunu yaz.
- Doğrudan koda atlamak: Ne yapacağını bilmeden kod yazmaya başlamak. Önce kâğıda adımları ya da akış şemasını çizmek, toplamda zaman kazandırır.
- İlk değeri yanlış seçmek: En büyük kart algoritmasında
en_buyuk = 0ile başlarsan, tüm kartlar eksi sayı olduğunda yanlış sonuç alırsın. İlk kartla başlamak daha güvenlidir.
Kod yazarken karşılaşacağın hata mesajlarını okumayı öğrenmek için yeni başlayanların en sık kod hataları rehberine bakabilirsin.
7. Kendin dene
- (Kolay) Sabah kahvaltı hazırlama algoritmanı en az 8 adım olarak yaz. Sonra bir aile üyesine kelimesi kelimesine uygulat ve eksik adımları ekle.
- (Kolay) "Dışarı çıkarken mont giyeyim mi?" sorusu için akış şeması çiz. Girdi olarak sıcaklığı kullan: 15 derecenin altındaysa mont giy.
- (Orta) Şemsiye kodunu değiştir:
havadeğişkeni yerinesicaklikdeğişkeni kullanarak 2. görevdeki mont algoritmasını Python'da yaz. - (Orta) En büyük kart algoritmasını en küçük kartı bulacak şekilde değiştir. Hangi tek karakteri değiştirmen yeterli?
- (Zor) Kartları küçükten büyüğe sıralamak için bir algoritma düşün. İpucu: Her turda kalan kartların en küçüğünü bul, yeni bir listeye ekle ve eski listeden çıkar. Önce gerçek kartlarla dene, sonra Python'da
removeveappendkullanarak yaz.
8. Ebeveyn ve öğretmenler için
Ebeveyn/öğretmen notu: Algoritma düşüncesini öğretmenin en etkili yolu çoğu zaman bilgisayarsız başlamaktır. "Robot ebeveyn" etkinliğinde talimatları gerçekten kelimesi kelimesine uygulayın; çocuğun talimatını düzeltip yeniden denemesi, kodlamadaki "hata ayıklama" döngüsünün ta kendisidir.
Sınıfta sık görülen bir durum, çocukların ilk algoritmalarında 3–4 adım yazıp gerisini "zaten belli" diye atlamasıdır. Bunu düzeltmek yerine soru sorun: "Robot bu adımda ne yapacağını nereden bilecek?" 10 yaş altı için akış şemaları yerine numaralı listeler ve kareli kâğıt etkinlikleri daha uygundur; koda geçişte blok kodlama iyi bir köprüdür. Yaşa göre genel bir yol haritası için kodlamaya nereden başlanır rehberine bakabilirsiniz.
9. Sık sorulan sorular
Algoritma ile program arasındaki fark nedir?
Algoritma, bir işin nasıl yapılacağını anlatan adımlar dizisidir; kâğıda Türkçe de yazılabilir. Program ise bu adımların bilgisayarın çalıştırabileceği bir dilde, örneğin Python ya da JavaScript ile yazılmış hâlidir.
Algoritma öğrenmek için matematik bilmek gerekir mi?
Başlangıç için hayır. Diş fırçalama, yol tarifi ya da oyun kuralları gibi günlük algoritmalar sadece sıralı düşünmeyi gerektirir. Sayılarla çalışan algoritmalar için temel dört işlem yeterlidir.
Kaç yaşında algoritma öğrenmeye başlanabilir?
Kareli kâğıtta robot yürütme veya talimat verme gibi bilgisayarsız etkinlikler okul öncesi ve ilkokul yaşlarında oynanabilir. Metin tabanlı koda geçiş genellikle okuma-yazma rahatladıktan sonra, 10 yaş civarında daha kolay olur.
Akış şeması çizmek zorunlu mu?
Zorunlu değil, ama özellikle karar ve tekrar içeren algoritmalarda düşünceni netleştirir. Kısa algoritmalar için numaralı bir liste de yeterlidir.
Aynı iş için birden fazla algoritma olabilir mi?
Evet. Örneğin 1–100 arasındaki bir sayıyı tek tek sayarak da bulabilirsin, ikili aramayla da. İkisi de doğru sonuca ulaşır ama ikili arama en fazla 7 tahminde biter, tek tek saymak ise 100 tahmine kadar sürebilir.
Algoritmalarımı nerede kodlayabilirim?
Kuzey Kutbu'nda Editör ile tarayıcıda Python ve JavaScript yazabilir, blok kodlama ile sürükle-bırak deneyebilir, Python ve JavaScript derslerine geçebilirsin.