📘 0.1: Algoritma Nedir?

Algoritma Kavramı, Sözde Kod ve Akış Şemaları

📋 Ders Bilgileri

👨‍🏫 Veri Yapıları ve Algoritmalar

Öğretim Görevlisi: Güvenç Usanmaz

E-posta: guvencu@anadolu.edu.tr

Oda: 115

🎯 1. Algoritma Nedir ve Neden Önemlidir?

Bir algoritma (algorithm), belirli bir problemi çözmek için tanımlanmış sonlu, sıralı ve açık adımlar bütünüdür.

🍳 Benzetme: Bir algoritma, yemek tarifi gibidir:
  • Malzemeler (Girdiler): Algoritmanın işleyeceği veriler
  • Adımlar (İşlemler): Yapılacak sıralı işlemler
  • Sonuç (Çıktı): Elde edilen final değeri

📜 Köken (Etymology)

"Algoritma" kelimesi, 9. yüzyılda yaşamış Fars bilim insanı El-Harezmi (Al-Khwarizmi)'den gelir. Onun "Hisab al-jabr w'al-muqabala" adlı eseri cebir ve ondalık sistemin temelidir.

El-Harezmi'nin Latince ismi "Algoritmi" olarak yazılmış ve zamanla "algorithm" kelimesine dönüşmüştür.

❓ Neden Kritik Önemdedir?

Bilgisayar çok hızlıdır ama nasıl yapacağını bilmez; bunu algoritma belirler. Verimli algoritma, aynı problemi milyarlarca kat daha hızlı çözebilir!

Problem Yavaş Yöntem Hızlı Yöntem Fark
1'den n'e toplama Döngü ile: n adım Formül: n·(n+1)/2 (3 adım) Dev fark!
Arama O(n) - linear O(log n) - binary search 1.000.000 → 20 adım
Matris çarpımı O(n³) O(n².³⁷) AI ve GPU temeli
💡 Gauss'un Hikayesi: Genç Gauss'tan 1'den 100'e kadar sayıların toplamını bulması istendiğinde, sınıf arkadaşları tek tek toplarken Gauss hemen cevabı vermiştir: 5050. Çünkü formülü keşfetmişti: n × (n+1) / 2 = 100 × 101 / 2 = 5050

📝 2. Sözde Kod (Pseudocode)

Sözde kod, gerçek programlama diline yakın ama herhangi bir programlama diline bağımlı olmayan, insanların kolayca anlayabileceği adımlardır. Kodlamadan önce algoritmayı tasarlamak için kullanılır.

🎯 Sözde Kodun Avantajları:
  • Herhangi bir programlama dilinden bağımsız
  • İnsanlar tarafından kolayca okunabilir
  • Algoritmanın mantığına odaklanmayı sağlar
  • Kodlamadan önce planlama yapılmasını sağlar
  • Ekip içinde iletişimi kolaylaştırır

📌 Örnek: İki Sayının Toplamı

1. BAŞLA 2. a, b oku 3. toplam = a + b 4. toplam'ı yazdır 5. BİTİR

📌 Örnek: Dairenin Alanı

1. BAŞLA 2. π = 3.14 3. r oku (yarıçap) 4. alan = π × r × r 5. alan yazdır 6. BİTİR

📌 Örnek: Sayının Pozitif/Negatif Kontrolü

1. BAŞLA 2. sayi oku 3. EĞER sayi > 0 ise 4. "Pozitif" yazdır 5. DEĞİLSE EĞER sayi < 0 ise 6. "Negatif" yazdır 7. DEĞİLSE 8. "Sıfır" yazdır 9. BİTİR

📌 Örnek: 1'den N'e Kadar Toplam

1. BAŞLA 2. n oku 3. toplam = 0 4. i = 1 5. i ≤ n İKEN TEKRARLA: 6. toplam = toplam + i 7. i = i + 1 8. toplam yazdır 9. BİTİR
🔑 Sözde Kodda Kullanılan Anahtar Kelimeler:
  • BAŞLA / BİTİR: Algoritmanın başlangıç ve bitişi
  • OKU: Kullanıcıdan veri al
  • YAZDIR: Ekrana çıktı ver
  • EĞER / DEĞİLSE: Koşullu ifadeler (if / else)
  • İKEN TEKRARLA: Döngü (while)
  • İÇİN TEKRARLA: Döngü (for)

📊 3. Akış Şeması (Flowchart)

Akış şeması, algoritmanın grafiksel gösterimidir. Her şekil farklı bir işlevi temsil eder ve oklar ile bağlanarak akışın yönü gösterilir.

Oval (Elips)

Başla / Bitir

Dikdörtgen

İşlem / Hesaplama

Eşkenar Dörtgen

Karar (Evet/Hayır)

Paralel Kenar

Giriş / Çıkış

Ok

Akış Yönü

Daire

Bağlantı Noktası

📌 Örnek Akış Şemaları

İki Sayının Toplamı

flowchart TD A([BAŞLA]) --> B[/a, b oku/] B --> C[toplam = a + b] C --> D[/toplam yazdır/] D --> E([BİTİR])

Dairenin Alanı

flowchart TD A([BAŞLA]) --> B[π = 3.14] B --> C[/r oku/] C --> D[alan = π × r × r] D --> E[/alan yazdır/] E --> F([BİTİR])

Tek mi Çift mi Kontrolü

flowchart TD A([BAŞLA]) --> B[/n oku/] B --> C{n % 2 == 0 ?} C -->|Evet| D[/Çift yazdır/] C -->|Hayır| E[/Tek yazdır/] D --> F([BİTİR]) E --> F

Pozitif / Negatif / Sıfır Kontrolü

flowchart TD A([BAŞLA]) --> B[/sayi oku/] B --> C{sayi > 0 ?} C -->|Evet| D[/Pozitif yazdır/] C -->|Hayır| E{sayi < 0 ?} E -->|Evet| F[/Negatif yazdır/] E -->|Hayır| G[/Sıfır yazdır/] D --> H([BİTİR]) F --> H G --> H

1'den N'e Kadar Toplam (Döngü)

flowchart TD A([BAŞLA]) --> B[/n oku/] B --> C[toplam = 0, i = 1] C --> D{i ≤ n ?} D -->|Evet| E[toplam = toplam + i] E --> F[i = i + 1] F --> D D -->|Hayır| G[/toplam yazdır/] G --> H([BİTİR])
⚠️ Önemli: Akış şeması çizerken:
  • Tek giriş ve tek çıkış noktası olmalıdır
  • Oklar akışın yönünü net göstermelidir
  • Karar kutularından iki çıkış vardır: Evet ve Hayır
  • Tüm şekiller birbirine bağlı olmalıdır

🐍 4. Python ile İlk Adımlar

Bu derste Python programlama dilini kullanacağız. İşte bazı temel kavramlar:

Değişken Tanımlama

# Değişken tanımlama (variable)
x = 10
isim = "Ahmet"
pi = 3.14

Girdi ve Çıktı

# Girdi (input)
sayi = float(input("Bir sayı giriniz: "))

# Çıktı (output)
print("Girilen sayı:", sayi)

Aritmetik İşlemler

# Aritmetik işlemler (arithmetic operators)
a, b = 5, 2
print(a + b)   # Toplama: 7
print(a - b)   # Çıkarma: 3
print(a * b)   # Çarpma: 10
print(a / b)   # Bölme: 2.5
print(a // b)  # Tam bölme: 2
print(a % b)   # Kalan (mod): 1
print(a ** b)  # Üs alma: 25
🔑 Önemli Operatörler:
  • // → Tam bölme (ondalık kısmı atar)
  • % → Mod - Bölmeden kalan
  • ** → Üs alma (örn: 2**3 = 8)

📚 5. Kaynaklar ve Araçlar

🤖 Yapay Zeka Araçları

Programlama öğrenirken yapay zeka araçlarından yardım alabilirsiniz:

🤖
OpenAI - GPT

ChatGPT

🧠
Anthropic - Claude

Claude AI

x.ai - Grok

Grok AI

💎
Google - Gemini

Gemini AI

⚠️ Yapay Zeka Kullanım Tavsiyesi:
  • AI araçları yardımcı olarak kullanın, tüm işi onlara yaptırmayın
  • Önce kendiniz deneyin, takıldığınızda yardım isteyin
  • AI'ın verdiği kodu anlayarak kullanın
  • Sınav ve ödevlerde kurallara uyun

🖥️ Geliştirme Ortamları (IDE ve Editörler)

IDE Nedir?

IDE (Integrated Development Environment) = Tümleşik Geliştirme Ortamı

Kod yazma, çalıştırma, hata ayıklama (debugging) ve proje yönetimini tek bir programda birleştiren yazılımlardır.

IDE vs Editör Farkı:

  • Metin Editörü (Notepad, Sublime): Sadece kod yazmak için
  • Kod Editörü (VS Code): Syntax highlighting, otomatik tamamlama, eklentilerle genişletilebilir
  • IDE (PyCharm, Visual Studio): Editör + Debugger + Profiler + Test araçları + Veritabanı bağlantısı + Git entegrasyonu

🐍 PyCharm

  • JetBrains tarafından geliştirildi
  • Python için özelleştirilmiş
  • Community Edition ücretsiz
  • Güçlü refactoring araçları
PyCharm İndir

💻 VS Code

  • Microsoft tarafından geliştirildi
  • Hafif ve hızlı
  • Eklentilerle her dili destekler
  • Tamamen ücretsiz
VS Code İndir
📦 VS Code için Önerilen Eklentiler:
  • Python - Python dil desteği, debugging, linting
  • Pylance - Gelişmiş kod analizi ve otomatik tamamlama
  • GitHub Copilot - AI destekli kod önerileri (öğrencilere ücretsiz)
  • Code Runner - Tek tuşla kod çalıştırma
  • Python Debugger - Adım adım kod takibi

🐛 Debugging (Hata Ayıklama)

Debugging Nedir?

Kodunuzda hataları bulma ve düzeltme sürecidir. "Bug" (böcek) terimi, 1947'de Grace Hopper'ın bilgisayarda gerçek bir böcek bulmasından gelir!

🎯 Neden Debugging Öğrenmelisiniz?
  • Kodun nasıl çalıştığını anlama: Değişkenlerin değerlerini adım adım görebilirsiniz
  • Karmaşık kavramları kavrama: İç içe döngüler, recursion gibi konular debugging ile netleşir
  • Hataları hızlı bulma: print() eklemek yerine değişkenleri gerçek zamanlı izleyin
  • Profesyonel beceri: Her yazılım geliştiricinin bilmesi gereken temel yetkinlik

VS Code'da Debugging

  1. Breakpoint koyun: Satır numarasının soluna tıklayın (kırmızı nokta)
  2. Debug başlatın: F5 tuşu veya Run → Start Debugging
  3. Kontrol butonları:
    • Continue (F5): Sonraki breakpoint'e kadar çalıştır
    • Step Over (F10): Bu satırı çalıştır, fonksiyonun içine girme
    • Step Into (F11): Fonksiyonun içine gir
    • Step Out (Shift+F11): Fonksiyondan çık
  4. Variables paneli: Tüm değişkenlerin anlık değerlerini görün
  5. Watch paneli: Belirli ifadeleri takip edin

PyCharm'da Debugging

  1. Breakpoint: Satıra tıklayın veya Ctrl+F8
  2. Debug başlat: Shift+F9 veya böcek ikonuna tıklayın
  3. Debugger penceresi: Variables, Watches, Console sekmeleri
  4. Evaluate Expression: Alt+F8 ile herhangi bir ifadeyi hesaplayın
💡 Debugging İpucu:

İç içe döngülerde kafanız karıştığında, bir breakpoint koyup her adımda i ve j değişkenlerinin nasıl değiştiğini izleyin. Bu, trace table yapmaktan çok daha hızlı ve etkilidir!

🤖 Yapay Zeka ve Programlama Öğrenimi

AI Araçlarını Doğru Kullanma Rehberi

✅ Faydalı Kullanımlar:

  • Konu anlatımı: "Python'da for döngüsü nasıl çalışır?" diye sorun
  • Hata bulma: Kodunuzu yapıştırıp "Bu kodda hata nerede?" diye sorun
  • Kod açıklama: "Bu kod ne yapıyor?" diye sorun
  • Alternatif çözümler: "Bu problemi başka nasıl çözebilirim?"
  • Debugging yardımı: "Bu hata mesajı ne anlama geliyor?"

❌ Zararlı Kullanımlar:

  • Kod sıfırdan yazdırmak: Kendiniz yazmadan çözümü almak öğrenmenizi engeller
  • Ödev/sınav kopya: Etik dışı ve öğrenmenize zarar verir
  • Anlamadan kopyalamak: AI'ın verdiği kodu anlamadan kullanmak tehlikelidir
🎓 Programlama Öğrenmenin Altın Kuralı:

Programlama pratik yaparak öğrenilir! Kod yazmadan, sadece izleyerek veya okuyarak programcı olunmaz.

  • Her konuyu kendiniz kodlayın
  • Hata yapın, hataları düzeltin
  • Farklı yaklaşımlar deneyin
  • AI'ı sadece takıldığınızda kullanın

📋 Özet

Bu Derste Öğrendiklerimiz:
  1. Algoritma: Bir problemi çözmek için sonlu, sıralı ve açık adımlar
  2. Sözde Kod: Programlama dilinden bağımsız, okunabilir algoritma gösterimi
  3. Akış Şeması: Algoritmanın grafiksel gösterimi
  4. Python: Bu derste kullanacağımız programlama dili
  5. IDE ve Debugging: VS Code ve PyCharm ile kod geliştirme ve hata ayıklama