-
Sadrazamv4
ig:sadrazam_v4 tg: Sadrazam.spy
🚀 BAŞTAN SONA C DİLİ BÖLÜM-2: Değişkenler, Veri Tipleri ve `scanf` Fonksiyonu 💻
Selamlar! Serimizin 2. bölümüne hoş geldiniz.
İlk bölümde C dilinin felsefesini, derleme sürecini (Preprocessor -> Compiler -> Linker) ve ilk programımızı incelemiştik. Bu bölümde ise verileri bellekte saklamamızı sağlayan **Değişkenleri**, C dilinin temel **Veri Tiplerini**, bellek boyutlarını ölçen **`sizeof`** operatörünü, **Biçim Belirleyicileri (Format Specifiers)** ve kullanıcıdan veri almamızı sağlayan **`scanf`** fonksiyonunu öğreneceğiz.
---
📌 1. C Dilinde Temel Veri Tipleri 🧬
C dili **statik tipli (statically typed)** bir dildir. Yani bir değişken tanımlanırken türü açıkça belirtilmeli ve o değişken bellekte o türün kapladığı alan kadar yer tutmalıdır.
### Temel Veri Tipleri Tablosu:
| Veri Tipi | Açıklama | Tipik Boyut | Biçim Belirleyici |
| :--- | :--- | :--- | :--- |
| `char` | Tek bir karakter tutar (ASCII kodu saklar) | 1 Byte | `%c` |
| `int` | Tam sayıları tutar | 4 Byte | `%d` veya `%i` |
| `float` | Tek duyarlıklı ondalıklı sayılar | 4 Byte | `%f` |
| `double` | Çift duyarlıklı (hassas) ondalıklı sayılar | 8 Byte | `%lf` |
> ⚠️ **Not:** C dilinde metinsel ifadeler için yerleşik bir `String` veri tipi **YOKTUR!** Metinler karakter dizileri (`char dizi[]`) şeklinde tutulur.
---
📏 2. Bellek Boyutları ve `sizeof` Operatörü 🔍
Veri tiplerinin bellekte kaç byte yer kapladığı sistem mimarisine (32-bit / 64-bit) göre değişebilir. Bir tipin veya değişkenin kapladığı bellek alanını öğrenmek için `sizeof` operatörü kullanılır.
#include <stdio.h>
int main() {
printf("char boyutu : %lu Byte\n", sizeof(char));
printf("int boyutu : %lu Byte\n", sizeof(int));
printf("float boyutu : %lu Byte\n", sizeof(float));
printf("double boyutu : %lu Byte\n", sizeof(double));
return 0;
}
---
🎯 3. Biçim Belirleyiciler (Format Specifiers) 🎯
C dilinde ekrana veri yazdırırken (`printf`) veya kullanıcıdan veri okurken (`scanf`) değişkenin türünü belirten kaçış kodları kullanılır.
Sık Kullanılan Format Specifiers:
• `%d` / `%i` -> `int` (Tam sayı)
• `%f` -> `float` (Ondalıklı sayı)
• `%.2f` -> Virgülden sonra sadece 2 basamak gösterir
• `%lf` -> `double` (Uzun ondalıklı sayı)
• `%c` -> `char` (Karakter)
• `%s` -> Karakter ***** / Metin (String)
---
📥 4. Kullanıcıdan Veri Alma: `scanf` Fonksiyonu ⌨️
Kullanıcıdan klavye vasıtasıyla veri okumak için `stdio.h` kütüphanesinde yer alan `scanf` fonksiyonu kullanılır.
⚠️ **KRİTİK KURAL:** `scanf` kullanırken değişken adının önüne **Adres Operatörü (`&`)** konulmalıdır! Bu sembol, girilen verinin bellekteki **hangi adrese (pointer)** yazılacağını belirtir.
#include <stdio.h>
int main() {
int yas;
float maas;
char basHarf;
printf("Lutfen yasinizi giriniz: ");
scanf("%d", &yas); // &yas -> yas değişkeninin bellek adresi
printf("Maas beklentinizi giriniz: ");
scanf("%f", &maas);
printf("Isminizin bas harfini giriniz: ");
// Karakter okurken tamponda (buffer) kalan \n karakterini temizlemek için %c önüne boşluk konur
scanf(" %c", &basHarf);
printf("\n--- GIRDILERINIZ ---\n");
printf("Harf : %c\n", basHarf);
printf("Yas : %d\n", yas);
printf("Maas : %.2f TL\n", maas);
return 0;
}
---
🔢 5. Tip Dönüştürme (Type Casting) 🔀
Bir veri tipini geçici olarak başka bir veri tipine dönüştürmek için parantez içinde hedef tip yazılır: `(hedef_tip) degisken`
#include <stdio.h>
int main() {
int sayi1 = 7;
int sayi2 = 2;
// Tam sayı bölmesi sonucu tam sayı verir (7 / 2 = 3)
float yanlisSonuc = sayi1 / sayi2;
// Type casting ile doğru float bölmesi elde edilir (7.0 / 2 = 3.5)
float dogruSonuc = (float)sayi1 / sayi2;
printf("Yanlis Bolme : %.1f\n", yanlisSonuc); // 3.0
printf("Dogru Bolme : %.1f\n", dogruSonuc); // 3.5
return 0;
}
---
📝 Bölüm Özeti ve Gelecek Bölüm 🔮
Bu bölümde temel C veri tiplerini, `sizeof` ile bellek alanlarını, format belirleyicileri, `scanf` ile veri okumadaki `&` adres mantığını ve Type Casting işlemini öğrendik.
👉 **Bölüm 3'te Bizi Ne Bekliyor?**
• Operatörler (Aritmetik, İlişkisel, Mantıksal, Bitsel Operatörler)
• Karar Yapıları: `if`, `else if`, `else`
• Koşul Operatörü / Ternary (`?
:`)
• `switch-case` Yapısı
Sorularınızı konu altından iletebilirsiniz. Bir sonraki bölümde görüşmek üzere! 💻✨
Selamlar! Serimizin 2. bölümüne hoş geldiniz.
İlk bölümde C dilinin felsefesini, derleme sürecini (Preprocessor -> Compiler -> Linker) ve ilk programımızı incelemiştik. Bu bölümde ise verileri bellekte saklamamızı sağlayan **Değişkenleri**, C dilinin temel **Veri Tiplerini**, bellek boyutlarını ölçen **`sizeof`** operatörünü, **Biçim Belirleyicileri (Format Specifiers)** ve kullanıcıdan veri almamızı sağlayan **`scanf`** fonksiyonunu öğreneceğiz.
---
📌 1. C Dilinde Temel Veri Tipleri 🧬
C dili **statik tipli (statically typed)** bir dildir. Yani bir değişken tanımlanırken türü açıkça belirtilmeli ve o değişken bellekte o türün kapladığı alan kadar yer tutmalıdır.
### Temel Veri Tipleri Tablosu:
| Veri Tipi | Açıklama | Tipik Boyut | Biçim Belirleyici |
| :--- | :--- | :--- | :--- |
| `char` | Tek bir karakter tutar (ASCII kodu saklar) | 1 Byte | `%c` |
| `int` | Tam sayıları tutar | 4 Byte | `%d` veya `%i` |
| `float` | Tek duyarlıklı ondalıklı sayılar | 4 Byte | `%f` |
| `double` | Çift duyarlıklı (hassas) ondalıklı sayılar | 8 Byte | `%lf` |
> ⚠️ **Not:** C dilinde metinsel ifadeler için yerleşik bir `String` veri tipi **YOKTUR!** Metinler karakter dizileri (`char dizi[]`) şeklinde tutulur.
---
📏 2. Bellek Boyutları ve `sizeof` Operatörü 🔍
Veri tiplerinin bellekte kaç byte yer kapladığı sistem mimarisine (32-bit / 64-bit) göre değişebilir. Bir tipin veya değişkenin kapladığı bellek alanını öğrenmek için `sizeof` operatörü kullanılır.
#include <stdio.h>
int main() {
printf("char boyutu : %lu Byte\n", sizeof(char));
printf("int boyutu : %lu Byte\n", sizeof(int));
printf("float boyutu : %lu Byte\n", sizeof(float));
printf("double boyutu : %lu Byte\n", sizeof(double));
return 0;
}
---
🎯 3. Biçim Belirleyiciler (Format Specifiers) 🎯
C dilinde ekrana veri yazdırırken (`printf`) veya kullanıcıdan veri okurken (`scanf`) değişkenin türünü belirten kaçış kodları kullanılır.
Sık Kullanılan Format Specifiers:
• `%d` / `%i` -> `int` (Tam sayı)
• `%f` -> `float` (Ondalıklı sayı)
• `%.2f` -> Virgülden sonra sadece 2 basamak gösterir
• `%lf` -> `double` (Uzun ondalıklı sayı)
• `%c` -> `char` (Karakter)
• `%s` -> Karakter ***** / Metin (String)
---
📥 4. Kullanıcıdan Veri Alma: `scanf` Fonksiyonu ⌨️
Kullanıcıdan klavye vasıtasıyla veri okumak için `stdio.h` kütüphanesinde yer alan `scanf` fonksiyonu kullanılır.
⚠️ **KRİTİK KURAL:** `scanf` kullanırken değişken adının önüne **Adres Operatörü (`&`)** konulmalıdır! Bu sembol, girilen verinin bellekteki **hangi adrese (pointer)** yazılacağını belirtir.
#include <stdio.h>
int main() {
int yas;
float maas;
char basHarf;
printf("Lutfen yasinizi giriniz: ");
scanf("%d", &yas); // &yas -> yas değişkeninin bellek adresi
printf("Maas beklentinizi giriniz: ");
scanf("%f", &maas);
printf("Isminizin bas harfini giriniz: ");
// Karakter okurken tamponda (buffer) kalan \n karakterini temizlemek için %c önüne boşluk konur
scanf(" %c", &basHarf);
printf("\n--- GIRDILERINIZ ---\n");
printf("Harf : %c\n", basHarf);
printf("Yas : %d\n", yas);
printf("Maas : %.2f TL\n", maas);
return 0;
}
---
🔢 5. Tip Dönüştürme (Type Casting) 🔀
Bir veri tipini geçici olarak başka bir veri tipine dönüştürmek için parantez içinde hedef tip yazılır: `(hedef_tip) degisken`
#include <stdio.h>
int main() {
int sayi1 = 7;
int sayi2 = 2;
// Tam sayı bölmesi sonucu tam sayı verir (7 / 2 = 3)
float yanlisSonuc = sayi1 / sayi2;
// Type casting ile doğru float bölmesi elde edilir (7.0 / 2 = 3.5)
float dogruSonuc = (float)sayi1 / sayi2;
printf("Yanlis Bolme : %.1f\n", yanlisSonuc); // 3.0
printf("Dogru Bolme : %.1f\n", dogruSonuc); // 3.5
return 0;
}
---
📝 Bölüm Özeti ve Gelecek Bölüm 🔮
Bu bölümde temel C veri tiplerini, `sizeof` ile bellek alanlarını, format belirleyicileri, `scanf` ile veri okumadaki `&` adres mantığını ve Type Casting işlemini öğrendik.
👉 **Bölüm 3'te Bizi Ne Bekliyor?**
• Operatörler (Aritmetik, İlişkisel, Mantıksal, Bitsel Operatörler)
• Karar Yapıları: `if`, `else if`, `else`
• Koşul Operatörü / Ternary (`?
:`)
• `switch-case` Yapısı
Sorularınızı konu altından iletebilirsiniz. Bir sonraki bölümde görüşmek üzere! 💻✨
🔒 Bu içeriği görmek için giriş yapın