Bu repo, C programlama dili üzerine hazırlanmış bir rehberdir. Temel konulardan ileri düzey uygulamalara kadar adım adım ilerleyen örneklerle, C programlama dilini öğrenme sürecinizi kolaylaştırmayı amaçlamaktayım.
🎯 Hedef Kitle
-
C diline yeni başlayan öğrenciler
-
C programlama dilini öğrenmek isteyen herkes
-
Gömülü sistem uygulamalarında algoritma geliştirmeyi ve programlamaya ilgi duyan tüm geliştiriciler.
C Programlama Dili Konu Anlatımı - 1 Videosu "Değişkenler ve Veri Tipleri, Operatörler, Karar Yapıları if ve if-else" :> https://youtu.be/uJD-iz-rm0Q
C Programlama Dili Konu Anlatımı - 2 Videosu "Karar Yapıları (if-else, switch-case), Döngüler (for, while, do-while)" :> https://youtu.be/rb-bJ6QTJ0Q
C Programlama Dili Konu Anlatımı - 3 Videosu "Fonksiyonlar, Diziler, C Programlama Dili Kütüphaneleri" :> https://youtu.be/JiQepEhOqw0
C Programlama Dili Konu Anlatımı - 4 Videosu "C Programlama Dilinde Örnekler" :> https://youtu.be/YQOnF7YSk0c
C Programlama Dili Konu Anlatımı - 5 Videosu "C Programlama Dilinde Örnekler" :> https://youtu.be/xrkYyULonas
C Programlama Dili Konu Anlatımı - 6 Videosu "C Programlama Dilinde Örnekler" :> https://youtu.be/wIywm4H-j20
Bilgisayarda Programlama C Dili Soru Çözüm Videosu :> https://youtu.be/KAMBb57Damw
- C Nedir?
-> Yüksek seviyeli, makine diline yakın, hızlı ve verimli bir programlama dilidir.
- C Programlama Dili Nerelerde Kullanılır?
-> İşletim sistemleri (Linux, Windows'un çekirdek işlem bölümleri), gömülü sistemler, algoritma geliştirme, donanım sürücüleri.
- Hangi C Derleyicisi Kullanılacaktır?
-> DevC++ Derleyicisinin "Dev-Cpp 5.11 TDM-GCC 4.9.2" versiyonu kullanılarak kodlar çalıştırılacaktır.
DevC++ "Dev-Cpp 5.11 TDM-GCC 4.9.2" sürümünü SourceForge bağlantısından indirebilirsiniz.
• İlk C Programı:
#include <stdio.h>
int main()
{
printf("Merhaba Hayat");
}
2.1 Yorum Satırları
// Tek satırlık yorum
/*
Çok satırlı
yorum
*/
2.2 Değişkenler ve Veri Tipleri (int, float, double, char)
int yas = 25;
float sicaklik = 36.5;
char harf = 'A';
#define PI 3.14
const int GUN_SAYISI = 7;
2.3 C dilinde Veri Formatlama Kuralları
C programlama dilinde veri formatlama kuralları, özellikle giriş/çıkış ( printf() ve scanf() ) fonksiyonlarında doğru veri tipinin doğru biçimde işlenmesini sağlamak açısından büyük önem taşır.
- Doğru Tipte Veri Gösterimi Sağlar
- Hatalı Çıktı ve Bellek Sorunlarını Önler
- Derleyiciye Tip Hakkında Bilgi Verir
- Kullanıcıya Anlamlı Çıktı Sunar
- Programlama Platformuna Bağımlı Olmadan Standartlaşma Sağlar
Sembol | Anlamı / Görevi | Örnek Kullanım | Açıklama |
---|---|---|---|
\n |
Yeni satıra geçer | printf("Merhaba\nHayat"); |
"Merhaba" ve "Hayat" ayrı satırlarda yazılır. |
\t |
Sekme (tab) boşluğu ekler | printf("Ad:\tAli"); |
"Ad:" ve "Ali" arasında sekme boşluğu olur. |
\\ |
Ters eğik çizgi (\ ) karakteri yazar |
printf("C:\\Program Files\\"); |
Çift \\ ile gerçek \ karakteri yazılır. |
\" |
Çift tırnak işareti yazar | printf("Ali \"hocam\" dedi."); |
Çıktı: Ali "hocam" dedi. |
%d |
Tam sayı (integer) yazdırır | printf("Yaş: %d", 30); |
%d yerine 30 yazılır. |
%f |
Ondalıklı sayı (float) yazdırır | printf("Ortalama: %.2f", 87.456); |
Virgülden sonra 2 basamak gösterilir. |
%s |
Metin (string) yazdırır | printf("Ad: %s", "Ali"); |
"Ad: Ali" olarak çıktı verir. |
%c |
Tek karakter yazdırır | printf("Harf: %c", 'A'); |
"Harf: A" olarak çıktı verir. |
3.1 Aritmetik Operatörler
int toplam = 5 + 3; // 8
int carpim = 4 * 2; // 8
3.2 Karşılaştırma Operatörleri
if (a == b) { printf("Esittir\n"); }
3.3 Mantıksal Operatörler
if (a > 0 && b > 0) { printf("Pozitif sayilar\n"); } // Ve
if (not1 >= 50 || not2 >= 50) { printf("Ders geçildi.\n"); } // Veya
if (!aktif) { printf("Kullanıcı pasif.\n"); } // Değil
4.1 Koşullu İfadeler
if (yas > 18)
{
printf("Yetiskin.\n");
}
else
{
printf("Cocuk.\n");
}
---
int yas = 20;
int puan = 85;
if (yas >= 18 && puan >= 80)
{
printf("Sınava girmeye uygunsunuz.\n");
}
else
{
printf("Şartları sağlamıyorsunuz.\n");
}
---
4.2 switch-case Yapısı
switch(gun)
{
case 1: printf("Pazartesi"); break;
case 2: printf("Sali"); break;
default: printf("Gecersiz gun");
}
4.3 Döngüler
4.3.1 for Döngüsü
for(int i=0; i<5; i++)
{
printf("%d\n", i);
}
4.3.2 while Döngüsü
int i = 0;
while(i < 5)
{
printf("%d\n", i);
i++;
}
4.3.3 do-while Döngüsü
int i = 0;
do
{
printf("%d\n", i);
i++;
} while(i < 5);
5.1 Fonksiyon Tanımı ve Kullanımı
int topla(int a, int b)
{
return a + b;
}
int main()
{
int sonuc = topla(5, 3);
printf("%d", sonuc);
}
6.1 Tek Boyutlu Dizi
int sayilar[5] = {1, 2, 3, 4, 5};
printf("%d", sayilar[2]); // 3
6.2 Çok Boyutlu Dizi
int matris[2][3] = {{1,2,3}, {4,5,6}};
printf("%d", matris[1][2]); // 6
int x = 42; // Normal bir tamsayı değişkeni
int *p = &x; // p, x'in adresini tutan gösterici
printf("x değeri : %d\n", x); // 42
printf("&x adresi : %p\n", &x); // Örn. 0x7ffd5c1e5b3c
printf("p adresi : %p\n", p); // Aynı adres → &x
printf("*p değeri : %d\n", *p); // 42
8.1. C Programlama Dilinde Genel Kullanımı Olan Kütüphaneler
Başlık (header) | Ana İşlev Grubu | Sık Kullanılan Fonksiyonlar* | Kısaca Ne Yapar |
---|---|---|---|
<time.h> |
Tarih & Zaman | time , localtime , gmtime , difftime , clock , strftime |
Unix zaman damgası, yerel/zaman dilimi dönüşümü, süre ölçümü. |
<stdio.h> |
Girdi / Çıktı | printf , scanf , fprintf , fgets , fgetc , fputc , fseek , rewind |
Dosya ve ekran/klavye akışlarını biçimlendirilmiş olarak yönetir. |
<stdlib.h> |
Yardımcı & Bellek | malloc , calloc , realloc , free , atoi , atof , strtol , rand , srand , exit , system |
Dinamik bellek, sayı–metin dönüşümü, rastgele sayı, proses kontrolü. |
<string.h> |
Karakter Dizileri | strlen , strcpy , strncpy , strcat , strcmp , strchr , strstr , memset , memcpy , memmove |
C-string işlemleri ve ham bellek kopyalama/doldurma. |
<math.h> |
Matematik | sqrt , pow , sin , cos , tan , log , exp , fabs , ceil , floor |
Karekök, trigonometrik, logaritmik ve yuvarlama fonksiyonları. |
8.2. C Programlama Dilinde Özel Kullanımı Olan Kütüphaneler
Başlık (header) | Ana İşlev Grubu | Sık Kullanılan Fonksiyonlar* | Kısaca Ne Yapar |
---|---|---|---|
<ctype.h> |
Karakter Sınıflama | isalnum , isalpha , isdigit , isspace , tolower , toupper |
Karakter türünü sınar veya harfi büyük/küçük yapar. |
<assert.h> |
Hata Ayıklama | assert |
Koşul sağlanmazsa çalışma anında mesaj basıp programı sonlandırır. |
<signal.h> |
Sinyal İşleme | signal , raise , kill |
Çeşitli “sinyal” olaylarını yakalamak veya tetiklemek için (örn. SIGINT ). |
<errno.h> |
Hata Kodları | errno (makro), perror , strerror |
Sistem çağrılarında oluşan hataları standart kod/mesaja çevirir. |
<locale.h> |
Yerelleştirme | setlocale , localeconv |
Ondalık ayraç, para birimi, alfabetik sıralama vb. kültür ayarlarını yönetir. |
9.1. Kullanıcı Girdisinin Doğruluğunu scanf() ile Kontrol Etme
#include <stdio.h>
int main()
{
int sayi = 0;
int sonuc = 0;
printf("Bir sayi girin: ");
sonuc = scanf("%d", &sayi);
if (sonuc == 1)
{
printf("Girilen sayi: %d\n", sayi);
}
else
{
printf("Gecersiz karakter girisi yaptiniz.\n");
}
}
9.2. Girilen Bir Sayının Tek mi Çift mi Olduğunu Bulma
#include <stdio.h>
int main()
{
int sayi;
printf("Bir sayı girin: ");
scanf("%d", &sayi);
if (sayi % 2 == 0)
{
printf("%d çift sayıdır.\n", sayi);
}
else
{
printf("%d tek sayıdır.\n", sayi);
}
}
9.3. Girilen Bir Değerin Sayı Olduğu Kontrol Edildikten Sonra Tek mi Çift mi Olduğunu Bulma
#include <stdio.h>
int main()
{
int sayi = 0;
int sonuc;
printf("Bir sayı girin: ");
sonuc = scanf("%d", &sayi);
if (sonuc == 1)
{
if (sayi % 2 == 0)
{
printf("%d çift sayıdır.\n", sayi);
}
else
{
printf("%d tek sayıdır.\n", sayi);
}
}
else
{
printf("Geçersiz giriş! Lütfen bir tamsayı giriniz.\n");
}
}
9.4. Kullanıcıdan Alınan Sayıları Diziye Aktarma ve Yazdırma
#include <stdio.h>
int main()
{
int sayilar[6];
int i;
// Kullanıcıdan 6 sayı alınıyor...
printf("Lutfen 6 adet tamsayı giriniz:\n");
for (i = 0; i < 6; i++)
{
scanf("%d", &sayilar[i]);
}
// Girilen sayıları yazdır
printf("\nGirilen sayilar:\n");
for (i = 0; i < 6; i++)
{
printf("%d ", sayilar[i]);
}
}
9.5. Kullanıcıdan Alınan Sayıların Ortalamasını Hesaplama
#include <stdio.h>
int main()
{
int sayilar[6];
int i, toplam = 0;
float ortalama;
printf("Lütfen 6 adet tamsayı giriniz:\n");
for (i = 0; i < 6; i++)
{
scanf("%d", &sayilar[i]);
toplam += sayilar[i];
}
ortalama = (float)toplam / 6;
printf("\nGirilen sayıların ortalaması: %.2f\n", ortalama);
}
9.6. Kullanıcıdan Alınan Sayıların Diziye Atılması ve Tek–Çift Sayıların Adetlerinin Belirlenmesi
#include <stdio.h>
int main()
{
int sayilar[6];
int i, tekSayac = 0, ciftSayac = 0;
printf("Lütfen 6 adet tamsayı giriniz:\n");
for (i = 0; i < 6; i++)
{
printf("%d. sayi: ", i + 1);
scanf("%d", &sayilar[i]);
if (sayilar[i] % 2 == 0)
ciftSayac++;
else
tekSayac++;
}
printf("\nGirilen sayılar arasında:\n");
printf("Tek sayı adedi: %d\n", tekSayac);
printf("Çift sayı adedi: %d\n", ciftSayac);
}
9.7. Kullanıcının Belirlediği Sayı Adedi ile Girilen Sayı Adedinin Karşılaştırılması (while, for ve if yapıları ile)
#include <stdio.h>
int main()
{
int sayilar[6]; // 6 elemanlı dizi
int istenen_adet = 6;
int sayi, i = 0, j = 0;
printf("6 Adet Sayi Giriniz\n");
while (i < istenen_adet)
{
printf("%d. sayi: ", i + 1);
if (scanf("%d", &sayi))
{
sayilar[i] = sayi;
i++;
}
else
{
printf("Gecersiz deger girdiniz! Lütfen tamsayı giriniz.\n");
}
}
if(i == istenen_adet)
{
printf("Girilen Değerler İstenenler ile Aynı ");
for (j = 0; j < istenen_adet; j++)
{
printf("%d ", sayilar[j]);
}
}
else
{
printf("Girilen Değerler İstenenler ile Aynı Değil");
}
printf("\nToplam Gecerli Giris Sayisi: %d\n", istenen_adet);
}
-
Harvey M. Deithel, Paul J. Deitel, "C ve C++", Sistem Yayıncılık, İstanbul, 2011.
-
Prof. Dr. Ercan Nurcan Yılmaz, Dr. Serkan Gönen, "Örneklerle Uygulamalı C ve C++", İstanbul Gelişim Üniversitesi Yayınları, İstanbul, 2023.
-
Nergiz Ercil Çağıltay, Gül Tokdemir, C. Fügen Selbes, Çiğdem Turhan, "C Dersi Programlamaya Giriş", Kişisel Yayınlar, Ankara, 2010.
-
Nergiz Ercil Çağıltay, Gül Tokdemir, C. Fügen Selbes, Çiğdem Turhan, "C Dersi Çözümlü Problem Kitabı", Ankara, 2012.
-
Dr. Erdal Güvenoğlu, "Çözümlü C Örnekleri", Nobel Akademik Yayıncılık, Ankara, 2022.
-
Prof. Dr. Fatih Başçiftçi, "C Programlama Dİli", Atlas Akademi, Konya, 2010.
-
C. Laplace and Bloodshed Software, Dev-C++ (Version 5.11) [Computer software]. Bloodshed Software, 2016. [Online]. Available: https://www.bloodshed.net/ [Accessed: May 10, 2025].
⚡ Bilgi Paylaştıkça Gelişir! 🚀
IEEE--> A. Cetinkaya, "C Programlama Dili Rehberi" GitHub, [Online]. Erişim Linki: https://github.com/acetinkaya/C-Programlama-Rehberi. Son Erişim Tarihi: Gün Ay Yıl.
APA--> Cetinkaya, A. (2025). C Programlama Dili Rehberi [GitHub Deposu]. GitHub. Erişim Linki: https://github.com/acetinkaya/C-Programlama-Rehberi. Son Erişim Tarihi: Gün Ay Yıl.
Yukarıdaki bilgi, resim ve kod çalışmaları açık kaynak paylaşım olarak GitHub "acetinkaya" alanında paylaşımı yapılmıştır.
Proje Durumu: İlgili paylaşımlar ve C programlama dilinde yazılmış yazılım kodlarına sürüm güncellemeleri yaptıkça bu paylaşımları güncelleyeceğiz. GitHub bölümünden beğeni bildirimi olarak bir yıldız vererek çalışmalarımı destekleyebilirsiniz. Bilgi paylaşıldıkça büyür ve gelişir.
Katkıda Bulunma: Fork - Çekme istekleri memnuniyetle karşılanır. Büyük değişiklikler için lütfen önce neyi değiştirmek istediğinizi görüşmek üzere ilgili C kodunu belirttiğiniz bir soru - yanıt bölümü açın. Bilgi paylaşıldıkça çoğalır ve gelişir. İyi çalışmalar dilerim.
Yazar ve Güncelleme Yapan: Öğr. Gör. Ali Çetinkaya (MSc.) - 2025
The above information, images, and code examples are shared as open-source content on GitHub under the "acetinkaya" account.
Project Status: The relevant posts and software codes written in the C programming language will be updated as new versions are released. You can support my work by giving a star to the repository on GitHub. Knowledge grows and develops as it is shared. Contributing: Forks and pull requests are warmly welcomed. For major changes, please first open a question-answer thread indicating which C code you want to modify to discuss your proposal. Knowledge multiplies and improves when shared. Best wishes for your work!
Author and Maintainer: Lect. Ali Cetinkaya (MSc.) - 2025