Algoritma ve Akış Diyagramı
Örnek Sorular
Altı soru, adım adım çözümler ve canlı çalışan akış diyagramları. Karar ve döngü yapılarını, değişkenlerin her adımda nasıl değiştiğini izleyerek öğrenin. Akış diyagramları etkileşimlidir: kendi değerlerinizle ▶ Oynat’a basıp çalıştırabilirsiniz.
Soru
Kullanacağımız şekiller
Başla – Bitir
Girdi
Klavyeden veri al
İşlem
Hesapla, değer ata
Çıktı
Ekrana yazdır
Karar
Koşul: EVET / HAYIR
Döngü
Sayaçlı tekrar
Bu sunumda yazım (Python’daki gibi)
| = | Değer atama: toplam = 0 |
| == | Eşit mi? a == b |
| != | Eşit değil mi? x != 0 |
| % | Bölümden kalan: 17 % 5 → 2 |
| // | Tam sayı bölmesi: 17 // 5 → 3 |
Hazır bir girdi seçin ya da kendi değerinizi yazın. ▶ Oynat ile akışı izleyin ya da Adım ile tek tek ilerleyin. Sarı nokta algoritmanın o an nerede olduğunu gösterir; değişkenler ve ekran her adımda güncellenir.
Bu üç kenarla üçgen çizilir mi?
Uzunlukları a, b ve c olarak girilen üç kenarla üçgen oluşup oluşmadığını; oluşuyorsa üçgenin eşkenar, ikizkenar ya da çeşitkenar olduğunu yazdıran algoritmayı ve akış diyagramını hazırlayınız.
Her kenar, diğer iki kenarın toplamından küçük olmalıdır: a < b + c, b < a + c, c < a + b. Biri bile sağlanmazsa üçgen oluşmaz.
Girdi
a, b, c
İşlem
Üçgen koşulunu sına, sonra kenarları karşılaştır.
Çıktı
Üçgenin türü ya da “Üçgen oluşmaz”
Algoritma
- Başla.
- a, b ve c’yi gir.
a < b + c,b < a + cvec < a + bkoşullarının hepsi sağlanmıyorsa “Üçgen oluşmaz” yazdır, 7. adıma git.a == bveb == cise “Eşkenar” yazdır, 7. adıma git.a == bveyab == cveyaa == cise “İkizkenar” yazdır, 7. adıma git.- “Çeşitkenar” yazdır.
- Bitir.
2, 2, 9 kenarları ikizkenar gibi görünür ama üçgen oluşturmaz. Kontrollerin sırası sonucu değiştirir.
ATM’den para çekme
Bir ATM yalnızca 10 TL ve katlarını verebiliyor; günlük para çekme limiti 3000 TL. Hesap bakiyesi ve çekilmek istenen tutar girildiğinde işlemin yapılıp yapılamayacağını kontrol eden, yapılabiliyorsa yeni bakiyeyi yazdıran algoritmayı ve akış diyagramını hazırlayınız.
Bir sayının 10’un katı olup olmadığını kalan işlemiyle anlarız: tutar % 10 sonucu 0 değilse tutar 10’un katı değildir.
Girdi
bakiye, tutar
İşlem
Üç kontrol; hepsi geçilirse tutarı bakiyeden düş.
Çıktı
Hata mesajı ya da “İşlem başarılı” ve yeni bakiye
Algoritma
- Başla.
- bakiye ve tutar’ı gir.
tutar % 10 != 0ise “Tutar 10’un katı olmalı” yazdır, 8. adıma git.tutar > 3000ise “Günlük limit aşıldı” yazdır, 8. adıma git.tutar > bakiyeise “Yetersiz bakiye” yazdır, 8. adıma git.bakiye = bakiye - tutar- “İşlem başarılı” ve bakiye’yi yazdır.
- Bitir.
Kontrollerden biri “EVET” çıktığı anda işlem durur. Para, bakiyeden yalnızca bütün kontroller geçilince düşülür.
Rakamların toplamı
Klavyeden girilen pozitif bir tam sayının rakamlarının toplamını bulan algoritmayı ve akış diyagramını hazırlayınız. Örnek: 4825 → 4 + 8 + 2 + 5 = 19
sayi % 10 son basamağı verir: 4825 % 10 → 5sayi // 10 son basamağı atar: 4825 // 10 → 482
Sayı 0 olunca basamak kalmamıştır.
Girdi
sayi
İşlem
Son basamağı al, toplama ekle, sayıdan at. Sayı 0 olana kadar tekrarla.
Çıktı
toplam
Algoritma
- Başla.
- sayi’yi gir.
toplam = 0sayi > 0değilse 8. adıma git.basamak = sayi % 10toplam = toplam + basamaksayi = sayi // 10, 4. adıma git.- toplam’ı yazdır.
- Bitir.
Döngünün kaç kez döneceğini baştan bilmiyoruz; sayının basamak sayısı kadar döner. Bu yüzden sayaç yerine bir koşul kullanıyoruz: sayi > 0.
Sınıfın en yüksek notu ve ortalaması
Önce sınıftaki öğrenci sayısı (N) girilir, ardından N öğrencinin notu tek tek girilir. Sınıfın not ortalamasını ve en yüksek notu bulup yazdıran algoritmayı ve akış diyagramını hazırlayınız.
Not toplama eklenir ve şimdiye kadarki en yüksek notla (enb) karşılaştırılır. Daha büyükse enb güncellenir.
Girdi
N ve N tane not
İşlem
Topla, en büyüğü güncelle; döngü bitince ortalamayı hesapla.
Çıktı
ort, enb
Algoritma
- Başla.
- N’yi gir.
toplam = 0,enb = 0- i = 1’den N’e kadar 1’er artarak 5–7. adımları tekrarla.
- not’u gir.
toplam = toplam + notnot > enbiseenb = notort = toplam / N- ort ve enb’yi yazdır.
- Bitir.
Neden enb = 0 ile başladık? Notlar 0–100 arasında olduğu için ilk not 0’dan küçük olamaz. Sıcaklık gibi eksi değer alabilen verilerde enb neyle başlamalıdır?
Üç hakla şifre girişi
Bir sistemin şifresi 1234’tür ve kullanıcının en fazla 3 deneme hakkı vardır. Şifre doğru girilirse “Giriş başarılı” yazdırılır. Yanlış girilirse kalan hak sayısı yazdırılır ve şifre yeniden istenir. Üç hak da yanlış kullanılırsa “Hesap kilitlendi” yazdırılır. Algoritmayı ve akış diyagramını hazırlayınız.
Döngü, şifre doğru girildiğinde ya da haklar bittiğinde sona erer.
Girdi
sifre (her denemede)
İşlem
Şifreyi karşılaştır; yanlışsa hakkı 1 azalt.
Çıktı
“Giriş başarılı”, kalan hak ya da “Hesap kilitlendi”
Algoritma
- Başla.
hak = 3- sifre’yi gir.
sifre == "1234"ise “Giriş başarılı” yazdır, 8. adıma git.hak = hak - 1hak > 0ise “Kalan hak:” ve hak’ı yazdır, 3. adıma git.- “Hesap kilitlendi” yazdır.
- Bitir.
Banka kartı, e-Devlet ve telefon kilit ekranları bu mantıkla çalışır.
Girilen sayı asal mı?
2 veya daha büyük bir tam sayı (n) giriliyor. Sayının asal olup olmadığını bulan algoritmayı ve akış diyagramını hazırlayınız.
Asal sayı yalnızca 1’e ve kendisine bölünür. Bölen ararken n’in kareköküne kadar bakmak yeterlidir: n’in karekökünden büyük bir böleni varsa, onunla çarpılan diğer bölen karekökten küçüktür ve daha önce bulunmuştur. Karekök yerine bolen * bolen <= n koşulunu kullanırız.
Girdi
n
İşlem
2’den başlayarak bölen dene; bulursan dur.
Çıktı
“Asal” ya da “Asal değil”
Algoritma
- Başla.
- n’yi gir.
bolen = 2bolen * bolen <= ndeğilse “Asal” yazdır, 8. adıma git.n % bolen == 0ise “Asal değil” yazdır, 8. adıma git.bolen = bolen + 1- 4. adıma git.
- Bitir.
Bölen bulunduğu anda döngüden çıkılır. 91 için 2’den 7’ye kadar yalnızca 6 bölen denenir (91 = 7 * 13). 97 için 2’den 9’a kadar 8 bölen denenir ve hiçbiri tam bölmez.
Sık yapılan hatalar
Soru 3’te sayi = sayi // 10 adımı unutulursa sayı hiç küçülmez. sayi > 0 hep doğru kalır ve döngü bitmez.
toplam = 0 döngüden önce yazılır. Döngünün içine yazılırsa toplam her turda sıfırlanır.
Soru 1’de üçgen koşuluna bakmadan türe bakılsaydı 2, 2, 9 kenarları “İkizkenar” çıkardı.
= değer verir: hak = 3== karşılaştırır: sifre == "1234"
Soru 6’da bolen * bolen < n yazılırsa 49 (= 7 * 7) asal sanılır. Doğrusu <= olmalıdır.
Döngünün geri dönüş oku doğru adıma dönmelidir. Soru 5’te ok hak = 3 adımına dönerse haklar hiç bitmez.
Algoritmasını ve akış diyagramını hazırlayın
1’den girilen N sayısına kadar olan çift sayıların toplamını bulun.
Girilen sayıyı ters çevirip yazdırın: 4825 → 5284.
İpucu: Soru 3’teki gibi son basamağı alın; ters = ters * 10 + basamak
Dönem notu = vizenin %40’ı + finalin %60’ı. 85 ve üzeri “Pekiyi”, 70–84 “İyi”, 50–69 “Orta”, 50’nin altı “Başarısız” yazdırın.
Kullanıcı 0 girene kadar sayı alın. Girilen sayılardan kaç tanesinin pozitif, kaç tanesinin negatif olduğunu yazdırın.
Çizdiğiniz diyagramı bir arkadaşınızla değiştirin ve birkaç sayıyla elle izleyin: her değişken için bir sütun açıp değerleri adım adım yazın, tıpkı animasyondaki gibi.