Bilgisayar Teriminde Algoritma
Algoritmanın genel tanımı, mevcut bir problemi çözmede kullanılan yollar ve çözümünde izlenecek yol haritasıdır. Mantığa dayalı bir düşünme ve çözüm üretme becerisi bilgisayar programcılığının temelini oluşturur. Sonuçta bilgisayarların düşünme yetisi yoktur, bilgisayarlar önceden tanımlanmış bir taskları gerçekleştirir bilinmeyen bir yerden yanıt gelirse ve bilgisayar buna anlam vermezse o program çalıştırılamaz.
Algoritma sözcüğü dilimize Fransızca'dan geçse de ilk algoritma sözcüğünün kökeni Arapça diline dayanıyor. Harezmi’nin batıda popüler olan ve ikinci dereceden bir bilinmeyenli ve iki bilinmeyenli denklem sistemlerinin çözümlerini inceleyen kitabı "El-Kitab ‘ul Muhtasar fi’l Hesab’il cebri" ve "‘l Mukabele" adlı eseri batıda büyük ilgi görmüştür. Harezmi’nin ismini Avrupalılar telaffuz edemediği için “algorizm” sözcüğününü kullanmayı tercih etmişlerdir. Algorizm sözcüğü de adım adım değişerek İngilizce Algorithm, Türkçe Algoritma ismine dönüşmüştür. Harezmi’nin bu eserinin matematiğe ve bilgisayar bilimine çok büyük katkıları olmuştur. Böyle müslüman bir adamın onlara göre böyle bir işi yapması büyük ilgi görmüştür. “Cep telefonunuzu her elinize aldığınızda, arkasında Müslüman Özbek bir adamın olduğunu hatırlayın.” –Andrew Marr--
Algoritma basamaklarının ya da dizilerinin muhakkak bir başlangıcı ve sonu bulunur. Her adımda yapılacak işlem açıkça belirtilir.
Algoritma oluştururken yapılacak temel adımlar şunlardır;
•Kesinlik (tüm adımlar açık ve net olmalıdır)
•Son durum (algoritma yürütme adımları belirli bir süre içinde yapılmalıdır)
•Girdi ve çıktı bulundurma ( girdiler tanımlanmalıdır ve çıktılar bulundurmak zorundadır)
•Verimlilik (algoritma probleme bir çözüm vermelidir yoksa algoritma olarak nitelendirilemez)
Bilgisayar bilimini geçtim, günlük hayatta yaptığımız adımlar bile algoritmaya dökülebilir. Kısacası hayatın temelini oluşturur algoritma. Bir şeyin nasıl yapılacağını düşünürken bile devreye girer. Şimdi günlük hayatta yaptığımız bir işi algoritmaya dökelim.
Bu örneği yazılım dünyasındaki "hello world" gibi düşünebiliriz 😁 Bu tür gösterimler flowchart (akış diyagramı) olarak nitelendirilebilir. Tıpkı bu örnekte gösterdiğim gibi algoritmalar da farklı şekillerde ifade edilebilir;
Pseudo Kodu (Sözde Kod)
Pseudo kelimesi Yunanca'da aldatma, sahte , yalan gibi anlamlara gelir, bizim de anlayacağımız gibi "Sözde kod", herhangi bir programlama dilini andırmayan ancak bir programlama dilinin özelliklerine bir dizi talimatı tanımlamanın basit bir yoludur. Sözde Kod'da kodlar sözdiziminden arınıp programlama dilinin etiketlerini kullanırlar. Örnek bir sözde kod örneği;
Sözde kodlar hakkında ne yazık ki Türkçe bir kaynak bulunmuyor. Ayrıyeten de Türkiye'de de bu gösterim pek popüler değil.
FlowChart(Akış Şeması)
Yukarıdaki günlük hayatta gösterdiğim örnek bir akış şemasıydı, Akış şemalarında her adım birbirinden farklı anlamlar taşıyan şekillerden oluşur ve adımlar birbirine oklar ile bağlanır. Bu şema sözde koda oranla daha çok kullanılır. Akış şemasında kullanılan işaretler ve anlamları;
Her iki şemaya da göz attığımızda gösterimler her zaman başla ve bitir deyimlerini ifade eden şekil ile başlar ve sonlanır. Bunlar algoritmada da geçerlidir. Tıpkı bir paragraf gibi algoritmalar, giriş süreç ve sonuç olarak 3 adıma ayrılırlar. Algoritmayı oluşturmak için bize yardımcı olmak üzere kullanabileceğimiz birkaç teknik vardır. Bunlar Ayrıştırma ve Soyutlamadır;
Ayrıştırma
Bir sorunu çözmek için, sorunu çözebileceğiniz daha küçük bileşenlere artırabileceğinizi düşünün kısacası başlangıçtan başlayıp zorlaştırın.
Bilgisayar Bilimi dışında da her yerde ayrışma var. Mühendis olmak istiyorsan üniversiteye gitmen gerekiyor. Üniversiteye gitmek için lisede iyi notlar almak lisede iyi notlar almak için ise ders çalışmak bu liste böyle uzayıp gidecektir. Kısacası basitten zora olarak bu tekniği nitelendirmeliyiz.
Soyutlama
Herşey buraya kadar iyi ancak, bir problem çözerken extra detaylar kafanızı karıştırabilir. Burda da soyutlama devreye giriyor. Kısacası soyutlama bir sorundan ayrıntıları kaldırarak, eldeki sorunu belirleme işlemidir. Örneğin siz bir helikopter çizeceksiniz ancak nasıl çizildiği hakkında bir bilginiz yok, ama siz bir zeplin çizip helikopter çizemiyorsunuz. Zeplindeki uçma özelliğini referans alarak uçağı çizme işlemi de soyutlamaya girer. Sorununuza karşılık gelen modeli bulun, soyut çözümü bulun, uygulayın ve bitti 🤗
Yazımı beğendiyseniz aşağıdaki tepki butonlarından puanlayabilirsiniz. Değerli vaktinizi buraya ayırdığınız için teşekkürlerimi iletiyorum ☺️