Programlama Temelleri

1 - Programlamaya Giriş

Emre Can Yılmaz

Ondokuz Mayıs Üniversitesi

2024

Yazılım Nedir?

  • Bilgisayarın donanımını kontrol eden ve belirli görevleri yerine getirmesini sağlayan talimatlar kümesidir.
  • Bilgisayar oyunları, web tarayıcıları, ofis uygulamaları, işletim sistemleri gibi kullandığımız tüm uygulamalar yazılımlardan oluşur.

Yazılımın Önemi

Hayatımızın her alanında kullanılır ve modern toplumun vazgeçilmez bir parçası haline gelmiştir.

  • İletişim: İnternet, e-posta, sosyal medya…
  • Eğitim: Online eğitim platformları, eğitim yazılımları…
  • Sağlık: Tıbbi cihazlar, teşhis sistemleri…
  • Eğlence: Bilgisayar oyunları, film ve müzik platformları…
  • İş Dünyası: Muhasebe, stok yönetimi, müşteri ilişkileri…

Yazılımcı Kimdir?

  • Bilgisayar programları yazan kişidir.
  • Problemleri çözmek, ihtiyaçları karşılamak veya yeni olanaklar sunmak için yazılımlar geliştirirler.
  • Programlama dillerini, algoritmaları, veri yapıları gibi bilgisayar bilimi kavramlarını bilirler.

Bilgisayar Nasıl Çalışır?

Temel Parçalar:

  • İşlemci (CPU): Bilgisayarın merkezi işlem birimidir.
  • Bellek (RAM): İşlemcinin üzerinde çalıştığı tarifleri ve verileri tutar.
  • Depolama (Hard Disk, SSD): Programları ve verileri saklar.
  • Giriş/Çıkış Aygıtları: Bilgisayarla iletişim kurmamızı sağlayan araçlardır.

Programlama Dilleri

  • Bilgisayarlar sadece makine dilini anlar, bu dil 0 ve 1’lerden oluşan bir dizi talimattır.
  • İnsanlar için makine dilinde program yazmak oldukça zor olduğundan, programlama dilleri geliştirilmiştir.

Programlama Dilleri Neden Önemli?

  • İnsanlar için anlaşılabilir
  • Farklı platformlarda kullanılabilir
  • Verimli ve etkili

Kaynak Kod ve Derleme

  • Kaynak kod: Problemin çözümünü ilgili programlama dilinin sözcük ve kurallarıyla anlatan tarif.

  • MİB’nin (Mikro İşlemci Birimi) anladığı tek dil: Makine dili

  • Derleme (Compile): Kaynak kodun tamamını makine diline çevirme işlemidir. Çeviren yazılıma “Derleyici” denir.

  • Programın çalıştırılması: Kaynak kodla yapılan tarifin MİB’nin dilindeki talimatlara dönüştürülmesi ve tarifin hayata geçirilmesi.

Yüksek, Orta ve Düşük Seviyeli Diller

  • Yüksek seviyeli diller: İnsan diline daha yakın ve daha kolay öğrenilebilen dillerdir (örneğin: Python, Java, C#).
  • Orta seviyeli diller: Hem yüksek hem de düşük seviyeli özelliklere sahiptir (örneğin: C, C++).
  • Düşük seviyeli diller: Makine diline daha yakın olan ve daha fazla donanım kontrolü sağlayan dillerdir (örneğin: Assembly dili).

Algoritma: Düşünce Haritası Çizmek

  • Bir problemi çözmek veya bir görevi yerine getirmek için izlenecek adımların mantıksal ve sıralı bir şekilde düzenlenmiş hali.
  • Günlük hayatta farkında olmadan sürekli algoritmalar kullanırız.

Algoritma Örneği: En Kısa Yoldan Okula Gitmek

  1. Başlangıç Noktası: Eviniz
  2. Hedef: Okulunuz
  3. Seçenekler: Mevcut tüm yolları listeleyin…
  4. Hesaplama: Her yolun uzunluğunu ve süresini hesaplayın…
  5. Karşılaştırma: Hesaplanan süreleri karşılaştırın…
  6. Sonuç: En kısa yolu seçin…

Algoritmaların Önemi

  • Problemleri parçalara ayırır
  • Sistematik bir yaklaşım sunar
  • Hataları azaltır
  • Anlaşılırlığı artırır

Algoritmaların Özellikleri

Bir algoritmanın 5 temel özelliği şunlardır:

  1. Girdi (Input): Algoritma, sıfır veya daha fazla girdi almalıdır. Girdi, algoritmanın üzerinde işlem yapacağı verileri temsil eder.

  2. Çıktı (Output): Algoritma, en az bir çıktı üretmelidir. Çıktı, algoritmanın işlediği verilerin sonucunu temsil eder.

  3. Kesinlik (Definiteness): Algoritmanın her adımı açık, net ve anlaşılır olmalıdır. Her adımın ne yapacağı tam olarak belirtilmelidir.

  4. Sonluluk (Finiteness): Algoritma, sınırlı sayıda adımda tamamlanmalıdır. Sonsuz bir döngüye girmemelidir.

  5. Etkinlik (Effectiveness): Algoritmanın her adımı, temel işlemler kullanılarak gerçekleştirilebilir olmalıdır. Yani, her adım uygulanabilir olmalıdır.

Akış Şeması: Algoritmanın Görsel Rehberi

  • Algoritmaları görsel olarak temsil etmek için kullanılan diyagramlar.
  • Farklı şekiller ve semboller kullanır.

Akış Şeması Örneği: Şifre Kontrolü

graph TD
    A([Basla]) --> B[/"Sifreyi Gir"/]
    B --> C{"Sifre Dogru Mu?"}
    C -- Evet --> D["Sisteme Giris"]
    C -- Hayır --> E[/"Hata Mesaji"/]
    D --> F([Bitir])
    E --> F

Sözde Kod: Algoritmayı Anlatmak

  • Sözde Kod: Algoritmaları insan diline yakın bir şekilde ifade eden informal bir dil.
  • Programlama dilinin sözdizimine bağlı kalmadan, algoritmanın mantığını açıkça gösterir.

Örnek:

BAŞLA

   şifreGir  <-  Kullanıcıdan şifre al

   EĞER şifreGir  ==  doğruŞifre  ISE
      "Sisteme Hoş Geldiniz!" mesajını göster
   DEĞİLSE
      "Hatalı Şifre!" mesajını göster
   SON

BİTİR

Akış Şeması Sembolleri

  • Oval (Elips): Başlangıç ve bitiş.
  • Dikdörtgen: İşlem adımları.
  • Eşkenar Dörtgen: Karar noktaları (evet/hayır).
  • Paralelkenar: Giriş ve çıkış işlemleri.
  • Oklar: Akış yönü.

İki Sayıdan Büyük Olanı Bulma

graph TD
    A([Basla]) --> B[/"Sayi 1'i Gir"/]
    B --> C[/"Sayi 2'yi Gir"/]
    C --> D{Sayi 1 > Sayi 2?}
    D -- Evet --> E[/"Sayi 1 Buyuk"/]
    D -- Hayır --> F{Sayi 2 > Sayi 1?}
    F -- Evet --> G[/"Sayi 2 Buyuk"/]
    F -- Hayır --> H[/"Sayilar Esit"/]
    E --> I([Bitir])
    G --> I
    H --> I

C Programlama Diline Genel Bakış

  • 1972 yılında geliştirilmiş, güçlü ve esnek bir programlama dili.
  • Birçok modern programlama dilinin temelini oluşturmuştur.
  • Orta seviyeli bir dil: Hem yüksek seviyeli soyutlama hem de düşük seviyeli donanım kontrolü sağlar.

C Dilinin Özellikleri

  • Performans: Hızlı ve performanslı.
  • Esneklik: Farklı platformlarda ve amaçlar için kullanılabilir.
  • Kontrol: Donanım üzerinde daha fazla kontrol sağlar.
  • Taşınabilirlik: Farklı işletim sistemlerinde çalışabilir.

Dilinin Kullanım Alanları

  • Sistem Programlama
  • Gömülü Sistemler
  • Oyun Geliştirme

Geliştirme Ortamı

  • VS Code: Microsoft tarafından geliştirilen ücretsiz ve açık kaynak kodlu bir kod editörü.
  • C/C++ Eklentisi: VS Code’da C/C++ kodunu yazmak ve hata ayıklamak için kullanılır.
  • MinGW: Windows için bir C derleyicisi.

VS Code Kurulumu

  1. VS Code’u indirin ve yükleyin: code.visualstudio.com
  2. C/C++ eklentisini yükleyin.

MinGW Kurulumu

  1. MinGW’yi indirin: www.mingw-w64.org/downloads/
  2. MinGW’yi yükleyin ve ortam değişkenlerini ayarlayın.

VS Code Dokümanı: https://code.visualstudio.com/docs/cpp/config-mingw

Örnek C Kodu

merhaba.c adında bir dosya açın ve içerisine aşağıdaki kodu yazın.

#include <stdio.h>

int main() {
    printf("Merhaba Dünya!\n");
    return 0;
}

Son Olarak…

Yapay Zeka ve Yazılımcılık: Dost mu, düşmana mı?

  • Yapay zeka, belirli görevleri otomatikleştirme potansiyeline sahip.
  • Ancak, henüz insan yazılımcıların yaratıcılığını ve problem çözme becerisini tam olarak taklit edemiyor.

Yapay Zeka ve Yazılımcılık

  • Yapay zeka, yazılımcılar için bir fırsat olarak görülmeli.
  • Yapay zeka araçları, yazılımcıların daha verimli ve etkili bir şekilde çalışmasını sağlayabilir.
  • Yapay zeka alanında uzmanlaşmış yazılımcılara olan talep giderek artıyor.

Yapay Zeka ve Yazılımcılık

  • Yapay zeka yazılımcılığı bitirmiyor, dönüştürüyor.
  • Geleceğin yazılımcıları, yapay zeka araçlarını kullanabilen, karmaşık problemleri çözebilen ve yaratıcı çözümler üretebilen bireyler olacak.

Özet

  • Yazılım: Bilgisayarın donanımını kontrol eden ve belirli görevleri yerine getirmesini sağlayan talimatlar kümesi.
  • Yazılımcı: Bilgisayar programları yazan kişi.
  • Algoritma: Bir problemin çözümünde izlenecek adımların mantıksal ve sıralı bir şekilde düzenlenmiş hali.
  • Akış Şeması: Algoritmaları görsel olarak temsil eden diyagram.
  • C Programlama Dili: Genel amaçlı, orta seviyeli, güçlü ve esnek bir dil.
  • VS Code: C programlama için kullanabileceğiniz popüler bir kod editörü.
  • Yapay Zeka: Yazılımcılık mesleğini dönüştüren ve yeni fırsatlar sunan bir teknoloji.

Gelecek Hafta

  • C dilinin temel yapı taşları:
    • Değişkenler
    • Veri tipleri
    • Operatörler