Algoritma Nedir? Nasıl Yazılır? 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 kavramamız gerekiyor.

Algoritma nedir? sorusunun cevabıyla yazımıza başlayalım.

Ö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 yazacağınız programın algoritmasını ortaya çıkarabilirsiniz. Programın algoritmasını tamamladıktan sonra hangi programlama dilini biliyorsanız veya hangisi ile kodlarınızı yazmak istiyorsanız onunla projenizi kodlamaya başlayabilirsiniz.

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

Şimdi de programlamaya başlamadan önce algoritma oluşturmanın avantajları ve algoritma yazmaya başlamadan önce nelerin yapılması gerektiğine bakalım.

Programlamaya Başlamadan Önce Algoritma veya Akış Şeması Oluşturmanın Avantajları

  1. Kodlamaya geçmeden önce algoritma veya akış şeması oluşturmak program yazmayı kolaylaştırır.
  2. Kodlarımızı yazarken hatalı kod oranını ciddi anlamda azaltır.
  3. Program yazımı için gerekli süreyi kısaltır.
  4. Program kontrolünü ve hata takibini kolaylaştırır.
  5. Program üzerinde daha sonra yapılacak düzenlemelerde kolaylık sağlar.

Algoritma Yazmaya Başlamadan Önce Yapılması Gerekenler

  1. Problemin çözümü tüm ihtimaller göz önünde bulundurularak iyice irdelenmeli.
  2. Büyük bir problem ise çözüm parçalara bölünmeli.
  3. En kısa sürede, en az işlemle, en doğru sonuca ulaştıracak çözüm bulunmalı.
  4. Değişken isimleri belirlenmeli.

Bu hazırlıklar tamamlandıktan sonra algoritma yazmaya başlayabiliriz. Tabi algoritma yazmak için bazı temel bilgilere ihtiyacımız olacak.

Örneğin algoritma yazarken kullanılan operatörler nelerdir? Algoritma yazarken kullanılan terimler nelerdir? vb..

Algoritmalarda Kullanılan Operatörler

Matematiksel İşlem Operatörleri
^ Üs alma
* Çarpma
/ Bölme
+ Toplama
Çıkarma
. Tam ve ondalıklı kısımları ayırma
Karşılaştırma Operatörleri
= Eşittir
< > Eşit değildir
< Küçüktür
> Büyüktür
>= veya => Büyük eşittir
<= veya=< Küçük eşittir
Mantıksal İşlem Operatörleri
Değil
. Ve
+ Veya
Küme İşlem Operatörleri
+ Birleşim
Fark
* Kesişim
= Eşit
< > Eşit değil
=< veya <= Soldaki küme, sağdakinin alt kümesi
>= veya => Sağdaki küme, soldakinin alt kümesi
Alfasayısal Operatörleri
+ Birleştirme
Genel İşlem Operatörleri
= Aktarma
() Parantez

 1 – Veri :  Bilgisayarlarda işlenen tüm bilgilere veri denir. Sayısal ve Alfasayısal veriler olmak üzere 2’ye ayrılır.

 2 – Tanımlayıcı :  Programı yazan kişi tarafından oluşturulur. Programdaki değişkenleri, sabitleri, kayıt alanlarını, özel bilgi tiplerini vb.. adlandırmak için kullanılan kelimelerdir. Tanımlayıcılar, yerini tuttukları ifadelere çağrışım yapacak şekilde seçilmelidir.

Tanımlayıcılar oluşturulurken aşağıdaki kurallara uyulmalıdır.

  • İngiliz alfabesindeki A-Z veya a-z arasındaki 26 harf kullanılabilir.
  • 0-9 arası rakamlar kullanılabilir. 
  • Sembollerden sadece alt çizgi (_) kullanılabilir. 
  • Tanımlayıcılar harfle veya alt çizgiyle başlayabilir. 
  • Tanımlayıcılar rakamla başlayamaz veya sadece rakamlardan oluşamaz.

Bu kurallara uyulduğu müddetçe tanımlayıcıları istediğiniz şekilde kullanabilirsiniz.

Adı Soyadı ve Doğum Tarihi kelimeleri üzerinden en çok kullanılan tanımlayıcı yazma biçimlerine bakalım:

  1. AdiSoyadi, DogumTarihi
  2. adiSoyadi, dogumTarihi
  3. ADISOYADI, DOGUMTARIHI
  4. Adi_Soyadi, Dogum_Tarihi

 3 – Değişken :  Programın her çalıştırılmasında, farklı değerler alan bilgi/bellek alanlarıdır. Değişkenlere isim verirken, tanımlayıcı kurallarına uygun biçimde verilmelidir.

Örneğin bir öğrencinin almış olduğu vize ve final notuna göre ortalamasını hesaplayan algoritmayı yazarken kullanacağımız değişkenleri yazalım.

Değişkenleri en çok kullanılan 4 farklı şekilde yazacağım. Siz de kurallara uygun olarak istediğiniz gibi yazabilirsiniz.

  1. VizeNotu, FinalNotu, Ortalama
  2. vizeNotu, finalNotu, ortalama
  3. VIZENOTU, FINALNOTU, ORTALAMA
  4. Vize_Notu, Final_Notu, Ortalama

 4 – Atama/Aktarma :  Değişkenlere değer aktarma işlemidir. Değişkenlere atanan bu değerler daha sonra tekrar kullanılabilirler. Sağdaki Değer sonucu Değişken’e aktarılır. Bu durumda Değişken’in bir önceki değeri varsa silinir.

Örneğin, vizeNotu değişkenine 80 notunu atamak istiyorsak şöyle yazmalıyız:

vizeNotu = 80

 5 – Sayaç :  Bazı işlemlerin belirli sayıda yaptırılması ve üretilen değerlerin sayılması gerekebilir. 

Örneğin 1’den 100’e kadar olan sayılar içerisinde kaç tane asıl sayı olduğunu hesaplayan algoritmayı yazdığımızı düşünelim.

Sayac değişkenine en başta 0 (sıfır) değerini atarız.

1’den itibaren her sayının asal sayı olup olmadığını kontrol ederiz.

Sonrasında her asal sayıda Sayac değişkenini 1 arttırırız.

 6 – Döngü :  Bir çok programda bazı işlemler, belirli ardışık değerlerle gerçekleştirilmekte veya belirli sayıda yaptırılmaktadır. Programlardaki belirli işlem bloklarını, verilen sayıda gerçekleştiren işlem akış çevrimlerine “döngü” denir.

Döngüleri yazarken belirli kurallara uymamız gerekiyor. Bunlar:

  1. Döngünün bir başlangıç değeri olmalı.
  2. Döngünün bir bitiş değeri olmalı.
  3. Döngünün artma veya azalma değeri olmalı.

Örneğin 1’den 20’a kadar olan çift sayıların toplamını hesaplayan algoritmayı yazdığımızı düşünelim.

  1. Bu örnekte döngünün başlangıç değeri 1’dir.
  2. Döngünün bitiş değeri 20’dir.
  3. Döngünün artma değeri 2’dir.

Algoritma yazarken dikkat etmemiz gereken bazı püf noktalar vardır. Biraz da bu püf noktalar üzerinde duralım.

Algoritma Yazarken Nelere Dikkat Etmeliyiz?

 ⇒  İ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.

 ⇒  Algoritma esnek yapıda, etkin ve hızlı olmalıdır.

 ⇒  Algoritma, geliştirmelere yani değişikliklere açık olmalıdır.

 ⇒  Algoritma, herhangi bir programlama diline bağımlı olmadan tüm programlama dilleriyle yazılabilmelidir.

Algoritmaları genel olarak 3 farklı şekilde ifade edebiliyoruz. Bunlar:

  1. Algoritmanın metin olarak yazılması : Bu yöntemde algoritmanın tüm adımları düz metin olarak açıkça yazılır.
  2. Algoritmanın sözde kodlarla yazılması : Bu yöntemde algoritmanın tüm adımları yarı kodlarla veya kısaltmalarla yazılır.
  3. Algoritmanın akış şemasının çizilmesi : Bu yöntemde algoritmanın tüm adımları belirli şekillerle ifade edilir.

Şimdi örnek bir algoritma belirleyelim ve bu algoritmayı 3 farklı şekilde nasıl ifade edebileceğimize bakalım.

 Örnek Algoritma :  Bir kenar uzunluğu ve o kenara ait yüksekliği girilen üçgenin alanını hesaplayan algoritmayı 3 farklı şekilde yazınız.

Algoritmanın Metin Olarak Yazılması

 A1  Başla

 A2  Üçgenin kenar uzunluğunu gir

 A3  O kenara ait yüksekliği gir

 A4  Kenar uzunluğu ile yüksekliği çarpıp 2’ye böl ve Sonucu alan değişkenine ata

 A5  Alan değişkenini ekrana yaz

 A6  Dur

Algoritmanın Sözde Kodlarla Yazılması

 A1  Başla

 A2  kenarUzunlugu gir

 A3  yukseklik gir

 A4  alan = (kenarUzunlugu * yukseklik) / 2

 A5  alan değişkenini yaz

 A6  Dur

Algoritmanın Akış Şeması ile İfade Edilmesi

algoritma-nedir-algoritma-ifade-sekilleri

Artık algoritma örneklerine geçebiliriz.

Konunun daha iyi anlaşılabilmesi için olabildiğince basit örnekler seçeceğim. 

Algoritma Örnekleri

Örneğin, Girilen 2 sayının ortalamasını hesaplayan programı yazmak istiyorsunuz diyelim. Öncelikle bu programın algoritmasını yazmaya çalışmalısınız.

Girilen 2 sayının ortalamasını hesaplayan algoritma

  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; Girilen 2 sayının ortalamasının hesaplanması.

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

Bu aşamadan sonra yapacağınız programın kodlarını hangi programlama dili ile yazarsanız yazın zorlanmadan ve hatasız bir şekilde yazabilirsiniz.

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

Girilen 2 sayının ortalamasını hesaplayan programı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 Algoritma Nedir? yazımı 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.

Konunun daha iyi anlaşılması için bir örnek daha vermek istiyorum.

İ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.

Girilen bir sayının pozitif mi negatif mi olduğunu bulan programın algoritmasını 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 de göz önünde bulundurduk. Eğer 0 (sıfır) girilirse yeniden bir sayı girilmesi için Adım 2’ye yönlendirdik.

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. 

Girilen bir sayının pozitif mi negatif mi olduğunu bulan programın akış şeması

algoritma-nedir-ne-ise-yarar

Algoritmalar Neden Bu Kadar Önemlidir?

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, Girilen 2 sayının ortalamasını bulan programın algoritmasıydı. Belki şunu diyebilirsiniz, “ben bu programı 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.

Yorum Yazın