AES Logo

1.1. Algoritma ve Temel Kavramlar

Algoritma: Bir problemi çözmek veya belirli bir görevi tamamlamak için izlenen açık, anlaşılır ve sıralı adımlardan oluşan kural ve işlemler bütünüdür.

Algoritma terimi, ünlü matematikçi Harizmi'nin adından türemiştir.

Algoritmik Doğal Dil

Algoritmanın adımlarını günlük dil kullanarak açıklayan yöntemdir.

Sözde Kod (Pseudo-code)

Programlama diline yakın, ancak herhangi bir dile bağlı olmayan, algoritmayı ifade eden metinsel gösterimdir.

Akış Şeması (Flowchart)

Algoritmanın adımlarını görsel sembollerle gösteren şemadır.

Örnek (Sözde Kod): İki sayının toplamını hesaplayan algoritma:

1. Başla
2. a ve b'yi oku
3. toplam = a + b
4. toplamı yaz
5. Bitir

1.2. Algoritmik Yapılar

Sıralı Yapı

Adımların belirli bir sıra ile takip edilmesidir.

Karar Yapısı (Koşul)

Belirli bir koşula göre farklı işlemlerin yapılmasıdır (Eğer - O halde).

Döngü Yapısı

Belirli bir koşul sağlandığı sürece işlemlerin tekrarlanmasıdır.

Karar Yapısı Örneği:

1. Başla
2. sayıyı oku
3. Eğer sayı > 0 ise:
      "Pozitif" yaz
    Değilse:
      "Negatif" yaz
4. Bitir

Döngü Örneği: 1'den 10'a kadar sayıların toplamı:

1. Başla
2. toplam = 0, i = 1
3. i ≤ 10 olduğu sürece tekrarla:
      toplam = toplam + i
      i = i + 1
4. toplamı yaz
5. Bitir

1.3. Mantık Bağlaçları

Mantık bağlaçları, birden fazla koşulu birleştirerek karar yapılarında kullanılır.

BağlaçSembolAçıklama
Veİki veya daha fazla koşulun hepsi doğru ise sonuç doğrudur.
VeyaKoşullardan en az biri doğru ise sonuç doğrudur.
Ya daİki koşuldan yalnızca biri doğru ise sonuç doğrudur.
İseBir koşul sağlanıyorsa belirli bir sonucun gerçekleşeceğini ifade eder.
Ancak ve Ancakİki koşul birbirine bağlıdır, aynı doğruluk değerine sahiptir.

Örnek: Bir sayının 6'ya bölünebilmesi için "sayı 2'ye bölünür ve sayı 3'e bölünür" koşulu (∧) kullanılır.

1.4. Niceleyiciler

Niceleyiciler, matematiksel ifadelerde genelleme veya özelleştirme yapmak için kullanılır.

Örnek: "Her çift sayı 2 ile tam bölünür" ifadesinde ∀ niceleyicisi vardır.

∀x ∈ Z, (x çift ⇒ 2 | x)

1.5. Algoritmalarda ve İspatlarda Mantık Bağlaçları ve Niceleyiciler

Mantık bağlaçları, algoritmalarda karar noktalarını belirlemek ve farklı durumlar arasında geçişi kontrol etmek için kullanılır.

Niceleyiciler, matematiksel ifadelerde genelleme veya özelleştirme yapmak için kullanılır.

Bir ispatta adımlar mantık bağlaçları ile birleştirilir ve sonucun doğruluğu sağlanır.

Örnek (İspat): "Bir sayı 6 ile bölünüyorsa 2 ile de bölünür."

∀n ∈ Z, (6 | n ⇒ 2 | n) (Her n için, 6 bölünüyorsa 2 de bölünür.)

1.6. Karşılaştırma Operatörleri

Algoritmalarda koşulları kontrol ederken kullanılan operatörler:

Örnek: Eğer sayı > 0 ise "pozitif" yaz.

1.7. Önemli Algoritma Örnekleri

Eratosthenes Kalburu

Belirli bir sayıya kadar olan asal sayıları bulma algoritması.

Deneme Bölme Algoritması

Bir sayının asal çarpanlarını bulma algoritması.

Kadane Algoritması

Bir dizideki ardışık elemanların maksimum toplamını bulma algoritması.

Diffie-Hellman Anahtar Değişimi

Kriptografide güvenli iletişim için kullanılan algoritma.

Eratosthenes Kalburu (Sözde Kod):

1. Başla
2. n'yi oku
3. asal[2..n] dizisini True yap
4. i = 2'den √n'ye kadar:
      Eğer asal[i] True ise:
          j = i²'den n'ye kadar i adım:
              asal[j] = False
5. i = 2'den n'ye:
      Eğer asal[i] True ise: yaz i
6. Bitir

1.8. Akış Şeması Sembolleri

Akış şemasında kullanılan temel semboller ve anlamları:

SembolAnlamı
Oval (Başla/Bitir)Algoritmanın başlangıcını veya sonunu gösterir.
ParalelkenarVeri girişi veya çıktıyı temsil eder.
Dikdörtgenİşlem yapmak için kullanılır.
Eşkenar Dörtgen (Karar)Koşul kontrol edilir, akış iki veya daha fazla yola ayrılır (Evet/Hayır).
OkAkış yönünü gösterir.

Örnek (Karar Sembolü Kullanımı): Bir sayının pozitif/negatif olduğunu kontrol eden akış şemasında eşkenar dörtgen kullanılır.