Kıyaslama
1 Mart 2021Size bir hikaye anlatayım mı?
4 Mart 2021Bilgisayar programlarının en iyi yaptığı şey birşeyi tekrar etmektir. Bu tekrarlar çeşitli yöntemlerle gerçekleştirilebilir. Döngüler bu tekrarların yapılabileceği araçlardır. Bu denemde “for” döngüsünü göreceğiz. Tabi ki konu anlatmak yerine bir örnek uygulamayla yapacağız. Örneğimiz faktöriyel hesaplama. Bildiğiniz üzere faktöriyel hesaplamada faktöriyeli hesaplanacak sayıdan 0’a doğru tüm sayılar sırayla çarpılır. Aşağıda bir örneği görülüyor.
{1!=1} \\ 2!=2 .1=2 \\ 3!=3.2.1=6\\ 4!=4.3.2.1=24
ya da serilerle şu şekilde ifade edebiliriz.
\prod_{i=1}^{n}{i}=n!
Şimdi bu matematiksel ifadeyi programlayalım.
n = 5 fakt = 1 for i in range(1,n+1): fakt = fakt * i print(fakt)
Lütfen yukarıdaki kodu spyder ekranınıza kopyalayın ve çalıştırın. Aşağıdaki açıklamaları okumadan önce kod üzerinde kendinizce deneme yanılma ile değişiklikler yapın ve her bir ifadenin ne anlama geldiğini tahmin etmeye çalışın. Bu, sonraki satırların daha iyi aklınızda kalması için önemli.
Şimdi gelelim satır satır kodu okumaya. İlk satırda yukarıdaki çarpım sembolü ile verilen yerdeki n tanımlandı. Yani 5! hesaplamak istiyoruz. Hemen altında fakt = 1 diye bir başlangıç değeri tanımlandı. Nedenini soruyorsanız, şimdilik çarpma işlemine göre etkisiz eleman 1 olduğu için diye aklınızda tutabilirsiniz. Sonrasında asıl bu konun temeli olan for döngüsü yazıldı.
For döngüsü, herhangi bir kodu istediğimiz sayıda tekrar çalıştırmamızı sağlar. Genel yazım kuralı, yukarıda yazıldığı gibi bir satır dönme sayısının belirtildiği kısım ve onun altında, aynı hizada olmayıp, onun girintisinde bulunan tekrar edilecek kod şekildedir.
Yukarıdaki for satırına bakarsak “for i in range(1,n+1):” demek; i değişkeni 1’den başlasın n’ye kadar (bizim için bu 5) sırayla değişsin demek. Yani ilk döngüde i=1 olsun, onun altındaki girintili satırdaki kodu çalıştırsın. Sonra i=2 olsun ve onun altındaki satırı çalıştırsın. Böyle devam etsin en son i=5 olsun ve altındaki girintili satırı çalıştırsın. Böylece eliniz kağıt kalem alıp siz de koda bakarak yazarsanız şu tablo şeklinde değişkenler her bir döngüde tekrarlanır.
Döngü sayısı | i | fakt |
1 | 1 | 1 |
2 | 2 | 2 |
3 | 3 | 6 |
4 | 4 | 24 |
5 | 5 | 120 |
Döngü, range içindeki son değere ulaşınca durur ve girintisi olmayan sonraki ilk satırla devam eder, ki bu da bizim kodumuzda print() fonksiyonudur. Böylece sonuç olan 120 değeri konsola yazdırılır. Print fonksiyonunu for döngüsünün girintisine sokup kodu tekrar çalıştırır mısınız? O zaman girinti ile girinti olmamasının farkını anlayabilirsiniz.
Serdar Turgut İnce