Tek bir hamlede çözülemeyen, birden fazla adımı olan büyük sorunlardır.
"Kocaman bir ekmeği tek lokmada yutabilir misin? Hayır! Dilimlemen gerekir."
Büyük bir problemi, daha küçük ve yönetilebilir parçalara ayırma işlemidir.
Buna bilgisayar biliminde Decomposition denir.
"Bir pizzayı dilimlemek gibi!"
"Odanı topla!" dendiğinde bu büyük bir iş gibi görünür. Hadi bölelim:
Kirlileri sepete at, temizleri dolaba as.
Kitapları rafa diz, çöpleri at.
Oyuncakları kutuya koy, halıyı süpür.
Parçalara bölünce iş daha kolay görünür!
Büyük Problem: Parti Hazırlamak.
Belirli bir görevi yapan, tekrar tekrar kullanılabilen kod parçalarıdır.
Mutfaktaki MİKSER gibidir.
Mikserin görevi bellidir: Karıştırmak. Her seferinde yeni mikser yapmayız, var olanı kullanırız.
Kodu bir kere yaz, istediğin kadar kullan.
Programımız daha kısa ve düzenli olur.
Hata varsa sadece fonksiyonu düzeltirsin, her yeri değil.
Bir fonksiyonun 3 aşaması vardır:
GİRİŞ (Input)
İŞLEM (Process)
ÇIKIŞ (Output)
Giriş (Parametre): Hamur
Fonksiyon: Pişir()
Çıkış (Return): Ekmek
Fırına ne verirsen (kek hamuru, börek, tavuk) onu pişirir. Görevi "Pişirmek"tir.
Giriş (Input): Fonksiyona dışarıdan gönderilen malzemelerdir. (Örn: Sayılar, İsimler)
Çıkış (Output): Fonksiyonun işlemi yaptıktan sonra ürettiği sonuçtur. (Örn: Toplam, Mesaj)
Büyük bir oyun yaparken her şeyi tek seferde yazmayız. Küçük parçalara böleriz:
Karakterin yürümesi ve zıplaması.
Altın toplayınca skorun artması.
Canavarların hareket etmesi.
Bunların hepsi ayrı birer FONKSİYON olabilir.
Ana görev, küçük görevlerin birleşmesiyle tamamlanır.
Robotumuza "Sandviç Yap" komutu verdik. O bunu anlamaz. Parçalara bölmeliyiz:
Bir çizim robotuna kare çizdireceğiz. Tek tek "Git, Dön, Git, Dön..." yazmak yerine:
FONKSİYON KareCiz() {
TEKRARLA 4 KEZ:
İleri Git(100);
Sağa Dön(90);
}
Artık ne zaman kare lazım olsa sadece KareCiz() dememiz yeterli!
Matematikteki f(x) fonksiyonları gibidir.
Fonksiyon: 2 Katını Al
Tarifteki adımların sırasını karıştırırsan yemek yenmez olur.
1. Yumurtayı pişir.
2. Kabuğunu kır.
(Olmaz!)
1. Kabuğunu kır.
2. Yumurtayı pişir.
(Leziz!)
Kodlar yukarıdan aşağıya doğru sırayla çalışır.
Büyük ve karmaşık bir problemi, daha küçük parçalara ayırma işlemine ne denir?
Belirli bir görevi yapan ve tekrar tekrar kullanılabilen kod bloğuna ne ad verilir?
Bir fonksiyona dışarıdan gönderilen verilere ne denir?
"Okula Gitme" problemini alt adımlara bölerken hangisi GEREKSİZDİR?
Görev: "Diş Fırçalama" algoritmasını yaz.
(Bu adımları bir kağıda yazın ve arkadaşınızla kontrol edin. Eksik adım var mı?)
Böl ve Yönet. Büyük sorunları küçük parçalara ayır.
Tekrar eden işleri yapan kod robotları.
Malzeme girer, yemek çıkar.
Akış şemaları (Flowchart) çizmeyi öğreneceğiz.
Harika bir iş çıkardın şef.