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
- Başlangıç Noktası: Eviniz
- Hedef: Okulunuz
- Seçenekler: Mevcut tüm yolları listeleyin…
- Hesaplama: Her yolun uzunluğunu ve süresini hesaplayın…
- Karşılaştırma: Hesaplanan süreleri karşılaştırın…
- 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:
Girdi (Input): Algoritma, sıfır veya daha fazla girdi almalıdır. Girdi, algoritmanın üzerinde işlem yapacağı verileri temsil eder.
Çıktı (Output): Algoritma, en az bir çıktı üretmelidir. Çıktı, algoritmanın işlediği verilerin sonucunu temsil eder.
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.
Sonluluk (Finiteness): Algoritma, sınırlı sayıda adımda tamamlanmalıdır. Sonsuz bir döngüye girmemelidir.
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ü
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
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.
Ö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;
}
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