TEMEL BİLGİSAYAR BİLİMLERİ Doç. Dr. M.Ümit GÜMÜŞAY YTÜ - 2012
2 PROGRAMLAMA MANTIĞI Herhangi bir amaç için hazırlanan programın mantık hataları içermesi durumunda, alınacak sonucunda yanlış olacağı aşikardır. Program hazırlama aşamasında iki tür hata yapılabilir. Bunlardan birincisi yazı(lı)m hataları dır ki; bilgisayar bu hatalar konusunda programcıyı uyarır ve hata düzeltilmeden program çalışmaz. İkinci tür hata mantık hatası adı verilen hatadır ve bu tür hatalar yapılacak işin yanlış tanımlanması anlamındadır. Örneğin, bir grup sayının toplamını hesaplayan bir program yazmak istediğimizi düşünelim. Eğer programcı sayıların toplamını hesaplayacak şekilde yazmak yerine, sayıların çarpımını hesaplayacak şekilde yazarsa, bilgisayar çarpma işlemini gerçekleştirir. Ancak programcı yada programı çalıştıran kullanıcı amacına ulaşamamış olur. İşte bu tür hatalara mantık hataları denir. Bilgisayara yaptırılacak bir işlemin programının hazırlanmasında dikkat edilmesi gereken en önemli nokta, söz konusu problemin çok iyi anlaşılması ve detaylı olarak analiz edilmesidir. Bilgisayar sadece kendisine verilen emirler (programlama komutları) yardımıyla problemleri çözebilir. Bilgisayara komutlar doğru olarak verilmelidir. Demek ki verilen emirlerin yanlış olması durumunda alınacak sonuçların da yanlış olacağı açıktır. PROGRAMLAMA AŞAMALARI Programlamada (veya problem çözmede) her programcı tarafından farklı yaklaşımlar izlemekle birlikte, bütün programcılar tarafından genellikle şu programlama aşamalarını izlemektedir: 1. Problemin tanınması 2. Çözüm yönteminin belirlenmesi 3. Algoritmanın geliştirilmesi 4. Akış şemasının (çizelgesinin, diyagramının) düzenlenmesi 5. Programın el ile çalıştırılıp denenmesi 6. Uygun programlama dilinin seçilmesi 7. Programın kodlanması 8. Programın bilgisayar ile çalıştırılıp sınanması Problemin Tanınması Programlama işleminde en önemli aşama problemin tam olarak anlaşılması ve teşhis edilmesidir. Yanlış anlaşılmış veya tam olarak tanınmamış bir problemin çözümünün de yanlış sonuçlar vereceği açıktır. Problemin tanınması veya teşhis edilmesinde iki aşama izlenir. 1. Giriş bilgilerinin belirlenmesi 2. Çıkış bilgilerinin belirlenmesi Programcı mutlaka konuyu yada problemi kavramış olmalıdır. Eğer mümkünse elle yapılmış örnekler kullanılarak kontrol işlemi yapılmalıdır. Muhasebe işlemlerini hiç bilmeyen çok profesyonel bir programcının muhasebe programı yazması mümkün değildir. Demek ki, bir programcının muhasebe işlemlerini gerçekleştiren bir program yazması için muhasebe işlemini çok iyi bilmesi veya bilen birinden yardım alması gerekir. Aynı mantıkla, bir programcının satranç oyunu programı yazabilmesi için de söz konusu oyunu çok iyi bilmesi veya oyunu bilen birisinin yardımını alması gerekir. Aksi halde, satrançtaki bütün varyasyonları veya alternatif stratejileri dikkate almaması nedeniyle, problem eksik olarak teşhis edilecek ve bilgisayarda çalıştırılan program daha iyi satranç oynayan birisi tarafından yenilmiş olacaktır. Şimdi problemin tanınması aşamasını şu basit örnek üzerinde inceleyelim. %25 kar marjı ile çalışan bir marketin malların satış fiyatını hesaplayan bir program yazmak istenirse, bu problemde giriş bilgisi olarak alış fiyatı (AF diyelim) ve çıkış bilgisi olarak da satış fiyatı (SF diyelim) söz konusudur. Satış fiyatına ek olarak çıkış bilgisi istendiğinde kar marjının, karın veya
3 alış fiyatının yazılması da mümkündür. Burada yer alan kar marjı sabit bir bilgidir ve programa sabit olarak girer. Çözüm Yönteminin Belirlenmesi Bu aşamada yapılması gereken giriş bilgilerinden hareketle çıkış bilgilerine nasıl ulaşılacağının belirlenmesidir. Çözüm yönteminin belirlenmesi bir anlamda problemin matematiksel modelinin kurulması olarak da ifade edilebilir. Market örneğine dönersek bu problemin çözümü için şu yöntem belirlenir. SF = AF + AF * 0.25 AF parantezine alınırsa SF = AF * (1+0.25) ve buradan da SF = AF * 1.25 Değeri elde edilir. Böylece çözüm yöntemi de belirlendiğine göre algoritma aşamasına geçilebilir. Algoritmanın Geliştirilmesi Problem teşhis edilip çözüm yöntemi belirlendikten sonra yapılacak işlemler sistematik biçimde sözel olarak ifade edilebilir. İşte bir problemin çözülmesi için yapılacak işlemlerin belirli bir sıraya göre mantıksal olarak düzenlenmesi ve sözel olarak ifade edilmesi işlemine algoritma adı verilir. Günlük yaşamda teknolojik yenilikler sonucunda karşılaştığımız araçlardan yararlanmak için kullanım klavuzuna başvururuz. Bu klavuzlar o aracın kullanılması sırasında izlenecek aşamaları basit bir dille hatta kısaltarak anlatır. Algoritmanın temel amacı kendisinden sonra gelen aşamaları yönlendirmektir. Genellikle emir cümleleri ile ifade edilen algoritmanın dili günlük yaşamda kullandığımız insan dilidir. Algoritma insan dili ile yazılmış bir program olmasına nedeniyle bilgisayar için herhangi bir anlamı yoktur. Bilgisayarın anlayabilmesi için kodlama işleminin yapılması gerekir. Yukarıda verilen market örneğine dönersek, bu örneğe ilişkin algoritma şu şekilde yazılabilir: 1. Adım Başla 2. Adım Alış fiyatını (AF) oku (gir) 3. Adım SF = AF * 1.25 işlemini yap 4. Adım Alış (AF) ve satış fiyatını (SF) yaz 5. Adım Dur Bu algoritma incelendiğinde alış fiyatının giriş bilgisi olarak bilinmesi gerekmektedir. Aksi halde bu işlemin yapılması mümkün değildir. Akış Şemasının Düzenlenmesi Akış diyagramları (akış semaları, akış çizelgeleri, flowchart), algoritması yazılan programın sembollerle ifade edilen geometrik şekilleridir. Algoritma insan diline göre yazıldığından farklı dilleri (Türkçe, İngilizce, Almanca, Fransızca, vb.) kullan insanlar tarafından anlaşılması zor olabilir. Bu nedenle programın standart bazı semboller kullanılarak yazılması sonucu herkes tarafından anlaşılması sağlanmış olur. Bu sembolleri trafik işaret sembollerine benzetmek mümkündür. Trafik sembolleri dünyanın her yerinde standart olduğundan yurt dışına giden veya dışardan ülkemize gelen birisi bu işaretleri tanıyarak herhangi bir sorunla karşılaşmaz.
4 Aynı mantıkla akış şemalarında semboller algoritmanın diyagram üzerindeki akışının ifade eder. Bir problemde neler yapıldığını anlamak için algoritma yerine akış diyagramına bakmak da yeterli olur. Hatta bu şekilde programın mantığının algılanması daha kolay hale gelmiş olur. Akış diyagramlarında en çok kullanılan bazı semboller ve anlamları aşağıda verilmiştir. SEMBOL ANLAMI Başlama ve durma Ekrandan bilgi giriş ve çıkışı Aritmetik işlem ve değer atama Karşılaştırma (Koşul) İşlem akış yönü okları İşlem akış bağlacı
5... Döngü. Yazıcıdan çıkış Şimdi daha önce verilen market örneğinin akış diyagramını çizimi. Başla AF Gir SF = AF * 1.25 AF, SF Yaz Dur
6 Programın El ile Çalıştırılıp Sınanması Programın doğru olup olmadığına ilişkin kontrollerin yapıldığı aşamadır. Programda çalışmayan veya hatalı işleyen yerlerin olması durumunda değişiklik yapılır. Malın alış fiyatı olarak 100 değeri giriş bilgisi olarak verildiğinde AF değişkeninin içine 100 değeri yerleşir. Bir sonraki aşamada AF (100) değeri ile 1,25 sayısı çarpılarak elde edilen sonuç SF(satış fiyatı) değişkeninin içine atanır. SF değişkeninin çıktısı ekranda 125 olarak görüntülenir. Böylece programın doğru sonucuna varılır. Uygun Programlama Dilinin Seçilmesi Buraya kadar izlenen aşamalar bütün programlama dilleri için aynı olup programlama mantığını oluşturur. Bu aşamada programın yapısına uyan programlama dilinin seçilmesi gerekir. Örneğimizde söz konusu program için VISUAL-BASIC, BASIC, COBOL, FORTRAN, C gibi programlama dillerinden amaca uygun olan dil seçilir. Problemin Kodlanması Bilgisayarın söz konusu problemi anlaması için verilen emirlerin veya komutların programlama dilinde olması gerekir. Her programlama dilinde kullanılan komutlar farklıdır. Yukarıda programlama mantığını öğrenmek için verilen basit örneğin Visual Basic programlama dilinde kodlanmış şekli şu şekildedir. AF$ = InputBox("Alis Fiyatini Giriniz") SF$ = AF$ * 1.25 Show Print "ALIS FIYATI="; AF$, "SATIS FIYATI="; SF$ Programın Bilgisayar ile Çalıştırılıp Sınanması Private Sub Form_Load() AF$ = InputBox("Alis Fiyatini Giriniz") SF$ = AF$ * 1.25 Show Print "ALIS FIYATI="; AF$, "SATIS FIYATI="; SF$ End Sub From_Load yordamına yazılan programdan sonra Ana menü üzerinde bulunan Run altındaki menü üzerinden Start seçildiğinde program çalışır ve bize Alış Fiyatımızı sorar daha sonra sonuç değerler form üzerine yazdırılır.
7 Değişken (Variable): Farklı zamanlarda farklı değerler alabilen bilgi sahlarına verilen sembolik addır. Değişken adları A-Z arası alfabetik bir harfle başlayıp 0-9 rakamı ile devam edebilir. (Arada boşluk olmayacak) TOPLAM1, SAYAC, A, AD, ADSOY1 gibi. Değişken adlarında Türkçe karakter kullanmayınız. Aritmetiksel işlemler: Aritmetiksel işlemleri ve uygulama sıralarını, aynen kullanamayız. Bilgisayar mantığına göre yeniden yazılmaları gerekir. Algoritmada kullanılan aritmetiksel işlemleri ve öncelik sıraları aşağıdaki gibidir. İşlem öncelik sırası kuralları: Matematiksel Bilgisayar 1. Parantezler (( )) ( ( ) ) 2. Üs Alma n a A^N 3. Çarpma ve bölme ab a/b A*B A/B 4. Toplama çıkarma a+b a-b A+B A-B Parantez kullanılarak işlem öncelik sıraları değiştirilir. İşleme ilk önce parantezin içindekiler girer. İçiçe kullanılan parantezlerde öncelik en içtekindedir. Aynı işlem önceliğine sahip elemanlarda soldan sağa doğrudur. Matematik Bilgisayar Matematik Bilgisayar A(B+C) A*(B+C) A 2 B A^2+B ( A B) (A-B)/C B A-B/C A C C AC A/B*C B A -A^B B 2 (A) 2 (A^2)^2 A 2 B A^2*B