---
title: 'Temel Veri Tipleri'
source: 'https://academia.sh/tr/kurslar/programlama-temelleri/temel-veri-tipleri'
course: 'Programlama Temelleri'
language: tr
updated: '2026-08-17T18:08:26+00:00'
license: 'CC BY-SA 4.0'
---

# Temel Veri Tipleri

Tip kavramı, tam sayı, gerçel sayı, mantıksal değer, dizgi ve boş değer; statik ve dinamik tipleme.

Önceki derste bir ada sayı bağlandı, sonra liste bağlandı ve ikisi farklı davrandı.
Listenin `append` işlemi vardı, sayının yoktu. Bu farkın adı **tiptir**.

Bu ders, tip kavramını tanımlar ve her programlama dilinde karşılığı bulunan temel
tipleri tanıtır.

## Tip Nedir

Bir **tip** iki şeyi birlikte belirtir:

1. Hangi değerlerin geçerli olduğunu — değer kümesi.
2. Bu değerler üzerinde hangi işlemlerin tanımlı olduğunu.

Tam sayı tipinin değer kümesi belirli bir aralıktaki tam sayılardır; işlemleri toplama,
çıkarma, karşılaştırma gibi işlemlerdir. Dizgi tipinin değerleri karakter dizileridir;
birleştirme ve arama işlemleri tanımlıdır, çıkarma tanımlı değildir.

Önceki kursun sonucu burada doğrudan işe yarar: bellekte yalnızca bit örüntüleri vardır
ve anlam, örüntüye uygulanan yorum kuralından gelir. **Tip, tam olarak o yorum
kuralıdır.** `0x41424344` örüntüsünün tam sayı mı, gerçel sayı mı yoksa metin mi olduğu
sorusunun programlama dilindeki yanıtı, o değerin tipidir.

## Tam Sayılar

Tam sayı tipi, kesir kısmı olmayan sayıları taşır. Önceki kursta kurulan iki gerçek
burada geçerlidir: sabit genişlikli tam sayıların bir aralığı vardır ve aralık
aşıldığında taşma oluşur.

Diller bu konuda ayrışır. Kimi diller sabit genişlik kullanır ve taşmayı ya sarma ile ya
da hata ile karşılar. Kimi diller — Python bunlardan biridir — tam sayıları gerektiği
kadar büyütür; sınır, yalnızca bellektir.

İki bölme işlemi ayırt edilmelidir:

```python
print(7 / 2)        # 3.5   — gerçel bölme
print(7 // 2)       # 3     — tam bölme (aşağı yuvarlar)
print(7 % 2)        # 1     — kalan
print(-7 // 2)      # -4    — aşağı yuvarlama negatif tarafta da geçerli
```

Tam bölmenin yuvarlama yönü diller arasında farklılık gösterir: kimi diller sıfıra
doğru, kimi diller aşağı yuvarlar. Negatif sayılarla çalışan kodda bu ayrıntı sonucu
değiştirir.

## Gerçel Sayılar

Gerçel sayı tipi, kesirli değerleri kayan noktalı gösterimle taşır. Önceki kursun
uyarısı burada da geçerlidir: değerler yaklaşıktır ve eşitlikle karşılaştırılmaz.

```python
print(0.1 + 0.2 == 0.3)                    # False
print(abs((0.1 + 0.2) - 0.3) < 1e-9)       # True  — tolerans ile karşılaştırma
```

Pratik kural: para gibi kesinlik gerektiren büyüklükler kayan noktalı tiplerle
tutulmaz; onluk tabanlı tipler veya en küçük birimi taşıyan tam sayılar kullanılır.

## Mantıksal Değerler

Mantıksal tipin yalnızca iki değeri vardır: doğru ve yanlış. Bu değerler genellikle
doğrudan yazılmaz; karşılaştırmalardan üretilir.

```python
olcum = 12
print(olcum > 10)          # True
print(olcum == 10)         # False
```

Mantıksal değerler, bir sonraki konudaki koşullu dallanmanın girdisidir. Bir koşulun
"doğru olması" ifadesi, bu tipte bir değer üretmesi demektir.

Birçok dil, mantıksal olmayan değerleri de koşulda kullanılabilir sayar: sıfır, boş
dizgi ve boş koleksiyon yanlış; diğerleri doğru kabul edilir. Bu kolaylık, okunabilirliği
düşürebilir; koşulun neyi sınadığı açık yazıldığında kod daha az yanlış anlaşılır.

## Dizgiler

Dizgi tipi, karakter dizilerini taşır. Önceki kursun karakter kodlamaları dersi bu
tipin altındaki ayrıntıyı vermişti: dizgi, kod noktalarının dizisidir ve bellekte bir
kodlamaya göre baytlanır.

```python
ad = "ölçüm"
print(len(ad))             # 5    — kod noktası sayısı
print(ad[0])               # ö    — dizin sıfırdan başlar
print(ad.upper())          # ÖLÇÜM
print("ölçüm" + " " + "1") # ölçüm 1
```

Dizin numaralandırmasının sıfırdan başlaması, çoğu dilde ortak bir sözleşmedir ve
adres aritmetiğinden gelir: dizin, başlangıçtan itibaren kaç eleman ilerlendiğini
söyler.

Birçok dilde dizgiler **değiştirilemezdir**: bir dizginin içeriği değiştirilemez, yalnızca
yeni bir dizgi üretilir. Bu, dizgi birleştirmenin döngü içinde pahalı olmasının
nedenidir; her birleştirme yeni bir nesne yaratır.

## Koleksiyonlar

Tek bir değer yerine değer dizisi tutan tipler, kursun ortak probleminin girdisini
oluşturur:

```python
olcumler = [12, 18, 7, 25, 14]     # liste: sıralı, değiştirilebilir
print(len(olcumler))               # 5
print(olcumler[0], olcumler[-1])   # 12 14
print(sum(olcumler) / len(olcumler))   # 15.2
print(max(olcumler))               # 25
```

Bu ders koleksiyonları yalnızca kullanacak kadar tanıtır; iç yapıları, maliyetleri ve
seçim ölçütleri **Veri Yapıları** kursunun konusudur.

## Değiştirilemez ve Değiştirilebilir Tipler

Tipler, değerlerinin sonradan değiştirilip değiştirilemediğine göre de ayrılır.

**Değiştirilemez (immutable)** bir değerin içeriği yaratıldıktan sonra değiştirilemez. Sayılar
ve çoğu dilde dizgiler bu sınıftadır. Değişiklik gibi görünen her işlem, aslında yeni bir
değer üretir.

**Değiştirilebilir (mutable)** bir değerin içeriği yerinde güncellenebilir. Listeler bu
sınıftadır.

```python
metin = "ölçüm"
yeni = metin.upper()
print(metin, yeni)          # ölçüm ÖLÇÜM  — özgün dizgi değişmedi

olcumler = [12, 18]
olcumler.append(7)
print(olcumler)             # [12, 18, 7]  — liste yerinde değişti
```

Ayrım, önceki dersteki paylaşım kuralıyla birleştiğinde önem kazanır. Aynı nesneye iki
ad bağlıysa ve nesne değiştirilebilir bir tipteyse, biri üzerinden yapılan değişiklik
diğerinden de görülür. Nesne değiştirilemezse böyle bir sürpriz olmaz: değişiklik yeni bir
nesne ürettiği için diğer ad eski değere bağlı kalır.

Bu nedenle paylaşılan veri, değiştirilebilir tiplerle çalışırken dikkat gerektirir;
değiştirilemez tipler ise paylaşıma güvenlidir. Aynı gözlem, fonksiyonlara argüman aktarımı
dersinde tekrar edilecektir.

## Boş Değer

Çoğu dilde, "değer yok" durumunu belirten özel bir değer bulunur. Bu değer, henüz
hesaplanmamış veya bulunamamış bir sonucu ifade eder.

Kolaylığın bedeli, bu değerin beklenmedik yerlerde ortaya çıkabilmesidir: boş değer
üzerinde işlem yapmaya çalışan kod, çalışma zamanı hatası verir. Bazı diller bu riski
tip düzeyinde ele alır ve boş olabilecek değerleri ayrı bir tiple işaretler; böylece
denetimin yapılıp yapılmadığı derleme sırasında sınanabilir.

## Tip Ne Zaman Denetlenir

Diller, tip uyumunu iki farklı zamanda sınar.

**Statik tipleme:** Tipler derleme sırasında bilinir ve denetlenir. Uyumsuz bir işlem,
program hiç çalışmadan yakalanır. Karşılığında, tiplerin bildirilmesi veya çıkarsanması
gerekir.

**Dinamik tipleme:** Tip bilgisi değerlerin üzerinde taşınır ve denetim çalışma anında
yapılır. Yazım daha kısadır; buna karşılık aynı hata, ilgili satır yürütülene kadar
görünmez.

```python
sayi = 5
metin = "5"
print(sayi + sayi)         # 10
print(metin + metin)       # 55   — dizgi birleştirme
# print(sayi + metin)      # çalışma zamanı hatası: tipler uyumsuz
```

Üçüncü satırdaki hata, dinamik tiplemede ancak o satır çalıştığında ortaya çıkar. Statik
tiplemede aynı ifade, çalıştırmadan önce reddedilirdi. Önceki kursun derleme aşamaları
dersinde kurulan ilke burada da geçerlidir: soru, hatanın **ne zaman** görüldüğüdür.

## Özet

- Tip, geçerli değerler kümesini ve o değerler üzerinde tanımlı işlemleri birlikte
  belirtir; bit örüntüsüne uygulanan yorum kuralının programlama dilindeki adıdır.
- Tam sayılarda bölme iki türlüdür ve yuvarlama yönü diller arasında değişir.
- Gerçel sayılar yaklaşıktır; eşitlik yerine tolerans ile karşılaştırılır.
- Mantıksal değerler karşılaştırmalardan üretilir; boş değer ise yokluğu belirtir ve
  denetlenmediğinde çalışma zamanı hatası kaynağıdır.
- Dizgiler kod noktası dizileridir; değiştirilemez tiplerde her değişiklik yeni bir değer
  üretir, değiştirilebilir tiplerde içerik yerinde güncellenir.
- Statik tipleme hataları çalıştırmadan önce, dinamik tipleme çalışırken yakalar.

## Sonraki Adım

Tipler tanımlandı; şimdi bu değerlerden ifade kurma sırası geldi. Sonraki ders,
aritmetik, karşılaştırma ve mantıksal işleçleri ve — önceki derste bir mantık
hatasının kaynağı olan — işlem önceliği kurallarını ele alacak.
