Öncelikle Algoritmanın tanımına bakmamız gerekirse Algoritma belli bir problemi sorunu çözmemiz için problemin çözümüne yönelik oluşturduğumuz belli bir mantıkta sıralı adımların tümüne yani toplamına denir.
Tabi bunu sadece programlama açısından söylemiyorum hayat içinde ki problemlerin çözümünde de bundan faydalanıyoruz basit bir örnekle yemek yapan birinin o yemeği yaparken işleri belli bir öncelik ve mantık sırasına koyması misal bazı gıdaları sonradan yemeğe eklemesi, tuzunun önceden katılması gibi. Önemli olan sırası ve belli bir mantığa uygun olmasıdır. Nasıl her yemeğin yapılışı bir diğerinden farklı ise her problemin çözümü de farklıdır ama bir problemin çözümü birden fazla yani algoritmalarda farklılık gösterebilir o halde mantık ve sıralılık kendi içinde aranmalı.
Problemin çözümüne yönelik bazı belli evreler vardır bunlar; Gereklilik analizi, dizayn, (kodlama) ve testtir. Algoritma bu evrelerden hangisinde sorusunu cevaplamadan önce biz bu evreleri açıklayalım ki açıklamanın sonunda zaten ortaya çıkacaktır. Gereklilik analizini programın girdi ve çıktıları olarak açıklayabiliriz, yemeği yapmak için bize neler lazım yani problemin çözümü için hangi bilgiler gerekiyor ve onları girdi olarak kullanacağız. Dizayn ise problemi çözecek algoritma çözüm basamaklarını oluşturmadır. İşin kodlama kısmı ise aslında algoritmanın dahil olduğu kısımdır burada herhangi bir programlama dili ile algoritmaya göre işlemi kodlarız. Test ise doğruluğun kontrol edildiği son aşamadır.
Bir problemin çözümüne yönelik farklı algoritmalara örnek vermek gerekirse 1’den 10’a kadar olan sayıların toplamını farklı şekillerde elde edebiliriz. İlk akla gelen 1’den 10’a kadar olan sayıları tek tek toplatmak, ikinci yöntem ikindeki değeri her seferinde birden başlayıp birer birer arttırıp 10 gelene kadar dönen bir döngü oluşturup toplamlarını farklı bir değere atamak diğer bir farklı yöntem ise matematikten aklımıza gelen n.n+1/2 dir. Bunların hepsi aynı sonucu verse de kullanım olarak farklı ve işlem olarak yoğun olabilirler o yüzden en basit kullanıma sahip ve en az işlem gücü ve zaman tüketeninin seçilmesi öncelikli olur. Bu kadar ufak işlemlerde zamanın ne önemi var diyebilirsiniz ama daha karışık ve yoğun kod olunca bu fark anlaşılacaktır.
Son olarak bunu C# dilinde kodlar üzerinden anlatırsak; A ve B sayılarının büyük, küçük ve eşitlik durumlarını kontrol etmek istersek bunu bir eğer/if mantığı ile a > b sorusunu sorup olumlu geri dönüş alıyorsak evet A, B’den büyüktür. Değilse eğer/else if a < b sorusunu sorar ve cevaba göre A, B’den küçüktür deriz. Fakat eşitlik durumu için bu iki ihtimalin dışında kalan (büyük değilse ve küçük değilse) eşit olmak zorundadır onun içinde değilse/else mantığı kullanılır ve çıktılar elde edilir.
int a, b;
Console.Write("a değerini giriniz:");
string str1 = Console.ReadLine();
int.TryParse(str1, out a);
Console.Write("b değerini giriniz:");
string str2 = Console.ReadLine();
int.TryParse(str2, out b);
if (a > b) Console.Write("\n{0}, {1}' den büyüktür.", a, b);
else if (a < b) Console.Write("\n{0}, {1}' den küçüktür.", a, b);
else Console.Write("\n{0} ve {1} birbirine eşittir.", a, b);
Console.ReadLine();
Bu kodlar yukarıdaki mantığa göre C# dilinde kodlanmıştır. Umarım faydalı olmuştur.