C
Programlama Dili
DERS – 2


Algoritma:

Bir sorunu çözebilmek için gerekli olan sıralı mantıksal adımların tümüne denir. Doğal dille yazılabileceği için fazlaca formal değildir. Bir algoritma için aşağıdaki ifadelerin mutlaka doğrulanması gereklidir.

  • Her adım son derece belirleyici olmalıdır. Hiç bir şey şansa bağlı olmamalıdır.
  • Belirli bir sayıda adım sonunda algoritma sonlanmalıdır.
  • Algoritmalar karşılaşılabilecek tüm ihtimalleri ele alabilecek kadar genel olmalıdır.

Akış Çizgesi Nedir?

Bir algoritmanın daha görsel gösterimidir. Çizgiler, Dörtgen, daire vb. geometrik şekillerle algoritmanın gösterilmesini sağlar. Doğal dille yazılmadığı için daha formal olduğu düşünülebilir.

Algoritmalar

Algoritmanın tanımını daha önce vermiştik burada bu tanımı tekrar etmek

faydalı olacaktır. Bir sorunu çözebilmek için gerekli olan sıralı mantıksal adımların tümüne algoritma denir. Biz şimdi mümkün olduğu kadar bu tanım ve özelliklerden yola çıkarak örneklerle bir kaç algoritma vermeye çalışacağız.

Şimdi işe basit bir omlet yapımıyla başlayalım. Omlet yapımı için gerekli adımlar;

1.      Malzemeleri hazırla.

2.      Yumurtaları bir kaba kır.

3.      Maydanozları kıy.

4.      Kıyılmış maydanoz tuz ve karabiberi aynı kabın içine koy.

5.      Karışımı çırp.

6.      Tavaya yağ koy ve yeteri kadar ısınmasını bekle.

7.      Yağ yeteri kadar ısınmış mı diye kontrol et.

8.

a.       Yağ yeteri kadar ısınmış ise 9. adıma git

b.      Yağ yeteri kadar ısınmamış ise 7. adıma git

9.      Yarım su bardağı karışımı tavaya dök.

10.  Orta yumuşaklıkta pişmiş mi diye kontrol et.

11.

a.       Pişmişse 12. Adıma git.

b.      Pişmemişse 10. Adıma git

12.  Pişen karışımı katla.

13.  Servis tabağına ters çevirerek koy ve servis et.

Bu algoritma günlük yaşantımızdan bir örnektir. Yukardaki algoritma ve diğer tüm algoritmalar için bilmemiz gereken bazı konular bulunmaktadır:

Her adım son derece belirleyici olmalıdır. Hiç bir şey şansa bağlı olmamalıdır.

Belirli bir sayıda adım sonunda algoritma sonlanmalıdır.

Algoritmalar karşılaşılabilecek tüm ihtimalleri ele alabilecek kadar genel olmalıdır.

Algoritmada algoritmanın genel işleyişini etkileyebilecek hiç bir belirsizlik olmamalıdır. (Bu örnekte öyle bir belirsizlik var. Bir yağın yeteri kadar ısınabilmesi hangi koşula bağlıdır, bu yağ ne zaman ısıtılmaya başlanmış olmalıdır ve kaç dereceye kadar ısıtılmalıdır gibi…)

Algoritmada bazı adımlar yer değiştirebilir. Ancak birçok adımın kesinlikle yer değiştiremeyeceğini bilmeliyiz. Yanlış sıradaki adımlar algoritmanın yanlış çalışmasına neden olacaktır. (2. ve 3. adım değiştirilebilir. 2-4. adımlar yer adımlar yer değiştirebilir.) Ancak 7-13. adımlar kesinlikle yer değiştiremezler.

Peki, Bilgisayarda çözülecek bir sorunu nasıl algoritma ile ifade ederiz?

Bunun için öncelikle bir sorun tanımlayalım. Başlangıç ta basit olması için şöyle bir problem üzerinde düşünelim: Bilgisayara verilecek iki sayının ortalamasını alıp sonucu ekrana yazacak bir program için algoritma geliştirmek isteyelim. Sorun son derece basit ancak sistem tasarımının net yapılabilmesi için sorun hakkında anlaşılamayan tüm belirsiz noktalar açıklığa kavuşturulmalıdır. Örneğin sayılar bilgisayara nereden verilecek, klavye, dosya veya belki başka bir ortam. Bu ve buna benzer soru ve tereddütleriniz varsa sorun sahibine bunları sormalı ve sistem analizi yapmalısınız.

Sonra bulacağımız çözümü algoritma haline dönüştürebiliriz.

1.      BAŞLA

2.      A SAYISINI GİR

3.      B SAYISINI GİR

4.      A VE B SAYISINI TOPLA İKİYE BÖL

5.      SONUCU EKRANA YAZ

6.      DUR

Gerçekte bir algoritma genellikle üç ana bölümden oluşur. Bunlar :

    • Algoritmanın giriş ve ilk işlemlerinin yapıldığı bölüm
    • Döngüsel bir bölümün olduğu kesim. Bu bölüm iterasyonlarla bir işlemin sürekli tekrar edilerek sonuca ulaşmayı sağlayan bölümdür.
    • Son işlemlerin yapıldığı bölümdür. Bu bölüm elde edilen sonuçların ekrana yazılmasını sağlayan bölümdür.