Algoritma ve Algoritma Özellikleri

Algoritma ve Algoritmanın Özellikleri

Belki de çok daha öncesinde böyle bir konuya değinmeliydim. Çünkü bana göre programlama algoritma ile başlar. Hatta sadece programlama değil. Algoritmayı aslında günlük hayatımızda da çokça kullanmaktayız. Örneğin yemek tarifi denerken.

Algoritma Nedir?

Algoritma ilk olarak 9. yüzyılda ünlü matematikçi Harezmi tarafından ortaya atılmış ve kullanılmıştır. O dönemlerden beri kendisinin kullandığı bu terim ve anlamı 19. yüzyılın sonlarında dünya tarafından anlaşılmış ve kullanılmaya başlanmıştır.

Algoritma, belirli bir dizi eylemi gerçekleştirmeye dayalı olarak bir sorunu çözmek için bir prosedür veya formüldür. Bu şekilde tanıtınca kafa karışıklığına neden olabilir. Daha sade bir ifadeyle algoritma bir soruna yönelik üretilen çözümün adım adım ifade edilmesidir.

Neden Algoritma Kullanıyoruz?

Algoritma kullanmamızın en önemli nedeni, herhangi bir işlemi yapmadan önce neyi / nasıl yapacağımıza karar vermek içindir. Örneğin bir sayının tek mi çift mi olduğuna nasıl karar veririz?

  • Sayıyı al.
  • Kalan 0 ise sayı ÇİFT’tir.
  • Sayıyı 2’ye böl.
  • Kalan 0 değil ise sayı TEK’tir.
  • İşlemi bitir.

Bunun dışında algoritmayı yazarız çünkü bizim için yol haritasıdır. Algoritmadan yola çıkarak bunun herhangi bir programlama diline dökebiliriz. Aynı zamanda algoritma programlama dillerinden bağımsız olduğu için çoğu zaman anlamamız çok daha kolay olur.

Algoritma Özellikleri

Sadece sorunun ele alıp kaba taslak bir algoritma yazmak elbette doğru bir algoritma yazımı olmayacaktır. İyi bir algoritma aşağıdaki özelliklere sahip olmalıdır:

Modüler Olmalı: Bir problem verildiğinde ve buna yönelik çözüm için hazırlayacağımız algoritmalar modüler yapıda olmalıdır. Yani doğrudan tüm problemi çözmek yerine problemin her basamağı için ayrı ayrı çözümler üreten daha küçük algoritmalar yazmalıyız.

Doğruluk: Algoritma yazmanın en temel özelliklerinden biridir. Bir algoritma doğru değilse o algoritmayı kullanamayız. Algoritma yazdıktan sonra verilen girdilerin istenen çıktıları üretmesi gerekir.

Sürdürülebilirlik: Algoritmayı yeniden tanımladığınızda algoritmada önemli bir değişiklik yapılmaması için algoritmanın basit ve yapılandırılmış bir şekilde tasarlanması gerektiği anlamına gelir.

Anlaşılabilirlik: Algoritma doğrudan bir programlama dili değildir. Yani Python, PHP, Javascript, Java vs gibi doğrudan bilgisayar tarafından çalıştırılmazlar. Ancak iyi bir algoritma herhangi bir programlama diline çevrilip çalıştırılabilir. Bu nedenle yazacağımız algoritma herkes tarafından doğru bir şekilde anlaşılır olması açısından olabildiğince sade yazılmalıdır.

Genişletilebilirlik: Eğer algoritmamız iyi ve modüler bir yapıya sahipsa aynı zamanda ileride başka problemler için de kullanılabilir. Bu bir açıdan benzer problemler için en baştan algoritma yazma gereksinimini ortadan kaldırıp zamandan tasarruf etmenize olanak sağlar.

En Hızlı Çözüm: Problemlere tek bir çözüm bulunması beklenmemlidir. Aynı problemin birden fazla çözüm yolu olabilir. Ancak algoritma yazarken göz önünde bulundurmamız gereken bir başka özellik ise hızlı olmasıdır. Bu nedenle algoritma probleme ilişkin en hızlı çözüm yolu üzerine kurgulanmalıdır.

Algoritmada Olması Gerekenler Nelerdir?

Yukarıda bahsettiklerimiz genel olarak iyi bir algoritmanın sahip olması gereken özelliklerdi. Aynı zamanda algoritma yazarken aşağıdaki 5 kriteri sağlamalı / sahip olmalıdır.

Girdi: Algoritma yazarken mutlaka bir girdimiz olmalıdır. En basitinden bahsedecek olursak: Verilen sayının karesini hesaplayan bir algoritma yazdığımızda girdi olarak “Verilen Sayı”yı baz alırız.

Çıktı: Aynı zamanda algoritma girdilere göre belirli çıktılar vermelidir. Çıktı vermeyen herhangi bir şey üretmeyen algoritma yazmak gereksizdir.

Kesinlik: Bir algoritma yazarken her talimatı açık ve net olmalıdır.

Sonluluk: Algoritma sonsuza kadar gitmemelidir. Algoritmadaki işlemler / adımlar sınırlı sayıda olmalı ve bu adımlardan sonra da sonlandırılmalıdır.

Etkililik: Her algoritma teorik olarak kağıt ve kalem kullanılarak gerçekleştirilebilecek kadar temel olmalıdır.

Bir cevap yazın

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