← Konulara dön

Algorithms and Pseudocodes

Algorithms and Programming

Günümüzde algoritmalar ve programlama, teknolojinin gelişmesiyle daha da önemli hale geldi. Algoritmalar, bir problemi çözmek için izlenecek adımların net ve belirli bir şekilde tanımlanmasıdır. Bu makalede, algoritmaları anlamak için "Hesaplamalı Düşünme (Computational Thinking)" kavramını ve bunu uygulamada kullanmanın iki yöntemi olan Pseudocode ve Akış Diyagramları (Flowcharts) üzerinde duracağız.

Algoritma ve Hesaplamalı Düşünme

Hesaplamalı Düşünme, karmaşık problemleri çözmek için kullanılan bir yöntemdir ve dört ana bileşeni vardır:

  1. Decomposition (Parçalama): Karmaşık bir problemi daha küçük ve yönetilebilir parçalara ayırmak.
  2. Abstraction (Soyutlama): Problemle ilgisiz detayları kaldırarak, önemli bilgilere odaklanmak.
  3. Pattern Recognition (Örüntü Tanıma): Parçalar arasındaki benzerlikleri ve tekrar eden yapıları belirlemek.
  4. Algorithm Design (Algoritma Tasarımı): Problemi çözmek için adım adım talimatlar oluşturmak.

Örnek: Sınıftaki En Yüksek Notu Bulma

Bir sınıfta 1616 öğrenci olduğunu düşünelim ve amacımız en yüksek notu alan öğrenciyi bulmak olsun. İşte bu dört adımı nasıl uygulayabileceğimize bakalım:

1. Decomposition (Parçalama)

Problemi daha küçük parçalara ayırırız:

  • Öğrencileri ikişerli gruplara böleriz.
  • Her grupta öğrenciler kendi aralarında notlarını karşılaştırır.
  • Düşük not alan elenir, yüksek not alan bir sonraki tura geçer.
  • Bu işlem, tek bir öğrenci kalana kadar devam eder.

2. Abstraction (Soyutlama)

Gereksiz detayları kaldırırız:

  • Öğrencilerin isimleri, cinsiyetleri veya diğer özellikleri yerine sadece notlarına odaklanırız.
  • Öğrencileri birer sayı olarak düşünürüz, böylece problem 1616 sayının en büyüğünü bulmaya indirgenir.

3. Pattern Recognition (Örüntü Tanıma)

Parçalar arasındaki benzerlikleri belirleriz:

  • Her turda kalan öğrenci sayısının yarıya indiğini fark ederiz.
  • Bu bir divide and conquer (böl ve fethet) stratejisidir.

4. Algorithm Design (Algoritma Tasarımı)

Problemi çözmek için adım adım talimatlar oluştururuz:

  • Öğrencileri gruplandır, karşılaştır, elenenleri çıkar ve kazananları bir sonraki tura aktar.
  • Bu adımları tekrarla.

Algoritma Tasarımının Yöntemleri

Algoritmalarımızı ifade etmek için iki ana yöntem kullanabiliriz:

  1. Pseudocode: İngilizce ve Türkçe ifadelerle yazılmış, kodlama diline yakın bir anlatım.
  2. Akış Diyagramları (Flowcharts): Şekiller ve semboller kullanarak algoritmanın görsel bir temsilini sunar.

Pseudocode Nedir?

Pseudocode, bir algoritmanın nasıl çalıştığını anlatmak için kullanılan yarı kod, yarı doğal dil karışımı bir yöntemdir. Kodlama bilgisi olsun veya olmasın, herkesin anlayabileceği bir formattır.

Örnek: En Büyük Sayıyı Bulma

On tane sayı içerisinden en büyüğünü bulmak için bir pseudocode örneği:

Input: 10 tane sayıdan oluşan bir liste al
CurrentMax = listenin ilk elemanı

For index = 2 to 10
    Eğer CurrentMax < liste[index] ise
        CurrentMax = liste[index]
    Son
Son

Print CurrentMax

Akış Diyagramları (Flowcharts)

Akış diyagramları, algoritmanın adımlarını görsel olarak temsil eder. Kullanılan temel semboller:

  • Başlangıç/Bitiş (Terminal): Elips şeklinde gösterilir.
  • İşlem (Process): Dikdörtgen ile temsil edilir, işlemleri gösterir.
  • Girdi/Çıktı (Input/Output): Parmağı kesik dikdörtgen (paralelkenar) ile gösterilir.
  • Karar (Decision): Elmas şekliyle gösterilir, karar noktalarını ifade eder.
  • Akış Çizgileri (Flow Lines): Oklarla adımların sırasını belirtir.

Örnek: En Büyük Sayıyı Bulma Akış Diyagramı

  1. Başla
  2. Girdi: 10 sayılık listeyi al
  3. İşlem: CurrentMax = listenin ilk elemanı
  4. İşlem: Index = 2
  5. Karar: Index ≤ 10 ise devam et, değilse 8. adıma git
    • Evet:
      • Karar: CurrentMax < liste[Index] ise
        • Evet: CurrentMax = liste[Index]
      • İşlem: Index = Index + 1
        1. adıma dön
    • Hayır:
      • Çıktı: CurrentMax değerini yazdır
  6. Bitir

Akış Diyagramı Sembolleri ve Anlamları

  • Başla/Bitir: Algoritmanın başlangıç ve bitiş noktalarını belirtir.
  • Girdi/Çıktı: Veri almak veya sonuçları yazdırmak için kullanılır.
  • İşlem: Değişken atamaları ve diğer işlemler için kullanılır.
  • Karar: Koşullu ifadeleri temsil eder, "Evet" veya "Hayır" dallanmaları oluşturur.
  • Akış Çizgileri: Adımlar arasındaki geçişleri gösterir.

Sonuç

Algoritmalar, problemleri sistematik ve verimli bir şekilde çözmemizi sağlar. Hesaplamalı Düşünme, bu süreçte bize yardımcı olan bir yaklaşımdır. Pseudocode ve Akış Diyagramları, algoritmalarımızı planlamada ve iletişimde etkili araçlardır. Bu yöntemleri kullanarak, karmaşık problemleri daha anlaşılır ve yönetilebilir hale getirebiliriz.

Unicourse ile sınavlardan istediğin notları al.

Türkiye'nin en iyi üniversitelerinden 20.000'den fazla öğrenci sınavlarına Unicourse ile hazırlanıyor. Sen de aramıza katıl.