Algoritma Nedir? Ne İşe Yarar? Neden Bu Kadar Önemlidir?

Programlama öğrenmek isteyenler veya yeni başlayanların en sık duyduğu kavramlardan birisi algoritma kavramı oluyor. Herhangi bir programlama dili öğrenmeye başlamadan önce Algoritma Nedir? Ne İşe Yarar? Neden Bu Kadar Önemlidir? konularını iyi kavramanız gerekiyor.

ALGORİTMA NEDİR?

Öncelikle teorik olarak algoritmanın tanımını yapalım. Sonrasında biraz daha pratikte kullandığımız şekliyle anlatmaya çalışacağım.

Bir problemi çözmek için yapmamız gereken bütün işlemlerin adım adım yani sıralı bir şekilde yazılmasına algoritma denir. 

Bir bina inşaa ederken temelinin sağlam olması ne kadar önemliyse programlama öğrenmeye başlayacak birisi için de algoritma mantığını kavramak o kadar önemlidir.

 Önemli  Algoritma mantığı, programlama dillerinden (C#, Java, Php, Python vb..) bağımsızdır. Örneğin bir proje yapacaksınız diyelim. Hangi programlama dilini kullanacağınızdan bağımsız olarak algoritmanızı ortaya çıkarabilirsiniz. Algoritmanızı tamamladıktan sonra hangi programlama dilini biliyorsanız veya hangisi ile kodlarınızı yazmak istiyorsanız onunla projenizi kodlamaya başlayabilirsiniz.

Bir yazılımcıda aranacak en önemli özellik bir problemin çözümü için algoritma hazırlayabilmesi ve geliştirebilmesidir. 

Teorik olarak Algoritma Nedir? sorusunun cevabını bu şekilde verebiliriz.

Şimdi de örnekler üzerinde anlamaya çalışalım. Konunun daha iyi anlaşılabilmesi için olabildiğince basit örnekler seçeceğim.

Örneğin 2 sayının ortalamasını hesaplayan algoritmayı yazalım.

  A1   Başla

  A2   Birinci sayıyı gir (a)

  A3   İkinci sayıyı gir (b)

  A4   İki sayıyı toplayıp sonucu toplam değişkenine ata (toplam = a + b)

  A5   toplam değişkenini 2’ye böl ve sonucu ortalama değişkenine ata (ortalama = toplam / 2)

  A6   ortalama değişkenini yaz

  A7   Dur

İlk algoritmamızı yazmış olduk. Yukarıda yapmış olduğumuz tanıma dikkat ederseniz aynen orda geçen ifadeleri pratikte uyguladık.

Ortada çözmemiz gereken bir problem var; 2 sayının ortalamasının hesaplanması.

Bu problemi çözmek için gerekli bütün adımları sıralı bir şekilde yazarak algoritmamızı tamamladık. Gördüğünüz gibi hiçbir detayı gözardı etmeden her adımı detaylı bir şekilde yazdık.

Algoritmaları bu şekilde düz metin olarak yazabildiğimiz gibi akış şemaları (akış diyagramları) ile görsel bir şekilde de oluşturabiliriz.

Algoritmamızın Akış Şeması

algoritma-nedir-kisaca

Akış şemalarının detaylarına bu yazıda girmeyeceğim. Akış şemaları ile ilgili daha fazla bilgi almak isterseniz Akış Şeması Nedir? Akış Şeması Şekilleri Nelerdir? yazımı okuyabilirsiniz.

Ayrıca bu yazıyı tamamladıktan sonra algoritma mantığını tam olarak pekiştirmek için her seviyede örneklerin bulunduğu Algoritma Örnekleri (Basit, Orta ve İleri Seviye) yazımı inceleyebilirsiniz.

İkinci örneğimizde ise koşul gerektiren durumlarda algoritmalar nasıl yazılıyor ona bakalım.

Girilen bir sayının pozitif mi negatif mi olduğunu bulan algoritmayı yazalım.

Bir sayının pozitif veya negatif olduğunu anlayabilmek için 0’dan büyük olup olmadığına bakmamız gerekiyor. Yani bu sefer koşul ifadelerini kullanacağız.

Algoritmamızı yazmaya başlayalım.

  A1   Başla

  A2   Sayıyı gir

  A3   Eğer sayı = 0 ise Adım 2’ye geri dön

  A4   Eğer sayı < 0 ise ekrana, “girilen sayı negatiftir” yaz ve Adım 6’ya git

  A5   Eğer sayı > 0 ise ekrana, “girilen sayı pozitiftir” yaz

  A6   Dur

Gördüğünüz gibi girilen sayının 0 (sıfır) olma ihtimalini göz önünde bulundurduk. Eğer 0 (sıfır) girilirse yeniden bir sayı girilmesi için Adım 2’ye döndürdük.

Benzer şekilde girilen sayı 0 (sıfır) dan küçükse ekrana sonucu yazdırıp Adım 5’i atlayarak Adım 6’ya geçip algoritmayı sonlandırıyoruz. 

Algoritmamızın Akış Şeması

algoritma-nedir-ne-ise-yarar

Algoritma yazarken dikkat etmemiz gereken püf noktalar bulunuyor. Şimdi birazda bunları inceleyelim.

ALGORİTMA YAZARKEN NELERE DİKKAT ETMELİYİZ?

 ⇒  İlk olarak algoritma belli bir noktada başlamalı ve mutlaka belli işlemler yapıldıktan sonra bir yerde sonlandırılmalıdır. Yani sonu belirsiz olan bir algoritma yazılmamalıdır. Dikkat ederseniz örneğimizde ilk adım Başla, son adım ise Dur.

 ⇒  Her adım numaralandırılmalıdır. Örneğin A1 (Adım1), A2 (Adım2), A3 (Adım3) gibi.

 ⇒  Algoritmaları yazarken yapılacak işlemlerde hiçbir zaman ihtimale veya şansa yer verilmez. Tüm ihtimaller göz önünde bulundurularak yazılmalıdır.

 ⇒  Algoritmanın her adımı net bir şekilde ve basit olarak yazılmalıdır. Örneğin benim yazmış olduğum bir algoritma var diyelim. Algoritmanın 5. adımında yazmış olduğum cümleyi veya komutu, bu algoritmayı okuyan herkesin aynı şekilde anlaması gerekiyor. Diğer türlü bu algoritmayı 3 farklı yazılımcının okuduğunu varsayalım. Herbirinin bu adımdan farklı anlamlar çıkardığını düşünün. Algoritma içerisinden çıkılmaz bir hal alabilir. Yani algoritma yazarken yorum gerektirebilecek ifadelerden uzak durup kesin ifadeler kullanmalıyız.

Bu konu önemli olduğundan güncel hayatta karşılaşabileceğimiz bir örnek daha vermek istiyorum.

Diyelim ki bir yazılım firmasında işe başladınız. Firma büyük bir proje aldı ve bu projenin algoritma çalışmasını siz yapıyorsunuz. 4 ay boyunca çalışıp çalışmaları tamamladınız. Artık algoritma hazır ve herhangi bir programlama diliyle projeyi yazmaya başlayacaksınız.

Tam bu arada herhangi bir nedenden dolayı işten ayrılmanız gerekti ve yerinize ben işe girdim. Firma bana şunu diyecektir, “Senden önce çalışan arkadaşımız projenin algoritma çalışmasını tamamlamıştı. Sen direk projeyi kodlamaya başlayabilirsin. Bunlar da algoritma çalışmaları.”

Eğer siz algoritmayı sizin dışınızda okuyan birinin de yorum yapmadan anlayabileceği kesin ifadeler ile yazmamışsanız, belki ben yorum yaparak algoritmayı yanlış anlayıp projeyi yanlış kodlayabilirim.

Sonuç olarak algoritmalarımızı anlaşılabilir ve kesin ifadeler ile yazmalıyız.

 ⇒  Algoritmalarımızı yazarken amacımız, yüksek performanslı işler ortaya çıkarmak olmalıdır.

ALGORİTMALAR NEDEN BU KADAR ÖNEMLİDİR?

Algoritma nedir sorusunun cevabını öğrendiğimize göre artık algoritmanın neden bu kadar önemli olduğundan bahsedelim.

Bu konuyu örnekler üzerinde detaylı olarak anlatmak istiyorum.

Örneğin bir ETicaret Sitesi yapmayı düşünüyorsunuz diyelim. Önünüzde 2 yol var. 

Ya projeye başlamadan önce projenin tüm detaylarını masaya yatırıp gerekli algoritmik çalışmalarınızı tamamlayıp sonra projeye sağlam ve emin adımlarla başlarsınız.

Yada algoritmik çalışma yapmadan hazırlıksız bir şekilde projeyi hemen kodlamaya başlarsınız.

İki durumu da değerlendirelim.

algoritma-nedir

Algoritmik hazırlıklarımızı tamamladıktan sonra projenin ilerleyen aşamalarında bazı unuttuğumuz veya sonradan değişiklik yapmamız gereken durumlar olabilir. Ama bizim genel olarak bir hazırlığımız olduğu için bu eksikliklerin hem bütçe hem de zaman olarak bize çok bir zararı olmayacaktır.

Küçük eklemeler veya değişiklikler ile projemize devam edebiliriz.

Ama herhangi bir ön hazırlık çalışması (algoritma çalışması) yapmadan projeye başladık diyelim. Bir müddet sonra (örneğin projeyi yarıladıktan sonra) projede değişiklikler, eklemeler veya unuttuğumuz kısımlar olma durumunda bunun bize hem bütçe hem de zaman olarak çok zararı olacaktır.

Belki biraz uç noktada bir örnek olabilir ama tüm projenizi baştan yazmak durumunda bile kalabilirsiniz.

Yukarıda, Algoritma nedir? sorusunun cevabını yazarken çok basit algoritma örnekleri vermiştim.

Bunlardan birisi, 2 sayının ortalamasını bulan algoritmaydı. Belki şunu diyebilirsiniz, “ben bu problemi algoritma yazmadan direk kod yazarak zaten hallederim”.

Haklı olabilirsiniz ama benim burada kastettiğim daha çok kurumsal veya daha büyük projeler.

Bu nedenlerden dolayı büyük küçük ayrımı yapmadan, tüm projelerinizin öncesinde gerekli algoritma çalışmalarını yapmanız hayati önem taşıyor diyebilirim.

Umarım sizin için faydalı bir yazı olmuştur.

Şu yazılar da ilginizi çekebilir.

A’DAN Z’YE HTML DERSLERİ

A’DAN Z’YE CSS DERSLERİ

WEB TASARIM ÖRNEKLERİ (HTML, CSS, JAVASCRİPT, JQUERY, BOOTSTRAP)

Yeni bir yazımda görüşmek üzere.

Leave a Reply