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:
- Decomposition (Parçalama): Karmaşık bir problemi daha küçük ve yönetilebilir parçalara ayırmak.
- Abstraction (Soyutlama): Problemle ilgisiz detayları kaldırarak, önemli bilgilere odaklanmak.
- Pattern Recognition (Örüntü Tanıma): Parçalar arasındaki benzerlikleri ve tekrar eden yapıları belirlemek.
- 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 öğ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 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:
- Pseudocode: İngilizce ve Türkçe ifadelerle yazılmış, kodlama diline yakın bir anlatım.
- 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ı
- Başla
- Girdi: 10 sayılık listeyi al
- İşlem:
CurrentMax = listenin ilk elemanı
- İşlem:
Index = 2
- Karar:
Index ≤ 10
ise devam et, değilse 8. adıma git- Evet:
- Karar:
CurrentMax < liste[Index]
ise- Evet:
CurrentMax = liste[Index]
- Evet:
- İşlem:
Index = Index + 1
-
- adıma dön
- Karar:
- Hayır:
- Çıktı:
CurrentMax
değerini yazdır
- Çıktı:
- Evet:
- 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.