Değişken, Koşul, Döngü: Python ve JavaScript ile Temeller
Programlamanın üç temel taşı değişken, koşul ve döngüyü Python ve JavaScript örnekleriyle yan yana öğren. Sık hatalar, alıştırmalar ve SSS bu rehberde.
Hangi programlama dilini öğrenirsen öğren, karşına ilk çıkacak üç kavram aynıdır: değişken, koşul ve döngü. Bir oyundaki can sayısı bir değişkende durur, "can sıfır olduysa oyun bitti" demek bir koşuldur, oyunun saniyede defalarca kendini yenilemesi de bir döngüdür. Bu üçünü anladığında, karşına çıkan programların büyük kısmını okuyup ne yaptığını tahmin edebilirsin.
Bu rehberin sonunda şunları yapabileceksin:
- Değişken oluşturup değerini değiştirmek, metin ile sayı arasındaki farkı bilmek,
if,elif/else ifveelseile programına karar verdirmek,forvewhiledöngüleriyle bir işi istediğin kadar tekrarlatmak,- Üçünü birleştirip küçük ama gerçek bir program yazmak.
Her örneği hem Python hem de JavaScript ile yan yana göreceksin. Böylece fikrin dilden bağımsız olduğunu, değişenin yalnızca yazım şekli olduğunu fark edeceksin. Kodları denemek için bilgisayarına bir şey kurmana gerek yok: tarayıcıdaki kod editörünü açıp örnekleri yapıştırman yeterli.
1. Değişken: Bilgiyi saklayan etiketli kutu
Değişkeni, üzerinde isim etiketi olan bir kutu gibi düşünebilirsin. Kutunun içine bir değer koyarsın, sonra o değere etiketin adıyla ulaşırsın. Kutunun içindekini istediğin zaman değiştirebilirsin; zaten adı da buradan gelir.
Python'da değişken
Python'da değişken oluşturmak için adını yazar, eşittir işareti koyar ve değeri verirsin. Başka hiçbir şey gerekmez.
isim = "Ela"
yas = 11
boy = 1.45
oyun_bitti = False
print(isim, "bu yıl", yas, "yaşında.")
yas = yas + 1
print("Gelecek yıl", yas, "yaşında olacak.")
print("Boyu:", boy, "metre. Oyun bitti mi?", oyun_bitti)
JavaScript'te değişken
JavaScript'te değişkenin önüne bir anahtar kelime koyarsın: değeri sonradan değişecekse let, hiç değişmeyecekse const. Satır sonlarındaki noktalı virgül de JavaScript'in alışkanlığıdır.
const isim = "Ela";
let yas = 11;
const boy = 1.45;
let oyunBitti = false;
console.log(isim, "bu yıl", yas, "yaşında.");
yas = yas + 1;
console.log("Gelecek yıl", yas, "yaşında olacak.");
console.log("Boyu:", boy, "metre. Oyun bitti mi?", oyunBitti);
İki programın çıktısı da aynıdır:
Ela bu yıl 11 yaşında.
Gelecek yıl 12 yaşında olacak.
Boyu: 1.45 metre. Oyun bitti mi? False
(JavaScript son satırda False yerine küçük harfle false yazar.)
Buradaki en önemli satır yas = yas + 1. Matematikte bu ifade saçma olurdu, ama programlamada eşittir işareti "eşittir" değil, "sağdakini hesapla, sonucu soldaki kutuya koy" anlamına gelir. Önce yas + 1 hesaplanır (11 + 1 = 12), sonra 12 değeri yas kutusuna yazılır.
Değer türleri
Kutuya koyduğun her değerin bir türü vardır. Başlangıçta bilmen gereken dört tür şunlar:
| Tür | Örnek | Python adı | JavaScript adı |
|---|---|---|---|
| Tam sayı | 11, -3, 0 | int | number |
| Ondalıklı sayı | 1.45 | float | number |
| Metin | "Ela" | str | string |
| Doğru / yanlış | True / False (Python), true / false (JS) | bool | boolean |
Ondalıklı sayılarda virgül değil nokta kullanılır: 1,45 değil 1.45. Metinler ise her zaman tırnak içinde yazılır. Tırnak işareti bilgisayara "bu bir isim değil, olduğu gibi yazılacak bir metin" der.
Metin mi, sayı mı? Küçük ama önemli fark
Tırnak içindeki "5" bir sayı değil, içinde 5 karakteri olan bir metindir. İki metni topladığında yan yana eklenirler. Gerçek toplama için önce sayıya çevirmen gerekir:
a = "5"
b = "3"
print(a + b) # 53 (iki metin yan yana)
print(int(a) + int(b)) # 8 (iki sayı toplandı)
print(type(a), type(int(a)))
const a = "5";
const b = "3";
console.log(a + b); // 53
console.log(Number(a) + Number(b)); // 8
console.log(typeof a, typeof Number(a));
Bu fark, kullanıcıdan bilgi aldığında çok önemlidir. Python'da input() ile alınan her şey metin olarak gelir; sayı gibi kullanmak istiyorsan int() ile çevirmelisin:
yas = input("Kaç yaşındasın? ")
yas = int(yas)
print("10 yıl sonra", yas + 10, "yaşında olacaksın.")
Kullanıcı 11 yazarsa ekranda "10 yıl sonra 21 yaşında olacaksın." görünür. İkinci satırı silersen program hata verir, çünkü metne sayı eklenemez.
İyi değişken adı nasıl seçilir?
- Anlamlı olsun:
xyerinepuan,ayerinecan_sayisi. Bir hafta sonra koduna baktığında teşekkür edeceksin. - Türkçe karakter kullanma:
yaşyerineyas,şehiryerinesehir. Bazı diller izin verse de paylaştığın kodda sorun çıkarabilir. - Boşluk olmasın: Python'da kelimeleri alt çizgiyle (
oyun_bitti), JavaScript'te büyük harfle (oyunBitti) birleştirmek yaygın bir alışkanlıktır. - Rakamla başlamasın:
2oyuncugeçersizdir,oyuncu2geçerlidir. - Büyük-küçük harf farklıdır:
Puanilepuaniki ayrı değişkendir.
2. Koşul: Programa karar verdirmek
Gerçek hayatta sürekli karar veririz: "Yağmur yağıyorsa şemsiye al, yağmıyorsa alma." Programlar da aynı şekilde karar verir. Bir koşul doğruysa bir şey, yanlışsa başka bir şey yapılır.
Karşılaştırma işaretleri
| Anlamı | Python | JavaScript |
|---|---|---|
| Eşit mi? | == | === |
| Eşit değil mi? | != | !== |
| Büyük / küçük | > < | > < |
| Büyük eşit / küçük eşit | >= <= | >= <= |
Her karşılaştırmanın sonucu ya doğru ya yanlıştır. 7 > 3 doğru, 2 == 5 yanlıştır.
if, elif / else if, else
Bir oyunda puana göre rozet veren bir program yazalım:
puan = 72
if puan >= 90:
print("Harika! Altın rozet kazandın.")
elif puan >= 70:
print("Çok iyi! Gümüş rozet senin.")
elif puan >= 50:
print("Geçtin. Bronz rozet.")
else:
print("Bu sefer olmadı, tekrar dene.")
const puan = 72;
if (puan >= 90) {
console.log("Harika! Altın rozet kazandın.");
} else if (puan >= 70) {
console.log("Çok iyi! Gümüş rozet senin.");
} else if (puan >= 50) {
console.log("Geçtin. Bronz rozet.");
} else {
console.log("Bu sefer olmadı, tekrar dene.");
}
Puan 72 olduğu için iki program da "Çok iyi! Gümüş rozet senin." yazar. Program koşulları yukarıdan aşağıya sırayla kontrol eder ve ilk doğru olanı çalıştırıp gerisini atlar. 72, 90'dan büyük değil; ama 70'ten büyük, bu yüzden ikinci blok çalışır. Üçüncü koşul da doğru olsa bile ona hiç bakılmaz.
İki dil arasındaki yazım farklarına dikkat et:
- Python koşulun sonuna iki nokta (
:) koyar ve içerideki satırları girintiyle (genellikle 4 boşluk) belirler. - JavaScript koşulu parantez içine alır ve içerideki satırları süslü parantezle
{ }gruplar. Girinti okunabilirlik içindir ama zorunlu değildir. - Python'daki
elif, JavaScript'teelse ifolarak yazılır.
Koşulları birleştirmek: ve, veya, değil
Bazen birden fazla şartı aynı anda kontrol etmen gerekir. Bunun için üç bağlaç vardır:
| Anlamı | Python | JavaScript | Ne zaman doğru? |
|---|---|---|---|
| ve | and | && | İki koşul da doğruysa |
| veya | or | || | En az biri doğruysa |
| değil | not | ! | Koşulu tersine çevirir |
yas = 12
izin_var = True
if yas >= 10 and izin_var:
print("Oyuna girebilirsin.")
hava = "yağmurlu"
if hava == "yağmurlu" or hava == "karlı":
print("Şemsiyeni al.")
if not izin_var:
print("Önce izin iste.")
const yas = 12;
const izinVar = true;
if (yas >= 10 && izinVar) {
console.log("Oyuna girebilirsin.");
}
const hava = "yağmurlu";
if (hava === "yağmurlu" || hava === "karlı") {
console.log("Şemsiyeni al.");
}
if (!izinVar) {
console.log("Önce izin iste.");
}
Çıktıda ilk iki mesaj görünür. Üçüncü mesaj görünmez, çünkü izin_var doğru; "değil" onu yanlışa çevirir ve koşul sağlanmaz.
3. Döngü: Bilgisayara tekrar yaptırmak
Bilgisayarlar sıkılmadan aynı işi binlerce kez yapabilir. Ekrana 1'den 100'e kadar sayı yazdırmak için 100 satır kod yazmana gerek yoktur; bir döngü bunu 2–3 satırda halleder. İki temel döngü türü vardır: for ve while.
for döngüsü: Kaç kez tekrarlanacağını biliyorsan
for i in range(1, 6):
print(i, "x 7 =", i * 7)
meyveler = ["elma", "armut", "kiraz"]
for meyve in meyveler:
print("Bugün", meyve, "yedim.")
for (let i = 1; i <= 5; i++) {
console.log(i, "x 7 =", i * 7);
}
const meyveler = ["elma", "armut", "kiraz"];
for (const meyve of meyveler) {
console.log("Bugün", meyve, "yedim.");
}
İlk döngü 7'ler çarpım tablosunun ilk beş satırını yazar, ikincisi listedeki her meyve için bir cümle kurar.
Burada dikkat etmen gereken bir ayrıntı var: Python'daki range(1, 6) 1'den başlar ama 6'yı dahil etmez; yani 1, 2, 3, 4, 5 üretir. JavaScript'te aynı şeyi i <= 5 koşuluyla söyleriz. JavaScript'teki i++ ise "i'yi bir artır" demenin kısa yoludur.
while döngüsü: Bir koşul sürdükçe
Kaç kez tekrarlanacağını önceden bilmiyorsan, ya da "şu durum değişene kadar devam et" demek istiyorsan while kullanırsın. Bir roket geri sayımı yapalım:
sayac = 5
while sayac > 0:
print(sayac, "...")
sayac = sayac - 1
print("Roket kalktı!")
let sayac = 5;
while (sayac > 0) {
console.log(sayac, "...");
sayac = sayac - 1;
}
console.log("Roket kalktı!");
Döngü her turda önce koşula bakar: sayac hâlâ 0'dan büyük mü? Büyükse içeriyi çalıştırır. İçerideki sayac = sayac - 1 satırı çok önemlidir. Onu silersen sayaç hep 5 kalır, koşul hiç yanlış olmaz ve program sonsuza kadar döner. Buna sonsuz döngü denir.
for; "oyuncu doğru cevabı bulana kadar sor" diyorsan while daha doğal durur.4. Üçünü birleştirmek: İlk gerçek programların
Asıl güç, bu üç taşı birlikte kullandığında ortaya çıkar. Aşağıdaki iki program, döngünün içine koşul koyar ve sonuçları değişkenlerde biriktirir.
Kuzey Kutbu sayma oyunu
Sınıflarda sık oynanan bir sayma oyununun kod hâli: 1'den 15'e kadar say, 3'e bölünen sayılar yerine "Kuzey", 5'e bölünenler yerine "Kutbu", ikisine de bölünenler yerine "Kuzey Kutbu" de. % işareti bölümden kalanı verir; kalan 0 ise sayı tam bölünüyor demektir.
# 1'den 15'e kadar say:
# 3'e bölünenlere "Kuzey", 5'e bölünenlere "Kutbu",
# ikisine de bölünenlere "Kuzey Kutbu" de.
for sayi in range(1, 16):
if sayi % 3 == 0 and sayi % 5 == 0:
print("Kuzey Kutbu")
elif sayi % 3 == 0:
print("Kuzey")
elif sayi % 5 == 0:
print("Kutbu")
else:
print(sayi)
// 1'den 15'e kadar say:
// 3'e bölünenlere "Kuzey", 5'e bölünenlere "Kutbu",
// ikisine de bölünenlere "Kuzey Kutbu" de.
for (let sayi = 1; sayi <= 15; sayi++) {
if (sayi % 3 === 0 && sayi % 5 === 0) {
console.log("Kuzey Kutbu");
} else if (sayi % 3 === 0) {
console.log("Kuzey");
} else if (sayi % 5 === 0) {
console.log("Kutbu");
} else {
console.log(sayi);
}
}
Çıktı şöyle başlar: 1, 2, Kuzey, 4, Kutbu, Kuzey, 7, 8, … ve 15'te "Kuzey Kutbu" ile biter. Koşulların sırasına dikkat et: "ikisine de bölünüyor mu?" kontrolü en üstte olmak zorunda. Onu en alta koysaydın, 15 sayısı önce "3'e bölünüyor mu?" sorusuna takılır ve yalnızca "Kuzey" yazılırdı.
Sınıf puanı hesaplayıcı
Bir listedeki puanların toplamını, ortalamasını ve kaç kişinin geçtiğini bulalım. Burada değişkenler sayaç ve biriktirici olarak kullanılıyor: döngüden önce sıfırlanıyor, döngünün her turunda büyüyor.
puanlar = [45, 80, 62, 95, 38, 71]
toplam = 0
gecen = 0
for puan in puanlar:
toplam = toplam + puan
if puan >= 50:
gecen = gecen + 1
ortalama = toplam / len(puanlar)
print("Toplam:", toplam)
print("Ortalama:", round(ortalama, 1))
print("Geçen öğrenci sayısı:", gecen)
const puanlar = [45, 80, 62, 95, 38, 71];
let toplam = 0;
let gecen = 0;
for (const puan of puanlar) {
toplam = toplam + puan;
if (puan >= 50) {
gecen = gecen + 1;
}
}
const ortalama = toplam / puanlar.length;
console.log("Toplam:", toplam);
console.log("Ortalama:", ortalama.toFixed(1));
console.log("Geçen öğrenci sayısı:", gecen);
İki program da aynı sonucu verir:
Toplam: 391
Ortalama: 65.2
Geçen öğrenci sayısı: 4
Bu kalıp (değişkeni sıfırla, döngüde biriktir, sonunda kullan) programlamada en çok karşına çıkacak kalıplardan biridir. Bir oyunda toplanan altınları saymak da, bir alışveriş sepetinin tutarını hesaplamak da aynı mantıkla çalışır.
Sık yapılan hatalar
=ile==karıştırmak. Tek eşittir değer atar, çift eşittir karşılaştırır. Python'daif puan = 100:yazarsanSyntaxErroralırsın; doğrusuif puan == 100:.- İki noktayı veya girintiyi unutmak (Python).
if,elif,else,forvewhilesatırlarının sonunda:olmalı, altındaki satırlar içeri girintili olmalı. Girinti eksikseIndentationErrorgörürsün. - Metinle sayıyı doğrudan birleştirmek. Python'da
"Yaşın: " + yasyazarsanTypeError: can only concatenate str (not "int") to strhatası alırsın. Çözüm:"Yaşın: " + str(yas)ya daf"Yaşın: {yas}". JavaScript hata vermez ama"5" + 3sonucunu"53"yapar; bu da sessiz bir hatadır. - JavaScript'te
==kullanmak.5 == "5"sonucutrue,5 === "5"sonucufalse'tur. İki eşittir türleri kendiliğinden dönüştürür ve beklenmedik sonuçlar doğurabilir. Yeni başlıyorsan her zaman===kullan. constile tanımladığın değişkeni değiştirmeye çalışmak. JavaScriptTypeError: Assignment to constant variable.hatası verir. Değeri değişecek değişkenler içinletkullan.- Sonsuz döngü.
whileiçinde koşulu değiştiren satırı unutmak programı kilitler. Döngüyü yazarken kendine "bu döngü nasıl bitecek?" diye sor. - Bir eksik / bir fazla saymak.
range(1, 10)10'u içermez. JavaScript'tei < 10ilei <= 10arasında da bir tur fark vardır. Emin değilsen döngünün içineprint(i)veyaconsole.log(i)koyup hangi sayıların üretildiğine bak.
Kendin dene
Aşağıdaki görevleri editörde önce Python ile, sonra JavaScript ile yazmayı dene. Görevler giderek zorlaşıyor.
- Kendini tanıt:
isim,yasvesehiradında üç değişken oluştur ve bunları kullanarak "Merhaba, ben ..., ... yaşındayım ve ...'da yaşıyorum." cümlesini yazdır. - Tek mi çift mi? Bir
sayideğişkeni oluştur.%işaretini kullanarak sayı çiftse "Çift", tekse "Tek" yazdır. Farklı sayılarla dene. - Çarpım tablosu: Kullanıcının seçtiği bir sayının (değişkende tut) 1'den 10'a kadar çarpım tablosunu döngüyle yazdır.
- Pozitif say:
[4, -2, 7, 0, -5, 9]listesindeki pozitif sayıların kaç tane olduğunu ve toplamını bul. (İpucu: iki ayrı biriktirici değişken kullan.) - Şifre denemesi: Bir
whiledöngüsüyle kullanıcıdan şifre iste. Doğru şifre girilince "Hoş geldin!" yazıp döngüden çık. En fazla 3 deneme hakkı olsun; hak biterse "Hesap kilitlendi." yazsın. (Python'dainput(), tarayıcı JavaScript'indeprompt()kullanabilirsin.)
Beşinci görevi bitirdiysen, aynı yapıyı genişleterek bir oyun yazmaya hazırsın: Python ile sayı tahmin oyunu rehberi tam olarak bu üç taşın üzerine kurulu.
Sırada ne var?
- Konuları adım adım, alıştırmalarla pekiştirmek için Python dersleri veya JavaScript dersleri sayfasına geç.
- Hangi dille devam edeceğine karar veremiyorsan Python mu JavaScript mi? rehberine göz at.
- Hata mesajlarıyla boğuşuyorsan yeni başlayanların en sık kod hataları rehberi işini kolaylaştırır.
- Aynı kavramların başka dillerde nasıl yazıldığını merak ediyorsan diller sayfasına bak.
Sık sorulan sorular
Değişken, koşul ve döngüyü öğrenmek için hangi dille başlamalıyım?
Fikirler iki dilde de aynıdır. Python'un yazımı daha sade olduğu için ilk adımda genellikle daha az kafa karıştırır; JavaScript ise tarayıcıda doğrudan çalıştığı için web sayfası ve oyun yapmak isteyenlere hızlı sonuç verir. Birini seçip temelleri öğrendikten sonra diğerine geçmek kolaydır.
Python'da neden JavaScript'teki gibi süslü parantez kullanılmıyor?
Python, hangi satırların bir koşulun veya döngünün içinde olduğunu girintiyle anlar. Bu yüzden girinti Python'da zorunludur ve yanlış girinti hata verir. JavaScript ise aynı işi süslü parantezlerle yapar; girinti yalnızca okunabilirlik içindir.
JavaScript'te let ve const arasındaki fark nedir?
let ile tanımlanan değişkenin değeri sonradan değiştirilebilir, const ile tanımlananınki değiştirilemez. Değiştirmeye çalışırsan TypeError alırsın. Değeri değişmeyecek her şey için const, sayaç veya puan gibi değişen değerler için let kullanmak iyi bir alışkanlıktır.
for mu while mı kullanmalıyım?
Kaç kez tekrarlanacağını biliyorsan veya bir listenin her elemanını tek tek dolaşacaksan for daha uygundur. Tekrar sayısı önceden belli değilse ve bir durum değişene kadar devam etmek istiyorsan, örneğin oyuncu doğru cevabı bulana kadar, while daha doğaldır.
Programım hiç durmuyor, ne yapmalıyım?
Büyük olasılıkla sonsuz döngü yazdın. while koşulunu değiştiren bir satırın döngünün içinde olup olmadığını kontrol et. Programı durdurmak için terminalde Ctrl+C tuşlarına basabilir, tarayıcıda ise sayfayı yenileyebilirsin.
Bu üç kavramı öğrendikten sonra ne yapmalıyım?
Bunları birleştiren küçük projeler yaz: sayı tahmin oyunu, çarpım tablosu testi veya basit bir hesap makinesi iyi başlangıçlardır. Ardından fonksiyonlar ve listeler gibi konulara geçerek programlarını daha düzenli hâle getirebilirsin.