Hızlıca Algoritma

Algoritmanın tarihine baktığımızda aslında çok eskiye dayandığını, Fars bilim insanı Harezm tarafından bulunduğunu ve o zamanki anlamının “Arap sayıları kullanarak problemleri çözmek” olduğunu görürüz. Tabi Harezmi’nin kitapları Avrupa’da çoğaltılıp basılırken ismi en başta Algorizm, daha sonra ise Algoritma’ya dönüşmüştür.

Özetle Algoritma; bir problemi çözmede kullandığımız yolların tasarımıdır aslında. Bu yüzden programlamanın tamamı belirli bir yol üzerine planlanır ve oturtulur. Algoritması olmayan bir şey kaotik olarak ifade edilebilir.

Şimdi ilk algoritma örneğimiz olacak olan Fibonacci sayı dizisini tasarlayalım ve Python 2.x’te yazalım 🙂

FIBONACCI

Akış diyagramımız bu. Şimdi sırada kodu yazmak var, fakat önce diyagramı açıklayayım.

Başla komutu ile başlıyoruz, ardından X ve Y olmak üzere iki değişken tanımlayıp, ikisine de “1” değerini veriyorum. Ardından işlem takibi için X ve Y’yi yazdırıyorum. İkisini toparlayıp Z değişkenine eşitliyorum ve dizi sırası olan S’yi 1 arttırıyorum. Z’yi yazdırıyorum ve X’i Y’ye, Y’yi Z’ye eşitliyorum ve dizi sırası kontrolü yapıyorum. Eğer ki şartı sağlıyorsa duruyorum, sağlamıyorsa tekrardan X ve Y’yi toplayıp Z’ye eşitliyorum.

Şimdi sırada kodumuz var.

def fib(n): #fib adında bir fonksiyon oluşturuyorum, bu fonksiyonun giriş değeri n oluyor

	s=0 #S basamak sayımızdı, basamak sayımızı tanımladım

	x, y = 1, 1 #X ve Y’yi değişkenlerimizi tanımladım

	while s <=n: #İşte istediğimiz dizeye kadar saydıracak olan döngümüz

		print x, y #Kontrol için X ve Y’yi tekrardan yazdırdım

		z=x+y #X ve Y’yi toparlayıp Z’ye eşitledim

		s=s+1 #S’yi 1 arttırdım

		print z #Z'yi yazdırdım

		x=y #X’i Y’ye eşitledim

		y=z #Y’yi Z’ye eşitledim

fib(98)

Şimdi “bunun daha kolay yok mu?” dediğinizi duyar gibiyim ve var diyorum ama Algoritma konusunu anlamanız için işi biraz uzatmak istedim. Kısa versiyonunu soranlar için kısaltılmış şekli;

a, b = 0, 1

while b<10:

 print b

 a, b = b, a+b

Umarım konuyu anlatabilmişimdir, işi sıkıcılaştırmamak için Algoritma’nın detaylarına inmek istemedim. 🙂 İyi günler

Konu PDF’i: http://link.tl/1kZRf

Yorum bırakın