|
Deneyimli Üye
Üye No: 2925
Mesaj Sayısı: 214
Rep Puanı: 24
Uyarı Puanı: %0
|
 |
|
|
Algoritma (başlangıç) Bilgisayarın temelinde algoritma yani programlama mantığı vardır. Algoritma; belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir. Şöyle de diyebiliriz: karşımıza çıkan problemi çözmek için kafamızda veya bir kağıt üzerinde tasarladığımız işlem yolu da diyebiliriz. Bilgisayarlar kendilerine sorulan sorulara hemen cevap veren, bir sürü problemi çözen aygıtlar değillerdir. Bilgisayarda yapılan iş, önce insanın akıl süzgecinden geçer , insanlar tarafından etraflıca tasarlanır, planlanıp programlanır. Bu nedenle, önce bilgisayara problemin çözümü öğretilmelidir. Dolayısıyla problemi öncelikle bizim çözmemiz gerekir. Bu adımdan sonra da bunu bilgisayarın anlayacağı bir programlama diline çevirmek gerekir. İşte burada programcı kavramı ön plana çıkar. Günlük hayatımızda, evde, iş yerinde veya eğitimimiz için kullandığımız tüm elektronik eşyalar; daha da genelleyecek olursak kısaca yaşamımızı kolaylaştıracak her türlü alet ve malzemede bilgisayar kodları kullanılıyor. Programlama da bu aletleri harekete geçirecek bilgisayar kodlarının bütünüdür. Bu programları yapmamızdaki amaç hayatı robotlaştırmak değildir. Aksine daha kolay yaşanır hale getirmektir. Zamandan, iş gücünden ve buna benzer bir çok unsurdan kar elde etmek için programlama vardır. Ve gelişerek var olmaya da devam edecektir.
Soru Çözme Adımları İster bilgisayarla ister bilgisayarsız soru çözmek için belirli bir yol vardır. Ancak bu yol ile sağlıklı bir çözüme ulaşılabilir. Bilgisayar kullanarak soru çözmek için sonuca giden yolun tam olarak belirlenmesi gerekir. Doğru bir yol izleyebilmek için, çıkılan ve ulaşılan yer tanımlanmalıdır. Aynı soru için değişik çözüm yolları geliştirilebilir. Unutmamalıyız ki biz bilgisayara ne öğretirsek oda bize dönüt olarak onu verecektir. Yani kurduğumuz algoritma doğru ise alacağımız sonuç doğru, değilse haliyle yanlış olacaktır.
Soru Çözme Adımları : Bilgisayar ortamında bir problem çözülürken aşağıdaki adımlara dikkat edilmelidir. a-) Soru Tanımlama: Her şeyden önce çözülecek soru tam olarak anlaşılmalıdır. Yanlış anlaşılmış bir sorunun çözümü yanlış olacak ve istenileni vermeyecektir.Bu adımda yapılacak en ufak bir hata daha sonraki adımların yeni baştan yapılmasını gerektirebilir. Sorunun tanımı yapılırken var olan bilgiler, anlamları ve birbirleri ile ilişkileri tanımlanmalıdır. Daha sonra istenenler belirlenmeli ve bunların var olan bilgiler ile ilişkileri öğrenilmelidir. Son olarak yapılacak işlemler belirlenir. Mümkün ise örnek veriler ile elde edilen sonuçlar değerlendirilmelidir. b-) Algoritma Geliştirme: Algoritma bir sorunun çözümü için izlenecek yolun tanımıdır. Kısaca algoritma mevcut bilgilerden istenilenlere erişme yöntemidir. Soru tanımını tam olarak yaptıktan sonra, çözüm için yol aramak gerekir. Genellikle bir sorunun birden fazla çözüm yolu olabilir. Bunlardan en uygunu seçilmeye çalışılır. Soru ne kadar karışık olursa olsun, alt birimlere bölünür. Her birimin çözümü ayrı, ayrı yapılır. Bu yapılırken birimler arası ilişki sürekli olarak korunur. c-) Girdi ve Çıktı Biçimi Belirleme: Sonuçların dış ortama, dolayısıyla insana aktarımı düzgün bir biçimde yapılmalıdır. Programcı program çıktısı olarak almak istediği dökümün biçimini tasarlar. Bir döküm biçimi tasarlanırken anlaşılır ve kullanılabilir olmasına özen gösterilmelidir. Genellikle programa, çözdüğü soruna ilişkin bazı verilerin dışarıdan verilmesi gerekir. Örneğin bir denklem takımının kökleri bulunacaksa, ilgili katsayıların programa verilmesi gibi. d-) Akış Şemasını Çizme: Akış şeması belirli bir işin yapılabilmesi için, basit işlemlerle şema halinde gösterilmesidir. Kısaca algoritmanın şemalarla gösterilmesidir. Algortima geliştirildikten sonra, daha iyi anlaşılabilir olması ve programlama dillerine aktarımı daha kolay olması nedeniyle, akış şeması haline getirilir. Böylece sorunun çözüm basamakları, birbirleri ile ilişkileri ve bilgi akışı daha kolay görülebilir ve yanlışlıklar düzeltilebilir. e-) Kodlama: Akış şemaları çizildikten sonra, sorunu yapısına uygun bir programlama dili seçilir. Bu dil ile akış şemaları dilin kurallarına uygun olarak bilgisayarın anlayabileceği duruma getirilir. f-) Programı Sınama: Program yazıldıktan sonra, sonuçları daha önceden bilinen veriler girilerek, eldeki sonuçlarla çıkan sonuçlar karşılaştırılır. Programın doğru çalışıp çalışmadığı sınanır.
Algoritma Hazırlanması Algoritmanın bir sorunun çözümü için izlenecek yolun tanımı olduğunu belirtmiştik. Bu yolun açıklanabilmesi için, algoritmada kullanılan bazı tanım ve kurallar vardır. Şimdi bu tanım ve kuralları inceleyelim.
1.Değişken Kavramı: Farklı zamanlarda farklı değerler alabilen bilgi sahalarına verilen sembolik adlardır. Bilgisayar işlem yaparken RAM belleği (geçici bellek) kullanır. İşte program yazılırken programcının Ram belleği kullanmasını sağlayan değişkenlerdir. Değişkenler Ram bellekte tahsis edilmiş odacıklar olarak düşünülebilir. Yani bir değişken tanımlandığında ram bellekte bir odacık (bir bölüm) açılır ve bu bölüme değişken ismiyle ulaşılır. Program içinde kullanılacak olan değişkenler problemin tanımı ve girdi-çıktı belirleme aşamalarında belirlenmelidir. Örneğin klavyeden girilen iki sayının toplamını bulan program yazılırken 3 tane değişken tanımlanmalıdır. Çünkü klavyeden 2 tane sayı girilecek ve bu sayılar toplanarak 3. bir değişkene aktarılacaktır. Soru: Klavyeden girilen 3 sayının aritmetik ortalaması bulunurken kaç değişken tanımlanmalıdır.
2. Aktarma Deyimi: Aktarma deyimi yada operatörü değişkenlere değer aktarmak için kullanılır. A=5 yada A=A+1 şeklindeki bir yazılımda ?=? sembolü aktarma deyimi adını alır. Aktarma deyiminin sağ tarafındaki değer yada matematiksel ifadenin sonucu, sol tarafındaki değişkene aktarılır. Aktarma yapılırken değişkenin aldığı bir önceki değer kaybolur. Bu işlem matematiksel mantıkla karıştırılmamalıdır. Matematikte A=A+1 yanlış olduğu halde, bilgisayar mantığında doğrudur.
3.Matematiksel Mantık ve Karar Sembolleri: Algoritmada kullanılan karar sembolleri aşağıdaki tabloda belirtilmiştir.
Örnekler: Dyili=1984 Yas=2004-1984 1. Sayi=-5 2. Eğer Sayi<0 ise Yaz ?Sayı Negatif? 3. Eğer Sayi>0 ise Yaz ?Sayı Pozitif? 4. Eğer Sayi=0 ise Yaz ?Sayı Sıfırdır?
Yukarıdaki örnekte Sayi değişkenine -5 değeri aktarılmıştır. Diğer satırlarda ise Sayi değişkenin içeriğine bakılarak bir mesaj verilmektedir. Bu örnekte yalnızca 2. satırdaki şart sağlanır ve ekrana ?Sayı Negatiftir? mesajı yazılır.
Bir veya birden fazla koşul bazı bağlaçlarla bir araya getirilerek daha karmaşık sorular sorulabilir. Örneğin yas (kişinin yaşı) değişkeninin içeriği kontrol edilmek istendiğinde şöyle bir şart cümlesi kullanılabilir: Yas=-5 Eğer yas<0 Veya Yas=0 ise Yaz ?Yanlış Değer Girildi? Algoritmada kullanılabilecek bağlaçlar VE, VEYA, DEĞİL bağlaçlarıdır.
VE Bağlacı: Ve bağlacı ile söylenmek istenen her iki koşulun da sağlanmasıdır. VE bağlacı ile bağlanmış önermelerden en az birinin yanlış olması sonucu yanlış yapar.
VEYA Bağlacı: VEYA bağlacı ile bağlanan koşullardan en az birisi doğru ise sonuç doğrudur. İkiden fazla önermeler için, önermelerden en az birinin doğru olması sonucu doğru yapar.
DEĞİL Bağlacı: DEĞİL bağlacı doğruyu yanlış, yanlışı doğru yapar.DEĞİL tek bir önerme veya koşul üzerinde uygulanır. VE, VEYA ise iki önerme veya koşul üzerinde uygulanır. Doğru=1 ve Yanlış=0 tanımıyla, aşağıdaki tabloda bağlaçların x ve y?nin alacağı değerlere göre sonuçları gösterilmiştir.
4. Matematiksel İşlemler: Matematiksel işlemleri algoritmada aynen kullanamayız. Bilgisayar mantığına göre matematiksel ifadelerin yeniden yazılmaları gerekir. Algoritmada işlem öncelik sırası kuralları aşağıda verilmiştir. Parantez kullanılarak işlem öncelik sıraları değiştirilir. İç içe kullanılan parantezlerde öncelik en içtekindedir. Aynı işlem önceliğine sahip elemanlarda işlem soldan sağa doğrudur.
Akış Şeması Hazırlama Geliştirilecek olan yazılımın genel yapısının şematik gösterimine akış şeması veya blok diyagramı adı verilir. Akış 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 akış 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 akış 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.Akış şemaları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.Akış şemalarında kullanılan semboller, anlamları ve kullanış amaçları aşağıdaki tabloda verilmiştir
Ayrıntılı bir akış şeması, yazılımı oluşturan işlemleri ve ilişkilerini en küçük detayına kadar belirler. Bir bilgisayar programının geliştirilmesinde kullanılan programlama dili ne olursa olsun bu programların akış diyagramlarında genel olarak yalnız üç basit mantıksal yapı kullanılır. Bu mantıksal yapılardan en basiti sıralı yapıdır. Sıralı yapı, hazırlanacak programdaki her işlemin mantık sırasına göre nerede yer alması gerektiğini vurgular. Bu yapı sona erinceye kadar ikinci bir işlem başlayamaz.
Mantıksal yapılardan ikincisi Karar Verme yapısıdır (Şekil 1.3). Programlama sırasında If...Then... Else (Eğer?. <şart> ?.İse?.)yapısı ile tanıyacağımız bu mantıksal yapılar, birden fazla sıralı yapı seçeneğini kapsayan modüllerde, hangi şartlarda hangi sıralı yapının seçileceğini belirler.
Üçüncü mantıksal yapı çeşidini tekrarlı yapılar oluşturmaktadır. Yani döngü oluşturmak için kullanılan yapıdır. Döngüler aynı işlemin bir çok kez yapılmasını sağlar.Söz konusu üç değişik yapı, değişik kombinezonlarda kullanılarak istenilen işlevleri yerine getirecek programlar hazırlanabilir. Programların bu üç basit yapı ile sınırlandırılması program modüllerinin daha kolay tasarlanmasını sağlar.
|