İçeriğe geç
← Tüm yazılar
· 11 dk okuma Programlama Temelleri

Algoritma: Değişkenler

Değişken nedir, bilgisayar bilgiyi nasıl saklar? Etiketli kutu örneğiyle değer atama, işlemler, veri çeşitleri ve iyi isimlendirmeyi kod yazmadan, sıfırdan öğren.

Algoritma: Değişkenler

Önceki yazıda sözde kod yazarken sayı ← 1 ya da toplam ← 0 gibi satırlar kullandık. Ama hiç durup şunu sormadık: bu sayı, bu toplam tam olarak ne? İçine değer koyduğumuz bu küçük kutuların bir adı var: değişken.

Bu yazıda hiç kod yazmadan, değişkenin ne olduğunu en baştan, günlük örneklerle anlayacağız. Çünkü değişken, bir programın bilgiyi hatırlama biçimidir — ve yazacağın hemen her algoritmanın temelinde o vardır.

Bir hatırlama sorunu

Şöyle düşün: bir arkadaşına markette alışveriş yaptırıyorsun ve telefonda söylüyorsun. “Üç ekmek al” dedin. Arkadaşın bunu aklında tutmak zorunda, değil mi? Kafasının bir köşesine “ekmek = 3” diye not alır.

Bilgisayar da aynı şeyi yapar. Bir bilgiyi sonra kullanmak için bir yere koyması ve o yere bir ad vermesi gerekir. İşte o yer, değişkendir.

Bir değişken, içine bir bilgi koyduğumuz, üzerinde bir adı (etiketi) olan bir kutudur. Kutunun adını söyleyince, bilgisayar içindeki değeri sana getirir.

Etiketli kutu

Aklında şu resmi tut: üstünde etiket olan bir kutu.

  • Kutunun adı (etiketi): yaş
  • Kutunun içindeki değer: 25

Bir kâğıda şöyle çizebilirsin:

Bir değişken
┌───────────┐
│ yaş │ ← kutunun adı (etiketi)
│ 25 │ ← içindeki değer
└───────────┘

Artık yaş dediğinde bilgisayar “25” diye anlar. Adı bir kez koyduktan sonra, değerin ne olduğunu ezberlemek zorunda değilsin; sadece adı kullanırsın.

Bir kişiyi kutularla tarif etmek

Bir tek kutu güzel, ama asıl güç birden fazlasını birlikte kullanınca ortaya çıkar. Diyelim bir kullanıcıyı tarif etmek istiyoruz. Tek bir bilgi yetmez; birkaç kutu kullanırız:

Bir kullanıcı = birkaç değişken
isim ← "Mehmet"
yaş ← 25
şehir ← "Ankara"
aktif ← doğru

İşte bu kadar: dört kutu, bir kişiyi anlatıyor. Bir oyundaki karakteri (can, skor, seviye), bir ürünü (ad, fiyat, stokta) ya da bir hesabı hep böyle, birkaç değişkeni bir arada kullanarak temsil ederiz. Her kutu bir parçayı tutar; hepsi birlikte bütünü oluşturur.

Kutuya bir şey koymak: atama

Bir değişkene değer koyma işine atama denir. Sözde kodda bunu sol ok () ile gösteriyorduk:

Atama
yaş ← 25 # "yaş" kutusuna 25 koy
isim ← "Ada" # "isim" kutusuna Ada yaz
ekmek ← 3 # "ekmek" kutusuna 3 koy

Bu satırları “şunu şunun içine koy” diye soldan sağa değil, sağdan sola oku: önce 25 değeri hazırlanır, sonra yaş kutusuna konur.

Bir değişkenin değerini başka bir değişkene de koyabilirsin. Bu durumda değer kopyalanır — kaynak kutu olduğu gibi kalır:

Değişkenden değişkene
a ← 7 # a kutusunda 7 var
b ← a # a'nın değeri (7) KOPYALANIP b'ye konur
a ← 99 # a değişti ama b hâlâ 7; çünkü b'ye değerin kopyası gitmişti

Bir değişkenin hayatı

Her değişken kısa bir hayat yaşar; üç aşaması vardır:

  1. Doğum (oluşturma): İlk kez bir ad verip içine değer koyarsın — skor ← 0.
  2. Kullanım (okuma): Adını söyleyip içindeki değeri okursun — YAZ skor.
  3. Değişim (güncelleme): Üstüne yeni bir değer yazarsın — skor ← skor + 10.

Bir değişkeni daha doğmadan (içine hiç değer koymadan) okumaya çalışmak tipik bir hatadır — boş bir kutudan bir şey çıkarmaya benzer. Önce koy, sonra oku.

Değişkenlerle işlem yapmak

Değişkenler sadece bilgi saklamaz; asıl güçleri, üzerlerinde işlem yapabilmendir. Sayılarla aritmetik yaparsın:

Sayılarla işlem
en ← 5
boy ← 3
alan ← en * boy # alan = 15

+ topla, - çıkar, * çarp, / böl. Geçen yazıdan hatırla: MOD ise bölmeden kalanı verir (7 MOD 3 = 1). Birkaç değişkeni bir formülde birleştirebilirsin — örneğin santigrat dereceyi fahrenheite çevirelim:

Sıcaklık dönüşümü
celsius ← 25
fahrenheit ← celsius * 9 / 5 + 32 # 77

Metinleri ise birleştirebilirsin (buna birleştirme denir); genelde yine + kullanılır:

Metinleri birleştirmek
ad ← "Ada"
soyad ← "Lovelace"
tamAd ← ad + " " + soyad # tamAd = "Ada Lovelace"

Dikkat: aradaki " " (boşluklu tırnak) olmasaydı sonuç "AdaLovelace" olurdu. Bilgisayar tam olarak ne dersen onu yapar — boşluğu bile sen koymalısın.

Neden “değişken”? Çünkü değeri değişir

İsmi tam da buradan gelir: bir değişkenin değeri değişebilir. Aynı kutuya yeni bir değer koyarsan, eski değer kaybolur:

Değer değişir
puan ← 10 # puan kutusunda artık 10 var
puan ← 25 # eski 10 silindi; puan kutusunda artık 25 var
puan ← puan + 5 # puan = 25 + 5 = 30

Son satıra dikkat et: puan ← puan + 5. Bu matematik değil! “Şu anki puan değerini al, 5 ekle, sonucu yine puan kutusuna koy” demektir. Yani kutu önce okunur, sonra üstüne yeni değer yazılır. Bir sayacı artırmanın yolu tam olarak budur.

Eski bir tanıdık: takas (swap)

İlk yazıda “iki bardağın içindekini yer değiştir” bulmacasını çözmüştük, hatırladın mı? Şimdi o bulmacanın neden o kadar önemli olduğunu görüyoruz: bir kutunun üstüne düşünmeden yazarsan, eski değer kaybolur.

İki değişkenin değerini takas etmek için bu yüzden geçici bir kutu gerekir:

İki değeri takas etmek
geçici ← a # a'nın değerini geçici kutuya sakla
a ← b # b'nin değerini a'ya koy
b ← geçici # saklanan değeri b'ye koy

O bulmacadaki “boş üçüncü bardak”, işte bu geçici değişkenin ta kendisiydi.

Değişkenleri takip etmek: izleme tablosu

Bir algoritmada değişkenler sürekli değiştiği için, “şu an hangi kutuda ne var?” sorusunu takip etmek zorlaşır. Programcıların bunun için kullandığı basit ama güçlü bir araç var: izleme tablosu (trace table). Her satır bir adımı, her sütun bir değişkeni gösterir; algoritmayı kâğıt üstünde “kafadan çalıştırırsın”.

Şu küçük algoritmayı izleyelim:

İzlenecek adımlar
sayaç ← 0
sayaç ← sayaç + 1
sayaç ← sayaç + 1
sayaç ← sayaç * 2

Her satırdan sonra sayaçın değerini bir tabloya yazarız:

Adımsayaç
sayaç ← 00
sayaç ← sayaç + 11
sayaç ← sayaç + 12
sayaç ← sayaç * 24

Tablonun sonunda sayaçın 4 olduğunu kesin olarak biliyoruz — tahmin etmedik, adım adım izledik. Bir hatan olduğunda da bu yöntem altın değerindedir: hangi adımda işlerin ters gittiğini tam olarak görürsün.

Bilgisayarın temel tipleri: ilkel (primitive) tipler

Bir kutuya ne koyduğun önemlidir, çünkü bilgisayar farklı türde bilgileri farklı biçimde saklar ve onlarla farklı işler yapar. En temel, daha küçük parçalara bölünemeyen tiplere ilkel (primitive) tipler denir — bütün programların yapıldığı tuğlalar gibi. Korkutucu görünmesinler; hepsi aslında gündelik hayattan tanıdığın şeyler.

Tam sayı (integer) — sayılabilen şeyler

Bölünmeyen, tek tek sayılan şeyler: sepetteki elma adedi, yaşın, bir binanın kat sayısı, sınıftaki öğrenci sayısı. “2,5 öğrenci” diye bir şey olmaz.

yaş ← 25 adet ← 3 kat ← 7

Algoritmayla bağı: Bir döngüdeki sayaç hep tam sayıdır (1'den 5'e say); bir şeyin kaç tane olduğunu tutmak için kullanılır.

Ondalıklı sayı (float) — ölçülen şeyler

Kesirli olabilen, ölçülerek elde edilen şeyler: boyun (1.78 m), ateşin (36.6°C), bir ürünün fiyatı (9.99 TL), depodaki benzin (42.5 litre).

boy ← 1.78 fiyat ← 9.99 sıcaklık ← 36.6

Algoritmayla bağı: Ortalama, oran, yüzde ve para hesapları genelde ondalık sayıyla yapılır (ortalama ← toplam / 3).

Karakter (char) — tek bir sembol

Tek bir harf, rakam ya da işaret; tek tırnak içinde yazılır: 'A'. Gündelik karşılığı: kan grubun (A, B, 0), karne harfin (A, F), bir soruya E/H cevabın.

kanGrubu ← 'A' harfNotu ← 'B' cevap ← 'E'

Algoritmayla bağı: “Tek tuşla seçim” (E/H menüsü) ya da bir harfin kontrolü gibi yerlerde kullanılır.

Doğru / Yanlış (boolean) — iki durumlu şeyler

Sadece iki değeri olan bilgi: ışık açık mı kapalı mı, kapı kilitli mi, fatura ödendi mi, yağmur yağıyor mu. Açık/kapalı bir anahtar gibi.

kapıAçık ← doğru ödendi ← yanlış

Bu türü çoğu zaman sen yazmazsın — bir karşılaştırmanın sonucu olarak kendiliğinden ortaya çıkar:

Doğru/yanlış nereden gelir
yaş ← 20
yetişkin ← yaş ≥ 18 # yetişkin kutusuna "doğru" konur (çünkü 20 ≥ 18)

Algoritmayla bağı: Bütün koşulların (EĞER … İSE) yakıtı budur; geçen yazıdaki karşılaştırma operatörleri (, <, = …) hep bu doğru/yanlış değerlerini üretir. Bir durumu işaretleyen “bayrak” (flag) olarak da kullanılır.

Bir de: metin (string) — karakterlerin dizisi

Bir isim, bir adres, bir cümle… Aslında bir metin, yan yana dizilmiş karakterlerden oluşur: "Ada" = 'A' + 'd' + 'a'. Çift tırnak içinde yazılır.

isim ← "Ada" şehir ← "İstanbul"

Algoritmayla bağı: Kullanıcının adını, bir mesajı ya da adresi saklamak için kullanılır.

Hepsini bir arada görelim:

TipGündelik karşılığıÖrnekAlgoritmada
Tam sayı (integer)elma adedi, yaş25sayaç, adet
Ondalık (float)boy, sıcaklık, fiyat9.99ortalama, oran
Karakter (char)kan grubu, not harfi'A'menü seçimi
Doğru/Yanlış (boolean)ışık açık mı?doğrukoşullar, bayrak
Metin (string)isim, adres"Ada"kullanıcı girdisi

Değişmeyenler: sabitler

Bazen bir değerin hiç değişmemesini isteriz. Bir çemberin pi sayısı her zaman 3.14159’dur; KDV oranı bir hesap boyunca sabit kalır. Böyle değerleri bir kez koyup bir daha değiştirmediğimiz kutulara sabit (constant) denir:

Sabitler
PI ← 3.14159
KDV_ORANI ← 0.20

Sabitleri genelde BÜYÜK harfle yazmak bir gelenektir; böylece koda bakan biri “buna dokunma, bu değişmez” olduğunu hemen anlar. Değişmemesi gereken bir değeri sabit yapmak, onu yanlışlıkla bozmanı engeller.

Hepsi bir arada: küçük bir örnek

Tek tek öğrendiklerimizi birleştirelim. Bir alışveriş sepetinin KDV dahil toplam tutarını hesaplayalım. Burada atama, işlem, sayı ve sabit hep birlikte çalışıyor:

Sepet toplamı — sözde kod
KDV_ORANI ← 0.20
fiyat ← 50
adet ← 3
araToplam ← fiyat * adet # 150
kdv ← araToplam * KDV_ORANI # 30
toplam ← araToplam + kdv # 180
YAZ "Ödenecek tutar: " + toplam

Satır satır oku: araToplam fiyat ile adetten hesaplanıyor, kdv ara toplam ile sabit orandan, toplam ise ikisinin toplamından. Her değişken bir öncekine dayanıyor — tıpkı bir tarifteki adımlar gibi. İşte değişkenler bir algoritmada böyle birlikte çalışır.

İyi bir değişkene iyi bir ad

Bir değişkene istediğin adı verebilirsin, ama iyi bir ad, kutunun içinde ne olduğunu tek bakışta anlatır.

Hangisi daha anlaşılır?
# Kötü # İyi
x ← 25 yaş ← 25
a ← "Ada" isim ← "Ada"
t ← f * m toplam ← fiyat * miktar

Sağdaki satırları okuyunca ne yaptığını anlıyorsun; soldakilerde tahmin etmek zorunda kalıyorsun. Birkaç pratik kural:

  1. Anlamlı olsun — ad, içindeki değeri anlatsın (sıcaklık, kullaniciAdi).
  2. Boşluk kullanma — çoğu dil kabul etmez. Kelimeleri birleştir: kullaniciAdi (buna camelCase denir) ya da kullanici_adi (buna snake_case denir).
  3. Rakamla başlama2.oyuncu değil, oyuncu2 olur.
  4. Tutarlı ol — bir projede hep camelCase ya da hep snake_case kullan, ikisini karıştırma.

Unutma: bir kodu altı ay sonra okuyan kişi çoğu zaman sensin — ve o an kendine teşekkür etmek istersin.

Sık yapılan hatalar

Kendin dene

Bir kâğıt ve kalem al ve az önce öğrendiğimiz izleme tablosu alışkanlığını kullan: her satırdan sonra her kutunun içinde ne olduğunu tabloya yaz.

Egzersiz 1 — Takip et (kolay)

Adımları izle
elma ← 4
armut ← 7
elma ← elma + 2
geçici ← elma
elma ← armut
armut ← geçici

Egzersiz 2 — Ortalama hesapla (orta)

Bir öğrencinin üç sınav notu var: 70, 85 ve 90. Bu notların ortalamasını bulan sözde kodu yaz.

Egzersiz 3 — Kendini tarif et (mini proje)

Kendini temsil eden değişkenleri yaz: isim, yaş, şehir, öğrenci (doğru/yanlış). Sonra yaşını bir artır (yeni yaşına geçtiğini düşün) ve şehirini değiştir.

Özet

Paylaş

İlgili yazılar

Sıkça sorulan sorular

Değişken nedir?

Değişken, bir bilgiyi içinde saklayan, üzerinde bir adı (etiketi) olan kutudur. İçine bir değer koyarsın (örneğin yaş = 25) ve sonra o adı kullanarak değere ulaşırsın. Bilgisayarın bir bilgiyi hatırlamasının en temel yolu budur ve fiziksel olarak bilgisayarın belleğinde (RAM) tutulur.

Değişkene değer atamak ne demek?

Atama, bir değişkenin içine bir değer koymaktır. Sözde kodda genelde sol ok (yaş ← 25) ya da eşittir (yaş = 25) ile gösterilir. "Yaş kutusuna 25 yaz" diye okunur; eşittir işareti burada matematikteki gibi "eşit mi?" sorusu değil, "şunu içine koy" komutudur.

Bir değişkenin değeri değişebilir mi?

Evet — adı zaten buradan gelir. Bir değişkenin üstüne yeni bir değer yazdığında eski değer kaybolur ve yerini yenisi alır. Bu yüzden bir değeri kaybetmeden başka bir yere taşımak için çoğu zaman geçici bir değişken kullanılır.

Değişken çeşitleri (veri tipleri) nelerdir?

Başlangıç için üç temel çeşit yeter: sayılar (tam sayı 25, ondalık 9.99), metinler/yazılar ("Ada", tırnak içinde) ve doğru/yanlış değerleri (doğru, yanlış). Farklı türde bilgiler farklı kutularda tutulur; ilerideki dillerde bunlara "veri tipi" denir.

İlkel (primitive) veri tipi nedir?

İlkel (primitive) tipler, daha küçük parçalara bölünemeyen en temel veri tipleridir: tam sayı (integer), ondalıklı sayı (float), karakter (char) ve doğru/yanlış (boolean). Gündelik karşılıkları sırasıyla sayılan şeyler (elma adedi), ölçülen şeyler (boy), tek bir sembol (kan grubu) ve iki durumlu şeylerdir (ışık açık/kapalı). Metin (string) ise karakterlerden oluştuğu için çoğu dilde ilkel sayılmaz.

İzleme tablosu (trace table) nedir?

İzleme tablosu, bir algoritmayı kâğıt üstünde adım adım çalıştırırken her değişkenin değerinin nasıl değiştiğini takip etmek için kullanılan bir tablodur. Her satır bir adımı, her sütun bir değişkeni gösterir. Hataları koda dökmeden bulmanın en pratik yoludur.

Sabit (constant) ile değişken arasındaki fark nedir?

Değişkenin değeri program çalışırken değişebilir; sabitin değeri ise baştan konur ve hiç değişmez (örneğin Pi = 3.14159 ya da KDV_ORANI = 0.20). Değişmemesi gereken değerleri sabit yapmak, yanlışlıkla değiştirilmelerini önler.

İyi bir değişken adı nasıl olur?

İyi bir ad, kutunun içinde ne olduğunu tek bakışta anlatır. "x" yerine "yaş", "toplam", "kullaniciAdi" gibi anlamlı adlar seç. Genelde boşluk kullanılmaz; kelimeler camelCase (kullaniciAdi) ya da snake_case (kullanici_adi) ile birleştirilir.