Tek bir satır kodla çözülemeyen, içinde birçok değişken ve karar barındıran büyük problemlerdir.
"Bir kulübe yapmak kolaydır, ama bir gökdelen yapmak için PLAN gerekir."
MİMARIN ALET ÇANTASI
Büyük bir projeyi yapmak için elimizde hangi malzemeler var?
DEĞİŞKENLER
Verileri sakladığımız tuğlalar. (Puan, Süre)
DÖNGÜLER
Tekrar eden katlar. (Sürekli Tekrarla)
KARARLAR
Elektrik tesisatı. (Eğer - Değilse)
BÖL VE YÖNET (DECOMPOSITION)
Büyük problemi küçük parçalara ayırırız.
Örnek: Oyun Yapmak.
1. Parça: Karakterin Hareketi
2. Parça: Puan Toplama
3. Parça: Düşmanların Yapay Zekası
4. Parça: Oyun Bitti Ekranı
YAPILARI BİRLEŞTİRMEK
Karmaşık problemlerde bloklar iç içe geçer.
Sürekli Tekrarla { // Döngü Eğer (Tuşa Basıldı mı?) { // Karar
Hareket Et; Eğer (Duvara Değdi mi?) { // İç Karar
Geri Sek;
}
}
}
Döngünün içinde karar, kararın içinde başka bir işlem!
SENARYO 1: AKILLI TRAFİK SİSTEMİ
GÖREV:
Bir kavşaktaki trafik ışıklarını kodla. Ancak sistem akıllı olmalı:
1. Normalde sırayla yanmalı.
2. Eğer ambulans gelirse (Sensör), tüm ışıklar kırmızı olup ambulansın yolunu açmalı.
ANALİZ: TRAFİK IŞIĞI
GİRİŞLER
Zamanlayıcı, Ambulans Sensörü.
İŞLEMLER
Işık değiştir, Hepsini kırmızı yap.
ÇIKTI
Yeşil, Sarı, Kırmızı Işıklar.
KOD MİMARİSİ
Sürekli Tekrarla { Eğer (Ambulans Var mı?) {
Tüm Işıkları Kırmızı Yap;
Ambulans Yolunu Yeşil Yap;
} Değilse {
Normal Sırayla Yak (Kırmızı -> Sarı -> Yeşil);
}
}
SENARYO 2: LABİRENT OYUNU
GÖREV:
Karakter labirentte hareket edecek.
Duvara değerse başa dönecek.
Anahtarı alırsa puan artacak.
Çıkışa gelince oyun bitecek.
MALZEME LİSTESİ (DEĞİŞKENLER)
Oyunun çalışması için hangi verileri hafızada tutmalıyız?
PUAN
Başlangıç: 0
CAN
Başlangıç: 3
ANAHTAR
Başlangıç: 0 (Yok)
1 (Var)
OYUN DÖNGÜSÜ
Oyun bitene kadar sürekli çalışan ana motor.
Sürekli Tekrarla {
Tuşları Kontrol Et (Hareket); Eğer (Duvara Değdi mi?) -> Başa Dön; Eğer (Anahtara Değdi mi?) -> Puanı Artır, Anahtarı Gizle; Eğer (Çıkışa Değdi mi?) -> "Kazandın" de, Durdur;
}
MODÜLER YAPI (FONKSİYONLAR)
Kodları daha düzenli yapmak için parçaları isimlendiririz.
Her defasında "Puan artır, ses çal, efekt yap" yazmak yerine;
PuanAl() bloğu oluştururuz.
Böylece binanın her katını ayrı ayrı inşa etmiş oluruz.
YAPI DENETİM (DEBUGGING)
Karmaşık projelerde hata çıkma ihtimali yüksektir.
TEST ET
Her özelliği tek tek dene.
GÖZLEMLE
Değişkenlerin değerlerini ekranda izle.
DÜZELT
Hatalı bloğu değiştir.
SAĞLAM BİNA (OPTİMİZASYON)
Kod çalışıyor ama yavaş mı? Veya çok mu uzun?
Gereksiz blokları sil.
Tekrar eden yerlerde döngü kullan.
Resim boyutlarını küçült (Oyun kasmasın).
MİMARLIK SINAVI 1
Bir labirent oyununda karakterin duvara çarpıp çarpmadığını SÜREKLİ kontrol etmek için hangi yapıları iç içe kullanmalıyız?
A) Sadece Eğer
B) Sürekli Tekrarla içinde Eğer
C) Eğer içinde Sürekli Tekrarla
D) Sadece Sürekli Tekrarla
MİMARLIK SINAVI 2
Oyunun puanını hafızada tutmak için neye ihtiyacımız var?
A) Döngü
B) Karar Yapısı
C) Değişken (Variable)
D) Fonksiyon
MİMARLIK SINAVI 3
Büyük bir problemi daha küçük parçalara ayırarak çözme yöntemine ne denir?
A) Birleştirme
B) Kodlama
C) Parçalara Bölme (Decomposition)
D) Hata Ayıklama
MİMARLIK SINAVI 4
Ambulans geldiğinde trafik ışıklarının normal çalışmayı bırakıp hepsinin kırmızı olması için hangi yapı kullanılır?
A) Değişken
B) Döngü
C) Eğer - Değilse (If-Else)
D) Operatör
SIRA SİZDE: KENDİ PROJEN
Kendi hayalindeki bir projenin (Oyun, Animasyon) planını yap.
Amacı ne?
Hangi kuklalar lazım?
Hangi değişkenler olacak?
Hangi blokları kullanacaksın?
BİLİMSEL YAKLAŞIM
Kodlama sadece oyun oynamak değil, bilimsel düşünmektir.
Hipotez Kur (Kod böyle çalışır mı?)
Deney Yap (Çalıştır)
Gözlemle (Hata var mı?)
Sonuç Çıkar (Düzelt ve Bitir)
GERÇEK HAYATTA KARMAŞIK KODLAR
OTOPİLOT
Binlerce "Eğer" ve sensör verisiyle uçağı uçurur.
ROBOT SÜPÜRGE
Döngüler ve sensörlerle evi haritalar.
VİDEO OYUNLARI
Milyonlarca satır kod ve mantık içerir.
PROJE TESLİMİ (ÖZET)
Karmaşık problemleri parçalara ayırdık.
Döngü ve Karar yapılarını iç içe kullandık.
Değişkenlerle verileri yönettik.
Hataları ayıklayıp projeyi sağlamlaştırdık.
GELECEK HAFTA
BÜYÜK FİNAL: PROJE GELİŞTİRME
Öğrendiğimiz her şeyi kullanarak kendi özgün projemizi yapacağız.