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.logile ekrana metin ve sayı yazdırabilirsin- Metin ile sayıyı ayırt edip tırnak kuralını doğru uygulayabilirsin
letveconstile 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
- Program yukarıdan aşağı çalışır
- console.log: ekrana yazdırmak
- Tırnak kuralı: bu dersin en önemli kuralı
- Değişken: etiketli kutu
- = eşittir değil, "koy" demek
- let mi, const mı?
- Hesap yapmak
- Metinleri birleştirmek
- Yorum satırı: kendine not
- Hata mesajı okumak
- Sık hatalar
- Görevler
- Kendini sına
- 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.
console.log("Hoş geldin")console.log("Maç başlıyor")console.log("İyi oyunlar")PS C:\kod\ogren> node ders1.jsHoş geldinMaç başlıyorİyi oyunlarÜ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.
Ş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 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.
console.log("Ahri")console.log(100)console.log("100")console.log(5 + 3)console.log("5 + 3")Ahri10010085 + 3Son 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:
console.log(hp)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.0ReferenceError: 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.
console.log(Merhaba)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.
let hp = 100console.log(hp)console.log("Ahri'nin canı: " + hp)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.
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 | Örnek | Anlamı |
|---|---|---|
| anahtar sözcük | let | "yeni bir kutu açıyorum" |
| ad | hp | kutunun etiketi |
| eşittir | = | "içine şunu koy" |
| değer | 100 | kutuya konan şey |
= işaretini unutmak çok sık yapılan bir hatadır:
let hp 100C:\kod\ogren\ders1.js:1let hp 100 ^^^ SyntaxError: Unexpected number at wrapSafe (node:internal/modules/cjs/loader:1861:18) ... Node.js v24.20.0Unexpected 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:
oyuncuAdiolur;oyuncu adive2oyuncuolmaz. - 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:
hpileHpiki ayrı ad.let hp = 100yazıpconsole.log(Hp)dersenReferenceError: Hp is not definedalırsın. - Anlamlı ad seç:
xyerinehasar. 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:
let hp = 100hp = hp - 10console.log(hp)90İkinci satırı sağdan sola oku:
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:
let hp = 100let hp = 90C:\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.0Identifier '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.
const oyuncu = "Ahri"let hp = 100hp = hp - 25console.log(oyuncu + " hasar aldı, kalan can: " + hp)Ahri hasar aldı, kalan can: 75const kutunun içini değiştirmeye çalışırsan:
const oyuncu = "Ahri"oyuncu = "Lux"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.0Assignment to constant variable "sabit bir kutuya değer atamaya çalıştın" demek.
let kutusunun içi değişebilir. const kutusu mühürlüdür.Hesap yapmak
JavaScript bir hesap makinesi gibi de çalışır:
| İşaret | Anlamı | Örnek | Sonuç |
|---|---|---|---|
+ | toplama | 100 + 25 | 125 |
- | çıkarma | 100 - 30 | 70 |
* | çarpma | 45 * 3 | 135 |
/ | bölme | 90 / 4 | 22.5 |
% | kalan | 17 % 5 | 2 |
Ç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:
console.log(2 + 3 * 4)console.log((2 + 3) * 4)1420Bir oyun örneği: Ahri'nin 100 canı var ve her biri 12 hasar veren üç minyon ona vuruyor.
let hp = 100const minyonHasari = 12hp = hp - minyonHasari * 3console.log("Minyonlardan sonra can: " + hp)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.
console.log(17 % 5)console.log(20 % 4)console.log(7 % 10)207Bölmenin iki sürprizi
console.log(10 / 3)console.log(7 / 0)3.3333333333333335Infinity10 / 3sonsuza kadar süren bir sayı. Bilgisayar bir yerde keser; sondaki5o kesmenin izi. Sayıları yuvarlamayı Ders 9'da öğreneceksin.- Sıfıra bölmek hata vermez,
Infinity(sonsuz) çıkar. ProgramındaInfinitygö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:
console.log("Ahri" + "dead")console.log("Ahri" + " " + "dead")console.log("Ahri " + "dead")AhrideadAhri deadAhri deadJavaScript 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:
const oyuncu = "Lux"let altin = 300console.log(oyuncu + " şu an " + altin + " altına sahip")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.
// 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)100 300Yorumun 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ı:
console.log("1. satır çalıştı")console.log("2. satır çalıştı")console.log(can)console.log("4. satır çalıştı")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.0Hata okumanın dört adımı:
- Yer: En üstteki
dosya:satırkısmına bak (ders1.js:3). Hata 3. satırda. - Nokta: Altındaki satır o satırın kopyasıdır;
^işareti sorunlu yerin tam altındadır (can). - Tür: İki noktadan önceki sözcük hatanın türüdür (
ReferenceError). - 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ür | Ne demek | Örnek |
|---|---|---|
SyntaxError | Yazım (dilbilgisi) hatası. Kod JavaScript'in kurallarına uymuyor. | tırnağı kapatmamak, = unutmak |
ReferenceError | Tanınmayan ad. Olmayan bir kutuyu kullandın. | console.log(can), Console.log(...) |
TypeError | Yanlış 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:
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ı")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.0Bu 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 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.
ReferenceError: Hp is not definedNe 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.
let hp = 100console.log(Hp)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.0Nası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.
ReferenceError: Console is not definedNe 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.
Console.log("Merhaba")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.0Nasıl düzelir? console her zaman küçük harfle yazılır.
TypeError: console.lg is not a functionNe zaman çıkar? log sözcüğünü yanlış yazınca (lg, lgo, Log).
console.lg("Merhaba")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.0Nası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.
SyntaxError: missing ) after argument listNe zaman çıkar? Açtığın parantezi kapatmayı unutunca.
console.log("Merhaba"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.0Nası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.
SyntaxError: Invalid or unexpected tokenNe 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.
const sampiyon = "AnnieC:\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.0Nası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.
SyntaxError: Unexpected numberNe 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.
SyntaxError: Identifier 'hp' has already been declaredNe 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.
TypeError: 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ı.
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.
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):
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
console.log("Adım: Deniz")console.log("Şampiyonum: Garen")console.log("Koridorum: Üst koridor")Adım: DenizŞampiyonum: GarenKoridorum: Üst koridorMana 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
let mana = 250console.log("Mana: " + mana)mana = mana - 70console.log("Kalan mana: " + mana)Mana: 250Kalan mana: 180Dü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:
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
const kilicFiyati = 450let altin = 1000altin = altin - kilicFiyati * 2console.log("2 kılıç aldın, kalan altın: " + altin)2 kılıç aldın, kalan altın: 100Sı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.
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.
const oyuncu = "Jinxlet seviye 1Console.log(oyuncu + " seviye " + seviye)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.0Hepsini 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
const oyuncu = "Jinx"let seviye = 1console.log(oyuncu + " seviye " + seviye)Jinx seviye 1Sı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).
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:
Her oyuncuya 246 altın düşer, 4 altın artar246 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
const toplamAltin = 1234const oyuncuSayisi = 5const artan = toplamAltin % oyuncuSayisiconst kisiBasi = (toplamAltin - artan) / oyuncuSayisiconsole.log("Her oyuncuya " + kisiBasi + " altın düşer, " + artan + " altın artar")Her oyuncuya 246 altın düşer, 4 altın artarSı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?
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?
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?
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.
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?
C:\kod\ogren\ders1.js:7console.log(toplamHasar) ^ ReferenceError: toplamHasar is not definedCevabı 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:
Author identity unknownNe zaman çıkar? Git'e adını ve e-postanı hiç söylemediysen ilk commit'te çıkar.
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.
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.