Bir bilgisayar programı aslında sıra düzensel olarak tanımlanmış bir dizi
komuttan başka bir şey değildir. Bu açıdan bizim yazmaya çalışacağımız
programda bir dizi komut yani eylem topluluğudur. Her programda bu
eylemler yazıldıkları sırada gerçekleştirilir veya çalıştırılırlar. Aslında bizim
günlük hayattaki yaşantı tarzımız dahi düzenli olarak bir takım işlemlerin
sıra ile yapılması şeklindedir. Yani bir iş yapabilmek için bir takım alt iş
veya olayları peş peşe gerçekleştiririz.
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. Bir algoritmadan beklenen bir takım özellikler olduğunu da yine daha önceki tanımlar bölümünde bahsetmiştik. Biz şimdi mümkün olduğu kadar bu tanım ve özelliklerden yola çıkarak örneklerle bir kaç algoritma vermeye çalışacağız.
Öncelikle bir ev hanımının pasta yapmak istediğini varsayalım. Bu pastanın yapılabilmesi için gerekli bir takım işlemler ve alt adımlar bellidir. bir ev hanımı da sıra ile bu adımları uygulayarak bu pastayı yapar. Şöyle ki:
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. Bir algoritmadan beklenen bir takım özellikler olduğunu da yine daha önceki tanımlar bölümünde bahsetmiştik. Biz şimdi mümkün olduğu kadar bu tanım ve özelliklerden yola çıkarak örneklerle bir kaç algoritma vermeye çalışacağız.
Öncelikle bir ev hanımının pasta yapmak istediğini varsayalım. Bu pastanın yapılabilmesi için gerekli bir takım işlemler ve alt adımlar bellidir. bir ev hanımı da sıra ile bu adımları uygulayarak bu pastayı yapar. Şöyle ki:
-
Pastanın yapımı için gerekli malzemeleri hazırla
-
Yağı bir kaba koy
-
Şekeri aynı kaba yağın üzerine koy
-
Yağ ve şekeri çırp
-
Karışımın üzerine yumurtayı kır
-
Tekrar çırp
-
Kıvama geldi mi diye kontrol et
-
a. Kıvamlı ise 9. adıma devam etb. Değilse 6. adıma dön.
-
Karışıma un koy
- 10.Karışıma vanilya, kabartma tozu vb. koy 11.Karışımı Kıvama gelinceye kadar çırp 12.Pastayı Kek kalıbına koy
- 13.Yeteri kadar ısınan fırına pastayı koy 14.Pişimi diye kontrol et
- 15. a. Pişmiş ise 16. adıma devam et b. Değilse 14. adıma dön
- 16.Keki fırından çıkart 17.Fırını kapat
- 18.Kekin ı kapat
- 19.Kekin soğumasını bekle
- 20.Keki servis edebilirsin.
Bu algoritma günlük hayattan bir örnek. Gerçekte biz her işimizi algoritmik
olarak yaparız ancak bunu farkına varmayız. Yukarıdaki algoritmayı
inceleyecek olursak bir kekin yapılması için gerekli tüm adımlar sıra ile yer
almış durumda. Gerçi algoritma anlatacağımız konuların daha iyi
anlaşılabilmesi için biraz farklı ele alınmıştır ama gerçek bir Pasta yapım
aşamasını içerir. Bu 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 fırının yeteri kadar ısına bilmesi hangi koşula bağlıdır, bu fırın ne zaman açılmış olmalıdır ve kaç dereceye ayarlanmış olmalı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. (9 ve 10. adım değiştirilebilir. 2-3. adımlar yer adımlar yer değiştirebilir.) Ancak 13-16. 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ıyı toplayı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.
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 fırının yeteri kadar ısına bilmesi hangi koşula bağlıdır, bu fırın ne zaman açılmış olmalıdır ve kaç dereceye ayarlanmış olmalı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. (9 ve 10. adım değiştirilebilir. 2-3. adımlar yer adımlar yer değiştirebilir.) Ancak 13-16. 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ıyı toplayı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 sayısını oku
3. B sayısını oku
4. TOPLAM=A + B işlemini yap 5. TOPLAM değerini ekrana yaz
6. SON
2. A sayısını oku
3. B sayısını oku
4. TOPLAM=A + B işlemini yap 5. TOPLAM değerini ekrana yaz
6. SON
Biraz daha karmaşık bir sorun şöyle olsun: Klavyeden girilecek iki sayıdan
büyük olanından küçük olanını çıkarıp sonucu ekrana yazacak program için
bir algoritma geliştiriniz.
-
BAŞLA
-
A sayısını oku
-
B sayısını oku
-
Eğer A büyüktür B SONUC=A-B
Değilse SONUC=B-A
-
SONUC değerini ekrana yaz
-
SON
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.
- Örneğin birden Klavyeden girilen bir n değerine kadar sayıları toplayan ve sonucu ekrana yazan bir algoritmayı geliştirelim.
1. BAŞLA
2. N OKU
3. T=0
4. X=1
5. T=T+X
6. X=X+1
7. EĞER X<=N İSE 5. ADIMA GİT
8. T YAZ
2. N OKU
3. T=0
4. X=1
5. T=T+X
6. X=X+1
7. EĞER X<=N İSE 5. ADIMA GİT
8. T YAZ
Bu algoritmalar oldukça basit algoritmalar olup algoritma kavramının
yerleşmesini sağlayan örneklerdir.
0 Yorumlar
Bizimle fikirlerinizi paylaşabilirsiniz.