Bölüm 2 · Sunum 1
Aynı satırı yüz kez yazmadan yüz şekil çizmeyi öğreneceğiz.
Bu beş satırda değişen ne, hep aynı kalan ne?
Örüntüyü tek bir değişkene bağlarız; değişken her turda güncellenir. On kare de yüz kare de aynı üç satırdır.
for döngüsüi, j ya da satir, sutun gibi anlamlı adlar kullanılır.| Sıra | Parça | Ne zaman çalışır? | Görevi | Örnek |
|---|---|---|---|---|
| 1 | Başlangıç | Bir kez, en başta | Değişkene ilk değeri verir | let i = 0 |
| 2 | Koşul | Her turdan önce | true ise gövde çalışır; false ise döngü biter | i < 5 |
| 3 | Güncelleme | Her turun sonunda | Değişkeni bir sonraki tura hazırlar | i++ |
Güncelleme gövdeden sonra gelir; gövde içinde i hâlâ o turun değeridir.
for döngüsünün akışı
i = 0i < 5 mi?i = i + 1recti sırayla 0, 1, 2, 3, 4 olur. Her değerde rect(i * 50, …) farklı bir x konumuna çizer. Renk de i’ye bağlı.
| Tur | Koşul i < 5 | i | Çizilen x | Tur sonu |
|---|---|---|---|---|
| 1 | true (0 < 5) | 0 | 0 | i → 1 |
| 2 | true (1 < 5) | 1 | 50 | i → 2 |
| 3 | true (2 < 5) | 2 | 100 | i → 3 |
| 4 | true (3 < 5) | 3 | 150 | i → 4 |
| 5 | true (4 < 5) | 4 | 200 | i → 5 |
| 6 | false (5 < 5) | — | döngü biter | — |
Koşul false olunca gövde bir kez daha çalışmaz; program döngüden sonraki satıra geçer.
++, --, +=, -=| Uzun yazım | Kısayol | Anlamı |
|---|---|---|
i = i + 1 | i++ | i bir artar |
i = i - 1 | i-- | i bir azalır |
x = x + 10 | x += 10 | x on artar |
skor = skor - 1 | skor -= 1 | skor bir azalır |
++ ve -- tek birimlik adımdır. Beşer beşer gitmek için i += 5. i++++ diye bir yazım yok.i--), ikişer ya da beşer adım (i += 2, i += 5) da olur. Önemli olan, tur sonunda değişkenin bir sonraki tura hazır olmasıdır.i < 5 yerine i <= 5 yazarsak kaç kare çizilir?i < 5 beş tur üretir (0, 1, 2, 3, 4). i <= 5 altı tur üretir. Izgara ve dizilerde bu tek fark sık sık hataya yol açar.| Yazım | Anlamı |
|---|---|
for (let i = 0; i < 5; ) | Artış yok. Gövdede i++ yazılmazsa sonsuz döngü. |
for (; i < 5; i++) | Başlangıç yok. i döngüden önce tanımlanmış olmalı. |
for (let i = 0; ; i++) | Koşul yok; hep true sayılır. Çıkmak için break gerekir. |
for (;;) | Üçü de boş. while (true) ile aynı; bilinçli break şart. |
Noktalı virgüller yerinde kalır; aradaki ifade yazılmazsa o parça atlanmış sayılır.
i önceden tanımlıbreak ilefor (;;): üçü de boşfor (;;) ve koşulsuz for yalnızca break ile birlikte ve draw() dışında kullanılır.draw içindeyseGövde her frame’de tekrarlanır. 10 turluk bir for, saniyede 60 frame ile gövdeyi saniyede 600 kez çalıştırır. Yavaşlama varsa tur sayısına ve draw’daki iş yüküne birlikte bakın.for ve while gövdesi, if gibi süslü parantez içindedir.while döngüsütrue olduğu sürece gövde tekrarlanır. Başlangıç döngüden önce, artış gövdenin içinde yazılır.“Şu doğru olduğu sürece devam et” demenin yolu.
while ile sayaçwhile akışı ve izleme tablosu
| Tur | sayac < 5 | Yazılan | Tur sonu |
|---|---|---|---|
| 1 | true | sayac: 0 | 1 |
| 2 | true | sayac: 1 | 2 |
| … | … | … | … |
| 5 | true | sayac: 4 | 5 |
| 6 | false | döngü biter | — |
for tablosuyla aynı mantık. Tek fark, başlangıcın ve artışın nerede yazıldığı.
Çalıştırmadan düşünün. Koşul ne zaman false olur?
n hiç artmıyor; koşul hep true. Program donar, tarayıcı kilitlenebilir.Gövdede, koşulu bir gün false yapacak bir güncelleme mutlaka olmalı.
draw içinde while (true) yazmayındraw bir frame’i bitirmeden sonraki frame’e geçilemez. Uzun bir while o frame’i bitirmez: ekran güncellenmez, fare ve tuş olayları da işlenmez.draw()’ı her frame kendisi çağırır. Ek bir “sonsuz while” gerekmez.for parçası | while’daki karşılığı |
|---|---|
let i = 0 (başlangıç) | Döngüden önceki let i = 0 |
i < 5 (koşul) | while (i < 5) |
i++ (artış) | Gövdenin sonundaki i++ |
İkisi de konsola 0 1 2 3 4 yazar.
fori her turda y konumunu 20 piksel kaydırır; x uçları sabittir.
whileMerkez sabit, çap i ile büyüyor. circle(x, y, çap) tek bir çap alır.
for ile renk tayfı

renk = i * (255 / (N - 1)). Şerit yüksekliği height / N, genişliği width / N.draw zaten tekrar ediyor. Onu döngü gibi kullanabilir miyiz?background çağırmazsak önceki çizimler silinmez. Her frame’de bir çizgi eklesek ne olur?
İlk 8 frame’de her seferinde bir çizgi eklenir. for ile yazılan sürüm ise tek frame’de biter.
| Yaklaşım | Ne zaman? |
|---|---|
for / while + her frame background | Desen her frame yeniden çizilir. Oyun ve animasyon iskeleti budur. |
draw + biriktirme (background yok) | Adım adım biriktirme; basit bir “çizim makinesi”. |
draw içinde while (true) | Kullanmayın: frame bitmez, tarayıcı kilitlenir. |
background’ı draw içine koyarsanız tuval her frame silinir ve yalnızca son çizgi kalır.| Durum | Öneri | Gerekçe |
|---|---|---|
| Tur sayısı baştan belli (5 kare, 8×8 ızgara) | for | Üç parça tek satırda; artışı unutmak zor. |
| “Koşul doğru olduğu sürece” (hedef bulunana kadar) | while | Vurgu koşulda; tur sayısı baştan belli olmayabilir. |
draw içinde belli sayıda nesne çizmek | for | Frame başına bilinen tur. |
Kesin bir kural yok. “Beş kare çiz” için while de çalışır; ama for, “sayarak tekrarla” niyetini daha açık gösterir. Seçim, kodu okuyan insan içindir.
for (;;) ile while (true) eşdeğerdir; ikisinde de çıkış break ile yapılır.
| Oyun | Döngünün tekrarladığı iş | Çoğu zaman |
|---|---|---|
| Super Mario Bros. | Ekrandaki her düşmanı ve jetonu güncellemek, çizmek | for |
| Pac-Man | Her hayaleti sırayla hareket ettirmek | for |
| Tetris | Dolu satırları tarayıp silmek; parçanın bloklarını çizmek | for |
| Space Invaders | Her gemiyi ve her mermiyi ilerletmek | for |
while daha çok “can bitene kadar”, “doğru cevap gelene kadar”, “liste boşalana kadar” gibi işlerde öne çıkar.
for mu while mu daha doğal? Birer cümleyle gerekçelendirin.break ve continuebreakDöngüyü hemen bitirir. Kalan turlar çalışmaz; program döngüden sonraki satıra geçer.continueYalnızca o turun geri kalanını atlar. Döngü bir sonraki turla sürer.İkisi de hem for hem while içinde kullanılabilir.
break: döngü bitercontinue: yalnızca bir tur atlanırbreak yalnızca içtekini kırarDış döngü sürer. İkisini birden kesmek için bir boolean bayrak (bulundu) ya da fonksiyon içinde return kullanılır.
Bilinçli bir çıkışı olan while (true). draw içinde değil, setup ya da mantık kodunda kullanılır.
Önce kâğıda yazın.
3 atlandı ama döngü sürdü. 7’de döngü tamamen bitti; 8 ve 9’a sıra gelmedi.
for isteyin.while isteyin. Artış satırını bilerek silin ve ne olduğunu gözleyin. Gerekirse sayfayı yenileyin.1 hâlâ 0’dan büyük, yazılır. Sonraki değer −2: koşul yanlış, döngü biter.
i sırayla 0, 2, 4, 6, 8, 10 olur. <= yüzünden 10 da dahil.
1, 2, 4, 8, 16, 32, 64… 64 hâlâ 100’den küçük; bir tur daha döner ve 128 olur. Tur sayısı baştan belli değil: while’ın doğal yeri.
for (başlangıç; koşul; güncelleme): başlangıç bir kez, koşul her turdan önce, güncelleme her turun sonunda.while: koşul doğru kaldıkça. Güncellemeyi unutursanız sonsuz döngü.for, vurgu koşuldaysa while.break döngüyü bitirir; continue yalnızca o turu atlar.draw içinde while (true) yazılmaz.Sıradaki ders
Izgaralar, dama tahtası ve dalgalanan daireler.