C EĞİTİMİ
C, 1972'de Dennis Ritchie tarafından geliştirildi ve 50 yıldır programlama dünyasının omurgasıdır. Linux, Windows, MacOS — hepsinin çekirdeği C ile yazılı. Mikrodenetleyiciler, gömülü sistemler, oyun motorları ve performans kritik kod hâlâ C ile yazılır. Diğer dillerin (C++, C#, Java, JavaScript) sözdizimleri çoğunlukla C'den miras alır. C bilmek programlamanın iskeletini bilmektir.
C Eğitimi, C dilini sıfırdan profesyonel düzeye katılımcıya kazandırır. Veri türleri, değişkenler ve operatörler, kontrol yapıları (if, switch, for, while), fonksiyonlar, diziler, karakter dizileri (string), işaretçiler (pointer) — C'nin en kritik özelliği, dinamik bellek (malloc, free), yapı (struct) ve birlik (union), dosya işlemleri, standart kütüphane (stdio, stdlib, string) ve önişlemci direktifleri işlenir.
C Eğitimi, gömülü sistem geliştiricileri, üniversite öğrencileri, sistem programlama yapan profesyoneller, oyun motoru geliştiricileri ve diğer dillere geçmeden temel atmak isteyenler için tasarlanmıştır. Eğitim sonunda katılımcı, C ile somut projeler geliştirebilir.
Ön Koşullar
C Eğitimi için ön koşul, temel programlama mantığına aşinalık olmaktır. Algoritma kavramlarını öğrenmiş profesyoneller için doğrudan uygulanabilir.
Kimler Katılmalı
- Gömülü Sistem Geliştiricileri: Mikrodenetleyici ve sistem yazılımı yapan profesyoneller
- Üniversite Öğrencileri: Bilgisayar ve elektronik mühendisliği öğrencileri
- Sistem Programlama Yapan Profesyoneller: Düşük seviyeli yazılım üretenler
- Oyun Motoru Geliştiricileri: Performans kritik kod yazan kadrolar
- Diğer Dillere Geçmek İsteyen Yeni Yazılımcılar: Temel atmak isteyen profesyoneller
- Linux Kernel Geliştiriciler: Açık kaynak sistem yazılımına katkı vermek isteyenler
- IoT Cihaz Geliştiricileri: Kısıtlı kaynaklı donanım için yazılım üretenler
Eğitim Yöntemi
Sunum, kod editörü üzerinde adım adım örnekler, pointer atölyesi, dinamik bellek egzersizi ve katılımcının kendi mini C projesi yazma pratiği ile yürür.
Kazanımlar
- Veri Türleri ve Operatörler: int, float, char, double bilinçli kullanımı
- Kontrol Yapıları: if, switch, for, while ile akış yönetimi
- Fonksiyon ve Diziler: Modüler kod ve veri yapıları
- İşaretçiler (Pointer): C'nin en güçlü ve riskli özelliği
- Dinamik Bellek: malloc, free ile bellek yönetimi
- Yapı (Struct) ve Birlik (Union): Karmaşık veri tipleri kurma
- Dosya İşlemleri: Standart kütüphane ile dosya okuma-yazma
Eğitim Süresi
4 Gün (32 Saat). Kurumsal talebe göre 3 günlük yoğun veya 5 günlük uygulamalı versiyon olarak planlanabilir.
C Eğitimi İçeriği
1. C Dilinin Tarihçesi ve Konumu
- Ritchie ve K&R kitabından bugüne C
- C standartları (C89, C99, C11, C17)
- Modern dillerle akrabalık ilişkisi
- Hangi sektörde hâlâ tercih edilir
2. Geliştirme Ortamı
- GCC, Clang derleyicileri
- VS Code ve Code::Blocks IDE
- Makefile temelleri
- Önişlemci, derleyici ve linker akışı
- Hata mesajlarını okuma alışkanlığı
3. Veri Türleri ve Değişkenler
- int, float, double, char temel tipler
- signed/unsigned ayrımı
- Sabitler ve typedef ile takma adlar
- Değişken kapsamı ve ömrü
4. Operatörler ve İfadeler
- Aritmetik, mantıksal ve bit operatörleri
- Atama ve karşılaştırma operatörleri
- Tip dönüşümleri (implicit ve explicit)
- Önbelleğe alınmış işlem sıralaması
5. Kontrol Yapıları
- if-else ve nested if
- switch-case yapısı
- for, while ve do-while döngüleri
- break, continue ve goto kullanımı
- Sonsuz döngü ve döngü tasarımı
6. Fonksiyonlar
- Fonksiyon prototipi ve tanımı
- Parametre geçişi (value ve reference)
- return ve void fonksiyonlar
- Rekürsif fonksiyonlar
- Modüler kod yazma alışkanlığı
7. Diziler (Array)
- Tek boyutlu dizi tanımı
- Çok boyutlu diziler
- Dizi-pointer ilişkisi
- Dizi üzerinde iterasyon
- Sabit boyut ve sınır kontrolü
8. Karakter Dizileri (Strings)
- Null karakter ile string sonlandırma
- string.h kütüphanesi fonksiyonları
- strcpy, strcat, strcmp kullanımı
- Güvenli string fonksiyonları
9. İşaretçiler (Pointer) Temelleri
- Pointer tanımı ve adres operatörü
- Dereferans (*) ile değer erişimi
- NULL pointer ve güvenlik
- Pointer aritmetiği
- Yaygın pointer hataları
10. İleri Pointer Konuları
- Pointer to pointer kullanım örnekleri
- Fonksiyon işaretçileri
- Pointer ile dizi geçişi
- void pointer ve generic veri
11. Dinamik Bellek Yönetimi
- malloc, calloc, realloc kullanımı
- free ile bellek serbest bırakma
- Memory leak ve dangling pointer
- Heap ve stack ayrımı
- Belleğe duyarlı kod alışkanlıkları
12. Yapı (struct) ve Birlik (union)
- Struct tanımı ve üye erişimi
- Nested struct ve struct array
- typedef ile struct yapısını sadeleştirme
- Union ile bellek paylaşımı
- Bit-field yapıları
13. Numaralandırma (enum) ve Sabitler
- enum tanımı ve okunabilirlik
- #define ile sembolik sabitler
- const anahtar kelimesi
- Karmaşık veri yapıları için kombinasyon
14. Dosya İşlemleri
- FILE pointer ve fopen modları
- fprintf, fscanf, fgets, fputs
- İkili (binary) dosya okuma yazma
- fseek, ftell ile dosya konumu
- Hata kontrolü ve fclose
15. Standart Kütüphane (stdlib, math)
- stdlib fonksiyonları (atoi, exit, qsort)
- math.h matematiksel fonksiyonlar
- time.h ile zaman işlemleri
- Rastgele sayı üretimi (rand, srand)
16. Önişlemci ve Makrolar
- #include, #define, #ifdef direktifleri
- Parametreli makrolar
- Header guard ile çoklu include koruması
- Makro vs inline fonksiyon dengesi
17. Çoklu Dosya Projeler
- Header ve source dosya organizasyonu
- Static ve extern değişkenler
- Linkleme ve modül yapısı
- Makefile ile büyük proje derleme
18. Hata Ayıklama ve Test
- printf-debugging ve assert
- GDB ile breakpoint kullanımı
- Valgrind ile bellek hatası tespiti
- Birim test yaklaşımları
19. Veri Yapıları ve Algoritma Uygulamaları
- Bağlı liste implementasyonu
- Yığın ve kuyruk yapıları
- Ağaç ve hash tablosu temelleri
- Temel sıralama algoritmaları
- Arama algoritmaları
20. Sistem Programlama Giriş
- Komut satırı argümanları (argc, argv)
- Sinyaller (signal handling)
- Fork ve process kavramları
- Düşük seviyeli I/O
- Gömülü sistem için C örnekleri





