2. Ünite · Pekiştirme

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.

1 Üçgenin türü · Karar 2 ATM’den para çekme · Karar 3 Rakamların toplamı · Döngü 4 En yüksek not ve ortalama · Döngü + Karar 5 Üç hakla şifre · Döngü + Karar 6 Asal sayı mı? · Döngü + Karar
6
Soru
Başlamadan önce

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
Animasyonlu akış diyagramı

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.

Soru 1 · Karar yapısı (iç içe)

Bu üç kenarla üçgen çizilir mi?

Problem

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.

Bilgi Notu · Üçgen eşitsizliği

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

  1. Başla.
  2. a, b ve c’yi gir.
  3. a < b + c, b < a + c ve c < a + b koşullarının hepsi sağlanmıyorsa “Üçgen oluşmaz” yazdır, 7. adıma git.
  4. a == b ve b == c ise “Eşkenar” yazdır, 7. adıma git.
  5. a == b veya b == c veya a == c ise “İkizkenar” yazdır, 7. adıma git.
  6. “Çeşitkenar” yazdır.
  7. Bitir.
Neden önce üçgen koşulu?

2, 2, 9 kenarları ikizkenar gibi görünür ama üçgen oluşturmaz. Kontrollerin sırası sonucu değiştirir.

Soru 1 · Akış diyagramı ● Etkileşimli
Soru 2 · Karar yapısı (art arda koşullar)

ATM’den para çekme

Problem

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.

İpucu

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

  1. Başla.
  2. bakiye ve tutar’ı gir.
  3. tutar % 10 != 0 ise “Tutar 10’un katı olmalı” yazdır, 8. adıma git.
  4. tutar > 3000 ise “Günlük limit aşıldı” yazdır, 8. adıma git.
  5. tutar > bakiye ise “Yetersiz bakiye” yazdır, 8. adıma git.
  6. bakiye = bakiye - tutar
  7. “İşlem başarılı” ve bakiye’yi yazdır.
  8. Bitir.
Dikkat

Kontrollerden biri “EVET” çıktığı anda işlem durur. Para, bakiyeden yalnızca bütün kontroller geçilince düşülür.

Soru 2 · Akış diyagramı ● Etkileşimli
Soru 3 · Döngü yapısı (koşullu tekrar)

Rakamların toplamı

Problem

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

İki işlem yeterli

sayi % 10 son basamağı verir: 4825 % 10 → 5
sayi // 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

  1. Başla.
  2. sayi’yi gir.
  3. toplam = 0
  4. sayi > 0 değilse 8. adıma git.
  5. basamak = sayi % 10
  6. toplam = toplam + basamak
  7. sayi = sayi // 10, 4. adıma git.
  8. toplam’ı yazdır.
  9. Bitir.
Neden koşullu döngü?

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.

Soru 3 · Akış diyagramı ● Etkileşimli
Soru 4 · Döngü + karar

Sınıfın en yüksek notu ve ortalaması

Problem

Ö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.

Her turda iki iş

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

  1. Başla.
  2. N’yi gir.
  3. toplam = 0, enb = 0
  4. i = 1’den N’e kadar 1’er artarak 5–7. adımları tekrarla.
  5. not’u gir.
  6. toplam = toplam + not
  7. not > enb ise enb = not
  8. ort = toplam / N
  9. ort ve enb’yi yazdır.
  10. Bitir.
Düşünelim

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?

Soru 4 · Akış diyagramı ● Etkileşimli
Soru 5 · Döngü + karar

Üç hakla şifre girişi

Problem

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ünün iki çıkışı var

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

  1. Başla.
  2. hak = 3
  3. sifre’yi gir.
  4. sifre == "1234" ise “Giriş başarılı” yazdır, 8. adıma git.
  5. hak = hak - 1
  6. hak > 0 ise “Kalan hak:” ve hak’ı yazdır, 3. adıma git.
  7. “Hesap kilitlendi” yazdır.
  8. Bitir.
Gerçek hayatta

Banka kartı, e-Devlet ve telefon kilit ekranları bu mantıkla çalışır.

Soru 5 · Akış diyagramı ● Etkileşimli
Soru 6 · Döngü + karar (erken çıkış)

Girilen sayı asal mı?

Problem

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.

Bilgi Notu

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

  1. Başla.
  2. n’yi gir.
  3. bolen = 2
  4. bolen * bolen <= n değilse “Asal” yazdır, 8. adıma git.
  5. n % bolen == 0 ise “Asal değil” yazdır, 8. adıma git.
  6. bolen = bolen + 1
  7. 4. adıma git.
  8. Bitir.
Erken çıkış

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.

Soru 6 · Akış diyagramı ● Etkileşimli
Kontrol Noktası

Sık yapılan hatalar

Sonsuz döngü

Soru 3’te sayi = sayi // 10 adımı unutulursa sayı hiç küçülmez. sayi > 0 hep doğru kalır ve döngü bitmez.

Başlangıç değeri

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.

Koşulların sırası

Soru 1’de üçgen koşuluna bakmadan türe bakılsaydı 2, 2, 9 kenarları “İkizkenar” çıkardı.

Atama ve karşılaştırma

= değer verir: hak = 3
== karşılaştırır: sifre == "1234"

Sınır değeri

Soru 6’da bolen * bolen < n yazılırsa 49 (= 7 * 7) asal sanılır. Doğrusu <= olmalıdır.

Okun yönü

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.

Sıra sizde

Algoritmasını ve akış diyagramını hazırlayın

1 · Döngü

1’den girilen N sayısına kadar olan çift sayıların toplamını bulun.

2 · Döngü

Girilen sayıyı ters çevirip yazdırın: 4825 → 5284.
İpucu: Soru 3’teki gibi son basamağı alın; ters = ters * 10 + basamak

3 · Karar

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.

4 · Döngü + karar

Kullanıcı 0 girene kadar sayı alın. Girilen sayılardan kaç tanesinin pozitif, kaç tanesinin negatif olduğunu yazdırın.

İpucu

Ç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.

→ Boşluk sonraki adım / slayt
← önceki slayt
Home End ilk / son
O genel bakış   F tam ekran

Slaytlar