İçeriğe geç

Menü

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

Sözde Koddan Python Koduna Geçiş: Adım Adım Örnekle Nasıl Yapılır?

sozde-koddan-python-koduna-gecis
Bu yazıda neler var?
  1. Çeviriden önce sözde kodu dört parçaya ayır
  2. Sözde kod ifadeleri Python'da hangi yapıya karşılık gelir?
  3. Kullanıcı girdisi ve çıktı kontrolü: input, tür dönüşümü ve print
  4. Aynı problem üç biçimde: sözde kod, Python kodu ve beklenen çıktı
  5. Çeviride en sık yapılan üç hata: = ile ==, metin gelen girdi, girinti
  6. Dönüşümü alışkanlığa çevirmek için sonraki adım

Sözde koddan Python koduna geçmek için önce sözde kodu girdi, işlem, koşul ve çıktı olarak ayırırsın. Sonra her adımı karşılığı olan bir Python yapısına çevirirsin: değerler için değişken, karar için if, sayıyla tekrar için for, koşula bağlı tekrar için while. Kodu bitirince küçük bir test girdisini kâğıt üzerinde izleyip çıktıyla karşılaştırarak çeviriyi doğrularsın.

Çeviriden önce sözde kodu dört parçaya ayır

Sözde kodu Python'a çevirirken cümleleri doğrudan kodlamazsın; her cümledeki işlem türünü belirlersin. "Sayaç 0 olsun" bir atamadır, "sayı çiftse" bir karşılaştırmadır, "listedeki her sayı için" bir tekrardır, "ekrana yaz" bir yazdırmadır. İşlem türü belli olunca Python karşılığı da belli olur; çünkü her türün Python'da oturmuş bir yazımı vardır.

Bu ayrımı yapmak için sözde kodu satır satır okurken dört soruya cevap ara:

  1. Girdiler neler? Algoritma dışarıdan hangi değerleri alıyor: kullanıcının yazdığı bir sayı mı, hazır bir liste mi? Bunlar kodun başında değişkene dönüşür.
  2. Hangi işlemler yapılıyor? Toplama, çarpma, sayaç artırma, bir değeri başka değişkene kaydetme gibi hesaplama ve atama adımlarını işaretle.
  3. Hangi koşullar var? "Eğer", "değilse", "...sürdükçe" gibi ifadeler karar noktalarıdır. Her birinde neyin neyle karşılaştırıldığını yaz.
  4. Çıktı ne ve nerede görünecek? Sonuç döngünün içinde mi her seferinde yazdırılacak, yoksa döngü bittikten sonra bir kez mi? Bu yer, sonucun doğru çıkıp çıkmayacağını doğrudan etkiler.

Örneğin "Sayıları sırayla gez, çift olanları say, sonunda sayıyı yaz" cümlesinde girdi sayı listesidir, işlem sayaç artırmadır, koşul çift olma kontrolüdür, çıktı ise döngüden sonra tek bir yazdırmadır. Bu dört parçayı kâğıda not ettikten sonra kod yazmak, doğrudan klavyeye geçmekten çok daha az hata üretir.

Bu ayrımı yaparken ya da algoritmanın akışını kurarken zorlanıyorsan sorun Python sözdiziminde değil, mantığı adımlara bölmede olabilir. Bunu dilden bağımsız ölçmek için ücretsiz Algoritmik Düşünme Testini çözebilirsin.

Sözde kod ifadeleri Python'da hangi yapıya karşılık gelir?

Sözde kod ifadeleri Python'da hangi yapıya karşılık gelir?

Aşağıdaki tablo en sık karşılaşılan sözde kod ifadelerini Python karşılıklarıyla eşleştirir. Çeviri sırasında bir cümlede takıldığında buraya dönebilirsin.

Sözde kod ifadesiPython karşılığıNot
sayaç 0 olsunsayac = 0Tek eşittir atama yapar
eğer sayı çiftseif sayi % 2 == 0:Karşılaştırma çift eşittirle yapılır, satır iki nokta ile biter
değilseelse:if ile aynı girinti seviyesinde durur
listedeki her sayı içinfor sayi in sayilar:Liste elemanlarını sırayla gezer
1'den 10'a kadar tekrarlafor i in range(1, 11):Bitiş değeri dahil değildir
sayaç bir artsınsayac += 1sayac = sayac + 1 ile aynıdır
ekrana yazprint(sayi)Yazdırılacak değer parantez içine girer
koşul sürdükçe tekrarlawhile koşul:Koşulu bozacak bir adım gövdede olmalı

Değişken tanımlama

Sözde kodda "toplam 0 olsun" ya da "ad değişkenine kullanıcının yazdığı metin atansın" dediğinde Python'da toplam = 0 yazarsın. Python'da değişkenin türünü önceden bildirmezsin; atanan değer türü belirler. Değişken adlarını sözde kodda kullandığın sözcüklerden seç, böylece kodu okurken karşılığı kolay bulursun.

Koşul çevirme: if ve else

"Eğer not 50 ve üzeriyse geçti yaz, değilse kaldı yaz" cümlesi iki dallı bir karardır. Python'da if not_ >= 50: satırıyla başlar, altındaki girintili blok koşul doğruysa çalışır; else: altındaki blok ise diğer durumu karşılar. Karşılaştırma işleçleri (==, !=, <, >=) sözde koddaki "eşitse", "farklıysa", "küçükse", "en az" ifadelerinin karşılığıdır.

Sayaçlı döngü: for ve range

Tekrar sayısı baştan belliyse ("10 kez", "1'den 100'e kadar") for ile range kullan. range(1, 11) 1'den başlar, 10'da biter; 11 dahil değildir. Bir listeyi ya da metni baştan sona gezecekseniz for eleman in liste: biçimi daha sade olur ve sayaç tutmana gerek kalmaz.

Koşula bağlı döngü: while

Tekrar sayısı baştan bilinmiyorsa ("kullanıcı doğru şifreyi girene kadar", "sayı 1 olana kadar böl") while uygundur. Burada her turda koşulu değiştiren bir adım bulunmalı; aksi hâlde döngü hiç bitmez. Yazdığın while için kendine şunu sor: gövdedeki hangi satır koşulu eninde sonunda yanlış yapacak?

Kullanıcı girdisi ve çıktı kontrolü: input, tür dönüşümü ve print

Sözde koddaki "oku" ifadesi Python'da input() olur. Burada bir tuzak var: input() kullanıcı ne yazarsa yazsın her zaman metin (str) döndürür. Kullanıcı 5 yazsa bile elinde sayı değil, "5" karakteri vardır. Sözde kod "sayıyı 2 ile çarp" diyorsa önce sayi = int(input()) yazman gerekir. Ondalıklı değerlerde float() kullanılır.

Boşlukla ayrılmış birden çok sayı için input().split() metni parçalara bölüp bir liste üretir. Ancak bu listenin elemanları hâlâ metindir. [int(x) for x in input().split()] yazarak her parçayı sayıya çevirirsin. Girdi "3 8 5" ise sonuç [3, 8, 5] olur.

Sözde koddaki "yaz" ifadesinin karşılığı print() işlevidir. Yazdırdıktan sonra çıktıyı, sözde kodu elle çalıştırdığında beklediğin sonuçla karşılaştır. Değerin türünden emin değilsen print(type(sayi)) ile kontrol edebilirsin. Metin geliyorsa ekranda <class 'str'>, sayı geliyorsa <class 'int'> görürsün. Bu küçük alışkanlık, tür kaynaklı hataların büyük kısmını daha çalıştırmadan yakalamana yardımcı olur.

Aynı problem üç biçimde: sözde kod, Python kodu ve beklenen çıktı

Aynı problem üç biçimde: sözde kod, Python kodu ve beklenen çıktı

Problem: Listedeki sayıları dolaş, çift olanları yazdır ve kaç tane çift sayı olduğunu say. Önce sözde kod:

sayılar listesi: 3, 8, 5, 12, 7, 6
çift_sayısı = 0
listedeki her sayı için:
    eğer sayı 2'ye bölündüğünde kalan 0 ise:
        sayıyı yaz
        çift_sayısı = çift_sayısı + 1
çift_sayısı değerini yaz

Şimdi bunu dört parçaya ayır:

  • Girdi: altı sayılık liste
  • İşlem: her sayıyı sırayla dolaşmak ve sayacı artırmak
  • Koşul: kalanın 0 olup olmadığı
  • Çıktı: çift sayılar ve toplam adet

Her parçanın Python yapısı belli: liste bir değişkene, dolaşma for'a, kalan kontrolü if'e, "yaz" ise print'e dönüşür.

sayilar = [3, 8, 5, 12, 7, 6]
cift_sayisi = 0

for sayi in sayilar:
    if sayi % 2 == 0:
        print(sayi)
        cift_sayisi += 1

print("Çift sayı adedi:", cift_sayisi)

Beklenen çıktı:

8
12
6
Çift sayı adedi: 3

Kodu çalıştırmadan önce elle izleyerek doğrula:

  1. sayi 3: kalan 1, koşul yanlış, sayaç 0.
  2. sayi 8: kalan 0, koşul doğru, 8 yazılır, sayaç 1.
  3. sayi 5: kalan 1, koşul yanlış, sayaç 1.
  4. sayi 12: kalan 0, koşul doğru, 12 yazılır, sayaç 2.
  5. sayi 7: kalan 1, koşul yanlış, sayaç 2.
  6. sayi 6: kalan 0, koşul doğru, 6 yazılır, sayaç 3.

Elle bulduğun sonuç ile ekrandaki çıktı aynıysa çeviri doğru demektir. Farklıysa hangi turda ayrıldıklarına bakarak hatayı bulabilirsin. Aynı yöntemi farklı problemlerle denemek için blogdaki diğer yazılara göz atabilirsin.

Çeviride en sık yapılan üç hata: = ile ==, metin gelen girdi, girinti

Çeviri çoğu zaman mantık yüzünden değil, üç küçük ayrıntı yüzünden bozulur. Her birinin belirtisi farklıdır, o yüzden hataya bakarak teşhis koyabilirsin.

1. Koşulda = yerine == yazmak

Sözde kodda "sayı 2'ye bölündüğünde kalan 0 ise" yazar, çevirirken if sayi % 2 = 0: yazarsın. Python bu satırda SyntaxError verir. Sebep şudur: = atama yapar, yani sağdaki değeri soldaki isme yükler. == ise iki değeri karşılaştırır ve True ya da False üretir. Koşul soran her yerde karşılaştırma gerekir: if sayi % 2 == 0:.

2. input'tan gelen değerin metin olması

input() kullanıcı 4 yazsa bile '4' gibi bir metin döndürür. Belirti iki türlü olabilir. sayi % 2 satırı TypeError verir, çünkü % metinde biçimlendirme işlemidir. sayi == 4 ise hata vermeden sessizce False döner, çünkü '4' ile 4 farklı türlerdir. İkincisi daha zararlıdır, çünkü program çalışır ama yanlış sonuç verir. Çözüm girdiyi alır almaz dönüştürmektir: sayi = int(input()).

3. Girintinin yanlış yerde olması

Python'da girinti, bir satırın hangi döngünün ya da if'in gövdesine ait olduğunu belirler. Çift sayıları sayan bir döngüde şu iki yazım farklı sonuç verir:

  • sayac += 1 satırı if'ten bir seviye içeride ise yalnızca koşul doğruyken artar, yani çift sayılar sayılır.
  • Aynı satır if ile aynı hizada ise her turda artar ve listenin eleman sayısını bulursun.

İkinci durumda hata mesajı çıkmaz, yalnızca sonuç yanlış olur. Bunu elle izleme yakalar: her turdan sonra sayac değerini yazdığında beklediğinle uyuşmadığını görürsün. Girinti hiç yoksa ise IndentationError alırsın ve Python eksik girintinin yerini satır numarasıyla gösterir.

Dönüşümü alışkanlığa çevirmek için sonraki adım

Bir sonraki adım için kendine küçük bir görev ver: "Bir listedeki en büyük sayıyı bul." Önce girdi, işlem, koşul ve çıktıyı dört satırda yaz. Sonra [3, 8, 5] gibi küçük bir listeyle elle izle. Beklenen yaklaşım şöyledir: ilk elemanı en_buyuk adıyla tut, listeyi for ile dolaş, her elemanı if s > en_buyuk: ile karşılaştır, büyükse değeri güncelle. Elle izlemende sonuç 8 çıkmalı; kodu çalıştırdığında da aynısını görmelisin.

Bu pratiği düzenli yapmak ve her hatada kimin baktığını bilmek istersen, birebir Python Özel Ders programında kişiye özel müfredat ve ödevler Öğrenci Portalı üzerinden takip edilir. Kayıt başvuru usulüyle alınır ve başvurunun ardından ücretsiz ön görüşme yapılır.

Çeviri bir kez oturduğunda, yeni bir sözde kodla karşılaşman yalnızca aynı dört parçayı yeniden aramak anlamına gelir.

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