25.07.2013 Views

1. Ödev - Başkent Üniversitesi

1. Ödev - Başkent Üniversitesi

1. Ödev - Başkent Üniversitesi

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!