HACETTEPE ÜNİVERSİTESİ BİLGİSAYAR ve ÖĞRETİM TEKNOLOJİLERİ EĞİTİMİ BTÖ201- Programlama Dilleri 1 Hazırlayanın; Adı Soyadı Çağdaş KARADEMİR Numarası 20742248 Ders Sorumlusu Hakan Tüzün
İçindekiler Problem Nedir?... 2 Çözüm İçin Mevcut Araçlar ve Aşamalar Nelerdir?... 2 Problemin Algoritması... 3 Problemin Akış Şeması... 4 Problemin Organizasyon Şeması... 5 Problemin Algoritmasının Kontrolü... 6 Algoritmayı Değerlendirme... 10 Raporda Kullanılan Programlar... 11 Sayfa 1
Problemin Çözüm Aşamaları 1. Problem Nedir? Üç adet sayıyı kullanıcıdan alıp, bu girilen sayıların en büyüğünü bulan program nasıl yapılır? 2. Çözüm İçin Mevcut Araçlar ve Aşamalar Nelerdir? Problemi çözmek için öncelikle üç tane sayı değişkenimiz olmalıdır. Bu değişkenler klavyeden girilen, kullanıcının belirlemiş olduğu sayılara karşılık gelmektedir. Bir diğer olması gereken değişkenimizde, en büyük sayıyı tutan değişken olmalıdır. Son değişkenimiz ile toplamda dört tane değişken ile bu problemin algoritmasını yaratabiliriz. Algoritma yarattıktan sonra akış şemamızı çizerek, problemi kâğıt üzerinde yazmış oluruz. Bu şekilde tüm olasılıkları akış şemasında görerek, programı yazarken olası oluşabilecek hataları zorlanmadan aşabiliriz. Akış şemasını çizmek içinde bir programa ihtiyacımız var. SmartDraw 2009 programı ile akış şemasını kolaylıkla çizebiliriz. Programı yazmadan önce son olarak, organizasyon şeması ile problemi parçacıklara ayırarak, genel çalışma prensibini, parçalar halinde görmüş oluruz. Tüm bu işlemlerden sonra ki işimiz, algoritmanın çalışıp çalışmadığını kontrol etmektir. Bunun içinde derleme programlarına ihtiyacımız vardır. Bu proje için C++ ve VisualBasic.Net programlama dillerini seçebiliriz. C++ kendi kütüphanesini kullanırken, Vb.net framework kütüphanesini kullandığından ve kod yapısı olarak birbirinden bağımsız olduklarından, algoritmamızı onaylamamız için doğru iki dil olduğunu düşünüyorum. C++ için Dev C++ editörünü, Vb.Net için ise Microsoft VisualBasic Express Edition editörünü kullanabiliriz. Bu iki programlama dilinde test başarılı olursa, problemin algoritmasının sonraki problemlerde ne kadar kullanışlı olup olmadığını hesaplamamız gerekmektedir. Eğer problemin algoritması başarısız olursa, algoritmaya tekrar dönerek gerekli yerlerde değişiklikleri yapmamız gerekmektedir. Sayfa 2
3. Problemin Algoritması DEĞİŞKENLER x=1. Sayımızın Tutulduğu Değişken y=2.sayımız Tutulduğu Değişken z=3.sayımız Tutulduğu Değişken enbuyuksayi=en Büyük Sayımızın Tutulduğu Değişken 1. Başla 2. Kullanıcıdan 1.Sayıyı İste 3. Kullanıcıdan 2.Sayıyı İste 4. Kullanıcıdan 3.Sayıyı İste 5. x>=y ve x>=z ise Adım 6 ya İlerle, Değilse Adım 7 ye Git 6. enbuyuksayi=x Adım 10 a Git 7. y>=x ve y>=z ise Adım 8 e İlerle, Değilse Adım 9 a Git 8. enbuyuksayi=y Adım 10 Git 9. enbuyuksayi=z 10. Ekrana enbuyuksayi nin değerini yazdır 11. Dur Sayfa 3
4. Problemin Akış Şeması Sayfa 4
5. Problemin Organizasyon Şeması Sayfa 5
6. Problemin Algoritmasının Kontrolü Problemin algoritmasını ilk önce c++ programında yazıp kontrol edelim. Sayfa 6
Sayfa 7
Şimdi de Vb.net üzerinde kontrol edelim. Sayfa 8
İki programlama dilinde de başarıyla çalıştı. Doğru bir algoritma olduğunu kanıtladık. Sayfa 9
7. Algoritmayı Değerlendirme Şu an ki algoritma problemimizi çözmemizde yardımcı oldu. Fakat hala eksikleri bulunmaktadır. Daha sonra oluşabilecek olasılıklarda mevcut. 1. Kullanıcı sayı değerini boş bırakırsa neler olur onu inceleyelim. C++ da program değişkenin içine değer girilene kadar bekler. Sonraki işlemi gerçekleştirmez. Bu olasılık ortadan kalkıyor. Vb.net de ise hata vermesine neden olacaktır. Bunu engellemek için kodumuza ek olarak bazı kodlar eklememiz lazım. Atamalar sırasında eğer sorgusu ile içindeki verinin boş olup olmadığını kontrol edebiliriz. IF TEXTBOX1.TEXT= OR ISNULL(TEXTBOX1.TEXT) OR TRİM(TEXTBOX1.TEXT= ) THEN MSGBOX LÜTFEN SAYI BİRİ BOŞ BIRAKMAYINIZ. EXİT SUB END İF IF TEXTBOX2.TEXT= OR ISNULL(TEXTBOX2.TEXT) OR TRİM(TEXTBOX2.TEXT= ) THEN MSGBOX LÜTFEN SAYI İKİ BOŞ BIRAKMAYINIZ. EXİT SUB END İF IF TEXTBOX3.TEXT= OR ISNULL(TEXTBOX3.TEXT) OR TRİM(TEXTBOX3.TEXT= ) THEN MSGBOX LÜTFEN SAYI ÜÇÜ BOŞ BIRAKMAYINIZ. EXİT SUB END IF 2. Sayı değerleri, integer ın sakladığı değerler dışına çıkarsa ne olur? Her iki programda da hata vermesine neden olur. Çözüm olarak sınırlandırma koyulabilir. Örneğin sayının max ve min değerleri kodu yazan tarafından belirlenir ve if karar yapısı ile sınama yapılabilir. 3. Eğer kullanıcı sayı yerine string bir ifade girerse ne olur? Her iki programda da hata vermesine neden olur. Çözüm olarak çeviricilerle sınama yapılabilir veya çevirici fonksiyonlarla ifade integer değere çevrilir. Kısaca algoritma bizi %100 performanslı çözüme ulaştırmıyor. Fakat problemimizi genel olarak çözebiliyor. Algoritma çekirdek olarak alınıp, geliştirildiği takdirde hatalarda yok olacaktır. Sayfa 10
Raporda Kullanılan Programlar 1. DEV C++ http://www.bloodshed.net/devcpp.html 2. MICROSOFT VISUALBASIC EXPRESS EDITION http://www.microsoft.com/express/vb/ 3. SMARTDRAW 2009 http://www.smartdraw.com/exp/flo/product/ Sayfa 11