Ana sayfateknolojiYazılım ve ProgramlamaAlgoritma Nedir?
💻
Teknoloji · Konu Anlatımı

Algoritma Nedir? Girdi, Karar ve Döngülerle Adım Adım Çözüm

Programlamaya Giriş· genel· 10 dk okuma· Son güncelleme: 19 Temmuz 2026
Öğreniyo İçerik Ekibi tarafından hazırlandı · Editör: Yusufhan Seyis
Bilgisayar ve Programlama yolunun 10/18. adımı· Yolu gör →
Kısaca

Algoritma, belirli bir problemi çözmek veya bir amaca ulaşmak için tasarlanan sonlu ve sıralı adımlar bütünüdür. İyi bir algoritmada başlangıç, uygulanacak işlemler, gerekli kararlar ve bitiş açıkça belirtilir; algoritma daha sonra bir programlama diline aktarılabilir.

Bu yazıda (8)
💻
Teknoloji

Algoritma Nedir? Girdi, Karar ve Döngülerle Adım Adım Çözüm

Bir problemi bilgisayara çözdürmek için yalnızca hedefi söylemek yeterli değildir. Bilgisayarın hangi veriyi alacağını, ilk olarak ne yapacağını, hangi durumda farklı bir yola gireceğini ve işlemi ne zaman sonlandıracağını açıkça belirtmek gerekir. Bu planlama süreci algoritmanın temelini oluşturur.

Algoritma yalnızca bilgisayar programlarına özgü bir kavram değildir. Günlük hayatta bir tarifi uygulamak, belirli bir rotayı izlemek veya bir kitabın istenen sayfasını bulmak da adımların belirli bir sırayla yürütülmesini gerektirir. Ancak bilgisayar algoritmalarında belirsiz ifadeler yerine, uygulanabilir ve denetlenebilir işlemler kullanılmalıdır.

Bu rehberde algoritmanın tanımını yalnızca ezberlenecek bir cümle olarak değil; girdi, işlem, karar, tekrar ve çıktı ilişkisi içinde ele alacağız. Ayrıca algoritmanın programdan farkını, akış şemasıyla nasıl gösterildiğini ve sınavlarda sık karıştırılan noktaları çözümlü örneklerle inceleyeceğiz.

Bir algoritmayı incelerken dört yardımcı soru: Girdi, işlem, karar ve çıktı

Bir algoritmayı anlamanın en pratik yolu, şu dört soruyu sormaktır: Hangi veriyle başlanıyor, bu veri üzerinde hangi işlemler yapılıyor, hangi koşullarda karar değişiyor ve sonuçta ne elde ediliyor?

Girdi, algoritmanın kullanacağı başlangıç bilgisidir. Örneğin iki sayıyı karşılaştıran bir algoritmada girdiler iki sayıdır. İşlem, bu girdiler üzerinde gerçekleştirilen adımlardır; karşılaştırma, toplama veya sıralama buna örnek olabilir. Karar, belirli bir koşulun sonucuna göre farklı bir adıma geçilmesini sağlar. Çıktı ise algoritmanın sonunda üretilen sonuçtur.

Örneğin bir sayının pozitif, negatif veya sıfır olduğunu belirleyen taslak şöyle kurulabilir:

  1. Bir sayı al.
  2. Sayı 0'dan büyük mü kontrol et.
  3. Büyükse 'pozitif' sonucunu üret.
  4. Değilse sayı 0'dan küçük mü kontrol et.
  5. Küçükse 'negatif', aksi durumda 'sıfır' sonucunu üret.
  6. İşlemi bitir.

Burada girdi bir sayıdır; karar noktaları sayı ile 0'ın karşılaştırılmasıdır; çıktı ise üç sınıftan biridir. 'Sayıyı incele' gibi bir ifade tek başına yeterli değildir, çünkü hangi ölçüte göre inceleme yapılacağı belli değildir. Algoritmanın her adımı, uygulayan kişinin ayrıca yorum yapmasına mümkün olduğunca az ihtiyaç bırakmalıdır.

Bir algoritmanın yalnızca adımlardan oluşması da yeterli değildir. Adımların bir başlangıç noktası ve ulaşılabilir bir bitişi bulunmalıdır. Sürekli aynı adıma dönülen ve hiçbir koşulda durmayan yapı, amaçlanan sonucu üretmeyen sonsuz döngüye dönüşebilir.

Sıra değişince sonuç değişir: Algoritmada işlem önceliği

Algoritmanın ayırt edici özelliklerinden biri, adımların gelişigüzel değil belirli bir sıra içinde uygulanmasıdır. Bir işlemin sonucunu sonraki adım kullanıyorsa önceki işlem tamamlanmadan sonraki adıma geçilemez.

Örneğin bir sayının karesini hesaplayan basit yöntemde önce sayı alınır, ardından sayı kendisiyle çarpılır ve sonuç gösterilir. 'Sonucu göster, sayıyı al, çarp' sıralaması aynı işlemi ifade etmez. Benzer biçimde yemek hazırlarken malzemeyi doğrama, pişirme ve servis etme adımlarının yeri değişirse hedeflenen sonuç oluşmayabilir.

Sıralı yapı özellikle işlem önceliğinin önemli olduğu matematiksel problemlerde görülür. 5 ve 2 sayılarının toplamını alıp sonucu 3 ile çarpan algoritma ile önce 2'yi 3 ile çarpıp ardından 5 ekleyen algoritma farklı sonuçlar verir:

  • Birinci sıra: (5+2)×3=21(5+2)\times3=21
  • İkinci sıra: 5+(2×3)=115+(2\times3)=11

Bu nedenle algoritma tasarlarken yalnızca hangi işlemlerin yapılacağı değil, işlemlerin hangi sırada yapılacağı da yazılmalıdır. Sınav sorularında verilen adımları takip ederken bir işlemin güncel değeri değiştirip değiştirmediğine dikkat etmek gerekir. Bir değişkenin yeni değeri sonraki adımda kullanılacaksa eski değerle karıştırılmamalıdır.

Koşul ve döngü, algoritmayı tek yoldan çıkarır

Her algoritma yalnızca düz bir işlem sırasından oluşmaz. Gerçek problemlerde çoğu zaman bir koşula göre farklı karar vermek veya bir işlemi birden fazla kez tekrarlamak gerekir.

Koşul yapısında algoritma, bir sorunun cevabına göre dallanır. 'Not 50 veya üzerindeyse başarılı, değilse başarısız yazdır' ifadesinde eşik değeri 50'dir. Not 50 olduğunda '50 veya üzeri' koşulu sağlanır; 49 olduğunda sağlanmaz. Eşik değerinin dahil edilip edilmediği, algoritmanın sonucu açısından önemlidir.

Döngü ise belirli bir işlemin bir koşul sağlandığı sürece veya belirli sayıda tekrar edilmesini sağlar. Bir kitabın sayfasını arama örneğinde şu yapı kullanılabilir: kitabı aç, sayfa numarasını kontrol et, aranan sayfa değilse sonraki sayfaya geç ve kontrolü tekrarla. Aranan sayfa bulunduğunda süreç durur. Buradaki ilerleme adımı yazılmazsa algoritma aynı sayfayı tekrar tekrar kontrol edebilir.

Koşul ifadeleri hakkında daha fazla bilgi için koşul ifadeleri, tekrar yapıları için döngü konusuna bakılabilir. Bu iki yapı algoritmanın kapsamını genişletir; fakat her koşul ve döngü için açık bir kontrol ölçütü yazılmalıdır. Aksi hâlde hangi dala gidileceği veya tekrarın ne zaman sona ereceği belirsiz kalır.

Aynı çözümü metin, sözde kod ve akış şemasıyla anlatmak

Algoritma farklı gösterim biçimleriyle ifade edilebilir. Metinsel anlatımda adımlar numaralandırılır. Sözde kodda ise programlama diline tamamen bağlı kalmadan, kod mantığına benzeyen ifadeler kullanılır. Akış şemasında adımlar semboller ve oklarla gösterilir. Gösterim biçimi değişse de çözüm mantığı aynı kalmalıdır.

Örneğin iki sayıdan büyük olanı bulma sözde kodu şöyledir:

Başla A ve B sayılarını al Eğer A > B ise A'yı yazdır Değilse B > A ise B'yi yazdır Aksi durumda 'Sayılar eşit' yazdır Bitir

Bu örnekte üç olasılık vardır: A'nın büyük olması, B'nin büyük olması veya iki sayının eşit olması. Yalnızca 'A büyük değilse B'yi yazdır' denirse eşitlik durumu yanlış sonuçlanabilir. Bu, algoritma yazarken sınır durumlarının da düşünülmesi gerektiğini gösterir.

Akış şemasında başlangıç ve bitiş, işlem adımları, karar noktaları ve bu noktalar arasındaki yönler görsel olarak düzenlenir. Şema hazırlarken okların hangi adıma yöneldiği açık olmalıdır. Bir karar kutusundan çıkan 'evet' ve 'hayır' yolları belirtilmezse şema görsel olsa bile uygulanabilirliğini kaybeder.

Akış şeması veya sözde kod, algoritmanın kendisinden farklı bir programlama dili değildir. Bunlar çözüm planını insanlar için daha anlaşılır hâle getiren gösterim araçlarıdır.

Çözümlü örnek: Üç sayıdan en büyüğünü bulma

Verilenler: 12, 7 ve 19 sayıları. Amaç, bu üç sayı arasındaki en büyük değeri bulmaktır.

Çözüm adımları:

  1. İlk sayıyı geçici olarak en büyük kabul et: enBuyuk = 12.
  2. İkinci sayıyı karşılaştır: 7, 12'den büyük değildir. Bu nedenle enBuyuk değeri 12 olarak kalır.
  3. Üçüncü sayıyı karşılaştır: 19, 12'den büyüktür. enBuyuk değerini 19 yap.
  4. Karşılaştırılacak sayı kalmadığı için enBuyuk değerini yazdır.

Sonuç: En büyük sayı 19'dur.

Bu yöntemde önemli nokta, ilk sayının doğrudan 'kesin en büyük' kabul edilmemesidir; yalnızca geçici başlangıç değeri olarak kullanılır. Her yeni sayı bu değerle karşılaştırılır ve daha büyük olan bulunursa geçici değer güncellenir. Aynı algoritma 12, 19 ve 7 için de 19 sonucunu verir; çünkü karşılaştırma sırası değişse bile her sayı kontrol edilir.

Sözde kod biçimi:

Başla A, B ve C sayılarını al enBuyuk = A Eğer B > enBuyuk ise enBuyuk = B Eğer C > enBuyuk ise enBuyuk = C enBuyuk değerini yazdır Bitir

Eşitlik durumunda da yöntem çalışır. Örneğin 19, 19 ve 7 verildiğinde 'daha büyük' koşulu sağlanmadığı için enBuyuk değeri 19 olarak kalır. Burada amaç en büyük değeri bulmak olduğu için eşit sayıların kaç kez tekrar ettiği ayrıca hesaplanmaz.

Çözümlü örnek: Beş sayıyı küçükten büyüğe sıralama

Verilenler: 5, 2, 8, 1, 9. Amaç, sayıları küçükten büyüğe sıralamaktır.

Adım adım bir karşılaştırma ve yer değiştirme yaklaşımı kullanalım:

  1. İlk komşu çifti karşılaştır: 5 ve 2. Küçük olan önce gelmelidir; yer değiştirince dizi 2, 5, 8, 1, 9 olur.
  2. 5 ve 8'i karşılaştır: 5 küçük olduğu için yer değiştirme yapma. Dizi 2, 5, 8, 1, 9 olarak kalır.
  3. 8 ve 1'i karşılaştır: 1 küçük olduğu için yer değiştir. Dizi 2, 5, 1, 8, 9 olur.
  4. 8 ve 9'u karşılaştır: 8 küçük olduğu için yer değiştirme yapma.
  5. Baştan yeni bir geçiş yap: 2 ve 5 doğru sıradadır.
  6. 5 ve 1'i karşılaştır ve yer değiştir: 2, 1, 5, 8, 9.
  7. 5 ve 8 ile 8 ve 9 doğru sıradadır.
  8. Sonraki geçişte 2 ve 1'i karşılaştırıp yer değiştir: 1, 2, 5, 8, 9.
  9. Kalan komşu çiftler doğru sırada olduğundan işlem bitirilir.

Sonuç: 1, 2, 5, 8, 9.

Bu örnekte her karşılaştırmadan sonra dizinin güncel hâli kullanılır. İlk geçişte yalnızca bir çifti kontrol edip işlemi bitirmek yeterli değildir; sıralamanın tamamı doğrulanmalıdır. Dizi, birden fazla değeri birlikte tutmayı; veri yapısı ise verilerin düzenlenme ve kullanılma biçimini anlamaya yardımcı olur. Aynı problem için başka sıralama yöntemleri de tasarlanabilir; verilen yöntem, komşu değerleri karşılaştırıp gerektiğinde yer değiştirme mantığına dayanır.

Algoritma ile programı ayırmak ve çözümün verimliliğini düşünmek

Algoritma, çözümün mantıksal planıdır; program ise bu planın Python, C++ veya başka bir programlama diliyle yazılmış uygulanabilir biçimidir. Bu nedenle aynı algoritma farklı dillerde ifade edilebilir. Dilin sözdizimi değişse de girdinin alınması, işlemlerin yapılması ve çıktının üretilmesi gibi temel akış korunabilir.

Bir problemi çözen iki algoritma bulunabilir ve bunlar aynı sonucu farklı sayıda işlemle üretebilir. Mevcut makalede de belirtildiği gibi verimlilik değerlendirilirken çalışma süresi ve kullanılan bellek miktarı dikkate alınır. Çalışma süresi, girdinin büyüklüğü arttıkça gereken işlem yükünün nasıl değiştiğiyle; bellek kullanımı ise çözüm sırasında ihtiyaç duyulan ek alanla ilgilidir.

Beş sayıyı sıralamak için adımları elle izlemek kolaydır. Ancak sayıların adedi arttığında her karşılaştırmanın ve yer değiştirmenin maliyeti önem kazanır. Bu yüzden algoritma tasarlarken yalnızca 'sonucu veriyor mu?' sorusu değil, 'daha fazla veri geldiğinde uygulanabilir kalıyor mu?' sorusu da sorulur. Yine de küçük bir örnekte adım sayısı üzerinden kesin bir performans sonucu çıkarmak doğru değildir; kullanılan yöntem, veri düzeni ve uygulama biçimi birlikte değerlendirilmelidir.

Algoritmanın verimli olması, hatalı sonucu hızlı vermesinden daha önemli değildir. Önce girdi koşulları ve tüm olası sonuçlar doğru tanımlanmalı, ardından zaman ve bellek açısından iyileştirme düşünülmelidir. Bir algoritmayı programlama dilinde düzenli parçalara ayırmak için fonksiyon kavramı da kullanılabilir.

Sık yapılan hatalar ve karıştırılan kavramlar

Algoritma yazarken en sık karşılaşılan sorunlar şunlardır:

  • Algoritmayı programla karıştırmak: Algoritma çözüm planıdır; program bu planın bir dilde yazılmasıdır.
  • Girdi ve çıktıyı belirtmemek: 'Sayıları işle' ifadesi hangi sayıların alınacağını ve ne üretileceğini açıklamaz.
  • Adım sırasını atlamak: Bir hesaplamada önce yapılması gereken işlemi sonra yazmak sonucu değiştirebilir.
  • Eşitlik ve sınır değerlerini unutmak: '50'yi geçerse başarılı' ile '50 veya üzerindeyse başarılı' aynı koşul değildir. İlkinde 50 dahil değilken ikincisinde dahildir.
  • Döngünün bitişini yazmamak: Her tekrarın hangi koşulda duracağı belirtilmezse algoritma tamamlanmayabilir.
  • Karar dallarından birini eksik bırakmak: İki sayının büyüğünü bulurken eşitlik durumu ele alınmazsa bazı girdilerde yanlış veya eksik çıktı oluşur.
  • Yöntem ile sonucu karıştırmak: 5, 2, 8, 1, 9 listesinin sıralı hâli 1, 2, 5, 8, 9'dur; fakat bu sonuç, karşılaştırmaların nasıl yapıldığını tek başına açıklamaz.
  • Her problemin algoritması vardır demek: Çözülebilir bir problem için algoritma tasarlanabilir; ancak çözülebilirlik varsayımı olmayan, belirsiz veya henüz çözüm yöntemi gösterilmemiş her problem için hazır bir algoritmanın bulunduğu söylenemez.

Bir algoritmayı kontrol etmek için önce örnek bir veriyle iz sürün, sonra sınır durumlarını deneyin. İki sayı için eşit değerleri, not için tam eşik değerini, döngü için ilk ve son tekrar koşulunu test etmek hataları erken ortaya çıkarır.

Formül

Algoritmanın tek bir evrensel başarı formülü yoktur. Verimlilik değerlendirmesinde çalışma süresi ve bellek kullanımı birlikte düşünülür; bir yöntemin daha az işlem yapması, kullandığı ek belleğin de ayrıca incelenmesi gerektiği anlamına gelir.

Günlük hayatta

Bir dolaptan belirli bir kitabı bulma süreci somut bir algoritma olarak kurulabilir: kitabın bulunduğu bölümü aç, ilk kitabın etiketini kontrol et, aranan kitap değilse bir sonraki kitaba geç, etiketi tekrar kontrol et, kitap bulunduğunda işlemi durdur. Örneğin aranan kitap 24. sıradaysa ilk kitaptan başlayarak sırayla ilerleyen yöntemde 24. kontrolde sonuç alınır; kitap rafta yoksa 'bulunamadı' sonucunun hangi kontrolden sonra verileceği ayrıca tanımlanmalıdır. Bu son adım, algoritmada bitiş koşulunun neden gerekli olduğunu gösterir.

Sınavda

TYT/AYT ve bilişim dersi sorularında önce başlangıç verisini, her adım sonrası güncel değeri ve karar koşulunu yaz. '50 ve üzeri' gibi eşik ifadelerinde eşitliğin dahil olup olmadığını kontrol et. Akış şeması sorularında başlangıç-bitiş, işlem, karar ve yön oklarının görevlerini ayır; bir algoritmanın doğru sonucu üretmesi için tüm olası dalların ve döngünün bitiş koşulunun verilmiş olması gerekir. Sözde kodu gerçek bir programlama diliyle karıştırma: soru çözüm planını istiyorsa dil bilgisi değil işlem sırası önemlidir.

Sık sorulan sorular

Algoritmanın mutlaka bilgisayarda çalışması gerekir mi?

Hayır. Algoritma, bir problemi çözmek veya bir amaca ulaşmak için hazırlanan adım adım plandır. Metin, sözde kod veya akış şeması biçiminde yazılabilir; bilgisayar programı ise bu planın bir programlama dilindeki uygulamasıdır.

Bir problem için yalnızca tek bir algoritma mı bulunur?

Hayır. Aynı problemi çözen birden fazla algoritma tasarlanabilir. Bu yöntemler aynı sonucu üretse bile işlem sayısı, çalışma süresi veya kullandığı bellek bakımından farklılaşabilir.

Algoritmada neden girdi ve çıktı yazılmalıdır?

Girdi, işlemin hangi veriyle başlayacağını; çıktı ise işlemin sonunda ne üretileceğini belirler. Bunlar belirtilmezse algoritmanın kapsamı ve başarı ölçütü belirsiz kalır.

Döngü ile koşul arasındaki fark nedir?

Koşul, bir durumun sonucuna göre farklı bir yola geçmeyi sağlar. Döngü ise belirli bir işlemi koşul sağlandığı sürece veya belirli tekrar sayısınca yürütür. Bir döngünün sona erme koşulu ayrıca belirtilmelidir.

Akış şeması algoritmanın kendisi midir?

Akış şeması, algoritmanın görsel olarak gösterim biçimidir. Aynı çözüm metinle veya sözde kodla da anlatılabilir. Önemli olan gösterim biçiminden bağımsız olarak adımların, kararların ve bitişin açık olmasıdır.

Bir algoritmanın doğru olduğunu nasıl kontrol edebilirim?

Önce normal bir örnek veriyle adımları tek tek izleyin. Ardından eşitlik, en küçük veya en büyük değer, boş veri ya da döngünün son tekrarı gibi sınır durumlarını deneyin. Her durumda beklenen çıktının üretildiğini kontrol edin.

Kaynaklar
SıradakiKod Nedir?