0:00
Kullandığınız her uygulamanın,
0:01
oynadığınız her oyunun arkasında yatan o
0:04
temel mantığı hiç düşündünüz mü? İşte
0:06
bugün programlamanın temelindeki beş
0:08
büyük zorluğu bir bir çözerek bu sır
0:10
perdesini aralıyoruz. Yol haritamız
0:12
oldukça net. Önce bir programcı gibi
0:14
düşünmenin ilk adımını atacağız. Sonra
0:16
verileri nasıl sakladığımıza bakacağız.
0:19
Ardından programların nasıl akıllı
0:20
kararlar verdiğini göreceğiz.
0:22
Tekrarlanan işleri nasıl
0:23
otomatikleştirdiğimizi öğreneceğiz ve en
0:26
sonunda da yazdığımız kodun ne kadar iyi
0:28
çalıştığını ölçeceğiz. Evet, hazırsanız
0:30
başlayalım. İlk ve en temel zorluğumuz
0:33
şu: Birgisayara ne yapması gerektiğini
0:36
nasıl söyleriz? Her şey aslında son
0:38
derece net, adım adım ilerleyen bir plan
0:41
oluşturmakla başlıyor ve programlama
0:43
dünyasında bunun çok havalı bir adı var.
0:46
İşte bu planın adı algoritma.
0:48
Algoritmayı en sevdiğiniz yemeğin tarifi
0:51
gibi düşünebilirsiniz. Adımları doğru
0:53
sırayla takip ederseniz her seferinde
0:55
aynı lezzetli sonucu alırsınız. İşte
0:57
algoritma da tam olarak bu mantıkla
0:59
çalışır. Peki bu tarifi yani algoritmayı
1:03
daha mutfağa girmeden yani kod yazmaya
1:06
başlamadan önce nasıl bir kağıda
1:07
dökeriz? İşte bunun için de kaba kod
1:10
yani İngilizce adıyla psüo kod
1:12
kullanıyoruz. Bu kodun bir nevi taslağı,
1:15
mimari çizimi gibidir. Harika. Artık
1:18
bilgisayara talimat verebiliyoruz. Şimdi
1:20
sıradaki zorluğa geçelim. Bir program
1:23
verdiğimiz bilgileri nasıl aklında
1:25
tutar? Bir programın hafızasını iki
1:27
farklı kutu gibi hayal edin. Ekranda
1:29
gördüğünüz gibi bazı kutuların içindeki
1:31
değer sürekli değişebilir. Mesela bir
1:33
oyundaki skorunuz gibi. İşte bunlara
1:36
değişken diyoruz. Diğer kutular ise
1:38
kilitlidir. İçindeki değer asla
1:40
değişmez. Mesela pi sayısı ya da bir
1:43
programdaki sabit vergi oranı gibi.
1:45
Bunlar da bizim sabitlerimiz. Tamam.
1:48
Artık veriyi saklayabiliyoruz. Peki ya
1:50
şimdi bir program elindeki bu bilgiye
1:53
dayanarak nasıl akıllı kararlar
1:55
verebilir? Aslında cevap gündelik
1:57
hayatımızda saklı. Bu basit cümle
2:00
programlamadaki en güçlü mantıklardan
2:02
birini özetliyor. Bir eğilimin belirli
2:05
bir koşula bağlı olması. İşte bu eğer
2:07
şöyleyse bunu yap senaryolarına
2:09
programlamada koşullu yapılar diyoruz.
2:12
Bu yapılar sayesinde programlarımız
2:14
artık tek düze bir yol izlemek zorunda
2:15
kalmıyor. Yol ayrımlarında durup
2:18
koşullara göre hangi patikadan
2:19
gideceğine karar verebiliyor. Bu da
2:21
onlara inanılmaz bir esneklik katıyor.
2:23
Bakın bu mantık pratikte nasıl
2:25
çalışıyor. Bir öğrencinin notunu harfe
2:27
çeviriyoruz. Program önce soruyor puan
2:30
90'dan büyük mü? Cevap evetse aa yazıp
2:32
duruyor. Değilse bir sonraki adıma
2:35
geçiyor. Peki 80'den büyük mü? Bu
2:37
şekilde doğru koşulu bulana kadar bir
2:40
şelale gibi adım adım aşağı iniyor.
2:42
4.üncü zorluğumuz ise programlamayı
2:44
gerçekten devrimselleştiren bir fikir.
2:47
Bir görevi aynı kodu defalarca
2:49
kopyalayıp yapıştırmadan tekrar tekrar
2:51
nasıl yaparız? Diyelim ki ekrana 1'den
2:54
9'a kadar olan tek sayıları yazdırmanız
2:56
gerekiyor. Tabii ki 5 tane ayrı yazdır
2:58
komutu kullanabilirsiniz ama ya binlerce
3:01
sayıyı yazdırmanız gerekseydi işte o
3:03
zaman işler karışırdı. İşte
3:05
programlamanın sihri burada devreye
3:06
giriyor. Döngüler. Bu zarif komut
3:09
aslında şunu söylüyor. 1den başla 9a
3:13
kadar ikişer ikişer say ve her adımda o
3:15
anki sayıyı ekrana yaz. Gördünüz mü? Tek
3:19
bir komutla potansiyel olarak
3:20
milyonlarca işlemi zahmetsizce
3:22
yaptırabiliyoruz. Ve geldik son
3:24
durağımıza. Harika. Kodumuz artık
3:27
çalışıyor. Kararlar alıyor. Tekrarlı
3:29
işler yapıyor. Peki ne kadar iyi
3:31
çalışıyor? Yani ne kadar verimli? İşte
3:34
bu verimliliği ölçmek için programcılar
3:36
standart bir yöntem kullanır. Big 10
3:38
notasyonu. Bu algoritmamızın bir nevi
3:41
performans karnesidir. Özellikle
3:43
elimizdeki veri miktarı arttıkça
3:45
kodumuzun nasıl davranacağını bize
3:47
önceden söyler. Bu grafik aslında bize
3:49
çok basit bir şey anlatıyor. O1 gibi
3:51
bazı algoritmalar inanılmaz hızlıdır.
3:54
Veri miktarı ne olursa olsun sonuç
3:56
anında gelir. Tıpkı bir telefon
3:58
rehberinin ilk kaydına bakmak gibi. Ama
4:00
ON küp gibi algoritmalar veri miktarı
4:03
arttıkça inanılmaz derecede yavaşlar. Bu
4:05
da rehberdeki her bir kişiyi diğer tüm
4:08
kişilerle tek tek karşılaştırmak gibi
4:09
bir şey. Veri büyüdükçe işin içinden
4:12
çıkmak imkansızlaşır ve bu da bizi son
4:15
bir düşünceye getiriyor. Evet. Bir
4:17
algoritmanın hızlı olması önemlidir. Ama
4:20
acaba her zaman en hızlı olan mı en
4:22
iyisidir? Bazen kodun daha kolay
4:24
okunabilir olması ya da bakım
4:26
maliyetinin düşük olması daha kritik
4:28
olabilir. Bu da bize programlamanın
4:30
sadece doğru cevabı bulmak değil, aynı
4:32
zamanda koşullara göre en akıllıca ödün
4:35
vermek sanatı olduğunu hatırlatıyor.