Algoritma Nedir?
Bir arkadaşına evinden parka nasıl gideceğini anlattığını düşün. “Dışarı çık, biraz ilerle ve oradan dön” dersen arkadaşın hangi kapıdan çıkacağını, ne kadar ilerleyeceğini ve hangi yöne döneceğini bilemeyebilir. Talimatların doğru olsa bile yeterince açık değildir.
Şimdi aynı yolu şöyle anlatalım:
- Apartmanın ana kapısından çık.
- Sağa dön.
- İlk yaya geçidine kadar düz ilerle.
- Işık yeşil olduğunda karşıya geç.
- Soldaki park girişinden içeri gir.
Bu ikinci anlatım, uygulanabilir ve sıralı adımlardan oluşur. İşte belirli bir amacı gerçekleştirmek için hazırlanan açık ve sonlu adımlar dizisine algoritma denir.
Algoritmalar yalnız bilgisayar ve robotlarda kullanılmaz. Yemek tarifi, oyun kuralı, okul çantası kontrol listesi, bir deneyin aşamaları ve antrenman programı da birer algoritma örneğidir.
Kısa tanım: Algoritma, bir problemi çözmek veya bir görevi tamamlamak için izlenen açık adımlar bütünüdür.
İyi bir algoritmanın dört özelliği
1. Açık olmalı
“Biraz bekle” yerine “10 saniye bekle” demek daha açıktır. Bilgisayarlar ve robotlar belirsiz ifadeleri insanlar gibi yorumlayamaz.
2. Doğru sırada olmalı
Ayakkabıyı bağlamadan önce ayağına giymen gerekir. Doğru adımlar yanlış sıradaysa sonuç da yanlış olur.
3. Sonlu olmalı
Algoritmanın bir başlangıcı ve bitişi bulunmalıdır. Hiç durmadan devam eden bir talimat, amaç bu değilse iyi bir algoritma değildir.
4. Test edilebilir olmalı
Adımları uyguladığımızda beklediğimiz sonuca ulaşıp ulaşmadığımızı kontrol edebilmeliyiz.
Algoritmanın üç temel yapı taşı
Kodlama dillerinin görünüşü değişebilir; fakat çoğu program üç temel düşünceyi kullanır: sıralama, koşul ve tekrar.
1. Sıralama
Komutlar belirli bir sırayla çalışır.
Örnek: Bir karakteri ekranda hareket ettirmek.
Başla
2 adım sağa git
1 adım yukarı git
“Merhaba” de
Bitir
Komutların yerini değiştirirsek karakter farklı bir yere gider veya mesajı farklı zamanda söyler.
2. Koşul
Bazı adımlar yalnız belirli bir durum gerçekleşirse uygulanır.
Örnek:
Eğer yağmur yağıyorsa
şemsiyeyi al
Değilse
şemsiyeyi alma
Robotik örneği:
Eğer mesafe 10 santimetreden küçükse
motorları durdur
kırmızı LED'i yak
“Eğer” kelimesi, programın karar vermesini sağlayan koşulu gösterir.
3. Tekrar
Aynı adımları birçok kez yazmak yerine bir döngü içinde tekrarlarız.
4 kez tekrarla
1 adım ilerle
90 derece sağa dön
Bu algoritmayı uygulayan bir karakter kare çizer. Tekrar sayısını veya dönüş açısını değiştirirsek farklı şekiller oluşturabiliriz.
Günlük hayattan örnek: Okul çantası kontrolü
Amaç: Sabah evden çıkmadan önce gerekli eşyaların çantada olduğundan emin olmak.
Normal dilde
“Çantamı kontrol ederim.”
Bu cümle insan için anlaşılır görünse de bir program için çok belirsizdir. Neyi, hangi sırayla ve eksikse ne yapacağını söylemez.
Algoritma olarak
Başla
Ders programını aç
Her ders için gerekli kitabı kontrol et
Eğer kitap çantada değilse
kitabı çantaya koy
Kalem kutusunu kontrol et
Eğer su şişesi boşsa
su şişesini doldur
Çantanın fermuarını kapat
Bitir
Bu örnekte:
- Komutların sırası vardır.
- “Eğer” ile koşul kullanılır.
- Her ders için yapılan kontrol bir tekrar içerir.
Sözde kod nedir?
Bir algoritmayı gerçek bir programlama diline çevirmeden önce günlük dile yakın, düzenli bir biçimde yazabiliriz. Buna sözde kod veya pseudocode denir.
Sözde kodun amacı bilgisayarın doğrudan çalıştırması değil, insanın çözüm mantığını kolayca görmesidir.
Örnek: Bir sayının tek mi çift mi olduğunu bulmak.
Başla
Bir sayı al
Eğer sayı 2'ye bölündüğünde kalan 0 ise
“Çift sayı” yaz
Değilse
“Tek sayı” yaz
Bitir
Python’da aynı fikir şöyle yazılabilir:
sayi = int(input("Bir sayı gir: "))
if sayi % 2 == 0:
print("Çift sayı")
else:
print("Tek sayı")
Kodun biçimi değişse de algoritmanın mantığı aynıdır.
Akış şeması nasıl düşünülür?
Akış şeması, algoritmanın adımlarını şekiller ve oklarla gösterir.
Temel semboller:
- Oval: Başlangıç veya bitiş.
- Dikdörtgen: Yapılacak işlem.
- Eşkenar dörtgen: Evet/hayır cevabı olan karar.
- Ok: Bir adımdan diğerine geçiş yönü.
Örnek: “Yağmur yağıyor mu?”
[Başla]
|
<Yağmur yağıyor mu?>
/ \
Evet Hayır
| |
[Şemsiye al] [Devam et]
\ /
[Bitir]
Akış şeması özellikle birden fazla koşul olduğunda çözümün tamamını görmeyi kolaylaştırır.
Mini görev: Robotu hedefe ulaştır
Bir robot başlangıç noktasından kırmızı kutuya ulaşacak. Önünde iki kare boş alan, sonra bir engel var. Engel sağ taraftan geçilebiliyor.
Aşağıdaki komutları kullanabilirsin:
- Bir kare ilerle.
- Sağa dön.
- Sola dön.
Görev
Robotun hedefe ulaşması için adımları sırayla yaz.
Örnek cevap biçimi:
1. Bir kare ilerle
2. ...
Görev kontrol listesi
- Talimatların içinde “biraz” veya “şuraya” gibi belirsiz sözcükler var mı?
- Robot her komuttan sonra hangi yöne bakıyor?
- Daha az adımla aynı sonuca ulaşabilir misin?
Bu görevde tek bir doğru yol olmak zorunda değildir. Önemli olan algoritmanın açık, güvenli ve uygulanabilir olmasıdır.
Hata ayıklama: Algoritma çalışmazsa ne yaparız?
Bir algoritmadaki veya koddaki hatayı bulup düzeltme işlemine hata ayıklama denir. İngilizcesi “debugging”dir.
Hata ayıklarken şu sırayı kullanabilirsin:
- Beklenen sonucu açıkça yaz.
- Gerçekte ne olduğunu gözlemle.
- Algoritmayı küçük parçalara ayır.
- Her adımı tek tek test et.
- İlk farklı sonucun oluştuğu noktayı bul.
- Yalnız o adımı değiştir ve yeniden dene.
Örnek:
Amaç: Karakterin kare çizmesi
Sorun: Karakter üç kenar çizip duruyor
Kontrol: Tekrar sayısı 3 yazılmış
Düzeltme: Tekrar sayısını 4 yap
Hata yapmak başarısızlık değildir. Hatanın nerede olduğunu anlayıp çözmek, programlama ve mühendisliğin temel parçasıdır.
Uygulama laboratuvarı: Algoritma Nedir?
Algoritma Nedir? 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 Algoritma Nedir? ile 1. Açık olmalı arasındaki ilişkiyi kullanarak açık bir algoritma, sözde kod ve test tablosu 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: yanlış girdiyi fark edip yeniden isteyen bir kontrol sistemi. Dersin ana hedefi “Bir problemi bilgisayarın veya robotun uygulayabileceği açık adımlara dönüştürmeyi sıralama, koşul ve tekrar örnekleriyle öğren” 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
- Adımlar açık ve tek anlamlı mı?
- Başlangıç ve bitiş koşulu belli mi?
- Normal, sınır ve hatalı durumlar denendi mi?
- Gereksiz tekrar veya adım var mı?
- Başka biri algoritmayı aynı sonuçla uygulayabiliyor mu?
“Algoritma Nedir?” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın yanlış girdiyi fark edip yeniden isteyen bir kontrol sistemi senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, Algoritma Nedir? ve 1. Açık olmalı ilişkisini daha küçük adımlara bölerek düzelt.
Sık yapılan hatalar
Çok belirsiz komut vermek
Yanlış: “Biraz ilerle.” Daha iyi: “20 santimetre ilerle.”
Bir adımı atlamak
Yanlış: LED’i bağla ve çalıştır. Eksik: Güç kaynağı, direnç, bağlantı yönü ve güvenlik kontrolü.
Koşulun iki sonucunu düşünmemek
“Eğer kapı açıksa içeri gir” dedik. Peki kapı kapalıysa ne olacak? İyi algoritma gerekli durumlarda “değilse” yolunu da düşünür.
Sonsuz tekrar oluşturmak
Bir döngünün ne zaman biteceği belli değilse program hiç durmayabilir. Bazı sistemlerde sonsuz döngü bilerek kullanılır; fakat o durumda bile güvenli durdurma yöntemi bulunmalıdır.
Kendi algoritmanı yaz
Aşağıdaki görevlerden birini seç:
- Bir bardak su hazırlama.
- Basketbol antrenmanı öncesi çanta kontrolü.
- Bisiklete binmeden önce güvenlik kontrolü.
- Yüzme antrenmanı için hazırlık.
- Scratch karakterinin yıldızı alıp başlangıç noktasına dönmesi.
Algoritmanda şunların bulunmasına çalış:
- En az beş sıralı adım.
- En az bir koşul.
- Uygunsa en az bir tekrar.
- Açık bir başlangıç ve bitiş.
Bisiklet güvenlik kontrolü için örnek
Başla
Kaskı tak
Lastiklerin havasını kontrol et
Eğer lastik yumuşaksa
yetişkinden yardım iste ve lastiği uygun basınca getir
Frenleri kontrol et
Işıkları ve reflektörleri kontrol et
Eğer güvenli olmayan bir parça varsa
sürüşe başlama
Güvenli rotayı belirle
Bitir
Ders özeti
- Algoritma, bir görevi tamamlamak için hazırlanan açık adımlar bütünüdür.
- Sıralama, koşul ve tekrar en temel yapılardır.
- Sözde kod çözüm mantığını programlama dilinden bağımsız yazmayı sağlar.
- Akış şeması adımlar ve kararlar arasındaki ilişkiyi görselleştirir.
- Hata ayıklama, beklenen sonuçla gerçek sonucu karşılaştırarak sorunu bulma sürecidir.
- İyi bir algoritma açık, doğru sıralı, sonlu ve test edilebilirdir.
Kontrol soruları
- Bir adımlar dizisinin algoritma sayılabilmesi için hangi iki temel özelliğe sahip olması gerekir?
- Sıralama, koşul ve döngü arasındaki farkı birer cümleyle nasıl açıklarsın?
- Sözde kod kullanmak, doğrudan bir programlama dilinde kod yazmaya göre hangi avantajı sağlar?
- Çanta kontrolü algoritmasında “matara boşsa” durumu neden bir sınır koşulu olarak ele alınmalıdır?
- Bir algoritma beklenen sonucu vermediğinde hata ayıklamaya hangi kanıtı toplayarak başlarsın?
Cevaplar
- Adımlar açık ve uygulanabilir olmalı; süreç sonlu sayıda adımda tamamlanmalıdır.
- Sıralama komutların izleneceği düzeni, koşul farklı durumlarda verilecek kararı, döngü ise belirli adımların tekrarını tanımlar.
- Sözde kod, çözüm mantığını bir dilin yazım kurallarına takılmadan görmeyi, tartışmayı ve düzeltmeyi kolaylaştırır.
- Çünkü algoritmanın yalnız normal durumda değil, eksik veya beklenmeyen girdilerde de nasıl davranacağını tanımlamak gerekir.
- Önce verilen girdiyi, beklenen çıktıyı ve gerçekleşen çıktıyı kaydeder; ardından adımları sırayla izleyerek ilk ayrışma noktasını bulurum.
Kaynak ve doğrulama notu
“Algoritma Nedir?” dersi için doğrulama odağı Algoritma Nedir? ile 1. Açık olmalı arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Bu dersteki algoritmalar, örnek girdiler elle izlenerek ve beklenen çıktılarla karşılaştırılarak doğrulanmıştır. Sözde kod, belirli bir programlama diline bağlı kalmadan düşünme sırasını görünür kılmak için kullanılır.
Ders sonu kontrolü
- Algoritma Nedir? kavramını kendi cümlenle nasıl tanımlarsın?
- Bu derste öğrendiğin yapının normal bir kullanım örneği nedir?
- Bir sınır veya beklenmeyen durum seçsen neyi test ederdin?
- Bu konuda yapılabilecek bir hatayı nasıl fark eder ve düzeltirsin?
- Aynı fikri başka bir robotik ya da kodlama projesine nasıl uyarlarsın?
Ders sonu kontrolü — örnek cevaplar
- Tanım, dersin ana kavramını ve ne işe yaradığını birlikte açıklamalıdır.
- Örnek; girdiyi, yapılan işlemi ve ortaya çıkan sonucu açıkça göstermelidir.
- Sınır testi, sistemin kabul ettiği en düşük veya en yüksek değeri; beklenmeyen test ise yanlış ya da eksik girdiyi inceleyebilir.
- Beklenen ve gerçek sonucu karşılaştırır, değişiklikleri tek tek yapar ve testi yeniden çalıştırırım.
- Önce değişmeyen kuralı bulur, sonra yeni projenin girdisine, aracına ve çıktısına göre adımları uyarlarım.
Sonraki ders
Scratch’te Sıralama, Koşul ve Döngü: Bir karakteri labirentten çıkaran ilk etkileşimli program.
Quiz çağrısı
Hazırsan 10 soruluk Robotik & Kodlama Başlangıç Quiz’i ile öğrendiklerini test et. Her yanıtın ardından kısa açıklamayı okuyarak eksiklerini hemen görebilirsin.