Bölüm 4.2: Akış Diyagramları

Bilgisayar ve Programlamaya Giriş
SimgelerSıralı akışKararDöngüDoğrulama
Sercan KÜLCÜ · Giresun Üniversitesi

Giriş

Öğrenme Çıktıları

Simgeler

Temel akış diyagramı simgelerini tanımak.

Akış

Oklarla işlem sırasını kurmak.

Kontrol

Karar ve döngü yapılarını göstermek.

Dönüşüm

Diyagramı sözde kod ve programa çevirmek.

Temeller

Akış Diyagramı Nedir?

  • Bir algoritmanın işlem sırasını grafiksel olarak gösterir.
  • Karmaşık mantığı koddan bağımsız biçimde tartışmayı sağlar.
  • Simgeler adımın türünü; oklar yürütme yönünü gösterir.
Yandaki örnek: günlük bir işin (kapı şifresi) algoritması. Karar kutusundan iki yol çıkar ve yollar yeniden birleşir.
EvetHayırBaşlaşifreyi okudoğru mu?kapıyı açuyarı verBitir

Simgeler

Temel Simgeler

Başla / BitirBaşlangıç / bitişHer diyagramda bir başla, en az bir bitirtoplam = a + bİşlemHesaplama, atamaa > b ?KararEvet / Hayır iki çıkışa değerini okuGiriş / çıkışVeri alma (oku), gösterme (yaz)Akış çizgisiYürütme yönü; uçtaki ok önemlidirABağlayıcıYolların birleşmesi / sayfa geçişi

Simgenin biçimi adımın türünü söyler; içine yalnızca o adımın kısa ifadesi yazılır.

Simgeler

Simge ve Görev

SimgeGörevÖrnek
OvalBaşlangıç veya bitişBaşla
Dikdörtgenİşlem (hesaplama, atama)toplam = a + b
Eşkenar dörtgenKarar (koşul)a > b ?
ParalelkenarGiriş / çıkışa değerini oku
OkYürütme yönüsonraki adıma geç
Karar simgesinin içine soru (a > b ?), işlem simgesine emir (toplam = a + b) yazılır.

Simgeler

Ek Simgeler

SimgeGörevÖrnek
Sayfa dışı bağlayıcıDiyagram başka sayfada sürer; içine sayfa ve nokta yazılır.2-A
Önceden tanımlı işlemAyrıca çizilmiş bir alt süreci çağırır.Ortalama hesapla
HazırlıkDöngü sayacının başlangıcını ve sınırını tek simgede verir.i = 1 → n
BelgeYazdırılan çıktı ya da rapor.Not çizelgesi
Veri deposuDiskte ya da veri tabanında saklanan veri.Öğrenci kayıtları
AçıklamaKesikli çizgiyle bir simgeye not ekler; akışa katılmaz.not 0–100 arası

Bu simgeler ISO 5807 ve yaygın çizim araçlarında bulunur. Küçük bir algoritma için beş temel simge yeter; ek simgeler diyagram büyüyüp sayfalara bölündüğünde ya da dosya ve rapor gibi dış ortamlar gösterilmek istendiğinde kullanılır.

Tasarım · Adım adım

Diyagram Oluşturma: İki Sayının Büyüğü

1. Girdi ve çıktıyı belirle2. Adımları sırala3. Kararları ayır4. Okları bağla5. Örnekle izlea, b değerlerini okubüyüğü yaz

Problem: iki sayının büyüğünü yazmak. Girdi a ve b (paralelkenar: oku), çıktı büyük olan sayı (paralelkenar: yaz).

1. Girdi ve çıktıyı belirle2. Adımları sırala3. Kararları ayır4. Okları bağla5. Örnekle izleBaşlaa, b değerlerini okuBitirbüyüğü yaz

Başla ve Bitir eklenir; adımlar yukarıdan aşağıya sıralanır: önce oku, en son yaz.

1. Girdi ve çıktıyı belirle2. Adımları sırala3. Kararları ayır4. Okları bağla5. Örnekle izleBaşlaa, b değerlerini okua > b ?a yazb yazBitir

Hangi sayının yazılacağı bir soruya bağlı: a > b ? karar kutusu eklenir; çıktı iki kutuya ayrılır.

1. Girdi ve çıktıyı belirle2. Adımları sırala3. Kararları ayır4. Okları bağla5. Örnekle izleEvetHayırBaşlaa, b değerlerini okua > b ?a yazb yazBitir

Oklar yürütme yönünü verir. Karar çıkışları Evet/Hayır diye etiketlenir, yollar bir bağlayıcıda birleşir.

1. Girdi ve çıktıyı belirle2. Adımları sırala3. Kararları ayır4. Okları bağla5. Örnekle izleEvetHayırBaşlaa, b değerlerini okua > b ?a yazb yazBitir

Örnekle izle: a = 4, b = 9 → 4 > 9 yanlış → Hayır yolu → "b yaz" → çıktı 9. Turuncu yol izlenen yoldur.

Tasarım

Okunabilirlik Kuralları

Başlaa > bb yaz, bitir, a=ba yazBitir

✗ Kesişen oklar, etiketsiz karar, bir kutuda üç işlem

EvetHayırBaşlaa > b ?a yazb yazBitir

✓ Yukarıdan aşağı, Evet/Hayır etiketli, tek işlem

  • Akış mümkün olduğunca yukarıdan aşağıya ve soldan sağa ilerlemelidir.
  • Karar çıkışları Evet/Hayır gibi anlamlı etiketler taşımalıdır; kesişen oklar azaltılmalıdır.
  • Bir simgeye bir temel işlem yazılmalı; büyük diyagramlar alt süreçlere bölünmelidir.

Tasarım

Akış Diyagramı mı, Sözde Kod mu?

Akış diyagramıSözde kod
BiçimSimgeler ve oklarGirintili kısa cümleler
Güçlü yanıDallanma ve döngü bir bakışta görülürHızlı yazılır, koda çok yakındır
Zayıf yanıBüyüyünce sayfaya sığmaz, değiştirmek zahmetliAkışın yapısı girintiye bağlıdır
Uygun olduğu yerÖğrenme, sunum, iş süreçleriUzun algoritmalar, kodlamadan hemen önce

İkisi aynı algoritmayı anlatır; biri diğerine satır satır çevrilebilir. Sözde kodun bir standardı yoktur, yeter ki her adım açık olsun.

EvetHayırBaşlax değerini okux < 0 ?x = −xx değerini yazBitir
oku x
eğer x < 0 ise
    x = −x
yaz x

Tasarım

Yapısal Programlamanın Üç Yapısı

SıraA işlemiB işlemiSeçimkoşul ?ABEvetHayırTekrarkoşul ?gövdeEvetHayır
  • Böhm ve Jacopini (1966): her algoritma yalnızca sıra, seçim ve tekrar yapılarıyla yazılabilir.
  • Her yapının tek girişi ve tek çıkışı vardır; bu yüzden bir yapı, başka bir yapının içindeki kutunun yerine konabilir (iç içe yapılar).
  • Okları diyagramın rastgele bir noktasına atlatan çizimler (spagetti akış) okunması ve test edilmesi zor diyagramlar üretir. Java'da goto ayrılmış bir sözcüktür ama kullanılamaz.

Tasarım

Akış Diyagramı Çizim Araçları

Kâğıt ve kalem

İlk taslak için en hızlısı; silip yeniden çizmek kolaydır. Sınavda da diyagram elle çizilir.

Word ve PowerPoint

Ekle → Şekiller menüsündeki Akış Çizelgesi grubu; bağlayıcı oklar kutu taşınınca birlikte kayar.

draw.io (diagrams.net)

Ücretsiz, tarayıcıda çalışır; hazır akış diyagramı şekilleri ve dışa aktarma (PNG, SVG, PDF) sunar.

Microsoft Visio

Kurumsal süreç ve iş akışı diyagramları için ticari araç.

Flowgorithm

Diyagramı çalıştırır, değişkenleri adım adım gösterir ve Java dahil birçok dile koda çevirir.

Mermaid

Diyagram metinle tanımlanır, araç çizer; belgeler ve kod depoları içinde sık kullanılır.

Araç ne olursa olsun simgelerin anlamı ve okunabilirlik kuralları aynıdır.

Akış Türleri

Sıralı Akış

Başlaa değerini okub değerini okutoplam = a + btoplamı yazBitir
Başla
  a değerini oku
  b değerini oku
  toplam = a + b
  toplamı yaz
Bitir
  • Her adım bir önceki tamamlandıktan sonra çalışır.
  • Dallanma veya tekrar bulunmaz: tek giriş, tek çıkış.
  • Oklar hep aşağı doğrudur.
  • Sıra önemlidir: toplam, a ve b okunmadan hesaplanamaz.

Akış Türleri · Diyagramı yürüt

Sıralı Akış Adım Adım (a = 4, b = 7)

Başlaa değerini okub değerini okutoplam = a + btoplamı yazBitir

Yürütme Başla kutusundan başlar. Henüz hiçbir değişken yok.

Başlaa değerini okub değerini okutoplam = a + btoplamı yazBitir

Giriş kutusu: kullanıcı 4 girer → a = 4.

Başlaa değerini okub değerini okutoplam = a + btoplamı yazBitir

Okun gösterdiği sonraki kutu: b = 7 okunur.

Başlaa değerini okub değerini okutoplam = a + btoplamı yazBitir

İşlem kutusu: toplam = 4 + 7 = 11.

Başlaa değerini okub değerini okutoplam = a + btoplamı yazBitir

Çıkış kutusu: ekrana 11 yazılır.

Başlaa değerini okub değerini okutoplam = a + btoplamı yazBitir

Bitir kutusuna ulaşıldı. Her kutu tam bir kez çalıştı: sıralı akışın özelliği.

Başla
  a değerini oku
  b değerini oku
  toplam = a + b
  toplamı yaz
Bitir

Akış Türleri

Koşullu Akış

EvetHayırBaşlanot değerini okunot >= 60 ?"Kaldı" yaz"Geçti" yazBitir
Başla
  not değerini oku
  not >= 60 ?
    Evet → "Geçti" yaz
    Hayır → "Kaldı" yaz
Bitir
  • Karar simgesinden iki yol çıkar; her çalıştırmada yalnızca biri izlenir.
  • Yollar alttaki bağlayıcıda (●) yeniden birleşir.
  • Sınır değeri ayrıca denenir: not = 60 iken >= “Geçti”, > ise “Kaldı” verir.

Akış Türleri · Diyagramı yürüt

Koşullu Akış Adım Adım (not = 72, sonra 45)

EvetHayırBaşlanot değerini okunot >= 60 ?"Kaldı" yaz"Geçti" yazBitir

1. çalıştırma (not = 72): yürütme Başla kutusundan başlar.

EvetHayırBaşlanot değerini okunot >= 60 ?"Kaldı" yaz"Geçti" yazBitir

Kullanıcı 72 girer → not = 72.

EvetHayırBaşlanot değerini okunot >= 60 ?"Kaldı" yaz"Geçti" yazBitir

Karar: 72 >= 60 → doğru. Akış Evet okundan devam eder.

EvetHayırBaşlanot değerini okunot >= 60 ?"Kaldı" yaz"Geçti" yazBitir

"Geçti" yazılır. Hayır dalındaki kutu bu çalıştırmada hiç çalışmaz.

EvetHayırBaşlanot değerini okunot >= 60 ?"Kaldı" yaz"Geçti" yazBitir

İki yol bağlayıcıda birleşir ve Bitir'e ulaşılır. Şimdi diğer dalı görmek için not = 45 ile yeniden çalıştıralım.

EvetHayırBaşlanot değerini okunot >= 60 ?"Kaldı" yaz"Geçti" yazBitir

2. çalıştırma (not = 45): yürütme Başla kutusundan başlar.

EvetHayırBaşlanot değerini okunot >= 60 ?"Kaldı" yaz"Geçti" yazBitir

Kullanıcı 45 girer → not = 45.

EvetHayırBaşlanot değerini okunot >= 60 ?"Kaldı" yaz"Geçti" yazBitir

Karar: 45 >= 60 → yanlış. Akış Hayır okundan devam eder.

EvetHayırBaşlanot değerini okunot >= 60 ?"Kaldı" yaz"Geçti" yazBitir

"Kaldı" yazılır. Evet dalındaki kutu bu çalıştırmada hiç çalışmaz.

EvetHayırBaşlanot değerini okunot >= 60 ?"Kaldı" yaz"Geçti" yazBitir

İki yol bağlayıcıda birleşir ve Bitir'e ulaşılır. İki farklı girdiyle iki dalın da çalıştığını gördük.

Başla
  not değerini oku
  not >= 60 ?
    Evet → "Geçti" yaz
    Hayır → "Kaldı" yaz
Bitir

Akış Türleri · Diyagramı yürüt

Üç Sayının En Büyüğü Adım Adım

EvetHayırEvetHayırBaşlaa, b, c değerlerini okuenb = ab > enb ?enb = bc > enb ?enb = cenb değerini yazBitir

1. çalıştırma (4, 9, 7): Başla.

EvetHayırEvetHayırBaşlaa, b, c değerlerini okuenb = ab > enb ?enb = bc > enb ?enb = cenb değerini yazBitir

Üç sayı okunur: a = 4, b = 9, c = 7.

EvetHayırEvetHayırBaşlaa, b, c değerlerini okuenb = ab > enb ?enb = bc > enb ?enb = cenb değerini yazBitir

İlk aday en büyük: enb = a = 4.

EvetHayırEvetHayırBaşlaa, b, c değerlerini okuenb = ab > enb ?enb = bc > enb ?enb = cenb değerini yazBitir

Karar: 9 > 4 → doğru → Evet.

EvetHayırEvetHayırBaşlaa, b, c değerlerini okuenb = ab > enb ?enb = bc > enb ?enb = cenb değerini yazBitir

enb = b = 9. Yol aşağıda birleşir.

EvetHayırEvetHayırBaşlaa, b, c değerlerini okuenb = ab > enb ?enb = bc > enb ?enb = cenb değerini yazBitir

Karar: 7 > 9 → yanlış → Hayır.

EvetHayırEvetHayırBaşlaa, b, c değerlerini okuenb = ab > enb ?enb = bc > enb ?enb = cenb değerini yazBitir

9 yazılır.

EvetHayırEvetHayırBaşlaa, b, c değerlerini okuenb = ab > enb ?enb = bc > enb ?enb = cenb değerini yazBitir

Bitir. Şimdi en büyüğün c olduğu bir girdiyle deneyelim.

EvetHayırEvetHayırBaşlaa, b, c değerlerini okuenb = ab > enb ?enb = bc > enb ?enb = cenb değerini yazBitir

2. çalıştırma (3, 2, 8): Başla.

EvetHayırEvetHayırBaşlaa, b, c değerlerini okuenb = ab > enb ?enb = bc > enb ?enb = cenb değerini yazBitir

Üç sayı okunur: a = 3, b = 2, c = 8.

EvetHayırEvetHayırBaşlaa, b, c değerlerini okuenb = ab > enb ?enb = bc > enb ?enb = cenb değerini yazBitir

İlk aday en büyük: enb = a = 3.

EvetHayırEvetHayırBaşlaa, b, c değerlerini okuenb = ab > enb ?enb = bc > enb ?enb = cenb değerini yazBitir

Karar: 2 > 3 → yanlış → Hayır, enb değişmez.

EvetHayırEvetHayırBaşlaa, b, c değerlerini okuenb = ab > enb ?enb = bc > enb ?enb = cenb değerini yazBitir

Karar: 8 > 3 → doğru → Evet.

EvetHayırEvetHayırBaşlaa, b, c değerlerini okuenb = ab > enb ?enb = bc > enb ?enb = cenb değerini yazBitir

enb = c = 8.

EvetHayırEvetHayırBaşlaa, b, c değerlerini okuenb = ab > enb ?enb = bc > enb ?enb = cenb değerini yazBitir

8 yazılır.

EvetHayırEvetHayırBaşlaa, b, c değerlerini okuenb = ab > enb ?enb = bc > enb ?enb = cenb değerini yazBitir

Bitir. Her karar yalnızca bir kez sorulur; sayı sayısı artsa da yöntem aynı kalır.

Başla
  a, b, c değerlerini oku
  enb = a
  b > enb ?  Evet → enb = b
  c > enb ?  Evet → enb = c
  enb değerini yaz
Bitir

Akış Türleri

Çok Yollu Karar: Karar Zinciri

EvetHayırEvetHayırEvetHayırs değerini okus < 0 ?"Donma" yazs < 15 ?"Soğuk" yazs < 25 ?"Ilık" yaz"Sıcak" yazBitir
  • Seçenek sayısı ikiden fazlaysa kararlar zincir biçiminde dizilir: her karar bir öncekinin Hayır dalındadır.
  • İlk doğru koşulun dalı çalışır, sonraki kararlar hiç sorulmaz. s = 18 için üç karar sorulur: 18 < 0 ve 18 < 15 yanlış, 18 < 25 doğru → Ilık.
  • Her karar yalnızca üst sınırı denetler; alt sınır zaten bilinir (s < 15 sorulurken s ≥ 0 olduğu kesindir).
  • Sıra önemlidir: s < 25 en başta sorulsaydı s = −5 için de “Ilık” yazılırdı.
  • n seçenek için n − 1 karar gerekir. Java karşılığı if … else if … else zinciridir.

Akış Türleri

Bileşik Koşul: VE / VEYA

VE: ikisi de Evet olmalıyaş >= 18 ?ehliyet var ?EvetKiralanabilirEvetKiralanamazHayırHayırVEYA: biri Evet yetergün == Cmt ?gün == Paz ?HayırHafta içiHayırHafta sonuEvetEvet
  • Bileşik koşul tek bir karar kutusuna da yazılabilir: yaş >= 18 VE ehliyet var ?. Diyagramda ayrıntı gerekirse iki karara açılır.
  • VE: ilk karar Hayır ise ikinci karar hiç sorulmaz, sonuç zaten Hayır’dır. VEYA: ilk karar Evet ise ikinciye gerek kalmaz. Java’daki && ve || da böyle çalışır: kısa devre değerlendirme.
  • Test için her kararın iki çıkışı da denenir: VE örneğinde (20, var), (20, yok) ve (16, —) üç farklı yolu çalıştırır.

Akış Türleri · Diyagramı yürüt

Artık Yıl Adım Adım (2024, 1900, 2000)

EvetHayırEvetHayırEvetHayırBaşlayıl değerini okuyıl % 400 == 0 ?"Artık" yazyıl % 100 == 0 ?"Değil" yazyıl % 4 == 0 ?"Artık" yaz"Değil" yazBitir

Artık yıl kuralı: 4’e bölünen yıllar artıktır; ama 100’e bölünenler değildir, 400’e bölünenler yine artıktır. Üç kararlı bir zincir. 1. çalıştırma: 2024.

EvetHayırEvetHayırEvetHayırBaşlayıl değerini okuyıl % 400 == 0 ?"Artık" yazyıl % 100 == 0 ?"Değil" yazyıl % 4 == 0 ?"Artık" yaz"Değil" yazBitir

yıl = 2024 okunur.

EvetHayırEvetHayırEvetHayırBaşlayıl değerini okuyıl % 400 == 0 ?"Artık" yazyıl % 100 == 0 ?"Değil" yazyıl % 4 == 0 ?"Artık" yaz"Değil" yazBitir

2024 % 400 = 24 → yanlış → Hayır.

EvetHayırEvetHayırEvetHayırBaşlayıl değerini okuyıl % 400 == 0 ?"Artık" yazyıl % 100 == 0 ?"Değil" yazyıl % 4 == 0 ?"Artık" yaz"Değil" yazBitir

2024 % 100 = 24 → yanlış → Hayır.

EvetHayırEvetHayırEvetHayırBaşlayıl değerini okuyıl % 400 == 0 ?"Artık" yazyıl % 100 == 0 ?"Değil" yazyıl % 4 == 0 ?"Artık" yaz"Değil" yazBitir

2024 % 4 = 0 → doğru → Evet.

EvetHayırEvetHayırEvetHayırBaşlayıl değerini okuyıl % 400 == 0 ?"Artık" yazyıl % 100 == 0 ?"Değil" yazyıl % 4 == 0 ?"Artık" yaz"Değil" yazBitir

“Artık” yazılır. 2024 artık yıldır (Şubat 29 gün).

EvetHayırEvetHayırEvetHayırBaşlayıl değerini okuyıl % 400 == 0 ?"Artık" yazyıl % 100 == 0 ?"Değil" yazyıl % 4 == 0 ?"Artık" yaz"Değil" yazBitir

Bitir. 2. çalıştırma: 1900.

EvetHayırEvetHayırEvetHayırBaşlayıl değerini okuyıl % 400 == 0 ?"Artık" yazyıl % 100 == 0 ?"Değil" yazyıl % 4 == 0 ?"Artık" yaz"Değil" yazBitir

yıl = 1900 okunur.

EvetHayırEvetHayırEvetHayırBaşlayıl değerini okuyıl % 400 == 0 ?"Artık" yazyıl % 100 == 0 ?"Değil" yazyıl % 4 == 0 ?"Artık" yaz"Değil" yazBitir

1900 % 400 = 300 → yanlış → Hayır.

EvetHayırEvetHayırEvetHayırBaşlayıl değerini okuyıl % 400 == 0 ?"Artık" yazyıl % 100 == 0 ?"Değil" yazyıl % 4 == 0 ?"Artık" yaz"Değil" yazBitir

1900 % 100 = 0 → doğru → Evet. Üçüncü karar hiç sorulmaz.

EvetHayırEvetHayırEvetHayırBaşlayıl değerini okuyıl % 400 == 0 ?"Artık" yazyıl % 100 == 0 ?"Değil" yazyıl % 4 == 0 ?"Artık" yaz"Değil" yazBitir

“Değil” yazılır. 1900 4’e bölünse de artık yıl değildir; yalnız % 4’e bakan bir diyagram burada yanılırdı.

EvetHayırEvetHayırEvetHayırBaşlayıl değerini okuyıl % 400 == 0 ?"Artık" yazyıl % 100 == 0 ?"Değil" yazyıl % 4 == 0 ?"Artık" yaz"Değil" yazBitir

Bitir. 3. çalıştırma: 2000.

EvetHayırEvetHayırEvetHayırBaşlayıl değerini okuyıl % 400 == 0 ?"Artık" yazyıl % 100 == 0 ?"Değil" yazyıl % 4 == 0 ?"Artık" yaz"Değil" yazBitir

yıl = 2000 okunur.

EvetHayırEvetHayırEvetHayırBaşlayıl değerini okuyıl % 400 == 0 ?"Artık" yazyıl % 100 == 0 ?"Değil" yazyıl % 4 == 0 ?"Artık" yaz"Değil" yazBitir

2000 % 400 = 0 → doğru → Evet. Kalan iki karar sorulmaz.

EvetHayırEvetHayırEvetHayırBaşlayıl değerini okuyıl % 400 == 0 ?"Artık" yazyıl % 100 == 0 ?"Değil" yazyıl % 4 == 0 ?"Artık" yaz"Değil" yazBitir

“Artık” yazılır. 2000, 100’e bölündüğü hâlde 400’e de bölündüğü için artık yıldır.

EvetHayırEvetHayırEvetHayırBaşlayıl değerini okuyıl % 400 == 0 ?"Artık" yazyıl % 100 == 0 ?"Değil" yazyıl % 4 == 0 ?"Artık" yaz"Değil" yazBitir

Bitir. Üç girdi dört çıkıştan üçünü çalıştırdı; 2023 gibi bir yıl son Hayır dalını dener. Kararların sırası kuralın istisnalarını doğru yakalar.

Başla
  yıl değerini oku
  yıl % 400 == 0 ?  Evet → "Artık" yaz
  yıl % 100 == 0 ?  Evet → "Değil" yaz
  yıl % 4 == 0 ?    Evet → "Artık" yaz
  Hayır → "Değil" yaz
Bitir

Akış Türleri

Tekrarlı Akış

EvettekrarHayırBaşlai = 1i <= 5 ?i değerini yazi = i + 1Bitir
Başla
  i = 1
  i <= 5 ?
    Evet → i değerini yaz
            i = i + 1
            karara dön
    Hayır → Bitir
  • Geri dönen ok (tekrar) döngüyü oluşturur; koşul gövdeden önce sorulur (ön koşullu döngü) ve yanlış olunca döngü sona erer.
  • Tekrar yolunda koşulu değiştiren bir işlem (i = i + 1) bulunmalıdır.

Akış Türleri · Diyagramı yürüt

Tekrarlı Akış Adım Adım

EvettekrarHayırBaşlai = 1i <= 5 ?i değerini yazi = i + 1Bitir

Başla.

EvettekrarHayırBaşlai = 1i <= 5 ?i değerini yazi = i + 1Bitir

Sayaç ilk değerini alır: i = 1.

EvettekrarHayırBaşlai = 1i <= 5 ?i değerini yazi = i + 1Bitir

Karar: 1 <= 5 → doğru → Evet, döngü gövdesine gir.

EvettekrarHayırBaşlai = 1i <= 5 ?i değerini yazi = i + 1Bitir

1 yazılır.

EvettekrarHayırBaşlai = 1i <= 5 ?i değerini yazi = i + 1Bitir

i = 1 + 1 = 2. Geri dönen ok yeniden karara götürür.

EvettekrarHayırBaşlai = 1i <= 5 ?i değerini yazi = i + 1Bitir

Karar: 2 <= 5 → doğru → Evet, döngü gövdesine gir.

EvettekrarHayırBaşlai = 1i <= 5 ?i değerini yazi = i + 1Bitir

2 yazılır.

EvettekrarHayırBaşlai = 1i <= 5 ?i değerini yazi = i + 1Bitir

i = 2 + 1 = 3. Geri dönen ok yeniden karara götürür.

EvettekrarHayırBaşlai = 1i <= 5 ?i değerini yazi = i + 1Bitir

Karar: 3 <= 5 → doğru → Evet, döngü gövdesine gir.

EvettekrarHayırBaşlai = 1i <= 5 ?i değerini yazi = i + 1Bitir

3 yazılır.

EvettekrarHayırBaşlai = 1i <= 5 ?i değerini yazi = i + 1Bitir

i = 3 + 1 = 4. Geri dönen ok yeniden karara götürür.

EvettekrarHayırBaşlai = 1i <= 5 ?i değerini yazi = i + 1Bitir

Karar: 4 <= 5 → doğru → Evet, döngü gövdesine gir.

EvettekrarHayırBaşlai = 1i <= 5 ?i değerini yazi = i + 1Bitir

4 yazılır.

EvettekrarHayırBaşlai = 1i <= 5 ?i değerini yazi = i + 1Bitir

i = 4 + 1 = 5. Geri dönen ok yeniden karara götürür.

EvettekrarHayırBaşlai = 1i <= 5 ?i değerini yazi = i + 1Bitir

Karar: 5 <= 5 → doğru → Evet, döngü gövdesine gir.

EvettekrarHayırBaşlai = 1i <= 5 ?i değerini yazi = i + 1Bitir

5 yazılır.

EvettekrarHayırBaşlai = 1i <= 5 ?i değerini yazi = i + 1Bitir

i = 5 + 1 = 6. Geri dönen ok yeniden karara götürür.

EvettekrarHayırBaşlai = 1i <= 5 ?i değerini yazi = i + 1Bitir

Karar: 6 <= 5 → yanlış → Hayır, döngüden çık.

EvettekrarHayırBaşlai = 1i <= 5 ?i değerini yazi = i + 1Bitir

Bitir. Gövde 5 kez çalıştı; koşul 6 kez denendi (son deneme yanlış, i = 6).

Başla
  i = 1
  i <= 5 ?
    Evet → i değerini yaz
            i = i + 1
            karara dön
    Hayır → Bitir

Döngüler

Sayaç ve Biriktirici

  • Sayaç kaç tekrar yapıldığını izler: her turda 1 artar.
  • Biriktirici kısmi sonucu tutar: her turda yeni değer eklenir.
  • Başlangıç değeri işleme uygun seçilir: toplam için 0, çarpım için 1.
sayac3+1 her turdatoplam13+x her turda

Girdiler 4, 7, 2 için tur tur değerler:

Anxsayactoplam
başlangıç—00
1. tur414
2. tur7211
3. tur2313

Döngüler · Diyagramı yürüt

Sayaç ve Biriktirici Adım Adım (4, 7, 2)

EvetHayırBaşlasayac = 0, toplam = 0sayac < 3 ?x değerini okutoplam = toplam + xsayac = sayac + 1toplamı yazBitir

Başla. Üç sayı okunup toplanacak; girdiler sırasıyla 4, 7, 2.

EvetHayırBaşlasayac = 0, toplam = 0sayac < 3 ?x değerini okutoplam = toplam + xsayac = sayac + 1toplamı yazBitir

Sayaç ve biriktirici 0 ile başlar.

EvetHayırBaşlasayac = 0, toplam = 0sayac < 3 ?x değerini okutoplam = toplam + xsayac = sayac + 1toplamı yazBitir

Karar: 0 < 3 → doğru → Evet.

EvetHayırBaşlasayac = 0, toplam = 0sayac < 3 ?x değerini okutoplam = toplam + xsayac = sayac + 1toplamı yazBitir

x = 4 okunur.

EvetHayırBaşlasayac = 0, toplam = 0sayac < 3 ?x değerini okutoplam = toplam + xsayac = sayac + 1toplamı yazBitir

Biriktirici: toplam = 0 + 4 = 4.

EvetHayırBaşlasayac = 0, toplam = 0sayac < 3 ?x değerini okutoplam = toplam + xsayac = sayac + 1toplamı yazBitir

Sayaç: sayac = 0 + 1 = 1. Geri dön.

EvetHayırBaşlasayac = 0, toplam = 0sayac < 3 ?x değerini okutoplam = toplam + xsayac = sayac + 1toplamı yazBitir

Karar: 1 < 3 → doğru → Evet.

EvetHayırBaşlasayac = 0, toplam = 0sayac < 3 ?x değerini okutoplam = toplam + xsayac = sayac + 1toplamı yazBitir

x = 7 okunur.

EvetHayırBaşlasayac = 0, toplam = 0sayac < 3 ?x değerini okutoplam = toplam + xsayac = sayac + 1toplamı yazBitir

Biriktirici: toplam = 4 + 7 = 11.

EvetHayırBaşlasayac = 0, toplam = 0sayac < 3 ?x değerini okutoplam = toplam + xsayac = sayac + 1toplamı yazBitir

Sayaç: sayac = 1 + 1 = 2. Geri dön.

EvetHayırBaşlasayac = 0, toplam = 0sayac < 3 ?x değerini okutoplam = toplam + xsayac = sayac + 1toplamı yazBitir

Karar: 2 < 3 → doğru → Evet.

EvetHayırBaşlasayac = 0, toplam = 0sayac < 3 ?x değerini okutoplam = toplam + xsayac = sayac + 1toplamı yazBitir

x = 2 okunur.

EvetHayırBaşlasayac = 0, toplam = 0sayac < 3 ?x değerini okutoplam = toplam + xsayac = sayac + 1toplamı yazBitir

Biriktirici: toplam = 11 + 2 = 13.

EvetHayırBaşlasayac = 0, toplam = 0sayac < 3 ?x değerini okutoplam = toplam + xsayac = sayac + 1toplamı yazBitir

Sayaç: sayac = 2 + 1 = 3. Geri dön.

EvetHayırBaşlasayac = 0, toplam = 0sayac < 3 ?x değerini okutoplam = toplam + xsayac = sayac + 1toplamı yazBitir

Karar: 3 < 3 → yanlış → Hayır, döngü biter.

EvetHayırBaşlasayac = 0, toplam = 0sayac < 3 ?x değerini okutoplam = toplam + xsayac = sayac + 1toplamı yazBitir

Toplam yazılır: 13.

EvetHayırBaşlasayac = 0, toplam = 0sayac < 3 ?x değerini okutoplam = toplam + xsayac = sayac + 1toplamı yazBitir

Bitir. Sayaç döngünün kaç kez döndüğünü, biriktirici sonucu tuttu.

Başla
  sayac = 0, toplam = 0
  sayac < 3 ?
    Evet → x değerini oku
            toplam = toplam + x
            sayac = sayac + 1
            karara dön
    Hayır → toplamı yaz
Bitir

Döngüler

Örnek: 1’den n’e Toplam

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir
Başla
  n değerini oku
  toplam = 0, i = 1
  i <= n ?
    Evet → toplam = toplam + i
            i = i + 1
            karara dön
    Hayır → toplamı yaz
Bitir
  • i sayaç, toplam biriktiricidir.
  • n = 0 girilirse koşul ilk denemede yanlış olur, 0 yazılır.

Döngüler · Diyagramı yürüt

1’den n’e Toplam Adım Adım (n = 4)

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

Başla. Girdi: n = 4. Beklenen sonuç 1 + 2 + 3 + 4 = 10.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

n = 4 okunur.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

Biriktirici toplam = 0, sayaç i = 1.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

Karar: 1 <= 4 → doğru → Evet.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

toplam = 0 + 1 = 1.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

i = 2; karara dön.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

Karar: 2 <= 4 → doğru → Evet.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

toplam = 1 + 2 = 3.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

i = 3; karara dön.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

Karar: 3 <= 4 → doğru → Evet.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

toplam = 3 + 3 = 6.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

i = 4; karara dön.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

Karar: 4 <= 4 → doğru → Evet.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

toplam = 6 + 4 = 10.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

i = 5; karara dön.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

Karar: 5 <= 4 → yanlış → Hayır, döngüden çık.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

10 yazılır.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

Bitir. Gövde n = 4 kez çalıştı; sonuç formülle de doğrulanır: n(n+1)/2 = 10.

Başla
  n değerini oku
  toplam = 0, i = 1
  i <= n ?
    Evet → toplam = toplam + i
            i = i + 1
            karara dön
    Hayır → toplamı yaz
Bitir

Döngüler

Sayaçlı ve Bekçi Değerli Döngü

Sayaçla denetlenenBekçi değerle denetlenen
Tekrar sayısıÖnceden bilinir (n kez)Bilinmez; özel bir değer gelince durur
Karari <= n ?x == −1 ? (bekçi geldi mi?)
ÖrnekSınıftaki 30 öğrencinin notunu okuKasada okutulan ürünler; “bitti” tuşuna kadar
Java’da çoğunluklaforwhile
  • Bekçi değer, gerçek veride görülemeyecek bir değer seçilir: notlar 0–100 arasındaysa −1 uygundur, 0 uygun değildir.
  • Bekçi değer veriye katılmamalıdır: karar, toplama ve sayma işlemlerinden önce sorulur; geri dönen ok yeniden oku kutusuna gider.
  • İlk girdi bekçi değerse döngü gövdesi hiç çalışmaz ve sayaç 0 kalır; ortalama alınacaksa bölmeden önce sayac > 0 ? diye sorulmalıdır.

Döngüler · Diyagramı yürüt

Bekçi Değerli Döngü Adım Adım (80, 64, 90, −1)

HayırEvetBaşlatoplam = 0, sayac = 0x değerini okux == −1 ?toplam = toplam + xsayac = sayac + 1ort = toplam / sayacort değerini yazBitir

Başla. Kullanıcı notları girecek, bitince −1 yazacak. Girdiler: 80, 64, 90, −1.

HayırEvetBaşlatoplam = 0, sayac = 0x değerini okux == −1 ?toplam = toplam + xsayac = sayac + 1ort = toplam / sayacort değerini yazBitir

Biriktirici ve sayaç 0 ile başlar.

HayırEvetBaşlatoplam = 0, sayac = 0x değerini okux == −1 ?toplam = toplam + xsayac = sayac + 1ort = toplam / sayacort değerini yazBitir

x = 80 okunur.

HayırEvetBaşlatoplam = 0, sayac = 0x değerini okux == −1 ?toplam = toplam + xsayac = sayac + 1ort = toplam / sayacort değerini yazBitir

80 == −1 → yanlış → Hayır: bu gerçek bir not.

HayırEvetBaşlatoplam = 0, sayac = 0x değerini okux == −1 ?toplam = toplam + xsayac = sayac + 1ort = toplam / sayacort değerini yazBitir

toplam = 0 + 80 = 80.

HayırEvetBaşlatoplam = 0, sayac = 0x değerini okux == −1 ?toplam = toplam + xsayac = sayac + 1ort = toplam / sayacort değerini yazBitir

sayac = 1.

HayırEvetBaşlatoplam = 0, sayac = 0x değerini okux == −1 ?toplam = toplam + xsayac = sayac + 1ort = toplam / sayacort değerini yazBitir

x = 64 okunur. Geri dönen ok yeniden oku kutusuna geldi.

HayırEvetBaşlatoplam = 0, sayac = 0x değerini okux == −1 ?toplam = toplam + xsayac = sayac + 1ort = toplam / sayacort değerini yazBitir

64 == −1 → yanlış → Hayır: bu gerçek bir not.

HayırEvetBaşlatoplam = 0, sayac = 0x değerini okux == −1 ?toplam = toplam + xsayac = sayac + 1ort = toplam / sayacort değerini yazBitir

toplam = 80 + 64 = 144.

HayırEvetBaşlatoplam = 0, sayac = 0x değerini okux == −1 ?toplam = toplam + xsayac = sayac + 1ort = toplam / sayacort değerini yazBitir

sayac = 2.

HayırEvetBaşlatoplam = 0, sayac = 0x değerini okux == −1 ?toplam = toplam + xsayac = sayac + 1ort = toplam / sayacort değerini yazBitir

x = 90 okunur. Geri dönen ok yeniden oku kutusuna geldi.

HayırEvetBaşlatoplam = 0, sayac = 0x değerini okux == −1 ?toplam = toplam + xsayac = sayac + 1ort = toplam / sayacort değerini yazBitir

90 == −1 → yanlış → Hayır: bu gerçek bir not.

HayırEvetBaşlatoplam = 0, sayac = 0x değerini okux == −1 ?toplam = toplam + xsayac = sayac + 1ort = toplam / sayacort değerini yazBitir

toplam = 144 + 90 = 234.

HayırEvetBaşlatoplam = 0, sayac = 0x değerini okux == −1 ?toplam = toplam + xsayac = sayac + 1ort = toplam / sayacort değerini yazBitir

sayac = 3.

HayırEvetBaşlatoplam = 0, sayac = 0x değerini okux == −1 ?toplam = toplam + xsayac = sayac + 1ort = toplam / sayacort değerini yazBitir

x = −1 okunur.

HayırEvetBaşlatoplam = 0, sayac = 0x değerini okux == −1 ?toplam = toplam + xsayac = sayac + 1ort = toplam / sayacort değerini yazBitir

−1 == −1 → doğru → Evet: bekçi geldi, döngü biter. −1 toplama da sayaca da katılmadı.

HayırEvetBaşlatoplam = 0, sayac = 0x değerini okux == −1 ?toplam = toplam + xsayac = sayac + 1ort = toplam / sayacort değerini yazBitir

ort = 234 / 3 = 78.

HayırEvetBaşlatoplam = 0, sayac = 0x değerini okux == −1 ?toplam = toplam + xsayac = sayac + 1ort = toplam / sayacort değerini yazBitir

Ortalama yazılır.

HayırEvetBaşlatoplam = 0, sayac = 0x değerini okux == −1 ?toplam = toplam + xsayac = sayac + 1ort = toplam / sayacort değerini yazBitir

Bitir. Gövde 3 kez, karar 4 kez çalıştı. Kaç not girileceği önceden bilinmiyordu; döngüyü veri durdurdu.

Başla
  toplam = 0, sayac = 0
  x değerini oku
  x == -1 ?  Evet → 7. satıra git
  toplam = toplam + x
  sayac = sayac + 1;  3. satıra dön
  ort = toplam / sayac
  ort değerini yaz
Bitir

Döngüler

İç İçe Yapılar

  • Bir kararın dalında başka karar bulunabilir.
  • Bir döngünün içinde ikinci döngü yer alabilir: dış döngünün her turunda iç döngü baştan sona çalışır.
  • Her yapının giriş ve çıkış noktaları görsel olarak ayırt edilmelidir.
iç döngü: j = 1, 2, 3 →dış döngü: i = 1, 2, 3 ↓j=1j=2j=3i=1123i=2246i=3369

3 × 3 = 9 hücre: iç döngü gövdesi 9 kez çalışır. Turuncu satır: i = 2 iken j'nin üç turu.

Çok sayıda iç içe yapı, algoritmayı alt süreçlere ayırma gereksinimini gösterebilir.

Döngüler · Diyagramı yürüt

İç İçe Döngü Adım Adım (i = 1)

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

Başla. Dış döngü i = 1, 2; iç döngü j = 1, 2. Her satıra i × j yazılacak.

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

i = 1: dış sayaç başlar.

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

Dış karar: 1 <= 2 → doğru → iç döngüye gir.

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

j = 1: iç sayaç her dış turda yeniden 1 olur.

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

İç karar: 1 <= 2 → doğru

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

1 × 1 = 1 yazılır.

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

j = 2; iç karara dön.

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

İç karar: 2 <= 2 → doğru

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

1 × 2 = 2 yazılır.

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

j = 3; iç karara dön.

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

İç karar: 3 <= 2 → yanlış → Hayır, iç döngü biter.

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

Satır tamamlandı: println() satır sonunu yazar (imleç alt satıra geçer). Sonra i = 2; dış karara dön.

Başla
  i = 1
  i <= 2 ?  (Hayır → Bitir)
    j = 1
    j <= 2 ?  (Hayır → i = i + 1)
      i × j yaz
      j = j + 1, iç karara dön
    satır sonu (println), i = i + 1, dış karara dön
Bitir

Döngüler · Diyagramı yürüt

İç İçe Döngü Adım Adım (devam: i = 2)

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

Dış karar: 2 <= 2 → doğru → iç döngüye gir.

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

j = 1: iç sayaç her dış turda yeniden 1 olur.

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

İç karar: 1 <= 2 → doğru

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

2 × 1 = 2 yazılır.

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

j = 2; iç karara dön.

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

İç karar: 2 <= 2 → doğru

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

2 × 2 = 4 yazılır.

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

j = 3; iç karara dön.

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

İç karar: 3 <= 2 → yanlış → Hayır, iç döngü biter.

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

Satır tamamlandı: println() satır sonunu yazar. Sonra i = 3; dış karara dön.

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

Dış karar: 3 <= 2 → yanlış → Hayır, Bitir'e git.

HayırHayırBaşlai = 1i <= 2 ?j = 1j <= 2 ?i × j yazj = j + 1i = i + 1BitirEvetEvet

Bitir. İç gövde 2 × 2 = 4 kez çalıştı; çıktı küçük bir çarpım tablosu.

Başla
  i = 1
  i <= 2 ?  (Hayır → Bitir)
    j = 1
    j <= 2 ?  (Hayır → i = i + 1)
      i × j yaz
      j = j + 1, iç karara dön
    satır sonu (println), i = i + 1, dış karara dön
Bitir

Döngüler · Diyagramı yürüt

Sayı Tahmin Oyunu Adım Adım (gizli = 37)

EvetHayırEvetHayırBaşlagizli = 37, deneme = 0tahmin değerini okudeneme = deneme + 1tahmin == gizli ?tahmin < gizli ?"Daha büyük" yaz"Daha küçük" yaz"Bildin" yazBitir

Başla. Gizli sayı (normalde rastgele seçilir) 37; oyuncunun tahminleri 50, 25, 37.

EvetHayırEvetHayırBaşlagizli = 37, deneme = 0tahmin değerini okudeneme = deneme + 1tahmin == gizli ?tahmin < gizli ?"Daha büyük" yaz"Daha küçük" yaz"Bildin" yazBitir

Gizli sayı belirlenir, deneme sayacı 0.

EvetHayırEvetHayırBaşlagizli = 37, deneme = 0tahmin değerini okudeneme = deneme + 1tahmin == gizli ?tahmin < gizli ?"Daha büyük" yaz"Daha küçük" yaz"Bildin" yazBitir

Oyuncu 50 girer.

EvetHayırEvetHayırBaşlagizli = 37, deneme = 0tahmin değerini okudeneme = deneme + 1tahmin == gizli ?tahmin < gizli ?"Daha büyük" yaz"Daha küçük" yaz"Bildin" yazBitir

deneme = 1.

EvetHayırEvetHayırBaşlagizli = 37, deneme = 0tahmin değerini okudeneme = deneme + 1tahmin == gizli ?tahmin < gizli ?"Daha büyük" yaz"Daha küçük" yaz"Bildin" yazBitir

Karar: 50 == 37 → yanlış → Hayır, ipucu verilecek.

EvetHayırEvetHayırBaşlagizli = 37, deneme = 0tahmin değerini okudeneme = deneme + 1tahmin == gizli ?tahmin < gizli ?"Daha büyük" yaz"Daha küçük" yaz"Bildin" yazBitir

Karar: 50 < 37 → yanlış.

EvetHayırEvetHayırBaşlagizli = 37, deneme = 0tahmin değerini okudeneme = deneme + 1tahmin == gizli ?tahmin < gizli ?"Daha büyük" yaz"Daha küçük" yaz"Bildin" yazBitir

"Daha küçük" yazılır; ok yeniden oku kutusuna döner.

EvetHayırEvetHayırBaşlagizli = 37, deneme = 0tahmin değerini okudeneme = deneme + 1tahmin == gizli ?tahmin < gizli ?"Daha büyük" yaz"Daha küçük" yaz"Bildin" yazBitir

Oyuncu 25 girer.

EvetHayırEvetHayırBaşlagizli = 37, deneme = 0tahmin değerini okudeneme = deneme + 1tahmin == gizli ?tahmin < gizli ?"Daha büyük" yaz"Daha küçük" yaz"Bildin" yazBitir

deneme = 2.

EvetHayırEvetHayırBaşlagizli = 37, deneme = 0tahmin değerini okudeneme = deneme + 1tahmin == gizli ?tahmin < gizli ?"Daha büyük" yaz"Daha küçük" yaz"Bildin" yazBitir

Karar: 25 == 37 → yanlış → Hayır, ipucu verilecek.

EvetHayırEvetHayırBaşlagizli = 37, deneme = 0tahmin değerini okudeneme = deneme + 1tahmin == gizli ?tahmin < gizli ?"Daha büyük" yaz"Daha küçük" yaz"Bildin" yazBitir

Karar: 25 < 37 → doğru.

EvetHayırEvetHayırBaşlagizli = 37, deneme = 0tahmin değerini okudeneme = deneme + 1tahmin == gizli ?tahmin < gizli ?"Daha büyük" yaz"Daha küçük" yaz"Bildin" yazBitir

"Daha büyük" yazılır; ok yeniden oku kutusuna döner.

EvetHayırEvetHayırBaşlagizli = 37, deneme = 0tahmin değerini okudeneme = deneme + 1tahmin == gizli ?tahmin < gizli ?"Daha büyük" yaz"Daha küçük" yaz"Bildin" yazBitir

Oyuncu 37 girer.

EvetHayırEvetHayırBaşlagizli = 37, deneme = 0tahmin değerini okudeneme = deneme + 1tahmin == gizli ?tahmin < gizli ?"Daha büyük" yaz"Daha küçük" yaz"Bildin" yazBitir

deneme = 3.

EvetHayırEvetHayırBaşlagizli = 37, deneme = 0tahmin değerini okudeneme = deneme + 1tahmin == gizli ?tahmin < gizli ?"Daha büyük" yaz"Daha küçük" yaz"Bildin" yazBitir

Karar: 37 == 37 → doğru → Evet.

EvetHayırEvetHayırBaşlagizli = 37, deneme = 0tahmin değerini okudeneme = deneme + 1tahmin == gizli ?tahmin < gizli ?"Daha büyük" yaz"Daha küçük" yaz"Bildin" yazBitir

Doğru tahmin! Deneme sayısı 3 ile birlikte yazılır.

EvetHayırEvetHayırBaşlagizli = 37, deneme = 0tahmin değerini okudeneme = deneme + 1tahmin == gizli ?tahmin < gizli ?"Daha büyük" yaz"Daha küçük" yaz"Bildin" yazBitir

Bitir. Döngü, koşul (tahmin == gizli) doğru olunca sona erdi; kaç tur döneceği önceden bilinmez.

Başla
  gizli = 37, deneme = 0
  tahmin değerini oku
  deneme = deneme + 1
  tahmin == gizli ?
    Evet → "Bildin (" deneme ". deneme)" yaz, Bitir
  tahmin < gizli ?
    Evet → "Daha büyük" yaz
    Hayır → "Daha küçük" yaz
  3. satıra (oku) dön
Bitir

Döngüler · Diyagramı yürüt

do-while Akış Diyagramı Adım Adım (girdiler: 7, 0, 3)

EvetHayırBaşlasayı değerini oku1 <= sayı <= 5 ?sayıyı yazBitir"Geçersiz" yaz

Başla. Girdi listesi sırayla verilecek: 7, 0, 3. Önce gövde çalışır (oku), koşul sonda sorulur: son koşullu döngü.

EvetHayırBaşlasayı değerini oku1 <= sayı <= 5 ?sayıyı yazBitir"Geçersiz" yaz

Önce gövde: sayı = 7 okunur. Koşul henüz hiç sorulmadı.

EvetHayırBaşlasayı değerini oku1 <= sayı <= 5 ?sayıyı yazBitir"Geçersiz" yaz

Karar: 1 ≤ 7 ≤ 5 ? 7 > 5 olduğundan yanlış → Hayır.

EvetHayırBaşlasayı değerini oku1 <= sayı <= 5 ?sayıyı yazBitir"Geçersiz" yaz

"Geçersiz" yazılır.

EvetHayırBaşlasayı değerini oku1 <= sayı <= 5 ?sayıyı yazBitir"Geçersiz" yaz

Ok oku kutusuna döner: sayı = 0 okunur.

EvetHayırBaşlasayı değerini oku1 <= sayı <= 5 ?sayıyı yazBitir"Geçersiz" yaz

Karar: 1 ≤ 0 ≤ 5 ? 0 < 1 olduğundan yanlış → Hayır.

EvetHayırBaşlasayı değerini oku1 <= sayı <= 5 ?sayıyı yazBitir"Geçersiz" yaz

"Geçersiz" yeniden yazılır.

EvetHayırBaşlasayı değerini oku1 <= sayı <= 5 ?sayıyı yazBitir"Geçersiz" yaz

Yeniden oku: sayı = 3.

EvetHayırBaşlasayı değerini oku1 <= sayı <= 5 ?sayıyı yazBitir"Geçersiz" yaz

Karar: 1 ≤ 3 ≤ 5 → doğru → Evet.

EvetHayırBaşlasayı değerini oku1 <= sayı <= 5 ?sayıyı yazBitir"Geçersiz" yaz

Geçerli sayı yazılır: 3.

EvetHayırBaşlasayı değerini oku1 <= sayı <= 5 ?sayıyı yazBitir"Geçersiz" yaz

Bitir. Gövde 3 kez çalıştı. Koşul gövdeden sonra sorulduğu için gövde en az 1 kez çalışır. Java karşılığı: do { … } while (sayı < 1 || sayı > 5);

Başla
  sayı değerini oku
  1 <= sayı <= 5 ?
    Hayır → "Geçersiz" yaz, oku'ya dön
    Evet → sayıyı yaz
Bitir

Döngüler

for Döngüsünün Akış Diyagramı

EvetHayıri = 1i <= n ?toplam = toplam + ii = i + 1toplam yaz1234
for (i = 1; i <= n; i++) {
    toplam = toplam + i;
}
  1. Başlangıç (i = 1): döngüye girerken bir kez çalışır.
  2. Koşul (i <= n): her turdan önce sorulur; for ön koşullu bir döngüdür.
  3. Gövde: koşul doğruysa çalışır.
  4. Güncelleme (i++): gövdeden sonra çalışır, ok koşula döner.

Diyagram aynı while diyagramıdır; for yalnızca 1, 2 ve 4’ü tek satırda toplar. Bazı kaynaklar 1, 2 ve 4’ü tek bir hazırlık simgesinde (altıgen, “i = 1 → n”) gösterir.

Döngüler

Döngüden Erken Çıkış ve Bayrak

EvetHayırHayırEveti = 1i <= n ?a[i] < 0 ?i = i + 1a[i] yaz"Yok" yazBitirerken çıkış

İlk negatif sayıyı arama: a = [4, 7, −2, 5, −8]

  • Aranan bulununca kalan turlar gereksizdir. Gövdenin içinden döngü dışına giden ikinci ok erken çıkıştır; Java’da break (çık).
  • Örnekte i = 3’te −2 bulunur ve yazılır; 5 ve −8’e hiç bakılmaz. Hiç negatif yoksa döngü koşuldan çıkar ve “Yok” yazılır.
  • Döngünün iki çıkışı olur. Tek çıkış isteniyorsa bayrak kullanılır: bulundu = yanlış ile başlanır, bulununca doğru yapılır ve koşul i <= n VE bulundu değil ? olur. Döngüden sonra bayrağa bakılarak sonuç yazılır.
  • Atla (continue) ise döngüden çıkmaz: o turun kalanını atlayıp güncellemeye ve koşula döner.

Koda Çeviri

Diyagramdan Java Koduna

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir
public static void main(String[] args) {
    int n = 3;
    int toplam = 0, i = 1;
    while (i <= n) {
        toplam = toplam + i;
        i = i + 1;
    }
    System.out.println(toplam);
}
  • Başla / Bitir → metodun başı ve sonu.
  • Girdi → değişken (burada sabit değer).
  • İşlem → atama deyimi.
  • Karar + geri dönen ok → while koşulu ve gövdesi.
  • Çıktı → println.

Koda Çeviri · Simge ↔ kod satırı

Diyagramdan Java Koduna Adım Adım (n = 3)

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

Başla simgesi metodun başlangıcıdır: main açılır.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

Girdi simgesi → int n = 3; (girdi sabit alındı).

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

İşlem simgesi → iki değişkenin başlangıç değeri.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

Karar simgesi → while (i <= n): 1 <= 3 doğru.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

Evet yolu = döngü gövdesi: toplam = 0 + 1 = 1.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

i = i + 1 → i = 2. Sonraki ok karara geri döner.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

Geri dönen ok = döngü bloğunun sonundan koşula dönüş: 2 <= 3 doğru.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

toplam = 1 + 2 = 3.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

i = 3.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

3 <= 3 doğru.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

toplam = 3 + 3 = 6.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

i = 4.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

4 <= 3 yanlış → Hayır yolu, döngü bloğunun dışına çıkılır.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

Çıktı simgesi → println(toplam): 6 yazılır.

EvetHayırBaşlan değerini okutoplam = 0, i = 1i <= n ?toplam = toplam + ii = i + 1toplamı yazBitir

Bitir → metodun kapanışı. Her simgenin bir kod karşılığı var.

public static void main(String[] args) {
    int n = 3;
    int toplam = 0, i = 1;
    while (i <= n) {
        toplam = toplam + i;
        i = i + 1;
    }
    System.out.println(toplam);
}

Koda Çeviri

Alt Süreçle Modüler Diyagram

Ana diyagramAlt süreçBaşlaa, b, c okuort = Ortalama(a, b, c)ort değerini yazBitirOrtalama(x, y, z)t = x + y + zDöndür t / 3çağır: x=70, y=85, z=91dön: 82
  • Önceden tanımlı işlem simgesi ayrı çizilmiş bir diyagramı çağırır; alt süreç bitince akış ana diyagramda aynı noktadan sürer.
  • Alt diyagram Başla yerine adı ve parametreleriyle, Bitir yerine Döndür ile biter. a = 70, b = 85, c = 91 için t = 246, dönen değer 82.
  • Aynı alt süreç birçok yerden çağrılabilir, bir kez çizilir. Java’da her alt süreç bir metot olur: static int ortalama(int x, int y, int z) { return (x + y + z) / 3; }

Doğrulama

Diyagramı Test Etme

EvetHayırBaşlanot değerini okunot >= 60 ?"Kaldı" yaz"Geçti" yazBitir

Normal girdi not = 72: Evet yolu çalışır.

EvetHayırBaşlanot değerini okunot >= 60 ?"Kaldı" yaz"Geçti" yazBitir

Diğer dal için not = 45: Hayır yolu çalışır. Artık her kutu en az bir kez denendi.

EvetHayırBaşlanot değerini okunot >= 60 ?"Kaldı" yaz"Geçti" yazBitir

Sınır değeri not = 60: 60 >= 60 doğru → "Geçti". > yazılsaydı hata burada yakalanırdı.

  • Normal bir girdide oklar adım adım izlenir.
  • Kararın her çıkışını çalıştıracak test değeri seçilir.
  • Sınır değerleri (60 gibi) ayrıca denenir.
  • Döngünün sıfır, bir ve çok tekrar yaptığı durumlar denenir.
  • Başlangıca dönmeyen veya bitişe ulaşmayan yollar aranır.

Doğrulama

İzleme Tablosuyla Elle İzleme: Öklid (48, 18)

EvetHayıra, b değerlerini okub != 0 ?k = a % ba = bb = ka yaz
Anabkb != 0 ?
başlangıç4818—18 != 0 doğru
1. tur18121212 != 0 doğru
2. tur12666 != 0 doğru
3. tur6000 != 0 yanlış
  • Her değişken bir sütun, her tur bir satırdır; karar sonucu da yazılır. Sonuç: 6 yazılır, EBOB(48, 18) = 6.
  • Tablo, diyagramdaki sıranın önemini gösterir: a = b ve b = k yer değiştirseydi a, b’nin yeni değerini alırdı ve sonuç bozulurdu.
  • Döngü 3 tur döndü, karar 4 kez soruldu: her zamanki gibi karar, gövdeden bir fazla çalışır.

Doğrulama

Sık Hatalar

HataSonuçDüzeltme
Etiketsiz karar yoluHangi koşulun seçildiği belirsizEvet/Hayır yaz
Güncellenmeyen sayaçSonsuz döngüSayaç adımı ekle
Bağlantısız simgeAkış koparOkla bağla
Bir simgede çok işlemOkunabilirlik azalırAdımlara böl
EvetHayıri = 1i <= 3 ?i yazBitir

✗ i hep 1: 1 1 1 1 … Bitir'e hiç ulaşılmaz

EvetHayıri = 1i <= 3 ?i yazi = i + 1Bitir

✓ i = i + 1 eklendi: 1 2 3, sonra Bitir

Doğrulama

Sık Hatalar (devam)

HataBelirtiDüzeltme
Biriktirici döngünün içinde sıfırlanıyor4, 7, 2 için 13 yerine 2 yazılır: yalnız son değer kalırtoplam = 0 kutusunu döngüden önceye al
Geri dönen ok oku kutusunu atlıyorAynı x tekrar tekrar işlenir; bekçi değer hiç gelmezOk, oku kutusunun önüne döner
Karar kutusunda atama: x = 0 ?Soru mu, atama mı belirsizKarşılaştırma yaz: x == 0 ?
Bekçi değer işlemden sonra sorgulanıyor−1 toplama katılır, sayaç bir fazla olurKararı toplama ve saymadan önce sor
Karar zincirinde geniş koşul önceAlttaki dallar hiç çalışmazDar koşuldan genişe sırala
Karardan tek ok çıkıyorDiğer durumda akış koparİki çıkışı da çiz, Evet/Hayır yaz
Bölmeden önce sıfır denetimi yokHiç veri girilmezse 0’a bölmesayac > 0 ? kararı ekle

Özet

Bölüm Özeti

  • Akış diyagramı algoritmanın yürütme sırasını standart simgelerle gösterir.
  • Sıralı akış doğrusal, koşullu akış dallanan, tekrarlı akış geri dönen yol içerir.
  • Karar yolları etiketlenmeli ve her yol bir sonraki adıma ulaşmalıdır.
  • Diyagram, farklı test girdileriyle elle izlenerek doğrulanmalıdır.
adım 1adım 2adım 3koşul?EvetHayırABkoşul?EvetişlemtekrarHayırSıralı: doğrusalKoşullu: dallananTekrarlı: geri dönen

Özet

Kontrol Soruları

  1. İşlem ve karar simgeleri neyi temsil eder?
  2. Karar çıkışları neden etiketlenmelidir?
  3. Bir döngü diyagramında sonsuz tekrar nasıl oluşur?
  4. Sayaç ve biriktirici arasındaki fark nedir?
  5. Bir akış diyagramını test etmek için hangi girdiler seçilir?

Özet

Alıştırmalar

  1. Girilen sayının tek mi çift mi olduğunu yazan akış diyagramını çizin (ipucu: sayi % 2 == 0 ?).
  2. Bir sınavın 0–100 arası notunu AA / BA / … / FF harfine çeviren akış diyagramını iç içe kararlarla çizin; 85, 60, 42 için izleyin.
  3. 1'den n'e kadar sayıların çarpımını bulan diyagramı çizin; biriktiricinin başlangıç değeri ne olmalı?
  4. Kullanıcı 0 girene kadar sayı okuyup toplamı ve kaç sayı girildiğini yazan diyagramı çizin (sayaç + biriktirici).
  5. Sayı tahmin oyununa "en fazla 5 deneme" kuralını ekleyin: 5 denemede bilinemezse "Kaybettin" yazılsın.
  6. Aşağıdaki hatayı bulun: i = 1, i <= 10 ? Evet → i yaz, karara dön. Nasıl düzeltilir?
İpuçları
  1. Tek karar, iki çıkış.
  2. Kararları büyükten küçüğe sıralayın: not >= 90 ?, not >= 85 ? …
  3. Çarpım için 1.
  4. Karar: sayi == 0 ?
  5. İkinci koşul: deneme < 5 ?
  6. i artırılmıyor → sonsuz döngü; i = i + 1 ekleyin.

Özet

Kaynaklar

  • ISO 5807:1985, Information processing: Documentation symbols and conventions for data, program and system flowcharts.
  • Deitel ve Deitel, Java: How to Program, Early Objects, 11. baskı, Pearson, 2018.
  • Sedgewick ve Wayne, Computer Science: An Interdisciplinary Approach, Addison-Wesley, 2016: 1.3 Conditionals and Loops.
  • Oracle, The Java Tutorials: Control Flow Statements.
  • Downey ve Mayfield, Think Java, 2. baskı, O'Reilly, 2019 (ücretsiz çevrim içi sürüm).

Son

Akış Diyagramları
Sonraki sunum: Programlamaya Giriş · Çalışma soruları · Simülatör: Akış Diyagramı Yürütücü · Terim sözlüğü
1 / 1Sercan KÜLCÜ, Tüm hakları saklıdır.