Algoritma Nedir? (Günlük Hayattan Anlatım)

Algoritma, belli bir sorunu veya problemi çözmek ya da belirlenen bir amaca ulaşmak için tasarlanan yol olarak tanımlanmaktadır. Algoritmada problemin çözülmesi, çözümün adımlar halinde yazılması ile oluşur. Bu adımlar çözümün başlangıcından son adımına kadar sıralı bir şekilde listelenir.

Algoritma genel olarak bilgisayar yazılımları içerisinde kullanılır. Yazılmak istenilen bir programın genel hatları belirlendikten sonra algoritması çıkarılır. Algoritmada yapılması gereken tüm işlemlerin belirlenmesi gerekir. Her türlü döngüler, kararlar, girdiler, çıktılar vs. hepsinin algoritma içerisinde belirlenmesi gerekmektedir. Yazılmak istenilen programın algoritması çıkarıldıktan sonra hangi programlama dilinde yazılacaksa algoritmaya bakılarak program yazılır. Algoritma programlama dillerinden bağımsızdır. Yani iki sayının toplamını bulan bir algoritma geliştirilecekse bunu C# dili için ayrı Python dili için ayrı geliştirmezsiniz. Algoritmayı çıkartırsınız ve bu algoritmaya bakarak hangi platformda geliştirecekseniz o platform için geliştirilmiş programlama dilinde programınızı geliştirirsiniz. Şimdi konuyu biraz basitleştirerek ve günlük hayattan örnekler vererek anlatalım.

Diyelimki 2 sayının toplamını bulan bir program yazmak istiyorsunuz. Sizden 3 ile 2 sayısının toplamını bulmamız istense eminimki herkes cevabı çok kolay bir şekilde verecektir. Beynimiz bunu çok hızlı bir şekilde bizim için çalıştırıyor. Bakalım sayıları toplama aşamamız nasıl gerçekleşiyor. Beynimiz ilk olarak 1. sayıyı alıyor daha sonra 2. sayıyı alıyor ve okulda bizlere öğretildiği toplama yöntemini kullanarak toplayıp cevabını söylememiz ya da yazmamız için bizlere bildiriyor. İşte biz de beynimizin yaptığı bu işlemi bilgisayara öğreterek bir nevi bilgisayarın beyni içerisine komut yazıyoruz.

Aslında günlük hayatımızda algoritmayı da sıklıkla kullanırız ancak dediğim gibi bu işlemleri hızlı yaptığımız için ve sürekli yaptığımızdan dolayı artık pratikleştiğimiz için adımlarını fark etmiyoruz. Bir günlük hayat algoritması örneği daha verelim. Aşağıda çay demleme algoritmasının bir anlatımı vardır.

Adım 1: Başla
Adım 2: Mutfağa git
Adım 3: Çaydanlığın altına su koy
Adım 4: Çaydanlığı ocağa koy
Adım 5: Ocağı yak
Adım 6: Suyun kaynamasını bekle
Adım 7: Su kaynadı ise demliğe çay koy. Kaynamadı ise 6. adıma git
Adım 8: Demliğe sıcak su koy ve çayı demle
Adım 9: Çaydanlığın altına su koy ve ocağa koy
Adım 10: Suyun kaynamasını bekle
Adım 11: Su kaynadı ise çaylar servise hazır. Kaynamadı ise 10. adıma git
Adım 12: Bitir

Abi bu ne ya bunu zaten biliyoruz diyebilirsiniz. Evet tüm bu aşamaları sorunsuz bir şekilde biliyorsunuz ancak benim sizler için yazdığım bu algoritmanın amacı yaptığınız adımları fark etmenizi sağlamaktır.

Yapay zeka programları yazmadığımız sürece bilgisayarların bizlerin düşündüğü gibi düşünmesini bekleyemeyiz. Yani herhangi bir adımı/komutu eksik veya hatalı yazdığımızda bilgisayar bunun eksik veya hatalı olduğunu anlamayıp direk yazdığımız gibi çalıştıracaktır. Yukarıdaki algoritmada 5. adımı çıkardığımızı düşünelim. Bu durumda bilgisayar sürekli olarak 6. ve 7. adımda takılı kalacaktır. Suyun kaynamasını bekleyip 7. adıma geçerek suyun kaynamadığını görerek geri 6. adıma dönecektir. Bu sürekli olarak devam edip çay hiçbir zaman demlenmeyecektir. O yüzden algoritma geliştirirken herhangi bir adımı atlamamamız gerekmektedir.

Terimler, akış diyagramları vb. konulara değinmeden bloğumda PHP ve JavaScript dillerini kullanarak algoritmalar geliştirip örneklerini sizlerle paylaşacağım. Örneklerin tam listesini bir post olarak atacağım ve her yeni örnekte bu sayfayı güncelleyeceğim. Algoritma problemlerinin olduğu post linki aşağıdadır. Sizlerin de karşısına çıkan veya aklına takılan bir algoritma sorusu olursa örneklerin bulunduğu postun altına yorum olarak bırakırsanız en kısa zamanda koda dökülmüş ve detaylı anlatılmış halini paylaşırım. Algoritmalar ile ilgili teknik detayların bulunduğu blog konularını toparladıktan sonra linklerini yayınlarım.

Algoritma Örnekleri Listesi

You may also like...

Bir cevap yazın

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