Bir cümlelik özet
Akış şeması, bir algoritmanın adımlarını ve kararlarını standart şekiller ve oklarla çizerek çözümü gözle görülebilir bir harita hâline getirir.
Neden önemli?
Sözde kod bir algoritmayı satır satır anlatır. Fakat karar ve tekrar sayısı arttıkça “şimdi hangi yola gidiliyor?” sorusuna cevap vermek zorlaşır. Akış şeması burada işe yarar: adımları yukarıdan aşağıya bir harita gibi çizeriz ve okları takip ederek programın izleyebileceği her yolu görürüz.
Bu beceri sadece kod yazarken değil, bir problemi başkasına anlatırken de işe yarar. Bir sınıf arkadaşına “şu durumda şunu yap, öbür durumda bunu yap” demek yerine tek bir şema gösterebilirsin. Ben de yeni bir fikri koda dökmeden önce çoğu zaman önce kâğıda kaba bir akış şeması çiziyorum; hataları koddan değil şemadan yakalamak daha kolay oluyor.
Akış şeması sembolleri
Akış şemasının gücü, herkesin aynı şekilleri aynı anlamda kullanmasından gelir. Beş temel sembol var.
- Oval (başla/bitir): Şemanın başladığı ve bittiği yer. Her şema bir “Başla” ile açılır, bir veya daha fazla “Bitir” ile kapanır.
- Dikdörtgen (işlem): Yapılacak bir iş. Örneğin “su şişesini doldur” veya “sayıyı 1 artır”.
- Eşkenar dörtgen (karar): Evet/hayır cevabı olan bir soru. Buradan her zaman iki ok çıkar.
- Paralelkenar (girdi/çıktı): Dışarıdan bilgi alma veya ekrana bilgi verme. Örneğin “bir sayı al” ya da “‘Çift sayı’ yaz”.
- Ok (akış): Bir adımdan diğerine geçiş yönünü gösterir. Okları takip etmek, programı adım adım okumaktır.
Kısa hatırlatma: Şekil ne yapıldığını, ok ise sıradaki adımın hangisi olduğunu söyler.
Sözde kod ile ilişkisi
Akış şeması ve sözde kod aynı algoritmanın iki farklı görünümüdür. Sözde koddaki “Eğer … Değilse” satırı, akış şemasında bir eşkenar dörtgene; sıradan bir komut satırı ise bir dikdörtgene karşılık gelir. Biri metin, diğeri resimdir; mantık aynıdır.
Karar dallanmasını çizmek
Bir karar, akış şemasını ikiye ayırır. Eşkenar dörtgenden çıkan iki oku “Evet” ve “Hayır” diye etiketleriz; her ok ayrı bir yola gider ve o yolların ikisi de sonunda “Bitir”e bağlanmalıdır.
Günlük örnek: “Yağmur yağıyor mu?”
Amaç: Dışarı çıkmadan önce şemsiye alıp almayacağına karar vermek.
[Başla]
|
<Yağmur yağıyor mu?>
/ \
Evet Hayır
| |
[Şemsiye al] [Şemsiye alma]
\ /
\ /
[Bitir]
Bu şemada karar kutusundan iki ok çıkıyor. İki yol da farklı bir işlem yapıyor, ama ikisi de aynı “Bitir” noktasında birleşiyor. Böylece hava nasıl olursa olsun programın nerede biteceğini biliyoruz.
Döngüyü çizmek
Tekrar (döngü), akış şemasında geriye giden bir okla gösterilir. Bir karar kutusu döngünün ne zaman biteceğini kontrol eder: koşul sağlandığı sürece ok bizi geriye, işlemlere döndürür; koşul bozulunca ok bizi ileri, “Bitir”e taşır.
Günlük örnek: 1’den 5’e kadar saymak
[Başla]
|
[sayac = 1]
|
<sayac <= 5?> <-------+
/ \ |
Hayır Evet |
| | |
[Bitir] [sayac'ı yaz] |
| |
[sayac = sayac+1]
| |
+---------+
Buradaki geriye dönen ok döngünün kalbidir. Her turda sayac bir artar; sayac 5’i geçince karar kutusu “Hayır” yolunu seçer ve döngü biter. Eğer o artırma adımını unutursak sayac hep 1 kalır ve döngü hiç bitmez — buna sonsuz döngü denir.
Sözde koddan akış şemasına: “Sayı çift mi?”
Aynı algoritmayı üç biçimde görelim: sözde kod, gerçek Python ve akış şeması. Üçünün mantığı birebir aynıdır.
Sözde kod:
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:
sayi = int(input("Bir sayı gir: "))
if sayi % 2 == 0:
print("Çift sayı")
else:
print("Tek sayı")
Akış şeması:
[Başla]
|
/bir sayı al/
|
<sayı % 2 == 0?>
/ \
Evet Hayır
| |
/"Çift" yaz/ /"Tek" yaz/
\ /
[Bitir]
Buradaki paralelkenarlar (/…/) girdi ve çıktıyı gösterir: sayıyı almak bir girdi, sonucu yazmak bir çıktıdır. Karar kutusu ise if/else satırının resmidir.
Mini uygulama
Aşağıdaki sözde kodu al ve metin/ASCII biçiminde kendi akış şemana çevir.
Başla
Kapıyı kontrol et
Eğer kapı kilitliyse
anahtarı çevir
Kapıyı aç
İçeri gir
Bitir
Şemanı çizerken şunlara dikkat et:
- “Başla” ovalinden başladın mı?
- Kilitli olma durumunu bir eşkenar dörtgenle mi gösterdin?
- Karar kutusundan iki ok çıkıyor mu (kilitliyse anahtarı çevir, değilse doğrudan aç)?
- İki yol da “Kapıyı aç” adımında yeniden birleşip “Bitir”e ulaşıyor mu?
Ekstra: Şemanı bir kâğıda çizip bir arkadaşına ver ve senin şeman olmadan sadece okları takip ederek adımları söylemesini iste. Takıldığı yer, şemanın belirsiz olduğu yerdir.
Uygulama laboratuvarı: Akış Şemaları
Akış Şemaları 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 Akış şeması sembolleri ile Karar dallanmasını çizmek 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: bir robotu sınıfta güvenli biçimde hedefe götüren rota. Dersin ana hedefi “Bir algoritmayı sembol ve oklarla akış şemasına dökmeyi; kararları ve döngüleri göstermeyi öğ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?
“Akış Şemaları” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın bir robotu sınıfta güvenli biçimde hedefe götüren rota senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, Akış şeması sembolleri ve Karar dallanmasını çizmek ilişkisini daha küçük adımlara bölerek düzelt.
Sık yapılan hatalar
Her yolu bitişe bağlamamak
Bir karar kutusu iki yol açar. Bazen “Evet” yolunu çizip “Hayır” yolunu boşta bırakırız. O boş ok hiçbir yere gitmezse programın o durumda ne yapacağı belirsiz kalır. Kural: her ok bir yere, her yol da sonunda bir “Bitir”e bağlanmalıdır.
Karar kutusundan tek çıkış vermek
Eşkenar dörtgen bir sorudur; sorunun her zaman iki olası cevabı vardır. Karar kutusundan tek ok çıkarırsan aslında orada karar yok demektir; onu düz bir dikdörtgen (işlem) yapmalıydın. Karar kutusundan daima iki ok (Evet ve Hayır) çıkmalı.
Okları etiketlememek
İki ok çıkıyor ama hangisi “Evet” hangisi “Hayır” belli değilse şema okunamaz. Karar kutusundan çıkan okları her zaman etiketle.
Şekilleri karıştırmak
İşlemi eşkenar dörtgenle, kararı dikdörtgenle çizmek okuyanı yanıltır. Şekil bir dildir: soru sormak istiyorsan eşkenar dörtgen, iş yaptırmak istiyorsan dikdörtgen kullan.
Ders özeti
- Akış şeması, bir algoritmanın adımlarını ve kararlarını şekiller ve oklarla çizer.
- Beş temel sembol vardır: oval (başla/bitir), dikdörtgen (işlem), eşkenar dörtgen (karar), paralelkenar (girdi/çıktı), ok (akış).
- Karar kutusundan her zaman iki ok çıkar ve her yol sonunda bir “Bitir”e bağlanır.
- Döngü, akış şemasında geriye giden bir okla ve onu durduran bir karar kutusuyla gösterilir.
- Akış şeması ile sözde kod aynı algoritmanın iki farklı görünümüdür; mantık ikisinde de aynıdır.
Kontrol soruları
- Akış şemasında başlangıç ve bitiş hangi sembolle gösterilir?
- Bir eşkenar dörtgenden kaç ok çıkmalıdır ve neden?
- Ekrana bir mesaj yazdırmak hangi sembolle gösterilir?
- Döngü bir akış şemasında hangi öğeyle gösterilir?
- “Her yolu bitişe bağlamamak” neden bir hatadır?
Cevaplar
- Oval sembolüyle gösterilir. Her şema bir “Başla” ovaliyle açılır, bir veya daha fazla “Bitir” ovaliyle kapanır.
- İki ok çıkmalıdır: biri “Evet”, biri “Hayır”. Çünkü karar, evet/hayır cevabı olan bir sorudur ve her iki cevabın da bir yolu olmalıdır.
- Paralelkenar (girdi/çıktı) sembolüyle gösterilir; ekrana bilgi vermek bir çıktıdır.
- Geriye giden bir okla gösterilir; bu ok, bir karar kutusu koşulu bozana kadar akışı önceki adımlara döndürür.
- Çünkü bir yol hiçbir yere bağlı değilse, program o duruma düştüğünde ne yapacağı belirsiz kalır; iyi bir şemada her yol tanımlı bir sonda biter.
Kaynak ve doğrulama notu
“Akış Şemaları” dersi için doğrulama odağı Akış şeması sembolleri ile Karar dallanmasını çizmek 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.
Sonraki ders
Hata Ayıklama: Bir algoritma veya kod beklediğimiz gibi çalışmadığında hatayı adım adım bulup düzeltmenin yöntemleri.