YZ Destekli Kodlama Notları

Algoritmalar · Ünite 3

Algoritma Tasarım İlkeleri ve Gösterim Yöntemleri

10 soruluk deneme testine geç ↓

1. Program ve program geliştirme döngüsü

Bilgisayarın tek bir işe kilitli olmamasının sebebi programlanabilir olması: ona ne yapacağını söyleyen talimat dizisine bilgisayar programı ya da yazılım denir. Yazılım olmadan bilgisayar hiçbir şey yapamaz. Programları tasarlayan, yazan ve test eden kişi de programcı (yazılım geliştirici).

Profesyonel programcılar yeni bir işe kod yazarak başlamaz, önce programı tasarlar. Tasarım bitince yüksek seviyeli bir dilde kod yazılır. Her dilin anahtar kelimeleri, operatörleri ve noktalama işaretleri için kuralları vardır; bu kurallara söz dizimi (syntax) denir. Bir kural çiğnenirse söz dizimi hatası çıkar ve program derlenemez ya da çalışmaz.

Derlemek mi, yorumlamak mı?

Derlenen dil (ör. C#)Betik dili (ör. JavaScript)
Kod ne olur?Derleyici onu 1 ve 0'lardan oluşan makine koduna çevirirUygulamaya çevrilmez, yorumlayıcı satır satır yürütür
Çalıştırmak içinEk bir yazılım gerekmezYorumlayıcı gerekir (JavaScript için tarayıcı)

Mantık hatası ve hata ayıklama

Kod çalışır hâle gelince test edilir. Mantık hatası, programın çalışmasını engellemeyen ama yanlış sonuç üreten hatadır; yaygın sebeplerinden biri matematiksel hatalardır. Hatanın yerini bulup düzeltmeye hata ayıklama (debugging) denir. Bazen bu sırada asıl tasarımın değişmesi gerektiği anlaşılır.

2. Algoritma tasarımı

Algoritma, bir görevi gerçekleştirmek için atılması gereken iyi tanımlanmış mantıksal adımlar dizisidir. Tasarım süreci iki adımda özetlenir:

Görevi anlamak için programcı genelde müşteriyle (programı isteyen kişi, şirket ya da patron) görüşür, bol soru sorar ve bir gereksinim listesi çıkarır. Yazılım gereksinimi, müşteriyi memnun etmek için programın yapması gereken tek bir işlevdir; örneğin «ürün gruplarına göre aylık KDV hesaplayabilmeli». Müşteri listeyi onaylayınca her işlev alt adımlara bölünür.

Görevi adımlara bölmek

Birine çay demlemeyi tarif ettiğini düşün: «Çaydanlığa su koy, ocağa koy, su kaynayınca demliğe çay at, kaynar suyu dök, 15 dakika demlen.» Adımlar sıralı; sırası bozulursa (önce suyu dökersen) sonuç değişir. Bilgisayar da adımları tam yazıldığı sırayla uygular.

Saatlik çalışan birinin brüt ücretini hesaplayan program için adımlar: (1) çalışılan saat sayısını al, (2) saatlik ücreti al, (3) ikisini çarp, (4) sonucu göster. Bu tarif günlük dille yazılmış bir algoritmadır.

3. Algoritmayı göstermenin üç yolu

Algoritma, kodlanmadan önce programlama dilinden bağımsız yazılmalı ki hangi dile istersen çevirebilesin. Üç yaygın yol var: günlük dil, sözde kod ve akış şeması.

YöntemNasıl görünür?Artısı
Günlük dilNumaralı Türkçe cümleler: «1. Başla. 2. Toplamı 0 yap…»Herkes anlar, hiçbir kural yok
Sözde kodKod benzeri ama serbest komutlar: GİRDİ, GÖSTER, EĞER, TEKRARLAKoda çevirmesi kolay, söz dizimi derdi yok
Akış şemasıSembollerin oklarla bağlandığı diyagramAkışı bir bakışta gösterir

Günlük dil

Bir sınıfın not ortalaması: 1. Başla. 2. Toplamı 0 yap. 3. Sıradaki öğrencinin notunu al. 4. Notu toplama ekle. 5. Sırada öğrenci varsa 3. adıma dön. 6. Toplamı öğrenci sayısına böl. 7. Ortalamayı göster. 8. Bitir. Dilden bağımsız olsa da algoritmanın temel özellikleri (veri alma, çıktı üretme, sonlanma) yine görünür.

Sözde (pseudo) kod

«Sözde» sahte demek. Sözde kod, söz dizimi kuralı olmayan, derlenmesi ya da çalıştırılması amaçlanmayan gayriresmî bir dildir. Programcı noktalı virgül, büyük-küçük harf gibi ayrıntılarla uğraşmadan tasarıma odaklanır; tasarım oturunca sözde kod gerçek koda çevrilir.

1. BAŞLA
2. GÖSTER("Çalışılan saat sayısını girin")
3. GİRDİ saat
4. GÖSTER("Saatlik ücreti girin")
5. GİRDİ ucret
6. brut = saat * ucret
7. GÖSTER("Brüt ücret: ", brut)
8. BİTİR
1. BAŞLA
2. GİRDİ not
3. EĞER not > 60 İSE
4.     GÖSTER("Geçti")
5. DEĞİLSE
6.     GÖSTER("Kaldı")
7. BİTİR

4. Akış şeması

Akış şeması, bir programdaki adımları grafiksel olarak gösteren diyagramdır. Belirli anlamı olan semboller, programın «akışını» gösteren oklarla birbirine bağlanır. Okuma, Başla sembolünden başlayıp okları izleyerek Bitir'e ulaşana kadar sürer.

En sık kullanılan akış şeması sembolleri. Şekiller yazılımdan yazılıma biraz değişebilir.
SembolAdıNe için?
OvalBaşla/Bitir (sonlandırıcı)Akışın başlangıç ve bitiş noktası
ParalelkenarGiriş/Çıkış (veri sembolü)Kullanıcıdan veri alma ya da sonuç verme
Dikdörtgenİşlem (eylem sembolü)Hesaplama, atama gibi işlemler; en sık kullanılan sembol
Eşkenar dörtgenKararKarşılaştırma ve koşul; cevaba göre yol ikiye ayrılır
Alt kenarı dalgalı dikdörtgenBelgeBelge girdisi/çıktısı; çoğu zaman ekrana mesaj vermek için
Küçük daireBağlayıcıAynı sayfadaki birbirinden uzak parçaları birleştirir
Ucu sivri beşgenSayfa dışı bağlayıcıSayfa numarasıyla farklı sayfalardaki parçaları birleştirir

Elle çizmek en ucuz yol ama bir hata çoğu zaman tüm sayfayı yeniden çizmeyi gerektirir. Daha verimlisi bir yazılım kullanmak; örneğin ücretsiz draw.io sitesinde karşılama ekranında «akış şeması» seçilir, şema Dosya menüsünden dışa aktarılır.

5. Örnek tasarım: maç başına sayı ortalaması

Basketbolda maç başına sayı ortalaması (mbso) = toplam kaydedilen sayı (tks) ÷ oynanan maç sayısı (oms). 50 maçta 300 sayı atan oyuncunun mbso'su 300 / 50 = 6. Programın işi neredeyse her zaman üç aşamaya ayrılır:

Aşamambso programında
1. Girdinin alınmasıKullanıcıdan tks ve oms istenir; ikisi de tam sayı değişkeninde tutulur
2. Girdinin işlenmesimbso = tks / oms hesaplanır; sonuç bölme olduğu için ondalıklı (ör. 7,34) tutulmalı
3. Çıktının üretilmesimbso, ne olduğunu anlatan bir mesajla ekrana yazılır

Değişken, program çalışırken bellekte saklanan veriyi temsil eden sembolik isimdir. Değişkenlerin adını, hatta veri türünü tasarım aşamasında düşünmek, sözde kodu gerçek koda çevirirken eksik kalmasını önler. Gereksinimler problem tanımında çoğu zaman açıkça yazmaz; onları programcı çıkarır.

1. BAŞLA
2. GÖSTER("Toplam sayıyı girin")
3. GİRDİ tks
4. GÖSTER("Oynanan maç sayısını girin")
5. GİRDİ oms
6. mbso = tks / oms
7. GÖSTER("Maç başına sayı ortalaması: ", mbso)
8. BİTİR

6. Çözümlü örnekler

ProblemAlgoritmanın özüAkış şemasında dikkat
Silindirin hacmir ve h'yi al → Hacim = π · r² · h → yazGirdi paralelkenar, hesap dikdörtgen
İki sayıdan büyüğüx ve y'yi al → x > y ise x'i, değilse y'yi yazTek karar sembolü, iki çıkış yolu
ax² + bx + c'nin reel kökleriΔ = b² − 4ac. Δ < 0 → «reel kök yok»; Δ = 0 → x = −b / 2a; Δ > 0 → iki kök (−b ∓ √Δ) / 2aİki karar iç içe: önce Δ < 0, sonra Δ = 0
1'den 10'a kadar yazdırSayaç = 1 → yaz → Sayaç = Sayaç + 1 → Sayaç < 11 ise başa dönKarardan geriye dönen ok döngü kurar
N sayının ortalamasıN'yi al, Toplam = 0, Sayaç = 0 → sayı al, topla, sayacı artır → Sayaç < N ise tekrar → Ortalama = Toplam / NDöngü bitmeden bölme yapılmaz

Kendini test et!

Cevabı görmek için soruya dokun.

  1. 1.Programın çalışmasını engellemeyen ama yanlış sonuç vermesine yol açan hataya ne denir?

    ✓ Mantık hatası.

  2. 2.Algoritma tasarım sürecinin iki adımı nedir?

    ✓ Programın yapacağı görevi anlamak ve görevi yapmak için gereken adımları belirlemek.

  3. 3.Sözde kod neden doğrudan bir derleyicide çalışmaz?

    ✓ Gerçek bir programlama dili değildir; söz dizimi kuralı yoktur. Önce bir dile çevrilmesi gerekir.

  4. 4.Akış şemasında karşılaştırma ve koşul hangi sembolle gösterilir?

    ✓ Karar sembolü (eşkenar dörtgen).

  5. 5.«Kullanıcı bir sayı girsin» adımı akış şemasında hangi sembolle çizilir?

    ✓ Giriş/çıkış sembolü (paralelkenar).

  6. 6.Bir programın eylemleri genelde hangi üç aşamaya ayrılır?

    ✓ Girdinin alınması, girdinin işlenmesi ve çıktının üretilmesi.

Deneme testi

Sınavda çıkabilecek türden 10 soru. Bir şık seç; doğru cevap ve açıklaması hemen çıkar.

  1. 1.Bir dilin anahtar kelimelerinin, operatörlerinin ve noktalama işaretlerinin nasıl kullanılacağını belirleyen kurallara ne ad verilir?

  2. 2.Aşağıdakilerden hangisi betik programlama yaklaşımının özelliğidir?

  3. 3.«Müşteriyi memnun etmek için programın yerine getirmesi gereken tek bir işlev» aşağıdakilerden hangisinin tanımıdır?

  4. 4.Program geliştirme döngüsünde «kodu test et» adımından sonra, hata bulunursa hangi adım gelir?

  5. 5.Sözde kod için aşağıdakilerden hangisi doğrudur?

  6. 6.Akış şemasında programın başlangıç ve bitiş noktası hangi sembolle gösterilir?

  7. 7.Akış şemasında en sık kullanılan, hesaplama ve atama gibi işlemleri gösteren sembol hangisidir?

  8. 8.Bir algoritma 1'den 10'a kadar sayıları yazdıracak. Sayaç 1'den başlıyor ve her turda 1 artıyor. Döngünün devam koşulu hangisi olmalıdır?

  9. 9.ax² + bx + c = 0 denkleminin köklerini bulan algoritmada Δ < 0 çıkarsa ne yapılır?

  10. 10.Basketbolcunun maç başına sayı ortalamasını hesaplayan programda «mbso = tks / oms» satırı hangi aşamaya aittir?

Sınıf grubuna gönder:WhatsApp'ta paylaş

Bu not ders kitabının yerine geçmez; konu kendi cümlelerimizle, yapay zekâ desteğiyle özetlendi.