5 Kasım 2014 Çarşamba

Algoritma Nedir?

Algoritma

İnsanlar her zaman düşünür ve problem çözerler. Birçok problem, az ya da hiç
düşünülmeden çözülebilir.

Her gün evden çıkarken ne giyilmelidir?
Bunun için muhtemelen pencereden dışarıya bakılır.
Hava yağmurlu ise mevsim gereklerine göre giyinmenin yanı sıra dışarıya çıkarken bir de
şemsiye alınması gerekir. Hava güneşli ve sıcak ise o takdirde daha ince giyinilerek dışarıya
çıkılır.
Böylece problemin çözümü kendiliğinden oluşturulan bir kararla sağlanır.
Yukarıdaki basit örnekte yapılan iş, önce problemin belirlenmesi ve sonra problemin
tanımından yola çıkarak çözüm için değişik alternatiflerin değerlendirilmesidir.
Bilgisayar programlaması sırasında izlenebilecek birçok yol ve yöntem vardır. Bilgisayar
programcısının probleme ilişkin çözümü ortaya çıkarabilmesi için problem çözümü ile ilgili
bilgileri bilmesi gerekir. Bilgisayar programlamasında genel olarak belirli kalıp ve kurallara
uyulur. Bir bilgisayar yazılımının olusturulması sırasında asağıda sıralanan ana adımlara
uyulur.

1-Problemin tanımı
2-Çözüm yönteminin belirlenmesi
3-Programın kodlanması
4-Programın çalışır duruma getirilmesi
5-Belgeleme ve güncelleştirme

Problemin tanımı:
Problemin normal yazı diliyle tanımlanması işlemlerini
kapsamaktadır. Problem çözümüne ilişkin iyi bir program yapabilmek için, problemin iyi bir
şekilde tanımlanması gerekir.

Çözüm Yönteminin Belirlenmesi: Bu adımda çözümün genel yaklaşımı, temel
giriş/çıkışlar belirlenir.

Programın kodlanması: Program ayrıntılı olarak tanımlanıp çözüm yolları açıkca
belirtildikten sonra program kodlama calışmalarına başlanabilir.

Programın çalışır Hale Getirilmesi: Programın kodlanması sırasında yapılan imla hataları,
kodlama ve mantık hatalarının giderilmesi işlemlerini kapsar. İyi bir bilgisayar programının
doğruluğundan emin olmak için defalarca test edilmiş olması gerekmektedir.

Belgeleme ve güncellestirme: Oluşturulan bir yazılımı, sadece o yazılımı geliştiren
kişilerin kullanabilmesi gibi bir kısıtlamanın önüne geçmek için ayrıntılı referanslar
hazırlanmalı ve programla ilgili bilgiler verilmelidir.
Bir yazılımda, o yazılımı kullanan kişi veya kuruluşların yeni gereksinimleri ve değişen
koşullar nedeniyle değişiklikler yapılması gerekli olabilir. İyi bir programda bulunması gereken özellikler arasında güncelleşebilme ön sıralarda yer almaktadır.


Nedir bu bilgisayar programcılığı?

Evet birçok kişi bilgisayar programcılarının ne ile uğrastığını bilir fakat nasıl uğrasıp neler yaptığını pek bilmez. Önce bilgisayar dünyasında sıkca kullanılan bir kelimeden bahsedelim “yazılım”. Yazılım (software) kelimesi bilgisayar programlama dilleriyle oluşturulan dökümanları, dosyaları ifade eder. Yani bilgisayarınızda işletilmek, calıştırılmak üzere tasarlanmış dosyalar yazılım kapsamına girer. Yazılım programlama dilleri ile tasarlanır ve yazılır. Programlama dilleri, bilgisayarınızın donanımını (ekran kartı,ses kartı,modem...) sizin en rahat biçimde kullanabileceğiniz düzeye getirmeye calışır. Yani bilgisayarın o soğuk 1100110 gibi rakamlarını sizin zevkle kullandığınız programlara, işletim sistemlerine çevirir.
Örneğin kullanılmakta olan işletim sistemi onbinlerce sayfadan, milyonlarca bilgisayar kodunun bir araya gelmesinden oluşur. İşin tüm zorluğu, o kodların arasında dolaşan, hata mesajlarını günlerce o kodları gözden geçirerek arayan, sandalye tepesinde saatlerce aynı ekrana bakarak ilginç görüntüler sergileyen programcıların üzerindedir. Bilgisayar programcıları işini zevkle yapan ve işini bir hobi edinmiş insanlardan oluşur. Aksi halde yoğun konsantrasyon ve sabır isteyen bu işi yapmak aşırı zorlaşır. Programlama dilleri kendi aralarında sınıflara ayrılmışlardır. İnsanın en zor öğrenebileceği, anlayabileceği yani 1100110 gibi makina kodlarına yakın diller en alt seviyeli programlama dilleri, insanın en kolay anlayıp kullanabileceği ve insan diline yakın özellikler gosteren diller ise en yuksek seviyeli programlama dilleridir.

1- Çok yüksek seviyeli diller: VisualBasic, Acces, Foxpro vb.
2- Yüksek seviyeli diller: Pascal,Basic,Fortran vb.
3- Orta seviyeli diller: C,C++,ADA vb.
4- Düşük seviyeli diller: Assembly.
5- Makina dilleri: Bilgisayarın çalısma dilleri 1 ve 0’lardan olusur.

Bu dillerin kullanıldığı alanlara ornek verirsek;

1- Bilim ve Muhendislikte: Pascal,C,C++,Fortran vb.
2- Veritabanı Programcılığında: Dbase,Acces,Foxpro,Sql vb.
3- Yapay Zeka Kullanımında: Prolog,Lisp vb.
4- Sistem Programcılığında: C,C++ ve sembolik makina dilleri.


Bir bilgisayar programı nasıl yazılır?

Bir yazılım değişik dillerle oluşturulabilir fakat izlenen yöntemler genelde birbirine benzer. Örneğin Algoritma, elimizdeki sorunun çözümüne gidebilmek için tasarlanan yollar, yöntemlerdir.
Bilgisayar programlama dilleri de programcılıkta bunun gibi yöntemler kullanarak çözüme gider. Algoritmanın uzunluğu kullanılan programlama dilinin seviyesi ve problemin karmasıklığı ile doğru orantılıdır. Yapılan algoritma ve tasarımdan sonra yazılım aşamasına gelinir ve bu aşamada yapılacak programın kullanım ömrü, programın kullanım düzeyi ve hangi amaçla kullanılacağı gibi soruların cevaplarına bakılarak programlama dili seçilir. Dil secimi bazı kriterlere göre yapılmaktadır, orneğin kısa surmesi ve görsel tasarım içermesi, veritabanı iletişimi yoğun kullanılması gereken bir program yapmamız gerekiyor olsun. Bu durumda Assembly dili ile yola çıktığımızda bahsedilen proje birkaç kişilik deneyimli bir programcı grubu ile birkaç yıl alır. C ile iki programcı aynı işi üç dört ayda VisualBasic veya Delphi ile bir programcı bahsedilen işi bir iki aya yakın bir sürede yapabilir. Başka bir açıdan örnek verirsek bir ekran kartı programlamamız gerekiyor ve bu kartın driver’ını ( surucusunu ) biz yazacağız. Bu durumda bu işi VisualBasic veya Delphi ile yapmamız imkansızdır, kullanmamız gereken diller öncelikle Assembly ve C/C++ olmalıdır. Evet, programlama dillerinin kendi alanları vardır ve her dil kendi alanında kullanıldığı sürece başarılı ve etkili kullanılmış olur. Buraya kadar anlatılanı özetlersek:
Bir bilgisayar programı yazmak için belli aşamalar vardır ve bu aşamalar geçildiğinde
kodlamaya başlanabilir.


Bunlar:
1- Analiz
2- Algoritma
3- Dil Secimi
4- Kodlama


Analiz ile gerçekleştirilmek istenen proje tasarlanır ve parametreleri araştırılır. Algoritma ile adımlar tayin edilir. Dil seçimi ile en uygun programlama dili seçilir. Ve kodlamaya başlanır.





Problem Çözme ve Algoritmalar

1- Problem Çözme:
Problem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu kadar küçük parçalara ayrılmalıdır.

2- Algoritmalar: Kısaca algoritma belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir. Geniş anlamda ise algoritma, verilen herhangi bir sorunun çözümüne ulaşmak için uygulanması
gerekli adımların hiç bir yoruma yer vermeksizin açık, düzenli ve sıralı bir şekilde söz ve yazı
ile ifadesidir. Algoritmayı oluşturan adımlar özellikle basit ve açık olarak sıralandırılmalıdır.
M.S. 9.yy da İranlı Musaoğlu Horzumlu Mehmet (Alharezmi adını araplar takmıştır) problemlerin çözümü
için genel kurallar oluşturdu. Algoritma Alharezmi’nin Latince okunuşudur.
Her algoritma asağıdaki kriterleri sağlamalıdır.
Girdi: Sıfır veya daha fazla değer dışarıdan verilmeli.
Çıktı: En azından bir değer üretilmeli.
Açıklık: Her işlem (komut) açık olmalı ve farklı anlamlar içermemeli.
Sonluluk: Her türlü olasılık için algoritma sonlu adımda bitmeli.
Etkinlik: Her komut kişinin kalem ve kağıt ile yürütebileceği kadar basit olmalıdır.

Not: Bir program için 4. özellik geçerli değil. işletim sistemleri gibi program sonsuza dek çalışırlar .

PROGRAM YAZMA SÜRECİ
· Problemin farkına varmak,
· Problemi analiz etmek,
· Çözüm yolları düşünmek,
· İyi çözüm yolları seçip algoritma oluşturmak,
· Akış diyagramı çizmek,
· Uygun bir dilde kodlamak,
· Programı test etmek,
· Programı dağıtmak.


Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi.
Bir problemi bilgisayar ile çözmek için geliştireceğimiz programın yazımında izleyeceğimiz adımlar:
1- Problemin ne olduğunu kavra. Çözüm için gereksinimleri belirle.
2- Problemin girdilerini, çıktılarını ve diğer kısıtlama ve gereksinimleri belirle ( bilgilerin giriş ve çıkış
biçimlerinin nasıl olacağına kadar).
3- Problemin çözümünü veren algoritmayı yaz.
4- Algoritmayı bir programla dili ile yaz.
5- Programın doğru çalışıp çalışmadığını test et. Bu testi değişik veriler (girdiler) için tekrarla.

Algoritmik çözüm yöntemlerine ilk örneği günlük yaşantımızdan verelim.

Örnek: Örneğimiz bir insanin evden çıkıp işe giderken izleyeceği yolu ve işyerine girişinde
ilk yapacaklarını adım adım tanımlamaktadır.

Çözüm:
Evden dışarıya çık
Otobüs durağına yürü
Durakta gideceğin yöndeki otobusü bekle
Otobusün geldiğinde otobüse bin
Biletini bilet kumbarasına at
İneceğin yere yakınlaştığında arkaya yürü
İneceğini belirten ikaz lambasına bas
Otobüs durunca in
İşyerine doğru yuru
İş yeri giriş kapısından içeriye gir.

Yukarıdaki örnekte görüldüğü gibi, evden işe gidişte yapılabilecek işlemler adım adım sırasıyla,
kısa ve açık olarak tanımlanmaya calışılmıştır. Yukarıdaki algoritma kişinin otobusü kaçırma
olasılığı düşünülmeden oluşturulmuştur. Kişi durağa geldiğinde bineceği otobusu kaçırmış ise
algoritmamız asağıdaki sekilde değiştirilebilir.

Çözüm:
Evden dışarıya çık Otobüs durağına yürü
Otobusün saati geçmiş?
Durakta gideceğin yöndeki bir sonraki otobüsü bekle
Otobüsün geldiğinde otobüse bin
Biletini bilet kumbarasına at
İneceğin yere yakınlaştığında arkaya yürü
İneceğini belirten ikaz lambasına bas
Otobüs durunca in
İşyerine doğru yuru
İş yeri giriş kapısından içeriye gir.

Her iki örnekte görüldüğü gibi sorunu çözüme götürebilmek için gerekli olan adımlar sıralı ve
açık bir biçimde belirlenmiştir. Algoritmanın herhangi bir adımındaki küçük bir yanlışlık doğru
çözüme ulaşmayı engelleyebilir. Bu nedenle algoritma hazırlandıktan sonra dikkatle incelenmeli
ve varsa adımlardaki yanlışlıklar düzeltilmelidir.



Akış Diyagramları

Geliştirilecek olan yazılımın genel yapısının şematik gösterimine akiş diyagramı adi verilir.
Akiş diyagramları, yazılımı oluşturacak program parçalarını ve bu parçaların birbirleri ile olan
ilişkilerini belirler. Bir bilgisayar programının oluşturulmasında akiş diyagramlarının
hazırlanması, algoritma oluşturma aşamasından sonra gelmektedir. Bilgisayar programının
oluşturulması sırasında algoritma aşaması atlanarak, doğrudan akiş diyagramlarının
hazırlanmasına başlanabilir. Programlama tekniğinde önemli ölçüde yol almış kişiler bu
aşamayı da atlayarak direkt olarak programın yazımına geçebilirler.
Akiş diyagramlarının algoritmadan farkı, adımların simgeler şeklinde kutular içinde
yazılmış olması ve adımlar arasındaki ilişkilerin (iş akışı) oklar ile gösterilmesidir.


Örneğin 3 ve 5 sayısının toplamını ekrana yazdıran bir programcık oluşturalım;


ad1 programı başlat
ad2 değişken tanımla (T=0)
ad3 T=3+5
ad4 ekrana yaz(t)
ad5 programı bitir

Hiç yorum yok:

Yorum Gönder