Algoritma Nedir?

AlgoritmaAlgoritma, en basit ifadeyle; bir problemin çözüm yolu anlamına gelir. Yani bir problemi çözmek veya bir “iş” yapmak istiyorsunuz. Bu amacınıza ulaşmak için tasarladığınız yol o işin algoritmasıdır. Her program, bir algoritmaya dayanır. Algoritmalar, bir “programlama dili” olmamasına rağmen, algoritmasız bir program yazamazsınız.

Ne demek algoritmasız program yazmak? Herkes program yazmadan önce algoritma mı hazırlıyor? Evet. Aslında böyle. Bazı programlar, yazılı algoritmalar ve akış diyagramları aracılığı ile yazılır. Ancak böyle yazılmıyorsa bile, programcı ve/veya analist bu algoritmayı kafasında ve sözlü olarak hazırlıyor demektir. Özünde yazılan her programın algoritması yazılı olarak hazırlanabilir. Ancak fiili durumda bazen yazılı bir algoritma kullanırız, bazen de kullanmayız.

Algoritma bugün çoğunlukla yazılım alanında kullanılsa bile, elektronik devrelerin yazılması veya biyolojik canlıların davranış biçimleri gibi başka alanlarda da kullanıldığı olur.

Algoritmanın özelliklerinin başında adım adım ilerleme gelir. Algoritma, çözümün belli sayıda basit ve açık adıma dönüştürülmesidir.

Algoritmaların girdi ve çıktıları vardır ve nettir.

Algoritmanın adımları açık olmalıdır. Anlaşılamayacak veya farklı yorumlanabilecek adımlar olmamalıdır.

Peki işin teorik kısmını yine çok uzatmadan geçelim pratiğe. Önce bir problemimiz olsun. Mesela gece uykumuz gelmiş. Ama canımız da acayip dondurma istemiş. İşte size bir problem. Gelin bu problemimizin algoritmasını oluşturalım.

ADIM 1 – BAŞLA
ADIM 2 – DOLABI KONTROL ET
ADIM 3 – DOLAPTA DONDURMA VARSA ADIM 7’YE, YOKSA ADIM 4’E GİT
ADIM 4 – DONDURMA İHTİYACIN, UYKU İHTİYACINDAN BÜYÜKSE ADIM5’E, DEĞİLSE ADIM 8’E GİT
ADIM 5 – MARKETE GİT
ADIM 6 – DONDURMA AL
ADIM 7 – DONDURMA YE
ADIM 8 – UYU

Dondurma ihtiyacımıza çözüm yolumuzun algoritmasını hemen yazıverdik. Yazılı algoritmaların zamanla karışık hale gelmesi ve dikkat gerektirmesi yüzünden; akış diyagramları ortaya çıkmıştır. Akış diyagramı, yukarıda yazılı olarak anlattığımız çözümün, şekil ve oklarla ifade edilmesidir. Her akış diyagram şeklinin bir anlamı vardır. Ama algoritmayı anlamanız için bunları ezberlemeniz gerekmiyor. Akış diyagramı çizmeniz için gerekiyor. Çizerken şekillerin anlamlarını öğrenebilirsiniz. Diyagram şekillerinin oldukça farklı kullanım tipleri mevcut. Ama genelde başlama ve bitiş işlemleri için köşeleri oval dikdörtgen, işlemler için normal dikdörtgen, koşullar içinse diamond dediğimiz eğik dikdörtgen kullanılmakta.

Gelin yukarıdaki algoritmamızı akış diyagramı haline getirirerek bir örnekle daha anlaşılır yapalım bu konuyu:

Gördüğünüz gibi, yukarıda yazıyla ifade ettiğimiz her adımı şekille ifade ettik.

Günlük hayattan  bir örneği algoritmaya uyarlayarak konuyu daha anlaşılır hale getirmeye çalıştım. Şimdi gelin bizim konumuz için algoritmaya dönelim. Yani bir yazılım üretmek için algoritma hazırlayalım.

Örnek olarak kullanıcıdan iki sayı isteyip bunların çarpımlarını bulup ekrana yazdıracak bir programa ihtiyacımız olsun. Gelin bunun için bir algoritma hazırlayalım:

Adım 1 – Başla
Adım 2 – A’yı oku
Adım 3 – B’yi oku
Adım 4 – C=A*B yi hesapla
Adım 5 – C’yi yaz
Adım 6 – Dur

Akış Diyagramı:

Evet programımız için algoritmamızı hazırladık. Akış şemasına da döktük. Şimdi bir programlama dili aracılığıyla bu algoritmayı bilgisayar programı haline getirmek kaldı. Buradaki örnek algoritmamızı ben C dilinde bir program haline getirdim. Örnek aşağıda:

Herhangi bir C derleyicisinde bu kodu çalıştırırsanız veya derleyip bir program haline getirirseniz; önce kullanıcıdan bir sayı, sonra başka bir sayı isteyecek, bu iki sayıyı çarpacak sonra yine kullanıcıya ekranda çarpımı gösterecektir.

İşte programcılık “kökeni” buraya dayanmakta. Dilleri bilmekten çok, neyi nasıl yapabileceğini bilmek ve düzgün bir algoritma oluşturmak (kağıtta veya kafanızda) işin en önemli kısmı.

Özellikle gerçek hayatta karşılaştığınız sorunların çözüm yöntemlerinin algoritmasını oluşturabilirseniz, bunu herhangi bir dilde program haline getirmek mümkün olacaktır. Sorunlara, algoritma aracılığıyla iyi çözümler üretmek benim için “iyi bir yazılımcının” tanımıdır.

One thought on “Algoritma Nedir?

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir