---
title: 'Sözde Kod'
source: 'https://academia.sh/tr/kurslar/programlama-temelleri/sozde-kod'
course: 'Programlama Temelleri'
language: tr
updated: '2026-08-17T18:08:24+00:00'
license: 'CC BY-SA 4.0'
---

# Sözde Kod

Çözümü dilden bağımsız yazma, elle izleme tablosuyla sınama ve kenar durumların belirlenmesi.

Önceki üç ders, denetim yapılarını doğrudan kod üzerinden tanıttı. Karmaşık bir problemde
ise sıra tersine döner: önce çözüm tasarlanır, sonra koda çevrilir. Tasarımı doğrudan
dilin sözdiziminde yapmak, iki farklı sorunu — "ne yapılacak" ve "nasıl yazılacak" —
aynı anda düşünmeyi gerektirir.

Bu ders, çözümü dilden bağımsız yazmanın ve koda dökmeden önce sınamanın yollarını
tanımlar.

## Sözde Kod Nedir

**Sözde kod**, bir çözümü doğal dile yakın ama adımları belirsizlik bırakmayacak
kesinlikte yazma biçimidir. Derlenmez, çalıştırılmaz; okunur.

Katı bir sözdizimi yoktur, ancak yaygın sözleşmeler vardır:

- Atama için ok veya "olsun" ifadesi kullanılır.
- Bloklar girinti ile gösterilir.
- Döngü ve koşullar açık yazılır: *her ölçüm için*, *eğer … ise*.
- Dile özgü ayrıntılar — kütüphane adları, tip bildirimleri, bellek yönetimi — dışarıda
  bırakılır.

Ölçüsü şudur: sözde kodu okuyan iki kişi, aynı davranışı anlamalıdır — çözümün
tartışıldığı yer, kod yazılmadan önceki bu metindir. Belirsizlik
kalıyorsa yeterince ayrıntılı değildir; dilin sözdizimine yaklaşıyorsa gereğinden fazla
ayrıntılıdır.

## Problemi Çözümlemek

Sözde kod yazmadan önce problemin anlaşılması gerekir. Dört soru bu işi yapar:

1. **Girdi nedir?** Türü, aralığı ve geçerlilik koşulları.
2. **Çıktı nedir?** Tek değer mi, koleksiyon mu, yan etki mi.
3. **Hangi durumlar özeldir?** Boş girdi, tek elemanlı girdi, eşit değerler, geçersiz
   değerler.
4. **Elle nasıl çözerdim?** Küçük bir örnek üzerinde adımları söze dökmek, çözümün
   kendisini ortaya çıkarır.

Dördüncü soru en verimlisidir. Beş ölçümün ortalamasını elle hesaplayan biri, farkında
olmadan bir birikeç kalıbı kullanır: sayıları sırayla toplar, sonra beşe böler.

## Ortak Problemin Sözde Kodu

Kursun ortak problemi — ortalama ve en büyük değer — sözde kodla şöyle yazılır:

```
GİRDİ: ölçümler (sayı listesi)
ÇIKTI: ortalama (sayı), en_büyük (sayı)

eğer ölçümler boş ise
    hata bildir: "boş girdi"

toplam ← 0
en_büyük ← ölçümler[0]

her ölçüm için ölçümler içinde
    toplam ← toplam + ölçüm
    eğer ölçüm > en_büyük ise
        en_büyük ← ölçüm

ortalama ← toplam / ölçümlerin sayısı
ortalama ve en_büyük'ü döndür
```

Bu metinde hiçbir dile ait ayrıntı yoktur; buna karşılık her adım tektir ve tartışmaya
yer bırakmaz. Boş girdi denetiminin döngüden **önce** yapıldığına dikkat edin: `en_büyük`
değişkeninin ilk elemanla başlatılması, listenin boş olmadığını varsayar.

Aynı sözde kod, iki döngü yerine tek döngüde iki birikeç kullanır. Bu bir tasarım
kararıdır: veri bir kez gezilir, iki sonuç birlikte üretilir.

## Elle İzleme

Çözümün doğruluğu, koda çevrilmeden önce **izleme tablosuyla** sınanabilir. Tabloda her
satır bir turu, her sütun bir değişkeni gösterir.

`[12, 18, 7]` girdisi için:

| Tur | ölçüm | toplam | en_büyük |
|---|---|---|---|
| başlangıç | — | 0 | 12 |
| 1 | 12 | 12 | 12 |
| 2 | 18 | 30 | 18 |
| 3 | 7 | 37 | 18 |
| sonuç | — | 37 | 18 |

Ortalama $37 / 3 \approx 12{,}33$; en büyük $18$. Sonuçlar elle hesaplananla uyuşur.

İzleme tablosu iki tür hatayı yakalar: yanlış başlangıç değeri ve yanlış güncelleme
sırası. Örneğin `en_büyük` sıfırla başlatılsaydı, tüm ölçümler negatif olan bir girdide
tablo sonucun sıfır çıktığını hemen gösterirdi.

Yöntem yavaştır ve büyük girdilerde uygulanamaz; amacı da bu değildir. Üç–dört elemanlık
bir girdi, mantık hatalarının çoğunu açığa çıkarmaya yeter. Aynı tablo, hata ayıklama
sırasında çalışan bir program üzerinde de kurulabilir: değişkenlerin her turdaki değerini
yazdırmak, izleme tablosunu programın kendisine hazırlatmaktır.

## Kenar Durumlar

Bir çözümün olağan girdide çalışması yeterli değildir. Kenar durumlar, çözümün
varsayımlarının kırıldığı yerlerdir:

| Kenar durum | Bu problemdeki davranış |
|---|---|
| Boş liste | Ortalama tanımsız; hata bildirilir |
| Tek eleman | Ortalama o eleman, en büyük o eleman |
| Tüm değerler eşit | En büyük, o değer |
| Tüm değerler negatif | En büyük, en az negatif olan |
| Çok büyük değerler | Toplam, tip aralığını aşabilir |

Son satır, önceki kursun taşma dersine bağlanır: sabit genişlikli bir tipte biriken
toplam, aralık dışına çıkarsa sessizce yanlış sonuç verir.

Kenar durumların listelenmesi, sonradan yazılacak testlerin de listesidir. Yazılım
kalitesi müfredatında bu, sınır değer analizi olarak adlandırılır.

## Problemi Alt Problemlere Bölmek

Ortak problem tek bir sözde kod bloğuna sığdı. Gerçek problemler sığmaz; çözüm, tek
parça hâlinde hem yazılamaz hem izlenemez.

Standart yöntem **ayrıştırmadır**: problem, her biri tek bir işi yapan alt problemlere
bölünür. Ölçüm verisiyle çalışan bir program şöyle ayrışabilir:

```
oku(kaynak) → ham satırlar
ayıkla(ham satırlar) → geçerli ölçümler, atlanan sayısı
özetle(ölçümler) → ortalama, en büyük
raporla(ortalama, en büyük, atlanan) → çıktı metni
```

Dört adımın her biri ayrı ayrı yazılabilir, ayrı ayrı sınanabilir ve biri değiştiğinde
diğerleri etkilenmez. Bölmenin ölçütü, adımın tek cümleyle anlatılabilmesidir: "ve"
bağlacıyla birleştirilen iki iş yapan bir adım, muhtemelen ikiye bölünmelidir.

Bu ayrıştırmanın koddaki karşılığı fonksiyonlardır. Sözde kodda bir adıma ad vermek,
kodda bir fonksiyon tanımlamaya karşılık gelir; bu nedenle ayrıştırma, kod yazılmadan
önce yapılan bir tasarım işidir.

## Sözde Koddan Koda

Çeviri, sözde kodun her satırının hedef dildeki karşılığını yazmaktır:

```python
def ozetle(olcumler: list[int]) -> tuple[float, int]:
    """Ölçümlerin ortalamasını ve en büyüğünü döndürür."""
    if not olcumler:
        raise ValueError("boş girdi")

    toplam = 0
    en_buyuk = olcumler[0]

    for olcum in olcumler:
        toplam += olcum
        if olcum > en_buyuk:
            en_buyuk = olcum

    return toplam / len(olcumler), en_buyuk


print(ozetle([12, 18, 7]))          # (12.333333333333334, 18)
print(ozetle([12, 18, 7, 25, 14]))  # (15.2, 25)
```

İlk çıktı, izleme tablosunda elle hesaplanan değerlerle uyuşur — bu, çevirinin doğru
yapıldığının kanıtıdır.

Çeviri sırasında sözde kodda olmayan kararlar ortaya çıkar: hata nasıl bildirilecek, iki
değer nasıl birlikte döndürülecek, tipler ne olacak. Bu kararlar dile aittir ve sözde
kodun eksikliği değildir; sözde kodun **bilinçli olarak dışarıda bıraktığı** ayrıntılardır.

## Özet

- Sözde kod, çözümü dilden bağımsız ve belirsizlik bırakmadan yazma biçimidir; ölçüsü
  iki okuyucunun aynı davranışı anlamasıdır.
- Problem çözümlemesi dört soruyla yapılır: girdi, çıktı, özel durumlar ve elle çözüm.
- İzleme tablosu, çözümü çalıştırmadan sınar; yanlış başlangıç değeri ve yanlış
  güncelleme sırası bu yolla yakalanır.
- Kenar durumların listesi, sonradan yazılacak testlerin listesidir.
- Sözde koddan koda çeviri sırasında ortaya çıkan kararlar dile aittir; sözde kod bu
  ayrıntıları bilinçli olarak dışarıda bırakır.

## Sonraki Adım

Son örnekteki çözüm bir `def` bloğuyla sarmalandı ve `ozetle` adıyla anıldı. Bu yapı
şimdiye kadar açıklanmadan kullanıldı. Sonraki konu, fonksiyonları tanımlar: parametre
ve dönüş değeri nasıl çalışır, adlar hangi bölgede geçerlidir ve bir fonksiyon kendini
çağırdığında ne olur?
