Hoş geldiniz! Bu repo, C programlama diline yeni başlayanlar için hazırlanmış kapsamlı bir rehberdir.
C, 1972 yılında Dennis Ritchie tarafından Bell Laboratuvarlarında geliştirilen, güçlü ve esnek bir programlama dilidir. Düşük seviyeli bellek erişimi ile yüksek seviyeli programlama özelliklerini bir araya getiren C, bugün hala en popüler dillerden biridir.
- Temel Dil: C++, Java, C# gibi birçok modern dilin temelini oluşturur
- Performans: Donanıma yakın çalıştığı için son derece hızlıdır
- Bellek Kontrolü: Bellek yönetimini tam anlamanızı sağlar
- Yaygın Kullanım: İşletim sistemleri (Linux, Windows), gömülü sistemler, oyun motorları
- İş Fırsatları: Embedded, IoT, sistem programlama alanlarında yüksek talep
İşletim Sistemleri:
- Linux çekirdeği tamamen C ile yazılmıştır
- Windows'un büyük bir kısmı C ile geliştirilmiştir
- macOS'un temelindeki Unix sistemi C ile yazılmıştır
Gömülü Sistemler:
- Arduino programlama
- Mikrodenetleyiciler
- IoT cihazları
- Otomotiv sistemleri
Oyun ve Grafik:
- Oyun motorlarının temel katmanları
- OpenGL ve DirectX gibi grafik kütüphaneleri
- Yüksek performans gerektiren uygulamalar
Veritabanları:
- MySQL
- PostgreSQL
- Redis
Avantajlar:
- Çok hızlı çalışır
- Küçük boyutlu programlar üretir
- Donanım kontrolü sağlar
- Taşınabilir (portable) kod yazabilirsiniz
- Zengin kütüphane desteği
Dezavantajlar:
- Bellek yönetimi manuel yapılır (malloc/free)
- Hata ayıklama zor olabilir
- Güvenlik açıklarına (buffer overflow) dikkat etmek gerekir
- Nesne yönelimli programlama özelliği yoktur
MinGW, Windows'ta GCC derleyicisini kullanmanızı sağlar.
Kurulum Adımları:
- MinGW-w64 adresinden indirin
- Kurulum sırasında Architecture: x86_64 seçin
- Kurulum tamamlandıktan sonra PATH'e ekleyin:
- Windows Ayarları → Sistem → Gelişmiş sistem ayarları
- Ortam Değişkenleri → Path → Yeni
C:\mingw-w64\mingw64\bin
ekleyin
Test:
gcc --version
Başlangıç için ideal bir IDE'dir, içinde derleyici bulunur.
- Code::Blocks adresinden "mingw" içeren versiyonu indirin
- Kurulumu tamamlayın
- Yeni proje: File → New → Project → Console Application
Daha profesyonel bir editör için VS Code kullanabilirsiniz.
Gerekli Eklentiler:
- C/C++ (Microsoft)
- Code Runner
- C/C++ Compile Run
Ayarlar:
- VS Code'u açın
- Extensions → "C/C++" ara ve yükle
- MinGW'yi PATH'e eklediğinizden emin olun
# GCC ve gerekli araçları yükle
sudo apt update
sudo apt install build-essential
# GDB debugger
sudo apt install gdb
# Kurulumu kontrol et
gcc --version
make --version
gdb --version
# Geliştirme araçlarını yükle
sudo dnf groupinstall "Development Tools"
sudo dnf install gcc gdb make
# Kurulumu kontrol et
gcc --version
# Base-devel paketi
sudo pacman -S base-devel
# Kurulumu kontrol et
gcc --version
# Komut satırı araçlarını yükle
xcode-select --install
# Kurulumu kontrol et
gcc --version
clang --version
# Homebrew yoksa önce yükleyin
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# GCC yükle
brew install gcc
# Kurulumu kontrol et
gcc-13 --version # Versiyon numarası değişebilir
İnternet üzerinden hızlıca kod test etmek için:
1. OnlineGDB
- URL: https://www.onlinegdb.com/
- Özellikleri: Debugger, kod paylaşımı
- Ücretsiz ve hızlı
2. Repl.it
- URL: https://replit.com/
- Özellikleri: Gerçek zamanlı işbirliği, proje kaydetme
- Hesap oluşturma gerekiyor
3. Programiz
- URL: https://www.programiz.com/c-programming/online-compiler/
- Özellikleri: Basit ve temiz arayüz
- Hızlı test için ideal
4. Compiler Explorer
- URL: https://godbolt.org/
- Özellikleri: Assembly kodunu gösterir
- İleri seviye öğrenme için harika
Yeni Başlıyorsanız:
- Windows: Code::Blocks (kolay kurulum)
- Linux/Mac: Terminal + nano/vim (klasik yöntem)
- Herhangi bir platform: OnlineGDB (kurulum gerektirmez)
Biraz Deneyim Kazandıktan Sonra:
- Visual Studio Code (tüm platformlar için önerilen)
- Terminal + GCC (profesyonel yaklaşım)
- Veri (Data): sayı, metin, görüntü gibi ham bilgilerin temsilidir.
- İşlenmedikçe bilgiye dönüşmez.
- Kaydedilen veya ölçülen değerlerdir.
- Bellekte belli bir alanı işgal eden ve isimlendirilmiş bilgi.
- Programlarda giriş/çıkış işlemleri için kullanılır.
Tanımlama Örneği | Example:
int sayi; // tamsayı | integer
float pi; // ondalıklı sayı | float
char harf; // tek karakter | character
C’de atama için =
operatörü kullanılır. | In C, the =
operator is used for assignment.
#include <stdio.h>
int main() {
int sayi;
sayi = 42;
printf("sayi değişkeninin değeri: %d\n", sayi);
return 0;
}
- Harf veya
_
ile başlamalıdır. | Must start with a letter or_
. - Türkçe karakterler kullanılmaz. | No Turkish letters allowed.
- Büyük/küçük harf farklıdır. | Case-sensitive.
- Anahtar kelimeler kullanılamaz. | Keywords cannot be used.
- camelCase →
ortalamaNot
|averageGrade
- PascalCase →
OrtalamaNot
|AverageGrade
- snake_case →
ortalama_not
|average_grade
- int → tam sayı (
%d
) | integer - float → ondalıklı sayı (
%f
) | floating-point - double → daha hassas ondalıklı sayı (
%lf
) | double precision - char → tek karakter (
%c
) | single character - string (char array) → metin (
%s
) | string - void → dönüş değeri olmayan fonksiyon | no return type
int sayi = 42;
printf("Bu bir tam sayıdır: %d\n", sayi);
float pi = 3.14159;
printf("Pi sayısı: %f\n", pi);
double ciftHassasSayi = 3.141592653589793;
printf("Çift Hassas Sayi: %.11lf\n", ciftHassasSayi);
char karakter = 'A';
printf("Karakter: %c\n", karakter);
Bellekte kaplanan alanı gösterir | Shows memory size:
printf("int: %d bayt\n", sizeof(int));
printf("short: %d bayt\n", sizeof(short));
#include <stdio.h>
int main() {
float sayi;
printf("Bir sayı giriniz: ");
scanf("%f", &sayi);
printf("Girilen sayı: %f\n", sayi);
return 0;
}
- Veri → Ham bilgi | Data → Raw information
- Değişken → Bellekte isimlendirilmiş bilgi alanı | Variable → Named memory space
- Veri Tipleri → int, float, double, char, string | Data Types → int, float, double, char, string
- Giriş/Çıkış İşlemleri →
printf()
,scanf()
| I/O Operations →printf()
,scanf()
- Kodlama kültürü → camelCase, PascalCase, snake_case | Coding style → camelCase, PascalCase, snake_case
En klasik başlangıç programı:
#include <stdio.h>
int main() {
printf("Merhaba Dünya!\n");
return 0;
}
Kod Açıklaması:
#include <stdio.h>
: Standart girdi/çıktı kütüphanesini dahil ederint main()
: Programın başlangıç noktasıprintf()
: Ekrana yazı yazdırır\n
: Yeni satır karakterireturn 0
: Programın başarıyla sonlandığını belirtir
# Derleme
gcc merhaba.c -o merhaba.exe
# Çalıştırma
merhaba.exe
# Derleme
gcc merhaba.c -o merhaba
# Çalıştırma
./merhaba
- Build → Build (F9)
- Build → Run (Ctrl+F10)
- Dosyayı kaydedin (Ctrl+S)
- Terminal → New Terminal
- Yukarıdaki komutları kullanın
#include <stdio.h>
int main() {
char isim[50]; // 50 karakterlik dizi
printf("Adınızı girin: ");
scanf("%s", isim);
printf("Merhaba %s! Hoş geldin.\n", isim);
return 0;
}
Çıktı:
Adınızı girin: Ahmet
Merhaba Ahmet! Hoş geldin.
#include <stdio.h>
int main() {
int sayi1, sayi2, toplam;
printf("İki sayı girin: ");
scanf("%d %d", &sayi1, &sayi2);
toplam = sayi1 + sayi2;
printf("%d + %d = %d\n", sayi1, sayi2, toplam);
return 0;
}
Çıktı:
İki sayı girin: 5 8
5 + 8 = 13
1. "stdio.h: No such file or directory"
- Çözüm: GCC doğru kurulmamış, kurulumu kontrol edin
2. "undefined reference to 'main'"
- Çözüm:
main()
fonksiyonunu tanımlayın
3. Türkçe karakterler görünmüyor
#include <stdio.h>
#include <locale.h>
int main() {
setlocale(LC_ALL, "Turkish");
printf("Türkçe karakterler: ğüşıöç\n");
return 0;
}
4. scanf sonrası program kapanıyor
getchar(); // Enter tuşunu bekler
Aşağıdaki programları kendiniz yazmayı deneyin:
- İki sayının ortalamasını hesaplayan program
- Kullanıcının girdiği sayının tek mi çift mi olduğunu bulan program
- Dikdörtgenin alanını ve çevresini hesaplayan program
- Kullanıcının girdiği üç sayıdan en büyüğünü bulan program
- Basit bir not ortalaması hesaplayıcı
Sonraki Adımlar: Temel kavramları öğrendikten sonra değişkenler, operatörler ve kontrol yapılarına geçebilirsiniz. İyi çalışmalar! 🚀