1. Ödev - Başkent Üniversitesi
1. Ödev - Başkent Üniversitesi
1. Ödev - Başkent Üniversitesi
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>1.</strong> <strong>Ödev</strong><br />
<strong>Başkent</strong> <strong>Üniversitesi</strong><br />
Bilgisayar Mühendisliği<br />
Nesne Yönelimli Programlama (Bil 343)<br />
Ümit Burak USGURLU<br />
20394676<br />
06 Ekim 2005 – Ankara
Yapısal Olmayan Programlama (Unstructured Programing)<br />
Yapısal olmayan programlamada program yazılış sırası ile işletilirler. Bir “goto”<br />
terimi işletimin programda bir yerden başka bir yere iletilmesini sağlar. Bir “goto”<br />
çağırıldığında program goto’nun hedef satırından devam eder. Bu yüzden programın nasıl<br />
çalıştığını anlamak için programı aklınızda çalıştırmanız gerekir. Bunun anlamı programın<br />
mantığının anlaşılması özellikle program büyüdükçe imkansızlaşmasıdır. Bazı derleyiciler<br />
“goto”ların hedeflerini indeksleyerek daha kolay bir dolaşım sağlayabilmektedir.<br />
Yapısal olmayan programlamanın karmaşıklığından dolayı Dijkstra “goto” teriminin<br />
kullanımının yasaklanması gerektiğini savunmuştur.<br />
Programlama dillerinde gerekmemesine rağmen, goto terimlerine yer verilmiştir. Bu<br />
terimin kullanılabileceği diller için Assembly, C, BASIC, FORTRAN gibi diller örnek<br />
verilebilir.<br />
Yapısal olmayan programlama aynı zamanda “spagetti kod” teriminin temelini<br />
oluşturmaktadır. Spagetti kod, içinde çok sayıda goto barındıran karmaşık kod yapılarına<br />
verilen argo bir terimdir.<br />
Örnek yapısal olmayan ve aynı kodun yapısal karşılığı<br />
10 dim i<br />
20 i = 0<br />
30 i = i + 1<br />
40 if i 10 then goto 90<br />
50 if i = 10 then goto 70<br />
60 goto 30<br />
70 print "Program Completed."<br />
80 end<br />
90 print i & " squared = " & i * i<br />
100 goto 30<br />
dim i<br />
for i = 1 to 10<br />
print i & " squared = " &<br />
square(i)<br />
next<br />
print "Program Completed."<br />
function square(i)<br />
square = i * i<br />
end function<br />
Yordamsal Programlama (Procedural Programming)<br />
Yordamsal programlama yordamların çağrılması mantığına dayanan bir yöntemdir.<br />
Fonksiyon, altyordam, altprogram, metot gibide adlandırılan yordamlar içlerinde hesaplama<br />
adımları barındıran program parçacıklarıdır. Tanımlanmış yordamlar program sırasında<br />
herhangi bir zamanda çağrılabilirler. Yordamlar diğer yordamların içindende<br />
çağrılabilecekleri gibi kendi kendilerini de çağırabilirler.<br />
Yordamsal programlama çoğu zaman sıralı programlamadan veya yapısal olmayan<br />
programlamadan pek çok durumda daha iyi seçimdir. Yordamsal programlama orta karar<br />
karmaşıklık sağlar iken, oldukça verimli bir program yönetimi sağlayabilmektedir.<br />
Olası verimleri şöyle sıralanabilir:<br />
• Aynı kodu programın farklı yerlerinde kopyalamaya gerek kalmadan kullanabilme.<br />
• Program akışını kontrol altında tutmak bir dizi “goto” veya “jump” terimi<br />
kullanmaktan daha kolaydır.<br />
• Sağlam bir modülerlik ve yapısallık sağlar.<br />
2
Modüler Programlama<br />
Bir modül, bir bütünün içinde diğer elemanlarının çalışmasından bağımsız çalışabilen<br />
bir parça olarak tanımlanabilir. Bir problemi bu şekilde çözmeye çalışmak modüler<br />
programlama olarak tanımlanabilir.<br />
Bir programda modülerlik programın rasgele seçilen iki parçası arasındaki etkileşimin<br />
belirlenmiş arabirimler vasıtası ile gerçekleştirilmesi ile artar. Modüler programlama<br />
teknikleri modülerliği arttıran teknikler olarak nitelendirilebilirler.<br />
Yapısal Programlama (Structured Programming)<br />
Yapısal programlama yordamsal programlamanın bir alt/yan dalı olarak<br />
görülebilir,temel programlama tekniklerinden birisidir. “goto” terimine karşı bağımlılığı<br />
azalttığı ve hatta kaldırdığı için ünlenmiştir.<br />
Tarihsel olarak bakıldığında yapısal programlamadan pek çok alt yöntem türetilmiştir.<br />
Bunlardan ikisi Jackson’ın Yapısal Programlaması ve Dijkstra’nın Yapısal Programlamasıdır.<br />
Yapısal programlama, yordamsal programlama dillerinin pek çoğu ile<br />
yapılabilmektedir. 1970’lerin başlarında popülerleşmeye başlayan yapısal programlama ile<br />
pek çok yeni yordamsal programlama dili yapısal programlamayı destekleyecek özellikleri<br />
barındırmaya başladılar. Bu dillere örnek olarak Pascal ve Ada verilebilir.<br />
Küçük kod parçacıkları seviyesinde yapısal programlama hiyerarşik program akışı<br />
yapılarını tavsiye eder. Bu yapılar pek çok modern dilde kolayca elde edilebilen, “while”,<br />
“repeat”, “for” gibi yapılardır. Yapısal programlama bu yapılar için tek giriş ve tek çıkış<br />
noktalarını tavsiye eder. Bu tavsiyeyi zorunlu kılan dillere rastlanmaktadır.<br />
Bu teknik ile programcılar büyük kod parçalarını daha kısa alt yordamlar halinde<br />
yazarlar. Bu sayede parçacıklar anlaşılabilecek kadar küçük olurlar. Genel olarak<br />
programlarda çok az veya hiç genel (global) değişkenler kullanılmaz, genel değişkenler yerine<br />
altyordamlar yerel değişkenler kullanırlar ve değişkenlerini adres ve değer ile gönderir.<br />
Dijkstra’nın Yapısal Programlaması<br />
Dijkstra’nın yapısal programlaması programın alt bölümlere ayrılması ve programın<br />
tek giriş ve çıkış noktası olması mantığına dayanır. Yukarıda anlatılan Yapısal<br />
Programlamanın temeli Dijkstra’nın tekniğine dayanır.<br />
Jackson’ın Yapısal Programlaması<br />
Jackson’ın Yapısal Programlaması (JYP) veri akışı yapısı ile program yapısı<br />
arasındaki ilişkiye dayanır. JYP ilk olarak 1970’lerde Michael A. Jackson tarafından<br />
geliştirilmiş ve “Principles of Program Design” isimli kitabında yayınlanmıştır. Jackson’ın<br />
amacı standart COBOL programlamayı iyileştirmek olsa da bu metot modern programlama<br />
dilleri (örneğin C ve Perl gibi) ile kodlamada da geçerlidir.<br />
JSP’yi oluşturan temel yapılar…<br />
• Temel eylemler<br />
• Sıralamalar<br />
• Tekrarlar<br />
• Seçimler<br />
3
Metot programın girdilerinin temel yapılar ile ifade edilmesi ile başlar. Daha sonra<br />
programın çıktıları aynı şekilde ifade edilirler. Her girdi ve çıktı ayrı bir Veri Yapısı<br />
Diyagramı olarak modellenirler.<br />
Girdi ve çıktı yapıları daha sonra Program Yapı Diyagramı (PYD) olarak<br />
birleştirilirler. Bazı programlar tüm veriyi almadan çıktı üretmezken bazıları her girdi birimi<br />
için çıktı üretir, bu durum PYD’de işlenmiş olur.<br />
Dil bağımlı olmayan PYD daha sonra bir programlama dili vasıtası ile uygulanır. PSD<br />
daha çok yordamsal diller için uygun bir yaklaşım olup nesne yönelimli dillerde<br />
kullanılmamaktadır.<br />
JSP programın girdi, çıktı ve program yapısını anlatmak için diyagramları kullanır.<br />
4