? Okuma Hesaplanıyor... Okuma: %0
0

Bilgisayar Neyi "Hatırlar"? (Python 2.Ders)

Resim

BÖLÜM 2 — Değişkenlerin Doğuşu: Bilgisayar Neyi “Hatırlar”?
Bu bölümün temel sorusu: 1.derste her şeyi doğrudan print() içine yazdık. Peki ya bir bilgiyi bir kere yazıp sonra defalarca kullanmak istersek? Bilgisayar bir şeyi nasıl “hatırlar”?


🎯 Bölümün Öğrenme Hedefleri
Bu bölümün sonunda öğrenci;
  • bir programın neden "hafızaya" ihtiyaç duyduğunu,
  • değişkenin aslında ne olduğunu (bir kutu benzetmesinin ötesinde),
  • "=" işaretinin matematikteki "eşittir" ile neden aynı şey olmadığını,
  • Python'un veri tiplerini (“int”, “float”, “str”, “bool”) neden ayrı ayrı takip ettiğini,
  • tip dönüşümünün (type casting) hangi problemi çözdüğünü,
  • değişken isimlendirme kurallarının neden var olduğunu
açıklayabilecek duruma gelecektir.


📌 Geçen Derste Neler Öğrendik?
İlk derste Python'un ne olduğunu, `print()` ile ekrana veri yazdırmayı, string ile sayı arasındaki farkı ve yorum satırlarını öğrendik. Ama fark ettiysen, her şeyi “doğrudan” yazdık:

Kaynak kodu


Kod:
print("Ahmet")
print(25)

Çıktı


Ahmet
25

Burada “Ahmet” ve 25 değerleri hiçbir yerde saklanmadı (hafızada tutulması istenmedi) sadece o an ekrana yazıldı ve uçtu gitti. İşte bu derste bu sorunu çözüyoruz.


2.1. Her Şey Bir Sorunla Başladı
Diyelim ki bir programda kullanıcının adını 10 farklı yerde kullanman gerekiyor; bir karşılama mesajında, bir raporda, bir dosya isminde. Her seferinde “Ahmet” yazmak hem yorucu hem de tehlikelidir: kullanıcı adını değiştirmek istediğinde, 10 yerin hepsini tek tek bulup değiştirmen gerekir.

Burada ihtiyaç duyduğumuz şey bellidir: bir bilgiyi bir kere söyleyip bir isme bağlamak, sonra o ismi istediğimiz kadar kullanmak. İşte tam olarak değişkenler bu ihtiyaçtan doğar.


2.2. Büyük Fikir: İsimlendirilmiş Kutular
Kod:
isim = “Ahmet”

Bunu kodu şöyle düşünebiliriz: Bilgisayarın hafızasında (RAM'de) bir yer ayrılıyor, oraya “Ahmet” değeri konuyor ve bu yere “isim” etiketi yapıştırılıyor. Artık ne zaman “isim” yazarsan, Python o etikete gidip içindeki değeri getirir:

Kaynak kodu


Kod:
isim = “Ahmet”
print(isim)   # Ahmet
print(isim)   # Ahmet (tekrar kullanabiliriz)

Çıktı


Ahmet
Ahmet

Kutu benzetmesi faydalı ama bir noktada eksik kalır birazdan bunu biraz daha derinleştireceğiz.

Resim
2.3. “=” İşareti Matematikteki “Eşittir” Değildir!
Bu, yeni başlayanların neredeyse tamamının takıldığı bir noktadır. Matematikte “x = 5” dediğinde, bu "x, 5'e eşittir" anlamına gelir yani denklemin iki taraf birbirinin aynısıdır.

Python'da ise “=” işareti atama (assignment) anlamına gelir yani “sağdaki değeri al, soldaki isme bağla.” Bu yüzden şu kod matematikte anlamsız olurdu ama Python'da tamamen normaldir:

Kaynak kodu


Kod:
sayi = 5
sayi = sayi + 1 #sayi değişkeninin içindeki değeri al ve 1 arttır
print(sayi)   # ekrana yeni oluşan sayi değerini yaz 6

Çıktı


6

Burada Python şunu yapar: önce sağ taraftaki  “sayi + 1”  işlemini hesaplar (5 + 1 = 6), sonra bu yeni değeri “sayi” ismine yeniden bağlar. Matematikte  “sayi, sayi+1'e eşittir”  diye bir cümle çelişkilidir, ama Python'da bu sadece  "sayi'nin değerini güncelle"  demektir.

BİLGİ
🤔 Neden Böyle Tasarlanmış: Çünkü programlama, matematiksel eşitlik ifade etmekten çok, bir süreç boyunca değişen durumları takip etmekle ilgilidir. Bir oyun skorunu, bir sayaç değerini, bir kullanıcı girdisini sürekli güncellemen gerekir “=” işareti bunun için tasarlanmıştır.

2.4. Kutu Benzetmesinin Sınırı: Aslında Etiket Yapıştırıyoruz
Az önce "kutu" dedik ama daha doğru bir benzetme şudur, değişken bir kutu değil, bir değere yapıştırdığın  etikettir . Neden bu fark önemli?

Kaynak kodu


Kod:
a = [1, 2, 3]
b = a
b.append(4)
print(a)   # [1, 2, 3, 4]  -- a da değişti!

Çıktı


[1, 2, 3, 4]

(Bu kodu şimdilik listeler konusuna girmeden sadece fikir olarak düşün, listeleri ilerleyen derslerde detaylı işleyeceğiz.) Burada “a” ve “b” aynı veriye yapıştırılmış iki farklı etiket gibi davranıyor. Bu, ileri seviyede çok daha önemli hâle gelecek bir konudur sen şimdilik sadece “değişken bir kutu değil, bir isimdir” fikrini aklında tut.


2.5. Peki Python Bir Değerin “Ne Tür” Olduğunu Nasıl Bilir?
Değişkenlere değer atarken fark ettiysen, hiçbir zaman “bu bir sayı olacak” ya da “bu bir yazı olacak” demedik. Python bunu  otomatik olarak  anlar:
Kod:
isim = “Ahmet”     # Python bunu bir string (str) olarak tanır
yas = 25           # Python bunu bir tam sayı (int) olarak tanır
boy = 1.78         # Python bunu ondalıklı sayı (float) olarak tanır
ogrenci_mi = True  # Python bunu mantıksal değer (bool) olarak tanır

Bunu nasıl anladığını öğrenmek için  “type()”  fonksiyonunu kullanabiliriz:

Kaynak kodu


Kod:
print(type(isim))      # <class 'str'>
print(type(yas))       # <class 'int'>
print(type(boy))       # <class 'float'>
print(type(ogrenci_mi)) # <class 'bool'>

Çıktı


<class 'str'>
<class 'int'>
<class 'float'>
<class 'bool'>


2.6. Neden Python Veri Tiplerini Bu Kadar Önemsiyor?
Burada önemli bir soru soralım: Python neden 25 ile “25”'i farklı şeyler olarak görüyor? İkisi de görsel olarak neredeyse aynı görünüyor. Şu kodu bir deneyelim:

Kaynak kodu


Kod:
print(25 + 25)      # 50  -- toplama işlemi
print(“25” + “25”)  # 2525  -- birleştirme (concatenation) işlemi

Çıktı


50
2525


AKLINDA OLSUN
💡 Büyük Fikir: “+” işareti, üzerinde çalıştığı veri tipine göre  farklı bir anlam  kazanır. Sayılar üzerinde “+” toplama yapar. String'ler üzerinde “+” birleştirme yapar (yan yana ekler). Bu yüzden Python'un her değerin tipini kesin olarak bilmesi gerekir aksi hâlde “+” işaretinin ne yapması gerektiğine karar veremez.

Bu, tıpkı bir tercümanın “bu kelime fiil mi isim mi” bilmeden cümleyi doğru çeviremeyeceği gibidir. Tip bilgisi, Python'un işlemleri doğru yorumlaması için zorunludur.

2.7. Tip Uyumsuzluğu Sorunu ve Tip Dönüşümü (Type Casting)
Peki şu kodu çalıştırırsak ne olur?
Kod:
yas = 25
mesaj = “Yaşım: ” + yas

Bu kod  hata verir!  Çünkü Python, bir string (“Yaşım: ”) ile bir sayıyı 25 doğrudan birleştiremez hangi işlemi yapacağını bilemez (toplama mı, birleştirme mi?). Burada devreye  tip dönüşümü  girer:

Kaynak kod


Kod:
yas = 25
mesaj = "Yaşım: " + str(yas)   # sayıyı string'e çeviriyoruz
print(mesaj)                    # Yaşım: 25

Çıktı


Yaşım: 25


BİLGİ
“str()”, “int()”, “float()” fonksiyonları, bir değeri bir tipten diğerine çevirmemizi sağlar:

Kaynak kod


Kod:
print(str(25))      # “25”  (sayıyı yazıya çevirir)
print(int(“25”))    # 25    (yazıyı sayıya çevirir)
print(float(“3.14”)) # 3.14 (yazıyı ondalıklı sayıya çevirir)

Çıktı


25
25
3.14


DİKKAT
⚠️ Dikkat: Her string sayıya çevrilemez, örneğin stringler:
Kod:
print(int("Ahmet"))   # HATA! "Ahmet" bir sayı değil


2.8. Değişken İsimlendirme Kuralları Neden Var?
Python'da her değişken ismini istediğin gibi seçemezsin. Bazı kurallar vardır:

Kod:
isim = “Ahmet”        # ✅ geçerli
_gizli = “veri”        # ✅ geçerli (alt çizgiyle başlayabilir)
2isim = “Ahmet”        # ❌ HATA! Sayıyla başlayamaz
kullanici-adi = “Ahmet” # ❌ HATA! Tire kullanılamaz

DERSTE
🤔 Neden Bu Kurallar Var? Python, kodu okurken “2isim” gibi bir ifade gördüğünde bunun bir sayı mı (“2”) yoksa bir isim mi (“isim”) olduğuna karar veremez ve belirsizlik oluşur. Kurallar, bu belirsizliği daha en baştan ortadan kaldırmak için vardır.

Ayrıca Python'da yaygın bir isimlendirme geleneği (zorunlu değil ama yaygın) şudur: birden fazla kelimeden oluşan değişkenlerde ya alt çizgi (`kullanici_adi`) ya da "camelCase" (`kullaniciAdi`) kullanılır. Python dünyasında genelde alt çizgi tercih edilir.

⚠️ Kavram Yanılgıları
❌ Yanlış düşünce: “ “=” işareti matematikteki eşittir gibi çalışır, iki tarafın aynı olduğunu söyler.”
✅ Daha doğru düşünce: “=” bir atama işlemidir, sağdaki değeri hesaplar ve soldaki isme bağlar. Eşitlik kontrolü için Python'da ayrı bir işaret vardır (“==”), bunu ilerleyen derslerde detaylı göreceğiz.

❌ Yanlış düşünce: “ “25” ile 25 aynı şeydir, ikisi de sayı 25'i temsil eder.”
✅ Daha doğru düşünce: 25 bir tam sayıdır (int), “25” ise bir yazıdır (string) sadece görsel olarak aynı karakterlerden oluşur. Python bu ikisi üzerinde tamamen farklı işlemler yapar.


👨‍🏫 Öğretmen Notu
Değişkenler anlatılırken doğrudan “değişken bir kutudur” benzetmesiyle başlanıp orada bırakılması, ileride (özellikle listeler ve fonksiyonlarda) kavram yanılgılarına yol açar. Önerilen sıra:
  1. Önce “bir bilgiyi tekrar tekrar kullanma ihtiyacı” problemi ortaya konur.
  2. Kutu/etiket benzetmesiyle temel fikir verilir.
  3. “=” işaretinin matematikten farkı özellikle vurgulanır bu, öğrencilerin en çok karıştırdığı noktadır.
  4. Veri tipleri, “neden önemli” sorusuyla birlikte (yani “+” işaretinin davranışı üzerinden) somutlaştırılır.
  5. Etiket benzetmesinin sınırları (aynı veriye iki isim bağlanması) şimdilik yüzeysel geçilir, ileride derinleştirilir.


✍️ Uygulama Soruları
Soru 1: “sehir” adında bir değişken oluştur ve içine yaşadığın şehri ata, sonra ekrana yazdır.

Soru 2: Aşağıdaki kodun çıktısı ne olur?
Kod:
sayi = 10
sayi = sayi + 5
print(sayi)

Soru 3: Aşağıdaki kod neden hata verir, nasıl düzeltilir?
Kod:
yas = 20
print("Yaşım: " + yas)

Soru 4: “type()” fonksiyonunu kullanarak “3.14” değerinin hangi veri tipinde olduğunu bul.

Soru 5:Aşağıdaki değişken isimlerinden hangileri geçerlidir, hangileri değildir? Neden?
Kod:
“ad_soyad”, “1kisi”, “_ozel”, “kullanici-no”
(Cevaplar sonundadır!)


📌 Şu Ana Kadar Neler Öğrendik?
  • Değişkenlerin bir bilgiyi bir isme bağlayarak tekrar tekrar kullanmamızı sağladığı
  • “=” işaretinin matematikteki eşittirden farklı olarak bir atama olduğu
  • Python'un her değeri otomatik olarak bir tipe (“int”, “float”, “str”, “bool”) atadığı
  • “type()” fonksiyonuyla bir değerin tipinin nasıl kontrol edildiği
  • Veri tiplerinin neden önemli olduğu (“+” işaretinin farklı davranması)
  • Tip dönüşümünün (“str()”, “int()”, “float()”) hangi problemi çözdüğü
  • Değişken isimlendirme kurallarının neden var olduğu


📌 Bu Bölümden Çıkarılacak En Önemli Sonuç
Değişkenler bir formülle değil, bir tekrar sorunuyla başladı: aynı bilgiyi defalarca yazmak yerine, ona bir isim verip o ismi kullanma ihtiyacı. Python bu ismi bir değere "atar" (eşitlemez) ve her değerin ne tür olduğunu otomatik takip eder — çünkü bir işlemin (`+` gibi) ne yapması gerektiğine karar vermek için önce üzerinde çalıştığı verinin türünü bilmesi gerekir.


📝 Bölümün Kısa Özeti
Değişkenler, bir değeri bir isme bağlayıp tekrar tekrar kullanmamızı sağlar. “=” işareti matematikteki eşitlik değil, bir atama işlemidir. Python her değerin tipini (“int”, “float”, “str”, “bool”) otomatik olarak belirler ve bu tip bilgisi, işlemlerin (“+” gibi) nasıl davranacağını belirler. Farklı tipteki değerleri bir arada kullanmak istediğimizde “str()”, “int()”, “float()” gibi fonksiyonlarla tip dönüşümü yaparız. Değişken isimlendirmenin de sayıyla başlamama gibi belirli kuralları vardır.


✍️ Soruların Cevapları
Cevap 1:
Kod:
sehir = "İstanbul"
print(sehir)

Cevap 2: “15”. Çünkü önce sağ taraf hesaplanır (10 + 5 = 15), sonra bu değer “sayi” ismine yeniden bağlanır.

Cevap 3: “yas” bir tam sayı (int), “Yaşım: ” ise bir string'dir; Python bu ikisini doğrudan “+” ile birleştiremez. Düzeltme:
Kod:
yas = 20
print("Yaşım: " + str(yas))

Cevap 4:

Kaynak kodu


Kod:
print(type(3.14))

Çıktı


<class 'float'>


Cevap 5:
  • “ad_soyad” ✅ geçerli
  • “1kisi” ❌ geçersiz (sayıyla başlıyor)
  • “_ozel” ✅ geçerli (alt çizgiyle başlayabilir)
  • “kullanici-no” ❌ geçersiz (tire kullanılamaz)

Konuyu Dinle
Hazır. Konuyu dinlemek için Oynat'a basın.

Yazarımız Hasan hakkında: Adım Hasan, ama bir dönem MyBB kullananlar beni Yondaime nicki ile tanırdı. 2009 da başladı web maceram, MyBB, Wordpress, Matematik, Adalet, Bilgisayar Programcılığı, derken şimdide burada bir şeyler yapmaya çalışıyorum :)

user avatar


 

Yazıya herhangi bir yorum yapılmadı

[-]
Hızlı Cevap
Güvenlik Kodu:
Lütfen, resmin üzerindeki harf ve rakamlardan oluşan Güvenlik Kodunu, aşağıdaki metin kutusuna giriniz.
Güvenlik Kodu:
(Büyük/Küçük harf duyarsız)


 
Reklam
Reklam


Kategoriler


Yasal Uyarı
Bu internet sitesi içeriğinde yer alan tüm yazılar Gidenler.Me’ye ait olup, 5846 sayılı Fikir ve Sanat Eserleri Kanunu ve 5237 sayılı Türk Ceza Kanunu kapsamında korunmaktadır. Bu hakları ihlal eden kişiler, 5846 sayılı Fikir ve Sanat eserleri Kanunu ve 5237 sayılı Türk Ceza Kanununda yer alan hukuki ve cezai yaptırımlara tabi olurlar. Gidenler.Me, ilgili yasal işlem başlatma hakkına sahiptir. Gidenler.Me Blog'da yer alan tüm yazılar/makaleler bilgi edinme amacı ile sınırlı olup Gidenler.Me'den izin alınmaksızın değiştirilemez, çoğaltılamaz, yayımlanamaz, dağıtılamaz, umuma iletilemez, başka bir lisana çevrilemez.


Türkçe Çeviri: MyBB, Yazılım: MyBB, © 2002-2026 MyBB Group.
GM v3.0.0.8 Beta theme designed for MyBB