Algoritma Nedir?

 ALGORİTMA

 

Algoritma, matematikte ve bilgisayar biliminde belirli bir problemi çözüme ulaştırmak veya belirli bir işi sonuca ulaştırmak için atılacak adımların önceden planlanması şeklinde tanımlanabilir. Bütün programlama dillerinin temelinde algoritma mantığı vardır. Programlama dillerinden hangisini kullanıyor olursanız olun, ilk işlem olarak taslak halinde atılacak tüm adımların planlamasını yapmakta fayda vardır. Yani algoritmasını çıkarmak (ya da hazırlamak) bize işlemler zincirine bütüncül bakma imkânını sağlayacaktır.

Kısaca algoritma için şunlar söylenebilir;

  • Algoritma, yapılacak işlerin işlem basamaklarını anlatan maddeleri alt alta yazarak basit bir planlama şeklinde de yapılabilir.
  • Aşağıdaki örnekte görüldüğü şekliyle (Evrensel olarak tanımlanmış) görsel bloklar olarakta hazırlanabilir.
  • Görsel bloklar olarak hazırlanan haline “Akış Şeması”
  • Esasında hayatımızın birçok noktasında farkında olmadan zihinsel olarak yaptığımız karar alma ve sorgulama basamaklarının bloklar halinde tarif edilmesidir.
  • Algoritma, basit bir problemin nasıl bir yol izlenerek çözüleceği hususunda bize yardımcı olmaktadır.
  • Algoritma hazırlamanın diğer bir faydası ise program yazarken yapmak istediğimiz işe bütüncül bakarak en sade haliyle yapılmasına olanak sağlamasıdır.
  • Algoritmanın basit bloklardan oluşan kendine has bir dili vardır.

Algoritma basit bir örnekle şu şekilde açıklanabilir:

Farz edelim ki evimizde bulunan televizyonu açmak istedik ve bu aşamada oluşabilecek ihtimalleri de göz önünde bulundurarak basit bir planlama hazırladık. Aşağıdaki bloklar adım adım izlendiğinde bizi sonuca götürecektir. Amaç televizyonun açılmasıdır. İncelendiğinde görülecektir ki böyle bir problemle karşılaşıldığında zihinsel olarak zaten bu yolu izlemekteyiz. Burada sadece plan dâhilinde sistematize edilmiştir. (İşlemler incelenirken blokların anlamlarını önemsemeden sadece yapılması gerekenlere bakılması anlaşılması için yeterli olacaktır.)

algoritma_sekil_1

Şekil 1

Örnekte TV’nin kumandasına basıldıktan sonra açılıp açılmaması neticesinde evet veya hayır yanıtlarına göre bizi yönlendirmektedir. Bu kurgusal mantık mikroişlemciler için çok önemlidir. Çünkü mikroişlemci düşünememektedir. Bu yüzden tüm adımları mikroişlemciye teker teker sorarak ilerlemeliyiz. Alacağımız doğru/yanlış(1/0, evet/hayır gibi) mantıksal yaklaşımıyla bizi sonuca ulaştıracak olan tüm işlem basamakları tanımlanmalıdır.  

 

Algoritmada kullanılan şekiller ve anlamları

algoritma_sekil_2

 

Başlangıç ve bitiş yerlerini belirtmek için kullanılır.

 

Karar verme veya karşılaştırma noktalarında kullanılır. Örneğin 5=5 doğru ise sağda ki yoldan, değil ise alt taraftan devam et gibi bir mantık kurgusu için kullanılır.

 

İşlem veya bir eylemi gerçekleştirme durumunda kullanılır. Örneğin (7+9=16)  veya (lambayı yak)  gibi iş parçasının/parçalarının uygulanması durumunda kullanılır.

Çıktı alınması gereken yerlerde ise yandaki şekilde gösterilen blok kullanılır. Örneğin ekran ya da monitör olarak ne kullanılıyor ise oraya yazdıracağımız bilgiyi bu bloğun içine yazarız.

 

Bilgi girişi yapılacağı zaman yandaki blok kullanılır. Örneğin akış diyagramı içinde klavyeden bilgi girişi yapılacaksa klavyeyi yandaki blok sembolize eder.

 

Çember olarak verilen şekil ise bağlantı aracı olarak kullanılır.

 

Şekil 2

 

algoritma_sekil_3Akış şemasının daha iyi anlaşılabilmesi amacıyla birkaç örnek daha yapmak faydalı olacaktır. Aşağıdaki örnek incelendiğinde görülecektir ki, hangi programlama dili kullanılırsa kullanılsın izlenecek yol hemen hemen aynıdır.

Örnekte klavyeden iki sayı girilmekte ve bu iki sayıyı karşılaştıran(büyük veya küçük olduğuna karar veren) bir algoritma görülmektedir. Girilen sayılar x ve y olarak adlandırılsın. İlk yapılacak olan x ile y sayılarını karşılaştırmak, ama bu tek seferde yapılamayacaktır. Yapılması gereken x sayısının y ’den büyük mü? Ya da küçük mü?  Olduğunu öğrenmek olmalıdır. Aşağıdaki akış şemasında karar bloğunun içinde “x > y” ifadesini kullanıldı.  Bu,  “x, y ’den büyüktür, doğru mu?” şeklinde okunmalıdır. Doğru ise yapılmasını istediklerimizi “doğru” yazısı ile yönlendirilen tarafa yerleştiririz. Yanlış ise yapılmasını istediklerimiz “yanlış”  yazısı ile gösterilen tarafa yerleştirilir.

X ve y sayılarının karşılaştırılması yukarıda da

Şekil 3

belirtildiği gibi tek seferde değil iki aşamada yapılacaktır. Öncelikle karar/karşılaştırma bloğu kullanarak  “x, y ’den büyük müdür?” sorusu sorulur. Doğru ise monitöre çıktı bilgisi(Bir ekran kullandığımızı farz edelim) yazdırılarak işlem tamamlanmış olur. Örnekte ise ekrana  “1. Sayı 2. Sayıdan büyüktür” şeklinde bir ifade yazdırıldı. Diyelim ki, “x, y ’den büyük müdür?” sorusuna yanlış cevabı alındı. İşte bu noktada soru tersten, “x, y ’den küçük müdür?” haline getirip tekrar sorulduğunda, eğer; “doğru” cevabı alınırsa, doğru okunun gösterdiği yerde bulunan blok içine yani monitöre “2. Sayı 1. Sayıdan büyüktür”  ifadesi yazdırılır. Tabi bu iki şartında sağlanmadığı üçüncü ihtimal olan x ’in y ’ye eşit olduğu durumdur. Eğer son olarak sorulan soruya yanlış cevabı almış olsaydı x, y ’den ne büyük ne de küçük olduğu sonucu çıkacaktı. O halde program akışı yanlış cevabının alındığı ok yönüne gidecekti ve sonuç olarak monitöre “1. Sayı ve 2. Sayı eşit” ifadesi yazdırılacaktır.

Örnekten de anlaşılacağı gibi algoritma bizi sonuca kademeler halinde götürmektedir. Ancak algoritma hazırlarken dikkat edilecek husus şudur; programcı, kullanıcıyı ya da bir sistemi sonuca ulaştıracak adımları yine sisteme tarif etmektedir. Diğer bir ifadeyle bilgisayarın (veya mikroişlemcinin) işlem kabiliyetini bilerek ve tanıyarak, bilgisayara yapmasını istediğimiz işlemleri ne şekilde gerçekleştirebileceğini adım adım anlatmaktayız.

Yukarıda ki örnekte karşılaştırma işlemi iki aşamada iki farklı soru yönelterek yaptırıldı. Bunun nedeni işlemciler doğrudan x ’in y ’den büyük, küçük ya da eşit olduğunu tek seferde söyleyemezler. Sadece iki sayıyı birbiri ile karşılaştırarak dijital dünyanın vazgeçilmezi olan olmak ya da olmamak(Yani doğru(1)  ya da yanlış(0)) şeklinde ki cevabını verebilir.

Aşağıda verilen örnekte klavyeden girilen iki sayıyı dikdörtgenin kenar bilgileri olarak alıp bu iki sayıyı çarparak dikdörtgenin alanını hesaplayan işlemin algoritması görülmektedir. (Yeri gelmişken bilgi girişi olarak klavye kullanıyoruz ancak hayalimizde hep bilgisayara işlem yaptırıyoruz gibi düşünülmesi bakış açımızı daraltabilir. Bilgi girişi klavyeden yapılabileceği gibi değişik sensörlerden de veri alabiliriz. Mesela ışık şiddeti ölçen bir sensör bize ışık bilgisini sayısal bir değer olarak verebilir ya da bir ağırlık sensörü de sistemimize bilgi girişi yapan aygıt olarak karşımıza çıkabilir. algoritma_sekil_4Bu ayrıntıyı da belirttikten sonra örneğimize geçebiliriz.) (Dikdörtgenin alanını hesaplayamayan bir çocuk düşünelim. Ve bu çocuğa yardımcı olmak için dikdörtgen alanını hesaplayan bir program yazmaya karar verdik.) Çocuk klavyeden istediği gibi iki farklı sayı girecek ve arka planda bu iki sayı bir yere kaydedilip çarpma işlemi yaptırılarak sonucu ekrana yazdırılacak. Kullanıcı olarak çocuk, arka planda neler olduğundan habersiz önce birinci sayıyı girecektir. Bizim yazdığımız program (şimdilik algoritma) klavyeden bu sayıyı okuyarak  “a” adını verdiğimiz bir kutunun içine atacaktır (kaydedecektir). Yine kullanıcı, ikinci sayıyı da girerek sonucu bekleyecektir. Bizim hazırladığımız program bu sayıyı da okuyacak ve “b” adını verdiğimiz farklı bir kutuya atacaktır. Biz algoritmada kullanılan işlem
bloğu ile bu iki sayıyı çarparak sonucunu “sonuç” adını verdiğimiz başka bir kutunun içine atacağız ve bu şekilde kaydedilmiş olacak. Monitör ya da ekran olarak kullanılan aygıta bu “sonuç” kutusunu aktarılacaktır. Yani sonuç kutusunda programcının da bilmediği tamamen kullanıcının rastgele girdiği iki sayının çarpım sonucunu ekranda göstermiş olacaktır.

Algoritma konusu programlama mantığının anlaşılabilmesi için çok önemli bir yere sahiptir. Programlama bilgisi olanlar için çok detay açıklamalar olsa da bu alanda bilgi sahibi olmayan meslektaşlara ve hobi amacıyla ilgilenenlere ileri ki programlama aşamalarında kavramların daha kolay                 Şekil 4                 anlaşılmasına yönelik olarak örnekler sunulmuştur.

Algoritma Nedir?” için 6 yorum

  • 18/12/2015 tarihinde, saat 09:13
    Permalink

    Hocam gerçekten çok bilgi içerikli bir forum olmuş teşekkürlerr

    Yanıtla
  • 18/12/2015 tarihinde, saat 09:14
    Permalink

    Gerçekten çok orjinal bilgiler helal olsun valla!!!

    Yanıtla
  • 18/12/2015 tarihinde, saat 09:14
    Permalink

    gerçekten çok etkili bir blog sizi tebrik ediyorum ama dudigan ismi neden konuldu onu hala çözmüş değilim :))

    Yanıtla
  • 18/12/2015 tarihinde, saat 09:22
    Permalink

    Mehmet bey arduino hakkında öğrenmek istediğim neredeyse tüm bilgilere ulaştım yüreğinize sağlık

    Yanıtla
  • 05/12/2016 tarihinde, saat 21:26
    Permalink

    algoritmaya dair en ufak fikri olmayan biri bile burdan herşeyi gayet rahat anlar..çok yararlı bir yazı olmuş.. mutlaka yazılarınızın devamını bekliyoruz

    Yanıtla

Bir Cevap Yazın

%d blogcu bunu beğendi: