1 - Algoritma ve Programlamaya Giriş
Algoritma, belirli bir problemi çözmek veya belirli bir işi yapmak için atılması gereken adımları (yönlendirilmiş talimatlar) içeren bir reçetedir. Algoritmanın özellikleri:
- Sonlu adımlardan oluşur (sonsuz döngü değil).
- Belirli bir başlangıç ve bitişi vardır.
- Her adım açık ve kesin olmalıdır.
- Girdiye bağlı olarak çıktı üretir.
Günlük hayattan örnek: Ekmek kızartma algoritması — ekmeği makineye koy, süreyi ayarla, düğmeye bas, hazırsa çıkar.
Aynı problemi farklı algoritmalarla çözebilirsiniz; bazıları daha hızlı, bazıları daha az bellek kullanır. Karmaşık problemleri küçük, anlaşılır parçalara (adımlara) bölmeye yardımcı olur.
Programlama, bir algoritmayı bilgisayarın anlayacağı dile (programlama dili) çevirme işlemidir. Programlama dilleri: Python, C, Java, JavaScript, vb. Her dilin sözdizimi (syntax) farklı olsa da mantık çoğunlukla aynıdır. Bu aşamada derleyici ve yorumlayıcı kavramlarını da açıklamak da fayda var.
Derleyici, yazdığınız programın tamamını bir defada alıp, bilgisayarın anlayacağı dile (makine dili) çeviren yazılımdır.
- Önce Kaynak kod yazılır.(ör. C, C++)
- Derleyici tüm kodu baştan sona inceler
- Hata varsa derleme aşamasında bildirir
- Hata yoksa çalıştırılabilir bir dosya (.exe gibi) üretir
- Bu dosya daha sonra defalarca çalıştırılabilir
Günlük hayattan benzetme: Önce kitabın tamamı basılır (derlenir), sonra isteyen herkes kitabı okuyabilir (çalıştırır).
Derleyici kullanan dillere örnek: C, C++, Rust, Go
Avantajları: Çok hızlı çalışır, Performansı yüksektir, Kod gizlidir (kaynak kod dağıtılmaz)
Dezavantajları: Derleme süresi gerekir, Küçük bir değişiklikte tekrar derleme gerekir
Yorumlayıcı, programı satır satır okur, çevirir ve anında çalıştırır.
- Kaynak kod satırı okunur
- O satır çevrilir
- Hemen çalıştırılır
- Sonraki satıra geçilir
Günlük hayattan benzetme: Canlı çeviri gibi, Konuşma devam ederken çevirmen anında çevirir ve söyler.
Yorumlayıcı kullanan dillere örnek: Python, JavaScript, PHP, Ruby
Avantajları: Öğrenmesi ve denemesi kolay, Anında sonuç görülür, Hızlı geliştirme
Dezavantajları: Derlenmiş dillere göre daha yavaş, Kaynak kod gizlenmez
Bazı diller hem derleyici hem yorumlayıcı özellik taşır. Java, Python gibi