İçeriğe geç
XDD.baby Yazılım Öğrenme
Sözlük Hata rehberi 0/56

Blok 1 · Ders 1

İlk programın: console.log, değişkenler ve hata okuma

Ekrana yazı yazdırıyor, bilgileri değişken denen kutulara koyuyor, basit hesap yapıyor ve ilk hata mesajını okumayı öğreniyorsun.

Bu dersin sonunda

  • console.log ile ekrana metin ve sayı yazdırabilirsin
  • Metin ile sayıyı ayırt edip tırnak kuralını doğru uygulayabilirsin
  • let ve const ile değişken oluşturup değerini güncelleyebilirsin
  • Dört işlem ve kalan (%) ile oyun hesapları yapabilirsin
  • Bir hata mesajında dosyayı, satırı, hata türünü ve açıklamayı bulabilirsin
  • Çalışmanı Git ile ilk kez kaydedebilirsin
Bu sayfada
  1. Program yukarıdan aşağı çalışır
  2. console.log: ekrana yazdırmak
  3. Tırnak kuralı: bu dersin en önemli kuralı
  4. Değişken: etiketli kutu
  5. = eşittir değil, "koy" demek
  6. let mi, const mı?
  7. Hesap yapmak
  8. Metinleri birleştirmek
  9. Yorum satırı: kendine not
  10. Hata mesajı okumak
  11. Sık hatalar
  12. Görevler
  13. Kendini sına
  14. Kayıt noktası: ilk commit

Bu derste ilk gerçek programını yazıyorsun. Ekrana bir şeyler yazdırmayı, bilgileri değişken denen kutulara koymayı, onlarla hesap yapmayı ve en önemlisi, bir şey ters gittiğinde hata mesajını okumayı öğreneceksin. Son maddeyi küçümseme: yazılımcıların günü kod yazmaktan çok hata okumakla geçer.

Program yukarıdan aşağı çalışır

Program, bilgisayara verdiğin sıralı komutlar listesidir. Bilgisayar bu listeyi en üst satırdan başlayıp aşağı doğru, satır satır yerine getirir. Bir satır bitmeden sonrakine geçmez.

VS Code'un solundaki dosya listesinde (Explorer) boş bir yere sağ tıkla, New File seç ve dosyaya ders1.js adını ver. Sonra içine şu üç satırı kendi elinle yaz. Kopyalayıp yapıştırma: parmaklarının da bu işaretlere alışması gerekiyor.

ders1.js — ogren — Visual Studio Code
ders1.js
console.log("Hoş geldin")console.log("Maç başlıyor")console.log("İyi oyunlar")
PROBLEMSOUTPUTDEBUG CONSOLETERMINAL
PS C:\kod\ogren> node ders1.jsHoş geldinMaç başlıyorİyi oyunlar
Ln 1, Col 1Spaces: 4UTF-8JavaScript

Üstte dosya, altta terminal. node ders1.js komutu, Node'a "bu dosyayı baştan sona çalıştır" der.

Dosyayı kaydet (Ctrl+S), terminale node ders1.js yaz ve Enter'a bas. Üç satır, yazdığın sırayla ekrana gelir.

ders1.js 1 console.log("Hoş geldin") 2 console.log("Maç başlıyor") 3 console.log("İyi oyunlar") Terminal Hoş geldin Maç başlıyor İyi oyunlar
Şekil 1.1 Her satır sırayla çalışır ve terminale bir satır yazar.

Şimdi son satırı kesip en üste taşı ve yeniden çalıştır. Çıktının sırası da değişecek. Program tam olarak yazdığını, yazdığın sırayla yapar.

console.log: ekrana yazdırmak

console.log(...) "parantezin içindekini terminale yaz" demektir. Şimdilik onu tek parça bir komut gibi ezberle; parçalarının ne anlama geldiği aşağıda.

console.log("Merhaba") console yazının çıktığı yer: terminal ekranı log "yaz" demek (İngilizcede kayıt tutmak) ( ) yazdırılacak şey bu parantezin içine "Merhaba" tırnak içi: harfi harfine yazılır
Şekil 1.2 console.log komutunun parçaları.

Parantezin içine iki tür şey koyabilirsin:

  • Metin: tırnak içinde yazılan her şey. "Merhaba", "Ahri", "3 kill aldın".
  • Sayı: tırnaksız rakamlar. 100, 3.5, -20.
ders1.js
console.log("Ahri")console.log(100)console.log("100")console.log(5 + 3)console.log("5 + 3")
Çıktı
Ahri10010085 + 3

Son iki satıra dikkat et. Tırnaksız 5 + 3 bir hesaptır; JavaScript hesabı yapar ve 8 yazar. Tırnak içindeki "5 + 3" ise yalnızca yazıdır, olduğu gibi basılır. 100 ile "100" ekranda aynı görünür ama biri sayı, öteki metin; farkı birazdan önem kazanacak.

Tırnak kuralı: bu dersin en önemli kuralı

Şunu aklına kazı:

  • Tırnak içi harfi harfine metindir. JavaScript içine bakmaz.
  • Tırnaksız sözcük bir addır. JavaScript o adla açılmış bir kutu (değişken) arar.

Yani console.log("hp") ekrana hp yazar. console.log(hp) ise "hp adlı kutunun içindekini yaz" demektir. Böyle bir kutu yoksa program hata verir:

ders1.js
console.log(hp)
Hata çıktısı
C:\kod\ogren\ders1.js:1console.log(hp)            ^ ReferenceError: hp is not defined    at Object.<anonymous> (C:\kod\ogren\ders1.js:1:13)    ... Node.js v24.20.0

ReferenceError: hp is not defined "hp tanımlı değil" demek: JavaScript hp adında bir kutu aradı, bulamadı. En sık göreceğin hata budur. Hata mesajlarının nasıl okunduğunu dersin sonuna doğru adım adım anlatıyoruz.

JavaScript✗ Yanlış
console.log(Merhaba)
JavaScript✓ Doğru
console.log("Merhaba")

Değişken: etiketli kutu

Diyelim ki bir programda Ahri'nin canını (100) on farklı yerde kullanıyorsun. Can değişince on yeri tek tek düzeltmen gerekir; birini unutursan program yanlış çalışır. Bunun yerine değeri bir kez bir kutuya koyar, kutuya bir ad verirsin. Sonra hep adını kullanırsın. Bu kutuya değişken denir.

ders1.js
let hp = 100console.log(hp)console.log("Ahri'nin canı: " + hp)
Çıktı
100Ahri'nin canı: 100

İlk satır şunu söyler: "hp adında yeni bir kutu aç ve içine 100 koy." Sonraki satırlarda hp yazdığın her yerde JavaScript kutuyu açıp içindeki 100'ü kullanır.

let hp = 100 let yeni bir kutu aç hp kutunun etiketi (adı) = içine koy 100 kutuya konan değer hp 100
Şekil 1.3 Değişken, üzerinde etiket olan bir kutudur. Etiket kutunun adı, içindeki de değeri.

Değişken oluşturma kalıbı

Her değişken aynı kalıpla oluşturulur. Dört parçası var ve hiçbiri atlanamaz:

ParçaÖrnekAnlamı
anahtar sözcüklet"yeni bir kutu açıyorum"
adhpkutunun etiketi
eşittir="içine şunu koy"
değer100kutuya konan şey

= işaretini unutmak çok sık yapılan bir hatadır:

ders1.js
let hp 100
Hata çıktısı
C:\kod\ogren\ders1.js:1let hp 100       ^^^ SyntaxError: Unexpected number    at wrapSafe (node:internal/modules/cjs/loader:1861:18)    ... Node.js v24.20.0

Unexpected number "beklenmeyen sayı" demek. JavaScript let hp'den sonra ya = ya da satır sonu bekliyordu; karşısına 100 çıkınca ne yapacağını bilemedi. ^^^ işaretleri tam da o sayının altında duruyor.

İyi ad seçmek

  • Harfle başla, boşluk kullanma: oyuncuAdi olur; oyuncu adi ve 2oyuncu olmaz.
  • Birden çok sözcüğü camelCase ile birleştir: ilk sözcük küçük, sonrakilerin ilk harfi büyük: kalanCan, toplamAltin.
  • Adlarda Türkçe harf kullanma (ı, ş, ğ, ü, ö, ç). JavaScript buna izin verir, ama başka klavyeden çalışan biri adını yazamaz, bazı araçlar karıştırır ve dünyadaki kodların neredeyse hepsi İngilizce harflerle yazılır. Metinlerin içinde ("Ahri'nin canı") Türkçe harf serbest.
  • Büyük-küçük harf farklıdır: hp ile Hp iki ayrı ad. let hp = 100 yazıp console.log(Hp) dersen ReferenceError: Hp is not defined alırsın.
  • Anlamlı ad seç: x yerine hasar. Kod, yazıldığından çok daha fazla okunur.

= eşittir değil, "koy" demek

Matematikte = "eşittir" demek. JavaScript'te tek = işareti "sağdakini hesapla, soldaki kutuya koy" anlamına gelir. Bu yüzden şu satır matematikte saçma, programcılıkta tamamen normaldir:

ders1.js
let hp = 100hp = hp - 10console.log(hp)
Çıktı
90

İkinci satırı sağdan sola oku:

hp = hp - 10 sonuç buraya önce bu hesaplanır 1. Kutuya bak hp kutusunda: 100 2. Hesapla 100 - 10 = 90 3. Sola koy hp kutusu artık: 90
Şekil 1.4 hp = hp - 10 üç adımda çalışır: önce sağ taraf hesaplanır, sonra sonuç soldaki kutuya konur.

İkinci satırda let yok, çünkü kutu zaten var; sen var olan kutunun içini değiştiriyorsun. Aynı kutuyu ikinci kez let ile açmaya kalkarsan JavaScript itiraz eder:

ders1.js
let hp = 100let hp = 90
Hata çıktısı
C:\kod\ogren\ders1.js:2let hp = 90    ^ SyntaxError: Identifier 'hp' has already been declared    at wrapSafe (node:internal/modules/cjs/loader:1861:18)    ... Node.js v24.20.0

Identifier 'hp' has already been declared: "hp adı zaten tanımlandı". Kural basit: let yalnızca kutuyu ilk açarken yazılır.

let mi, const mı?

İki çeşit kutu var:

  • let: içi sonradan değişebilen kutu.
  • const: içine bir kez konan değerin değişemediği, mühürlü kutu. Adı İngilizce constant (sabit) sözcüğünden geliyor.
ders1.js
const oyuncu = "Ahri"let hp = 100hp = hp - 25console.log(oyuncu + " hasar aldı, kalan can: " + hp)
Çıktı
Ahri hasar aldı, kalan can: 75

const kutunun içini değiştirmeye çalışırsan:

ders1.js
const oyuncu = "Ahri"oyuncu = "Lux"
Hata çıktısı
C:\kod\ogren\ders1.js:2oyuncu = "Lux"       ^ TypeError: Assignment to constant variable.    at Object.<anonymous> (C:\kod\ogren\ders1.js:2:8)    ... Node.js v24.20.0

Assignment to constant variable "sabit bir kutuya değer atamaya çalıştın" demek.

hp 100 75 let: içi değişebilir oyuncu "Ahri" const: mühürlü, değişmez
Şekil 1.5 let kutusunun içi değişebilir. const kutusu mühürlüdür.

Hesap yapmak

JavaScript bir hesap makinesi gibi de çalışır:

İşaretAnlamıÖrnekSonuç
+toplama100 + 25125
-çıkarma100 - 3070
*çarpma45 * 3135
/bölme90 / 422.5
%kalan17 % 52

Çarpma işareti x değil yıldızdır (*), bölme işareti eğik çizgidir (/). Türkçe Q klavyede * tuşu 0'ın sağındadır, / için Shift+7'ye basarsın.

İşlem sırası okulda öğrendiğin gibidir: önce çarpma ve bölme, sonra toplama ve çıkarma. Önce yapılmasını istediğin kısmı parantez içine al:

ders1.js
console.log(2 + 3 * 4)console.log((2 + 3) * 4)
Çıktı
1420

Bir oyun örneği: Ahri'nin 100 canı var ve her biri 12 hasar veren üç minyon ona vuruyor.

ders1.js
let hp = 100const minyonHasari = 12hp = hp - minyonHasari * 3console.log("Minyonlardan sonra can: " + hp)
Çıktı
Minyonlardan sonra can: 64

Üçüncü satırda önce 12 * 3 hesaplanır (36), sonra 100 - 36 (64), en son sonuç hp kutusuna konur.

Kalan işareti: %

% bölmeden artanı verir. 17 % 5 sonucu 2'dir, çünkü 17'nin içinde üç tane 5 var (15 eder), geriye 2 kalır. Neden işine yarasın? "Her 4. saldırı kritik vuruş" gibi kuralları onunla yazacaksın: saldırı sayısı 4'e tam bölünüyorsa kalan 0 olur. Şimdilik ne yaptığını bilmen yeter.

ders1.js
console.log(17 % 5)console.log(20 % 4)console.log(7 % 10)
Çıktı
207

Bölmenin iki sürprizi

ders1.js
console.log(10 / 3)console.log(7 / 0)
Çıktı
3.3333333333333335Infinity
  • 10 / 3 sonsuza kadar süren bir sayı. Bilgisayar bir yerde keser; sondaki 5 o kesmenin izi. Sayıları yuvarlamayı Ders 9'da öğreneceksin.
  • Sıfıra bölmek hata vermez, Infinity (sonsuz) çıkar. Programında Infinity görürsen bir yerde sıfıra böldüğünü anla.

Metinleri birleştirmek

+ iki sayının arasındayken toplar, iki metnin arasındayken onları yan yana yapıştırır:

ders1.js
console.log("Ahri" + "dead")console.log("Ahri" + " " + "dead")console.log("Ahri " + "dead")
Çıktı
AhrideadAhri deadAhri dead

JavaScript araya kendiliğinden boşluk koymaz. Boşluk istiyorsan tırnağın içine sen koyarsın. Metinle değişkeni birleştirirken de aynı kural geçerli:

ders1.js
const oyuncu = "Lux"let altin = 300console.log(oyuncu + " şu an " + altin + " altına sahip")
Çıktı
Lux şu an 300 altına sahip

" şu an " metninin başındaki ve sonundaki boşluklara bak. Onlar olmasaydı çıktı Luxşu an300 altına sahip olurdu.

Yorum satırı: kendine not

// ile başlayan her şey yorumdur. JavaScript o kısmı tamamen görmezden gelir; bu satırlar sana ve kodunu okuyacak diğer insanlara bırakılan notlardır.

ders1.js
// Ahri'nin başlangıç değerlerilet hp = 100let altin = 300 // dükkâna girmeden önce // console.log("bu satır çalışmaz")console.log(hp, altin)
Çıktı
100 300

Yorumun ikinci kullanımı: bir satırı silmeden geçici olarak kapatmak. Satırın başına // koyarsın, satır çalışmaz; işareti kaldırınca geri gelir. VS Code'da satırı seçip menüden Edit → Toggle Line Comment ile de yapabilirsin. Menüde yanında yazan kısayolu öğrenirsen hız kazanırsın.

Hata mesajı okumak

Program yazarken hata alacaksın. Sen de, on yıllık yazılımcı da, her gün. Fark şu: deneyimli biri mesajı okuyup bir dakikada düzeltir, yeni başlayan ise kırmızı yazıyı görünce paniğe kapılır. Okumayı öğrenirsen hata mesajı, neyin nerede bozulduğunu söyleyen bir yol tarifine dönüşür.

Şu programı yaz ve çalıştır. Bilerek hatalı:

ders1.js
console.log("1. satır çalıştı")console.log("2. satır çalıştı")console.log(can)console.log("4. satır çalıştı")
Hata çıktısı
1. satır çalıştı2. satır çalıştıC:\kod\ogren\ders1.js:3console.log(can)            ^ ReferenceError: can is not defined    at Object.<anonymous> (C:\kod\ogren\ders1.js:3:13)    ... Node.js v24.20.0
C:\kod\ogren\ders1.js:3 1 console.log(can) 2 ^ 3 ReferenceError: can is not defined 4 5 at Object.<anonymous> (…) 6 Node.js v24.20.0 7 1Dosya ve satır no 2O satırın kopyası 3^ sorunun tam yeri 4Hata türü 5Açıklama (İngilizce) 6Ayrıntı: şimdilik geç 7Node sürümün
Şekil 1.6 Bir hata mesajının parçaları. Yukarıdan aşağı okunur.

Hata okumanın dört adımı:

  1. Yer: En üstteki dosya:satır kısmına bak (ders1.js:3). Hata 3. satırda.
  2. Nokta: Altındaki satır o satırın kopyasıdır; ^ işareti sorunlu yerin tam altındadır (can).
  3. Tür: İki noktadan önceki sözcük hatanın türüdür (ReferenceError).
  4. Açıklama: İki noktadan sonrası ne olduğunu söyler: can is not defined, yani "can tanımlı değil". İngilizce cümleyi çevir; birkaç kalıbı öğrenince çevirmeye gerek kalmayacak.

at … ile başlayan satırlar, hatanın programın içinde hangi yoldan geldiğini gösterir. Şimdilik onları görmezden gel. En alttaki Node.js v24… ise kullandığın Node sürümüdür.

Hata türleri: ilk üçü

TürNe demekÖrnek
SyntaxErrorYazım (dilbilgisi) hatası. Kod JavaScript'in kurallarına uymuyor.tırnağı kapatmamak, = unutmak
ReferenceErrorTanınmayan ad. Olmayan bir kutuyu kullandın.console.log(can), Console.log(...)
TypeErrorYanlış kullanım. Var olan bir şeyle yapılamayacak bir iş yaptın.const kutuyu değiştirmek

Program hatada nerede durur?

Yukarıdaki örnekte 1. ve 2. satırlar çalıştı, program 3. satırda durdu, 4. satır hiç çalışmadı. ReferenceError ve TypeError böyledir: program hataya kadar çalışır.

SyntaxError farklıdır. Şimdi aynı dosyada 3. satırdaki tırnağı kapatmayı unut:

ders1.js
console.log("1. satır çalıştı")console.log("2. satır çalıştı")console.log("3. satır çalıştı)console.log("4. satır çalıştı")
Hata çıktısı
C:\kod\ogren\ders1.js:3console.log("3. satır çalıştı)            ^^^^^^^^^^^^^^^^^^ SyntaxError: Invalid or unexpected token    at wrapSafe (node:internal/modules/cjs/loader:1861:18)    ... Node.js v24.20.0

Bu sefer hiçbir satır çalışmadı, 1. satır bile. Çünkü Node programı başlatmadan önce dosyanın tamamını okuyup dilbilgisi kurallarına uyup uymadığına bakar. Bir yazım hatası bulursa programı hiç başlatmaz.

ReferenceError, 3. satırda 1. satır ✓ 2. satır ✓ 3. satır ✗ 4. çalışmadı SyntaxError, 3. satırda 1. çalışmadı 2. çalışmadı 3. satır ✗ 4. çalışmadı
Şekil 1.7 ReferenceError hatanın olduğu satıra kadar çalışır. SyntaxError programı hiç başlatmaz.

Sık hatalar

Bu derste karşılaşabileceğin hatalar. Bir hata aldığında buraya ya da bütün derslerin hatalarının toplandığı hata rehberine bak.

Sık hataReferenceError: Hp is not defined

Ne zaman çıkar? Bir değişkenin adını oluşturduğundan farklı yazınca. Büyük-küçük harf de farklılık sayılır.

ders1.js
let hp = 100console.log(Hp)
Hata çıktısı
C:\kod\ogren\ders1.js:2console.log(Hp)            ^ ReferenceError: Hp is not defined    at Object.<anonymous> (C:\kod\ogren\ders1.js:2:13)    ... Node.js v24.20.0

Nasıl düzelir? Adı, let ya da const ile oluşturduğun satırdakiyle harfi harfine aynı yaz. VS Code yazarken ad önerir; önerinin üstüne Enter'a basarsan yazım hatası yapmazsın. Aynı hata, metnin tırnağını unutunca da çıkar: console.log(Merhaba) yazarsan Merhaba is not defined alırsın.

Sık hataReferenceError: Console is not defined

Ne zaman çıkar? console'u büyük harfle yazınca. JavaScript için Console ile console ayrı adlardır ve Console diye bir şey yoktur.

ders1.js
Console.log("Merhaba")
Hata çıktısı
C:\kod\ogren\ders1.js:1Console.log("Merhaba")^ ReferenceError: Console is not defined    at Object.<anonymous> (C:\kod\ogren\ders1.js:1:1)    ... Node.js v24.20.0

Nasıl düzelir? console her zaman küçük harfle yazılır.

Sık hataTypeError: console.lg is not a function

Ne zaman çıkar? log sözcüğünü yanlış yazınca (lg, lgo, Log).

ders1.js
console.lg("Merhaba")
Hata çıktısı
C:\kod\ogren\ders1.js:1console.lg("Merhaba")        ^ TypeError: console.lg is not a function    at Object.<anonymous> (C:\kod\ogren\ders1.js:1:9)    ... Node.js v24.20.0

Nasıl düzelir? console var ama onun içinde lg diye bir komut yok; mesaj "console.lg bir fonksiyon değil" diyor. Doğrusu console.log. Fonksiyon sözcüğünü Ders 3'te öğreneceksin, şimdilik "komut" diye düşün.

Sık hataSyntaxError: missing ) after argument list

Ne zaman çıkar? Açtığın parantezi kapatmayı unutunca.

ders1.js
console.log("Merhaba"
Hata çıktısı
C:\kod\ogren\ders1.js:1console.log("Merhaba"            ^^^^^^^^^ SyntaxError: missing ) after argument list    at wrapSafe (node:internal/modules/cjs/loader:1861:18)    ... Node.js v24.20.0

Nasıl düzelir? Mesaj açıkça söylüyor: "parantezin içindekilerden sonra ) eksik". Her ( bir ) ile kapanmalı. VS Code eşleşen parantezleri aynı renge boyar; imleci bir parantezin yanına koyduğunda eşi de vurgulanır.

Sık hataSyntaxError: Invalid or unexpected token

Ne zaman çıkar? Tırnağı açıp kapatmayınca ya da kıvrık (akıllı) tırnak “ ” kullanınca. Token, JavaScript'in okuduğu en küçük parça demek; mesaj "geçersiz ya da beklenmeyen bir parça buldum" diyor.

ders1.js
const sampiyon = "Annie
Hata çıktısı
C:\kod\ogren\ders1.js:1const sampiyon = "Annie                 ^^^^^^ SyntaxError: Invalid or unexpected token    at wrapSafe (node:internal/modules/cjs/loader:1861:18)    ... Node.js v24.20.0

Nasıl düzelir? ^ işaretlerinin başladığı yerdeki tırnağı bul ve metnin sonunda kapat. Kıvrık tırnak kullandıysan sil, klavyeden düz " yaz. Kıvrık tırnakta ^ işareti hiç görünmeyebilir; o zaman satırdaki tırnaklara tek tek bak.

Sık hataSyntaxError: Unexpected number

Ne zaman çıkar? Değişken oluştururken = işaretini unutunca: let hp 100. Yukarıda, değişken oluşturma kalıbı bölümünde gördün.

Nasıl düzelir? Kalıbı hatırla: anahtar sözcük, ad, =, değer. Doğrusu let hp = 100.

Sık hataSyntaxError: Identifier 'hp' has already been declared

Ne zaman çıkar? Aynı adla ikinci kez let (ya da const) yazınca.

Nasıl düzelir? Kutu bir kez açılır. Değerini değiştirirken let yazma: hp = 90.

Sık hataTypeError: Assignment to constant variable.

Ne zaman çıkar? const ile açtığın kutunun değerini değiştirmeye çalışınca.

Nasıl düzelir? O değer gerçekten değişecekse kutuyu let ile aç. Değişmemesi gerekiyorsa değiştiren satırı sil: JavaScript seni tam da bu yanlışı yakalamak için uyardı.

Sık hataÇıktı değişmiyor (kaydedilmemiş dosya)

Ne zaman çıkar? Kodu değiştirdin, çalıştırdın ama ekranda hâlâ eski çıktı var. Hata mesajı yok, ama program sanki seni dinlemiyor.

Nasıl düzelir? Dosya büyük ihtimalle kaydedilmemiş. Sekmedeki ● işaretine bak; Ctrl+S ile kaydet ya da File → Auto Save'i aç. Başka bir sebep: terminalde yanlış dosyayı çalıştırıyor olabilirsin (node ders1.js yerine node merhaba.js mi yazdın?).

Görevler

Her görevi ders1.js dosyasında yap; önceki kodu sil ya da satırların başına // koy. Önce kendin dene, takılırsan ipuçlarını sırayla aç. Çözüme en son bak.

Görev 1

Kendini tanıt

Ekrana üç satır yazdıran bir program yaz: adın, en sevdiğin şampiyon ve oyunda hangi koridorda oynadığın. Çıktın şuna benzesin (kendi bilgilerinle):

Metin
Adım: DenizŞampiyonum: GarenKoridorum: Üst koridor
İpucu 1

Her satır için bir console.log gerekiyor. Yazdırdığın şeyler metin; tırnakları unutma.

Çözümü göster
ders1.js
console.log("Adım: Deniz")console.log("Şampiyonum: Garen")console.log("Koridorum: Üst koridor")
Çıktı
Adım: DenizŞampiyonum: GarenKoridorum: Üst koridor
Görev 2

Mana harcamak

mana adında bir değişken oluştur, içine 250 koy ve ekrana Mana: 250 yazdır. Sonra bir yetenek kullandığını düşün: manadan 70 düş ve Kalan mana: 180 yazdır. 180 sayısını elle yazmak yok; hesabı JavaScript yapsın.

İpucu 1

Değeri değişecek bir kutu için hangi anahtar sözcük kullanılıyordu: let mi, const mı?

İpucu 2

Düşme işlemi mana = mana - 70. Metinle değişkeni + ile birleştirirsin: "Mana: " + mana.

Çözümü göster
ders1.js
let mana = 250console.log("Mana: " + mana)mana = mana - 70console.log("Kalan mana: " + mana)
Çıktı
Mana: 250Kalan mana: 180
Görev 3

Dükkân hesabı

Bir kılıç 450 altın, sende 1000 altın var. İki kılıç alıyorsun. Kılıcın fiyatını const, altınını let ile tut; kalan altını hesaplayıp şunu yazdır:

Metin
2 kılıç aldın, kalan altın: 100
İpucu 1

İki kılıcın toplam fiyatı kilicFiyati * 2. Bunu altından düşmen gerekiyor.

İpucu 2

altin = altin - kilicFiyati * 2 satırında önce çarpma yapılır, sonra çıkarma. Parantez gerekmez ama koymak da yanlış olmaz.

Çözümü göster
ders1.js
const kilicFiyati = 450let altin = 1000altin = altin - kilicFiyati * 2console.log("2 kılıç aldın, kalan altın: " + altin)
Çıktı
2 kılıç aldın, kalan altın: 100

Sınır denemesi: altin değerini 900 yapıp çalıştır, 0 çıkmalı. 800 yaparsan -100 çıkar; yani program "paran yetmiyor" demiyor, eksiye düşüyor. Bunu engellemek için programın karar vermesi gerekiyor: Ders 2'nin konusu.

Görev 4

Hata avı

Aşağıdaki programda üç hata var. Gözle aramadan, yalnızca hata mesajlarını okuyarak düzelt: çalıştır, mesajı oku, ilk hatayı düzelt, yeniden çalıştır.

ders1.js✗ Yanlış
const oyuncu = "Jinxlet seviye 1Console.log(oyuncu + " seviye " + seviye)
Hata çıktısı
C:\kod\ogren\ders1.js:1const oyuncu = "Jinx               ^^^^^ SyntaxError: Invalid or unexpected token    at wrapSafe (node:internal/modules/cjs/loader:1861:18)    ... Node.js v24.20.0

Hepsini düzeltince çıktı Jinx seviye 1 olmalı.

İpucu 1

İlk mesaj 1. satırı gösteriyor ve ^^^^^ işaretleri "Jinx'in altında. Tırnak açılmış ama…

İpucu 2

İkinci mesaj Unexpected number olacak. Değişken kalıbında hangi parça eksik?

İpucu 3

Üçüncü mesaj bir ReferenceError. JavaScript hangi adı tanımadığını söylüyor; o adın harflerine dikkatle bak.

Çözümü göster
ders1.js
const oyuncu = "Jinx"let seviye = 1console.log(oyuncu + " seviye " + seviye)
Çıktı
Jinx seviye 1

Sırasıyla gelen mesajlar: SyntaxError: Invalid or unexpected token (kapanmamış tırnak), SyntaxError: Unexpected number (eksik =), ReferenceError: Console is not defined (büyük C).

Görev 5

Altın paylaşımı

Takımınız bir ejderhadan 1234 altın kazandı ve beş kişi eşit paylaşacak. Bölünemeyen artık altın kimseye verilmeyecek. Şunu yazdıran bir program yaz:

Metin
Her oyuncuya 246 altın düşer, 4 altın artar

246 ve 4'ü elle yazmak yok, ikisini de JavaScript hesaplasın. Bu derste öğrendiğin işaretler yeterli.

İpucu 1

Artan altını bulmak için % kullan: 1234 % 5.

İpucu 2

1234 / 5 sonucu 246.8 verir; küsurat istemiyoruz. Artan altını önce toplamdan çıkarırsan kalan sayı 5'e tam bölünür.

İpucu 3

const kisiBasi = (toplam - artan) / 5 gibi bir satır. Parantez neden gerekli, düşün.

Çözümü göster
ders1.js
const toplamAltin = 1234const oyuncuSayisi = 5const artan = toplamAltin % oyuncuSayisiconst kisiBasi = (toplamAltin - artan) / oyuncuSayisiconsole.log("Her oyuncuya " + kisiBasi + " altın düşer, " + artan + " altın artar")
Çıktı
Her oyuncuya 246 altın düşer, 4 altın artar

Sınır denemesi: toplamAltin değerini 1235 yap; 247 ve 0 çıkmalı. 3 yaparsan 0 ve 3 çıkar: kimseye altın düşmez, hepsi artar. Programın bu durumları da doğru hesapladığını kendin gör.

Kendini sına

Soru 1

Bu program ne yazar?

JavaScript
console.log("5 + 5")console.log(5 + 5)
Cevabı göster

İlk satır 5 + 5 yazar, çünkü tırnak içindeki her şey olduğu gibi basılır. İkinci satır 10 yazar, çünkü tırnaksız ifade bir hesaptır.

Soru 2

Hangi satır hata verir, hangi türde?

JavaScript
const sampiyon = "Garen"let can = 620can = can - 120sampiyon = "Darius"
Cevabı göster

4. satır TypeError: Assignment to constant variable. verir. sampiyon kutusu const ile açıldı, değeri değiştirilemez. can ise let olduğu için 3. satırda değiştirilmesi sorun değil.

Soru 3

altin en sonunda kaç olur?

JavaScript
let altin = 10altin = altin + 5altin = altin * 2console.log(altin)
Cevabı göster

30. Önce 10 + 5 ile 15 olur, sonra 15 * 2 ile 30.

Soru 4

Bu program ne yazar? Dikkat, tuzak var.

JavaScript
let hp = 100hp - 30console.log(hp)
Cevabı göster

100. İkinci satır 100 - 30 hesabını yapar ama sonucu hiçbir kutuya koymaz. hp'yi değiştirmek için hp = hp - 30 yazmak gerekirdi.

Soru 5

Mesajı oku: hata hangi satırda, türü ne, ne diyor?

Hata çıktısı
C:\kod\ogren\ders1.js:7console.log(toplamHasar)            ^ ReferenceError: toplamHasar is not defined
Cevabı göster

Hata ders1.js dosyasının 7. satırında. Türü ReferenceError. toplamHasar is not defined diyor: JavaScript toplamHasar adında bir kutu bulamadı. Ya bu değişken hiç oluşturulmadı ya da başka türlü yazıldı (toplamhasar, toplamHasr…).

Soru 6

17 % 4 kaçtır? 16 % 4 kaçtır?

Cevabı göster

17 % 4 sonucu 1'dir: 17'nin içinde dört tane 4 var (16 eder), 1 artar. 16 % 4 ise 0'dır, çünkü 16, 4'e tam bölünür.

Soru 7

Oyuncunun adı ve oyuncunun altını için let mi const mı kullanırdın?

Cevabı göster

Oyuncunun adı maç boyunca değişmez: const. Altın sürekli değişir: let. Kural: önce const, değişmesi gerekiyorsa let.

Kayıt noktası: ilk commit

Oyunlarda zor bir bölümden önce kayıt alırsın; işler kötü giderse oradan devam edersin. Git kodun için aynı şeyi yapar: istediğin anda dosyalarının o anki hâlini kaydeder. Bu kayıtlara commit denir. İleride bir şeyi bozarsan eski bir kayda bakabilir, neyin değiştiğini görebilirsin.

Git'i Ders 7'de ayrıntılı öğreneceksin. Şimdilik üç komut yeter. VS Code terminalinde, C:\kod\ogren klasöründeyken:

Sık hataAuthor identity unknown

Ne zaman çıkar? Git'e adını ve e-postanı hiç söylemediysen ilk commit'te çıkar.

Terminal — PowerShell
PS C:\kod\ogren> git commit -m "Ders 1: ilk program ve değişkenler"Author identity unknown *** Please tell me who you are. Run   git config --global user.email "you@example.com"  git config --global user.name "Your Name" to set your account's default identity.Omit --global to set the identity only in this repository. fatal: unable to auto-detect email address (got 'Deniz@MASAUSTU.(none)')

Nasıl düzelir? Mesaj ne yapacağını yazıyor: iki git config komutunu kendi adın ve e-postanla çalıştır, sonra commit'i tekrarla. Ders 0'da bu ayarı yaptıysan bu hatayı görmezsin.

Terminal — PowerShell
PS C:\kod\ogren> git config --global user.name "Adın Soyadın"PS C:\kod\ogren> git config --global user.email "eposta@ornek.com"

Bir sonraki derste programına karar vermeyi öğreteceksin: can sıfıra indiyse "öldün" yazmak, altın yetiyorsa eşyayı almak gibi. Yani if ve else.

İşaret yalnızca bu tarayıcıda saklanır, kimseye gönderilmez.