Berk Akademi
Birebir ders başvurusu Ücretsiz ön görüşme Ana Sayfa

Algoritma Kurma Nasıl Öğrenilir? Problemi Adımlara Ayırma

algoritma-kurma-nasil-ogrenilir-problemi-adimlara-ayirma
Bu yazıda neler var?
  1. Bir problem için algoritmaya nereden başlanır?
  2. Her soruda kullanabileceğin 6 maddelik kontrol listesi
  3. Not ortalaması problemini üç farklı biçimde kurma
  4. Koşul, döngü ve sınır durumları nasıl seçilir?
  5. Algoritmanın doğru çalıştığını nasıl test edersin?
  6. Algoritmik düşünmeyi kalıcılaştıran çalışma döngüsü
  7. Sık Sorulan Sorular

Algoritma kurma nasıl öğrenilir? Önce girdiyi, beklenen çıktıyı ve bu ikisi arasındaki işlemleri belirleyerek başlanır. Ardından farklı durumları yönetecek koşullar, tekrarlanacak adımlar ve sınır durumları sıraya konur.

Buradaki amaç, problem cümlesini doğrudan koda çevirmek değil, onu çözülebilir ve kontrol edilebilir bir hedefe dönüştürmektir. Kod yazmadan önce belirsizlikleri ayıklarsan hangi bilginin kullanılacağını, hangi işlemlerin yapılacağını ve sonucun nasıl gösterileceğini daha net görürsün.

Bir problem için algoritmaya nereden başlanır?

İlk adım, soruyu üç parçaya ayırmaktır: Girdi olarak ne veriliyor, bu girdiler üzerinde hangi işlemler yapılacak ve çıktı olarak ne üretilecek? Örneğin bir alışveriş tutarına indirim uygulanıyorsa fiyat ile indirim oranı girdidir. İndirim miktarını ve ödenecek tutarı hesaplamak işlemdir. Sonucu ekrana yazdırmak ise çıktıdır.

Bu ayrımdan sonra problem cümlesindeki belirsizlikleri incele. Kaç değer kullanılacak, değerlerin birimi ne olacak, boş veya sıfır bir giriş mümkün mü, sonuç hangi biçimde gösterilecek? Bu soruların cevapları net değilse yazılan kod çalışsa bile istenen problemi çözmeyebilir. Koşul ve döngü gerekip gerekmediğine de ancak temel işlem sırası ortaya çıktıktan sonra karar vermek daha sağlıklıdır.

Aşağıdaki kısa örnekte koddan önce girdi, işlem ve çıktı ayrımı yapılmıştır:

fiyat = 120
indirim_orani = 0.10
odenecek = fiyat * (1 - indirim_orani)
print(odenecek)

Bu örnekte girdiler fiyat ve indirim oranıdır. İşlem, indirimli tutarı hesaplamaktır. Beklenen çıktı 108.0 değeridir. Daha karmaşık bir soruda da aynı düşünme sırası korunur; yalnızca işlem adımları, kararlar ve tekrarlar çoğalır.

Her soruda kullanabileceğin 6 maddelik kontrol listesi

Her soruda kullanabileceğin 6 maddelik kontrol listesi

Çözümü yazmaya başlamadan önce aşağıdaki altı soruyu cevapla. Bu liste hazır sözde kod vermez; hangi düşünme adımlarının eksik kaldığını fark etmene yardımcı olur.

  1. Problem cümlesi ve amaç: Bu sorunun tek cümlelik hedefi nedir? Çözümün sonunda hangi problemi ortadan kaldırmış olacaksın?
  2. Girdiler: Hangi değerler veriliyor? Bu değerlerin türü, sayısı, birimi veya alabileceği biçimler belli mi?
  3. Beklenen çıktı: Sonuç olarak ne üretilecek? Çıktı tek bir değer, bir liste, bir mesaj ya da belirli bir biçimde yazılmış metin mi?
  4. İşlem sırası: Hangi işlem önce yapılmalı? Bir işlemin sonucu, sonraki adımın girdisi olacak mı?
  5. Koşul veya döngü gereksinimi: Farklı durumlarda karar vermek ya da aynı işlemi birden fazla kez tekrarlamak gerekiyor mu?
  6. Sınır durumları ve testler: Girdi boş, sıfır, en küçük veya en büyük değer olduğunda ne olacak? Çözümü hangi örneklerle kontrol edeceksin?

Not ortalaması problemini üç farklı biçimde kurma

Algoritmayı kurarken sırayı koru: önce girdi olan not ortalamasını al, beklenen çıktıyı belirle, geçerli aralıkta gerekli işlemi yap, koşulla sonucu seç, birden çok not varsa işlemi döngüyle tekrarla ve sınır durumlarını ayrıca denetle. Bu örnekte not değeri 0-100 aralığındadır. Başarı eşiğinin 50 olması yalnızca bu örnekte kullanılan kuraldır; farklı bir değerlendirme sisteminde eşik değişebilir.

Doğal dil ile çözüm

Bir not ortalaması oku. Değer sayı değilse beklenmeyen girdi olarak işaretle. Değer 0-100 aralığının dışındaysa geçersiz not sonucu üret. Geçerli değer 50 veya daha büyükse Başarılı, 50’den küçükse Başarısız sonucunu ver.

Numaralı akış adımları

  1. Not ortalamasını girdi olarak al.
  2. Girdinin sayısal olup olmadığını kontrol et.
  3. Değerin 0-100 aralığında bulunup bulunmadığını denetle.
  4. Değer 50 veya daha büyükse Başarılı yaz.
  5. Değer 50’den küçükse Başarısız yaz.

Python ile çalışan örnek

def not_durumunu_belirle(deger):
    try:
        not_ortalamasi = float(deger)
    except (TypeError, ValueError):
        return "Beklenmeyen girdi"

    if not 0 <= not_ortalamasi <= 100:
        return "Geçersiz not"

    if not_ortalamasi >= 50:
        return "Başarılı"

    return "Başarısız"


for deger in (50, 49, 101):
    print(f"{deger}: {not_durumunu_belirle(deger)}")

Beklenen çıktılar açıkça şöyledir: 50 için Başarılı, 49 için Başarısız, 101 için Geçersiz not. Kodda önce doğrulama yapılması, geçersiz bir değerin başarı koşuluna yanlışlıkla ulaşmasını önler.

Koşul, döngü ve sınır durumları nasıl seçilir?

Koşul, döngü ve sınır durumları nasıl seçilir?

Koşul, döngü ve doğrulama adımları algoritmaya alışkanlıkla değil, problemin yapısına göre eklenir. Tek bir not işlenecekse değeri kontrol etmek ve bir koşulla sonucu seçmek yeterlidir. Birden çok not veya kayıt işlenecekse aynı okuma ve kontrol işlemi her değer için tekrarlandığından döngü gerekir.

  • Tek not: Girdiyi doğrula, aralığı kontrol et ve 50 eşiğine göre karar ver.
  • Birden çok not: Notları döngü içinde sırayla al, her birinin geçerliliğini denetle, toplamı ve kayıt sayısını güncelle. Döngü sonunda ortalamayı hesaplayıp başarı koşulunu uygula.
  • Boş veri: Döngüye veya ortalama hesabına başlamadan önce işlenecek kayıt olup olmadığını kontrol et. Veri yoksa sıfıra bölme oluşmaması için ayrı bir sonuç belirle.
  • Aralık dışı değer: Tek notta karşılaştırmadan önce, birden çok notta ise her döngü adımında kontrol et.
  • Beklenmeyen girdi: Sayıya dönüştürme veya biçim kontrolü sırasında yakala; değeri doğrudan koşullara göndermeden önce sonucu belirle.

Eşik değeri de sınır durumudur. Koşulun >= 50 biçiminde yazılması, 50 değerinin Başarılı kabul edildiğini açıkça gösterir. Böylece algoritmada hangi değerin hangi adımda ele alındığı rastgele değil, önceden belirlenmiş olur.

Algoritmanın doğru çalıştığını nasıl test edersin?

Algoritmayı test ederken girdileri rastgele seçme. Önce normal bir durumla temel akışı, sonra eşik değerini, ardından eşik altı değeri ve son olarak geçersiz veriyi dene. Böylece hem beklenen sonucu hem de sınırda ve hatalı girdide koşulların nasıl davrandığını görürsün.

Örneğin bir not değerlendirme algoritmasında 50 eşik değerini temsil etsin. İlk değer normal durumu, ikinci değer eşiği, üçüncü değer eşik altını, son değer ise geçersiz veriyi gösterir:

def degerlendir(not_degeri):
    if type(not_degeri) not in (int, float):
        return "geçersiz veri"
    if not 0 <= not_degeri <= 100:
        return "geçersiz veri"
    if not_degeri >= 50:
        return "başarılı"
    return "başarısız"

for deger in (75, 50, 49, "elli"):
    print(deger, ":", degerlendir(deger))

Beklenen çıktı:

75 : başarılı
50 : başarılı
49 : başarısız
elli : geçersiz veri

Yanlış sonuç gördüğünde doğrudan kodu değiştirme. Önce problem cümlesini denetle: Girdi, beklenen çıktı ve sınır açık mı? Sonra işlem sırasını izle: veri doğrulama, hesaplama ve çıktı doğru sırada mı? Son olarak koşul adımlarını tek tek kontrol et: Hangi değerlerde doğru, hangi değerlerde yanlış dala gidiliyor? Böylece hatanın problem yorumunda mı, işlem sırasında mı, koşulda mı olduğunu ayırabilirsin.

Bu pratiği ölçmek için algoritma ve yazılım bilgi testleri merkezini kullanabilir, sonuçları hangi kavramlarda daha dikkatli düşünmen gerektiğini görmek için değerlendirebilirsin.

Algoritmik düşünmeyi kalıcılaştıran çalışma döngüsü

Kalıcı gelişim, bir günde çok soru çözmekten ziyade aynı düşünme döngüsünü düzenli biçimde uygulamaktan gelir. Küçük bir problemde şu sırayı koru:

  1. Soruyu kendi cümlenle yaz: Girdiyi, beklenen çıktıyı ve varsa kısıtları sadeleştir.
  2. Kontrol listesini uygula: Problemin adımlarını daha önce oluşturduğun altı maddelik listeyle denetle.
  3. Örneklerle test et: Normal, sınır ve hatalı girdileri elle yürüt.
  4. Yalnızca hatalı adımı düzelt: Çalışan kısımları değiştirmeden, başarısız testi üreten adıma odaklan.

Bir testin başarısız olması bütün çözümün yanlış olduğu anlamına gelmez. Hangi adımın beklenenden saptığını bulup yalnızca o adımı değiştirmek, neden ve sonuç ilişkisini korur ve benzer hataları fark etmeyi kolaylaştırır.

Berk Akademi'nin birebir programlarında kişiye özel müfredat ve Soru Avcısı ile günlük akıllı alıştırmalar, bu düzenli pratik yaklaşımını öğrencinin seviyesine göre sürdürmeye yardımcı olur. ([berkakademi.com](birebir özel ders programı))

Aynı çalışma düzeninin nasıl yapılandırılabileceğini görmek için birebir yazılım programlarının genel çerçevesini inceleyebilirsin.

Sık Sorulan Sorular

Akış şeması kullanmadan algoritma yazılabilir mi?

Evet. Algoritmayı maddeler, düz yazı veya sözde kod biçiminde kurabilirsin. Akış şeması görsel bir destek aracıdır; asıl önemli olan girdinin nasıl işlendiğinin ve çıktının hangi adımlarla üretildiğinin açık olmasıdır.

Bir problemde döngü kullanmam gerektiğini nasıl anlarım?

Aynı işlemi birden fazla değer veya öğe için tekrarlıyorsan döngü kullanmayı düşün. “Her eleman için”, “belirli sayıda kez” ve “koşul sağlandıkça” ifadeleri genellikle döngü ihtiyacını gösterir. Tek bir değeri bir kez işliyorsan doğrudan işlem veya koşul yeterli olabilir.

Kodu çalıştırmadan önce algoritmamı nasıl kontrol edebilirim?

Bir örnek girdiyi adım adım elle yürüt, her aşamada değişkenlerin değerini yaz ve beklenen çıktıyla karşılaştır. Ardından normal durum, eşik değeri, eşik altı değer ve geçersiz veri için kısa testler oluştur. Koşulun her dalının en az bir kez denetlendiğinden emin ol.

Algoritma kurmayı öğrenmek, kusursuz ilk denemeyi yapmak değil, çözümü adım adım kurup denetleme alışkanlığı kazanmaktır.

Bu içerik aradığın cevabı verdi mi?
Yanıtın, hangi yazıları geliştirmemiz gerektiğini anlamamıza yardımcı olur.
Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

Bu konudan sonra ne okuyabilirsin?

Tüm yazılar

İlgili Eğitimler

Berk Keskin, yazılım geliştirici ve eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; İzmir Ekonomi Üniversitesi'ni bölüm birincisi ve yüksek şeref öğrencisi olarak tamamladı. Bugün yalnızca eğitim vermekle kalmıyor, sektörde aktif olarak yazılım projeleri geliştiriyor ve gerçek dünya deneyimini birebir derslerine taşıyor. Ezberden uzak, mühendislik zihniyetini merkeze alan sürdürülebilir öğrenme sistemleri tasarlayarak sorgulayan, üreten ve problem çözebilen yeni nesil yazılımcılar yetiştiriyor.

Sektörel Deneyim & Projeler

  • Ticarify Entegrasyon Yazılım logosu CEO Ticarify Entegrasyon YazılımPazaryerleri ve e-ticaret sitelerine otomatik e-fatura kesimi, sipariş ve kargo takibi hizmetleri sunan e-Dönüşüm platformunun API mimarisini ve yazılım ekibini yönetmektedir.
  • Benim Düğünüm logosu CEO Benim DüğünümDijital etkinlik ve anı paylaşım platformu.
  • Siberdizayn logosu Yazılım Ekibi Lideri SiberdizaynYüksek anlık oyuncu trafiğine sahip oyun kontrol panelleri ve sunucu altyapıları geliştiren yazılım ekibine liderlik etmektedir.
  • MEDYOGRAFYA 360° Dijital Çözümler logosu Dijital Strateji Lideri MEDYOGRAFYA 360° Dijital ÇözümlerŞirketlerin dijital çözümlerde uzun vadede nasıl ilerlemesi gerektiği ve dijital dönüşüm süreçlerinin yönetilmesine destek olmaktadır.
  • İzmir Ekonomi Üniversitesi logosu Danışma Kurulu Üyesi İzmir Ekonomi ÜniversitesiMezun olduğu üniversitesinde, Bilgisayar Programcılığı bölümünün akademik müfredatını güncel sektör ihtiyaçlarına göre şekillendirmek adına Danışma Kurulu'nda görev almaktadır.
WhatsApp Hemen Ara