İçeriğe geç
← Tüm yazılar
· 7 dk okuma Programlama Temelleri

Algoritma: Sözde Kod

Sözde kod (pseudocode) nedir, nasıl yazılır? Akış şemasını koda çeviren ara dil: atama, koşul, döngü, karşılaştırma ve mantık operatörleri, kısa tarihçesiyle.

Algoritma: Sözde Kod

İlk yazıda algoritmayı kelimelerle anlattık, ikinci yazıda onu kutular ve oklarla çizdik. Şimdi son bir adım kaldı: aynı mantığı, gerçek koda neredeyse birebir çevrilebilecek yazılı bir biçime dökmek. Bu biçimin adı sözde kod.

Akış şeması bir fikri görmek için harikadır; ama uzun bir algoritmayı kutu kutu çizmek yorucu olur. İşte sözde kod tam buraya oturur: şemanın netliğini korur, ama yazması ve sonradan koda çevirmesi çok daha hızlıdır.

Sözde kod nedir?

İsmi kulağa teknik gelse de fikir çok yalın:

Sözde kod (pseudocode), bir algoritmayı herhangi bir programlama dilinin katı kurallarına takılmadan; insan diline yakın ama yapısı belli bir biçimde yazmaktır. “Sözde” (yani “-mış gibi”) çünkü koda benzer ama çalıştırılamaz; amacı insanın okuması ve fikri netleştirmesidir.

Bir kıyas yapalım. Aynı “1’den 5’e kadar say” işini üç biçimde ifade edebiliriz:

  • Düz cümle: “1’den başla, 5’i geçene kadar her seferinde bir artırıp yaz.”
  • Akış şeması: kutular, bir karar ve geriye dönen bir ok.
  • Sözde kod: aşağıdaki gibi, satır satır ve girintili.
1'den 5'e say — sözde kod
sayı ← 1
ZAMAN sayı ≤ 5 DOĞRU İKEN
YAZ sayı
sayı ← sayı + 1
DÖNGÜ SONU

Üçü de aynı algoritmadır. Sözde kod, “düz cümle” kadar okunur ama “gerçek kod” kadar yapılıdır — ikisinin tam ortasında durur.

Önce kısa bir tarih

Madem bu seri algoritmayı en baştan anlatıyor, kelimelerin nereden geldiğini de bilmekte fayda var. Çünkü bu hikâye, “sözde kod” fikrinin neden var olduğunu da açıklıyor.

Peki “sözde kod” nereden çıktı? Algoritmalar yüzyıllarca düz dille (tarif gibi) yazıldı. Ama 20. yüzyılın ortasında bilgisayarlar gelince bir sorun belirdi: düz dil fazla bulanık, gerçek kod ise fazla katı ve makineye özeldi. Arada, insanın kolayca okuyup üzerinde düşünebileceği bir biçime ihtiyaç vardı.

1950–60’larda yapısal programlama akımı ve ALGOL dili (adı zaten ALGOrithmic Language’dan gelir) algoritmaları temiz, bloklar hâlinde ifade etmenin yolunu açtı. Donald Knuth’un meşhur The Art of Computer Programming serisi de algoritmaları İngilizceye yakın, adım adım bir üslupla anlattı. İşte bugün kullandığımız sözde kod, bu geleneğin sadeleşmiş torunudur.

Sözde kod ne işe yarar?

Madem koda benziyor, neden doğrudan kod yazmıyoruz? Çünkü sözde kod birkaç gerçek sorunu çözer:

  • Mantığa odaklanırsın. Noktalı virgül, parantez, değişken tipi gibi dil ayrıntıları seni oyalamaz; sadece “ne yapılacağı” ile uğraşırsın.
  • Dilden bağımsızdır. Aynı sözde kodu, hangi programlama dilini kullanırsa kullansın herkes okuyup uygulayabilir. Ekip içi ortak dildir.
  • Hatayı erken görürsün. Bir adımı atladığını ya da bir koşulu yanlış kurduğunu, daha koda dökmeden, kâğıt üstünde fark edersin.
  • Koda çevirmesi kolaydır. İyi yazılmış sözde kod, gerçek koda neredeyse satır satır karşılık gelir.

Sözde kodun “dil bilgisi”

Burada bilmen gereken en önemli şey şu:

1) Atama — bir değeri bir kutuya koymak

Bir değişkene değer vermektir; genelde sol ok () kullanılır:

Atama
yaş ← 18
isim ← "Ada"
toplam ← a + b

2) Girdi / Çıktı — veri almak ve sonuç vermek

OKU (girdi) ve YAZ (çıktı):

Girdi / Çıktı
OKU kullanıcıAdı
YAZ "Merhaba, " + kullanıcıAdı

3) Koşul — bir karara göre dallanmak

EĞER … İSE, gerekirse DEĞİLSE, ve bloğu kapatan BİTİREĞER:

Koşul
EĞER puan ≥ 50 İSE
YAZ "Geçti"
DEĞİLSE
YAZ "Kaldı"
BİTİREĞER

4) Döngü — tekrar etmek

Bir koşul doğru olduğu sürece dönen blok: ZAMAN … DOĞRU İKEN … DÖNGÜ SONU:

Döngü
para ← 100
ZAMAN para > 0 DOĞRU İKEN
para ← para - 10
DÖNGÜ SONU

5) Karşılaştırma operatörleri

İki değeri kıyaslar; sonuç “doğru” ya da “yanlış” olur. Koşulların içinde bunları kullanırsın:

Sözde kodOkunuşuÖrnek
=eşit miyaş = 18
eşit değil micevap ≠ "evet"
>büyük müpuan > 90
<küçük müstok < 5
büyük veya eşit miyaş ≥ 18
küçük veya eşit misayı ≤ 10

6) Mantıksal operatörler

Birden fazla koşulu birleştirmeye ya da tersine çevirmeye yararlar:

Sözde kodAnlamıÖrnek
VEiki koşul da doğruysa doğruyaş ≥ 18 VE vatandaş
VEYAen az bir koşul doğruysa doğrucumartesi VEYA pazar
DEĞİLkoşulu tersine çevirirDEĞİL girişYapıldı

Örneğin bir oy kullanma kuralını tek satırda kurabiliriz:

Mantık operatörü — örnek
EĞER yaş ≥ 18 VE vatandaş İSE
YAZ "Oy kullanabilir"
BİTİREĞER

7) Girinti — neyin neyin içinde olduğunu gösterir

Bir EĞERin ya da döngünün içindeki satırları içeri kaydırırsın. Bu, akış şemasındaki “kutunun içindeki yol”un yazıdaki karşılığıdır. BİTİREĞER ve DÖNGÜ SONU gibi kapanışlar da bloğun nerede bittiğini açıkça gösterir.

Akış şemasını sözde koda çevirmek

İşin güzel yanı: ikinci yazıdaki şemaları neredeyse mekanik olarak sözde koda çevirebilirsin. Aynı üç örneği hatırlayalım.

Çift mi, tek mi? (karar)

Şemadaki karar baklavası, sözde kodda bir EĞER olur:

Çift / tek — sözde kod
OKU sayı
EĞER sayı MOD 2 = 0 İSE
YAZ "Çift"
DEĞİLSE
YAZ "Tek"
BİTİREĞER

MOD, bölmeden kalanı verir (5 MOD 2 = 1). Kalan 0 ise sayı tam bölünüyor, yani çift.

1’den 5’e say (döngü)

Şemadaki geriye dönen ok, sözde kodda bir döngü bloğuna dönüşür:

1'den 5'e say — sözde kod
sayı ← 1
ZAMAN sayı ≤ 5 DOĞRU İKEN
YAZ sayı
sayı ← sayı + 1
DÖNGÜ SONU

3 denemeli şifre (iç içe yapı)

En karmaşık örnek bile sade görünür. Bir döngü, içinde bir karar, bir de sayaç:

3 denemeli şifre — sözde kod
deneme ← 0
ZAMAN deneme < 3 DOĞRU İKEN
OKU şifre
EĞER şifre doğru İSE
YAZ "İçeri alındı"
DUR
DEĞİLSE
deneme ← deneme + 1
BİTİREĞER
DÖNGÜ SONU
EĞER deneme = 3 İSE
YAZ "Hesap kilitlendi"
BİTİREĞER

Gördüğün gibi şemadaki her şekil, sözde kodda bir satıra ya da bloğa karşılık geliyor. Akış şeması ile sözde kod aynı algoritmanın iki yüzü.

Hepsini birleştirelim: tam bir örnek

Şimdi öğrendiğimiz her şeyi tek bir algoritmada toplayalım. Problem: 1’den 10’a kadar olan çift sayıların toplamını bul. Burada atama, döngü, koşul, karşılaştırma ve MOD hep birlikte çalışıyor:

1–10 arası çift sayıların toplamı
BAŞLA
sayı ← 0
toplam ← 0
ZAMAN sayı ≤ 10 DOĞRU İKEN
EĞER sayı MOD 2 = 0 İSE
toplam ← toplam + sayı
BİTİREĞER
sayı ← sayı + 1
DÖNGÜ SONU
YAZ toplam
BİTİR

Satır satır oku: sayı 0’dan 10’a kadar ilerliyor; her turda “çift mi?” diye soruluyor (sayı MOD 2 = 0), çiftse toplama ekleniyor. Döngü bitince sonuç yazdırılıyor. İşte karmaşık görünen bir iş, beş basit yapı taşının iç içe geçmesiyle çözüldü. Bütün seri boyunca anlattığımız şey buydu: problemi adımlara böl, adımları net kelimelerle yaz.

Sık yapılan hatalar

Kendin dene

Okuyup geçme — bir kâğıt ve kalem al. Aşağıdaki problemlerin sözde kodunu yaz (akış şemasını da çizebilirsin, ikisi de aynı kapıya çıkar).

Egzersiz 1 — Selamlama (kolay)

Kullanıcıdan adını al, ekrana “Merhaba, <ad>!” yaz.

Egzersiz 2 — Geçer not (orta)

Bir öğrencinin notunu al. 85’in üstündeyse “Geçti (pekiyi)”, 50 ve üstündeyse “Geçti”, altındaysa “Kaldı” yaz.

Egzersiz 3 — Oy hakkı (mantık operatörü)

Bir kişi 18 yaşından büyük VE vatandaşsa “Oy kullanabilir”, değilse “Oy kullanamaz” yaz.

Yazdığın sözde kodu “robot arkadaşına” yüksek sesle oku: Her adım net mi? Girinti ve blok kapanışları doğru mu? Döngü bir yerde bitiyor mu? Bunu yapabiliyorsan, artık koda çevirmeye hazırsın demektir.

Özet

Paylaş

İlgili yazılar

Sıkça sorulan sorular

Sözde kod (pseudocode) nedir?

Sözde kod, bir algoritmayı herhangi bir programlama dilinin katı kurallarına takılmadan, insan diline yakın ama yapısı belli bir biçimde yazmaktır. Akış şeması ile gerçek kod arasındaki ara duraktır: fikri netleştirir ve sonra neredeyse birebir gerçek koda çevrilir.

Sözde kodun belirli bir standardı veya sözdizimi var mı?

Hayır. Sözde kodun resmî, herkesçe kabul edilmiş tek bir standardı yoktur. Önemli olan tutarlı ve okunabilir olmasıdır: atama, koşul ve döngüleri açıkça gösteren birkaç kuralı kendine seçip baştan sona aynı şekilde kullanırsın.

Sözde kodda hangi mantık ve karşılaştırma kelimeleri kullanılır?

Karşılaştırma için = (eşit), ≠ (eşit değil), > (büyük), < (küçük), ≥ (büyük veya eşit) ve ≤ (küçük veya eşit) kullanılır. Koşulları birleştirmek için ise mantıksal operatörler vardır: VE (iki koşul da doğruysa), VEYA (en az biri doğruysa) ve DEĞİL (koşulu tersine çevirir).

"Algoritma" kelimesi nereden gelir?

Kelime, 9. yüzyılda Bağdat’daki Bilgelik Evi’nde çalışan Persli matematikçi Muhammed bin Musa el-Harezmî’nin (al-Khwārizmī) adının Latinceleşmiş hâli "Algoritmi"den gelir. Aynı âlimin "el-cebir" (al-jabr) eseri de "cebir/algebra" kelimesine kaynaklık eder.

Sözde kod neden kullanılır?

Çünkü bir dilin söz diziminden (noktalı virgül, parantez, tip…) önce çözümün mantığına odaklanmanı sağlar. Fikri hızlıca kurar, ekip arkadaşlarınla dil fark etmeksizin paylaşır ve hataları daha koda dökmeden görürsün.