Nesne Yönelimli Programlamaya Giriş - 1. Cem Ahmet MERCAN 09/04/2009

Benzer belgeler
Nesne Yönelimli Programlamaya Giriş - 2. Cem Ahmet MERCAN 16/04/2009

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

ORACLE DA KÜRSÖRLER. Gerekli sistem değişkenleri

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

Telefon Rehberi Uygulaması

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma

10/17/2007 Nesneye Yonelik Programlama 3.1

1 PROGRAMLAMAYA GİRİŞ

Linux Assembly Programlamaya Giriş

8. İŞARETCİLER (POINTERS)

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

NESNEYE YÖNELİK PROGRAMLAMA

Bölüm 9. Altprogramlar ISBN

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

TEMPLATES. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

BİLG Dr. Mustafa T. Babagil 1

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım

Sınav tarihi : Süre : 60 dak.

Fall Object-Oriented Programming Laboratory 03

T.C. MALTEPE ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ LİSANS PROGRAMI Bahar Yarıyılı

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

ALGORİTMA VE PROGRAMLAMA I

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

ALGORİTMA VE PROGRAMLAMA I

PROGRAMLAMAYA GİRİŞ DERS 2

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

2) /* Kullanıcıdan alınan iki sayının obebini alt fonksiyon yardımı ile hesaplayan C programı*/

Dr. Fatih AY Tel: fatihay@fatihay.net

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.

Lambda İfadeleri (Lambda Expressions)

Nesne Yönelimli Programlama

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

Bölüm 2 - C ile Programlamaya Giriş

Üst düzey dillerden biri ile yazılmış olan bir programı, makine diline çeviren programa derleyici denir. C++ da böyle bir derleyicidir.

Jval tipi. Genel veri yapılarını kullanacağımız zaman Jval den faydalanırız.önemli olanlar aşağıda mevcuttur:

BLM 111 Algoritma ve Programlama I Güz 2018

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

KOCAELİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

C PROGRAMLAMA D İ L İ

for döngüsü for (başlangıç değeri; şart; artım) ifade; for (başlangıç değeri; şart; artım) { ifadeler; }

Öğr. Gör. Serkan AKSU 1

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

Programlama Dillerinde Kullanılan Veri Tipleri

Hafta 13 Fonksiyonlar

Lab Notları 4. for ( ilklenme yeri bir kez çalışır ; Kontrol yeri her döngüde bakılır ; Güncelleme yeri her döngüde )

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

DERSİN WEB SİTESİ:

Karma C/C + + Kodlama

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

Bölüm 1 PROGRAMLAMAYA GİRİŞ. Bölüm 2 ALGORİTMA

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır:

Program AkıĢ Kontrol Yapıları

Object-Oriented Programming Lab 4. - Sıcaklık değeri, Kelvin biriminde saklansın. Varsayılan sıcaklık değeri K olsun.

Programlama Dilleri 1. Ders 12: Belirleyiciler ve Niteleyiciler

8. Bölüm DİZİLER. tip dizi_ismi[eleman_sayısı]; Bütün diziler 0 ile baţlar.

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin);

Eln 1002 Bilgisayar Programlama II

BMT 101 Algoritma ve Programlama I Güz Dönemi. Yük. Müh. Köksal Gündoğdu 1

Ruby. Prof.Dr.Timur Karaçay Başkent Üniversitesi

Bilgisayar Programlama. 1.Hafta

ALGORİTMA VE PROGRAMLAMA I

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

Fonksiyonlar -Genel Test- A

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

Genel Programlama II

C Programlama printf() Fonksiyonu

C++ Dersi: Nesne Tabanlı Programlama

Teknikleri. Önsöz. iskender atasoy

KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr)

C++ Dersi: Nesne Tabanlı Programlama

/* Çember alanını hesaplar */

PHP, nesne-yönelimli (object-oriented) bir dil olduğu için, nesne oluşturma imkânına ve bunların kullanılmasını sağlayan metodlara da sahiptir.

BİLİNİRLİK ALANI ve ÖMÜR, KONTROL DEYİMLERİ

5. PROGRAMLA DİLLERİ. 5.1 Giriş

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

YZM 2105 Nesneye Yönelik Programlama

C++ Dersi: Nesne Tabanlı Programlama

Programlamaya Giriş Karar Yapıları, Tekrarlı İfadeler(Döngüler)

Yordamsal Tabanlı Programlama

Döngü (Loop) Deyimleri / Veri Belirleyicileri / Matematiksel Fonksiyonlar

Programlama Dilleri Laboratuvarı

BİLG Dr. Mustafa T. Babagil 1

Döngü Komutları. Komutu. while Komutu Diğer Operatörler Bileşik Komut for Komutu. İçiçe Döngüler break ve continue Komutları

Transkript:

Nesne Yönelimli Programlamaya Giriş - Cem Ahmet MERCAN http://www.be.itu.edu.tr/~mercan/ 09/04/009

Nesne Yönelimli Programlama ) Object - Oriented Programming ( Bilgisayar programının, nesneler ve aralarındaki ilişkiler biçiminde yapılandırılmasıdır. Nesneler, sınıf denilen kalıplar kullanılarak oluşturulur. Bazı dillerde herşey bir nesnedir. Bunlara tam nesne yönelimli diller denir. Diğerlerinde ise nesneler kullanılabilmesine rağmen, herşey bir nesne değildir. C++, ikinci gruba girer.

Başlangıçta Programlama 4 5 6 7 8 9 0 Değişken Tanımı Değişken Tanımı Değişken Tanımı if/ goto Değiş. Sonu Program alt alta yazılmış işler (komutlar) listesinden ibaret. Sınama (if) ve Atlama (goto) komutları ile kod basit bir listenin ötesinde bir işlev görür.

Başlangıçta Programlama 4 5 6 7 8 9 0 4 5 6 7 8 9 Küçük kodlar için en basit yaklaşım. Küçük programlar için yazması en kolayı. Herşey programcının emrinde: Tüm verilere her yerden ulaşılabilir, her noktadan bir diğer noktaya atlanabilir.

Başlangıçta Programlama 4 5 6 7 8 9 0 4 5 6 7 8 9 Birkaç yüz satırlık kodu takip etmek zor. Birkaç bin satır kodu anlamak imkansız gibi! Programın tekrar kullanım olanağı son derece sınırlı. Problemdeki en ufak bir değişiklik, kodda büyük değişiklikler gerektirebilir.

Programlar Kaç Satır? RedHat 7. ( 0 0 ):. 47. 470 kernel -. 4.. 065. 4 mozilla. 87. 608 XFree86-4. 0 984. 076 gcc -. 96 474. 89 LAPACK 455. 980 gimp -.. 40. 799 mysql -. 04. 89 tetex -. 0 98. 74 qt-.. 0 Fedora 9 ( 0 0 8 ): 5. 96. 705 kernel -. 6. 5 4. 99. 96 OpenOff ice. 8. 05 Gcc- 4.. 0. 664. 66 Ent. Sec. Client. 6. 5 eclipse -.... 90 Mono-. 9.. 088. 84 f irefox -. 0. 79. 48 bigloo. 0b. 788. 9 gcc -. 4. 6

Çözüm: Böl, Parçala, Yönet! (ama nasıl?)

Programlamada İstenen Özellikler Minimum Karmaşıklık Bakım Kolaylığı Taşınabilirlik Genişleyebilirlik Yeterli ve Gerekli Miktarda Özellik İçermek Yeniden Kullanılabilirlik Yüksek Çağrılma / Düşük Çeşitte Çağırma Bölümler Arası Maksimum Ayrışma Katmanlı Yapıda olmak Standart (Tanıdık ve Anlaşılabilir) bir yapı

Programlama Modelleri ) Paradigmaları ( Unstructured, Structured, Procedural, Modular, Object -oriented, Component based, DataFlow,...

Unstructured Programlama 4 5 6 7 8 9 0 Değişken Tanımı Değişken Tanımı Değişken Tanımı if/ goto Değiş. Sonu Program alt alta yazılmış komutlardan oluşan tek bir dosya. Sınama (if) ve Atlama (goto) komutları ile değişik girdilerde / durumlarda da programın çalışması sağlanır.

Unstructured Programlama 4 5 6 7 8 9 0 4 5 6 7 8 9 Sınama (if) ve Atlama (goto) komutları ile kod kolayca programcının anlama sınırlarının ötesinde bir karışıklığa ulaşır. Birkaç bin satır kodda takip etmek imkansız

yin: x=0; Örnek Program ) Unstructured Programlama ( int x=0, y=0; double xd[0][00], xb[0],xr[00],z; z=0.0; xin: z=z+xd[y][x]*xr[x]; x=x+; if (x<00) goto xin; xb[y]=z; y=y+; if (y<0) goto yin;

Programlama Modelleri ) Paradigmaları ( Unstructured, Structured, Procedural, Modular, Object -oriented, Component based, DataFlow,

Structured Programlama 4 5 6 7 8 9 0 Değişken Tanımı Değişken Tanımı Değişken Tanımı for/ while Değiş. Sonu For-while-do döngü yapısı teoride bir if-goto ile aynı şey ise de, pratikte döngünün sınırlarının daha aşikar olmasını sağladığından okunurluk sağlar.

Örnek Program ) Structured Programlama ( int x, y; double xd[0][00], xb[0],xr[00],z; for (y=0; y<0; y++) { z=0.0; for (x=0; x<00; x++) { z=z+xd[y][x]*xr[x]; } xb[y]=z; }

Örnek Program (Kimlik Karşılaştır) Nüfus Cüzdanında 6 bilgi var! char Seri ] 4 [; char No] 8 [; char Tc] [; char Soyad ] [; char Ad] [; char Baba ] [; char Ana] [; char Dyeri ] [; unsigned DTarihi; char Cins; char MedeniHali; char Dini] 6 [; char Kan] 8 [; char KO_ il] [; char KO_ ilce] [; char KO_ mahkoy ] [; char KO_ ciltno] 8 [; char KO_ aileno ] 8 [; char KO_ sirano ] 8 [; char Veril _ Yer ] [; char Veril _ Neden ] 6 [; char KayitNo ] 8 [; unsigned Veril _ Tarihi; char Hazirlayan ] 64 [; char Onaylayan ] 64 [; char OnceSoyad ] [; En az x 6 = 5 Bilgi Karşılaştırılacak Güv enli çözüm 6 x5 = 0 Parametre ister.

int bulunan=-99; Kimlik Karşılaştır (Kod örneği, 78 parametreli) for (x=0 == ) then x<kayit_sayisi == ) then x++) { if (!strncmp(seri[x],a_seri,n_seri) &&!strncmp(no[x], a_no,n_no) &&! strncmp(tc[x], a_tc,n_tc) &&!strncmp(soyad[x], a_soyad, n_soyad) &&! strncmp(ad[x], a_ad, n_ad) &&!strncmp(baba[x], a_baba, n_baba) &&! strncmp(ana[x], a_ana, n_ana) &&!strncmp(dyeri[x], a_dyeri, n_dyeri) && (DTarihi == a_dtarihi) && (sizeof(a_dtarihi) == n_dtarihi) && (Cins == a_cins) && (n_cins == ) && (MedeniHali == a_medenihali) &&! strncmp(dini[x], a_dini, n_dini) &&!strncmp(kan[x], a_kan, n_kan) &&! strncmp(ko_il[x], a_ko_il, n_ko_il) &&!strncmp(ko_ilce[x], a_ko_ilce, n_ko_ilce) &&...

Kimlik Karşılaştır [Devamı] (Kod örneği, 78 parametreli)...!strncmp(ko_mahkoy[x], a_ko_mahkoy,n_ko_mahkoy) &&! strncmp(ko_ciltno[x], a_ko_ciltno, n_ko_ciltno) &&!strncmp(ko_aileno[x], a_ko_aileno, n_ko_aileno) &&!strncmp( KO_sirano[x], a_ko_sirano, n_ko_sirano) &&!strncmp(veril_yer[x], a_veril_yer, n_veril_yer) &&! strncmp( Veril_Neden[x], a_veril_neden, n_veril_neden) &&! strncmp(kayitno[x], a_kayitno, n_kayitno) && (Veril_Tarihi == A_Veril_Tarihi) && (sizeof(veril_tarihi) == n_veril_tarihi) &&! strncmp(hazirlayan[x], a_hazirlayan, n_hazirlayan)!strncmp( Onaylayan[x], a_onaylayan, n_onaylayan) &&!strncmp(oncesoyad[x], a_oncesoyad, n_oncesoyad)) { bulunan=x; break;} } if (bulunan<0) printf( Aranan Kayit Bulunamadi!\n ); else printf( Aynisi BULUNDU! Kayit No: %d\n,bulunan);

Programlama Modelleri ) Paradigmaları ( Unstructured, Structured, Procedural, Modular, Object -oriented, Component based, DataFlow,

Procedural Programlama 4 5 6 7 8 9 0 Global Değişken G Yerel Değişken M Prosedür A Prosedür A Yerel Değişken Z Değiş. Sonu 4 Yerel Değişken P

Procedural Programlama 4 5 6 7 8 9 0 Global Değişken G Yerel Değişken M Prosedür A Prosedür A Yerel Değişken Z Değiş. Sonu 4 5 Input Output Yerel Değiş. P Yerel Değiş. X

Örnek Program ) Procedural Programlama ( int main() { double xd[0][00], xb[0],xr[00]; matvecmul (double *res, double *mat, double *vec, int rown, int coln ) { double z; for (y=0; y<rown; y++) { matvecmul(xb,xd,xr,0,00); return 0; } } z=0.0; for (x=0; x<coln; x++) z=z+mat[(y*coln)+x]*vec[x]; res[y]=z; }

Procedural Programlama Özellikle diziler pointer ile fonksiyona geçilmesini gerektirdiği için tehlikededir. Pointer ile erişimde sorunlar: C'de dizi boyutu saklanmaz, diziler tehlikededir. Pointer aritmetiği hataya açıktır. Pointer ile ulaşılan veri değiştirilebilir. Değiştirilmesi gereken verinin içeriği sınırlanamaz.

Kimlik Karşılaştırması 4 (78 parametreli) int bulunan=-99; for (x=0; x<kayit_sayisi; x++) { if ( karsilastir( Seri[x],a_Seri,n_Seri, No[x],a_No,n_No, Tc[x],a_Tc,n_Tc, Soyad[x],a_Soyad,n_Soyad, Ad[x],a_Ad,n_Ad, Baba[x],a_Baba,n_Baba, Ana[x],a_Ana,n_Ana, Dyeri[x],a_Dyeri,n_Dyeri, Dtarihi,a_DTarihi,n_DTarihi, Cins,a_Cins,n_Cins, MedeniHali,a_MedeniHali, Dini[x],a_Dini,n_Dini,Kan[x],a_Kan,n_Kan, KO_il[x],a_KO_il,n_KO_il, KO_ilce[x],a_KO_ilce,n_KO_ilce, KO_mahkoy[x],a_KO_mahkoy,n_KO_mahkoy, KO_ciltno[x],a_KO_ciltno,n_KO_ciltno,...

Kimlik Karşılaştırması 5 (78 parametreli)... KO_aileno[x],a_KO_aileno,n_KO_aileno, KO_sirano[x],a_KO_sirano,n_KO_sirano, Veril_Yer[x],a_Veril_Yer,n_Veril_Yer, Veril_Neden[x],a_Veril_Neden,n_Veril_Neden, KayitNo[x],a_KayitNo,n_KayitNo, Veril_Tarihi,a_Veril_Tarihi,n_Veril_Tarihi, Hazirlayan[x],a_Hazirlayan,n_Hazirlayan, Onaylayan[x],a_Onaylayan,n_Onaylayan, OnceSoyad[x], a_oncesoyad,n_oncesoyad)) { bulunan=x; break;} } if (bulunan<0) printf( Aranan Kayit Bulunamadi!\n ); else printf( Aynisi BULUNDU! Kayit No: %d\n,bulunan);

Procedural Programlama 4 5 6 7 8 9 0 Prosedür A Prosedür A Değiş. Sonu

Procedural Programlama 4 5 6 7 8 9 0 Global Değişken G Prosedür A int Prosedür A Yerel Değişken M Yerel Değişken Z Değiş. Sonu int int char Struct double double int

Struct struct T arih { int Gun; int Ay; int Yil; }; bayram. Gun= ; bayram. Ay= 4 ; bayram. Yil= 0 0 9 ; tatiller[0 ]. Gun= ; tatiller[5 ]. Yil= 8 5 6 ; struct Tarih bayram; struct Tarih tatiller[ 0 ]; struct T arih * birgun; birgun = &bayram; birgun- > Gun= 0 ; birgun- > Ay= 8 ;

Örnek Program (Kimlik Karşılaştır) struct Kimlik Struct Kimlik { char Seri ] 4 [; char No] 8 [; char Tc] [; char Soyad ] [; char Ad] [; char Baba ] [; char Ana] [; char Dyeri ] [; char Cins; char MedeniHali; char Dini] 6 [; char Kan] 8 [; char KO_ il] [; char KO_ ilce] [; char KO_ mahkoy ] [; char KO_ ciltno] 8 [; char KO_ aileno ] 8 [; unsigned Dtarihi; char KO_ sirano ] 8 [; char Veril _ Yer ] [; char Veril _ Neden ] 6 [; char KayitNo ] 8 [; unsigned Veril _ Tarihi; char Hazirlayan ] 64 [; char Onaylayan ] 64 [; char OnceSoyad ] [; };

Kimlik Karşılaştırması 7 (78 parametreli) struct Kimlik aranan; struct Bakilacak bakilacak; struct Kimlik mevcut_kayitlar[kayit_sayisi]; int bulunan=-99; for (x=0; x<kayit_sayisi; x++) { if ( karsilastir( mevcut_kayitlar[x], aranan,bakilacak)) { bulunan=x; break; } } if (bulunan<0) printf( Aranan Kayit Bulunamadi!\n ); else printf( Aynisi BULUNDU! Kayit No: %d\n,bulunan);

Örnek Program (Kimlik Karşılaştır) Struct Kimlik / / DAHA SADE OLSA DAHA KULLANISLI OLURDU! struct Kimlik { char Seri ] 4 [; char No] 8 [; char Tc] [; char Soyad ] [; char Ad] [; char Baba ] [; char Ana] [; char Dyeri ] [; char Cins; char MedeniHali; char Dini] 6 [; char Kan] 8 [; char KO_ il] [; char KO_ ilce] [; char KO_ mahkoy ] [; char KO_ ciltno] 8 [; char KO_ aileno ] 8 [; unsigned Dtarihi; char KO_ sirano ] 8 [; char Veril _ Yer ] [; char Veril _ Neden ] 6 [; char KayitNo ] 8 [; unsigned Veril _ Tarihi; char Hazirlayan ] 64 [; char Onaylayan ] 64 [; char OnceSoyad ] [; };

Örnek Program (Kimlik Karşılaştır) Struct Kimlik struct Kimlik struct Kimlik struct Kimlik { { { char Soyad ] [; char Soyad ] [; char Soyad ] [; char Dini] 6 [; char Ad] [; char Ad] [; char Ad] [; char Kan] 8 [; }; char Baba ] [; char Baba ] [; char KO_ il] [; char Ana] [; char Ana] [; char KO_ ilce] [; char Dyeri ] [; char Dyeri ] [; char KO_ mahkoy ] [; unsigned Dtarihi; unsigned Dtarihi; char KO_ ciltno] 8 [; char Cins; char Cins; char KO_ aileno ] 8 [; char MedeniHali; char MedeniHali; char KO_ sirano ] 8 [; }; };

Kimlik Karşılaştırması 0 (78 parametreli) struct Kimlik aranan; struct Bakilacak bakilacak; struct Kimlik mevcut_kayitlar [ Kayit_Sayisi ]; int bulunan=-99; for (x=0; x<kayit_sayisi; x++) { if ( karsilastir ( mevcut_kayitlar [ x], aranan, bakilacak )) { bulunan=x; break; } } if (bulunan<0) printf( Aranan Kayit Bulunamadi!\n ); else printf( Aynisi BULUNDU! Kayit No: %d\n,bulunan);

Procedural Programlama Prosedür A Global Değişken G Yerel Değişken M Yerel Değişken Z. Değiş Sonu 4 5 6 7 8 9 0 Prosedür A

Procedural Programlama Tek dosyada çok fazla fonksiyon kontrolü ve genel yapının anlaşılmasını engeller. Yazılan kodun başka projelerde de kullanılması zorlaştırır. Kodu başka programcılara kullandırmanın tek yolu tüm kodu vermektir. Kodu başka programcıların kullanmasının tek yolu kabaca da olsa tüm kodu anmalarıdır ki, hiçbir ayrıma gidilmeden verilecek yüzlerce binlerce fonksiyonu anlamak çok zor!

Procedural Programlama. Değiş Sonu 4 5 6 7 8 9 0 Prosedür A Prosedür A Struct Struct Struct Struct Struct Struct

Procedural Programlama Tek dosyada çok fazla fonksiyon beraberinde birçok global değişken, macro ve diğer fonksiyonların kullandığı alt fonksiyonlar getirir. Kodu başka bir yerde kullanmaya kalkılınca bu yapılardan hangisinin hangi fonksiyon için gerekli olduğunu takip etmek çok zor. Kopyala yapıştır yöntemi binlerce satırda işe yaramaz. Başka dosyadan getirilen kod ile yeni dosyadaki kodda aynı isimli değişken/fonksiyon varsa tüm kodu gözden geçirmek gerekir ki çok zor!

Programlama Modelleri ) Paradigmaları ( Unstructured, Structured, Procedural, Modular, Object -oriented, Component based, DataFlow,

Modular Programlama Program herbiri kendi verisine sahip, belli bir iş için özelleşmiş ayrık parçalara ayrılır. Her parçanın kendi işileri için fonksiyonları vardır. Program, ana programın modülünün diğer modülleri (diğer modüllerin fonksiyonlarını) çalıştırması şeklinde bir ayrık yapıdadır. Modüller arası haberleşme bu amaçla yazılmış fonksiyonlar yolu ile olur.

Modular Programlama 4 5 6 7 8 9 0 Modul Bildirimleri Global Değişken G Yerel Değişken M Prosedür Yerel Değişken Z Değiş. Sonu

Modular Programlama Modul Bildirimleri Global Değişken G Yerel Değişken M Struct Tanımı Procedür Tanımı Procedür Tanımı 4 5 Struct T anımı Procedür Tanımı 6 7 Yerel Değişken Z Procedür Tanımı 8 9 0 Prosedür Değiş. Sonu Struct T anımı Procedür Tanımı Procedür Tanımı

Modular Programlama # include < A> Global Değişken G Yerel Değişken M Struct T anımı Procedür T anımı Procedür T anımı 4 5 # include < A> 6 7 Yerel Değişken Z 8 9 0 Prosedür Değiş. Sonu

Örnek Program ) Procedural Programlama ( // ANA PROGRAM prog. cpp #include matvec.h int main() { double xd[0][00], xb[0],xr[00]; matvecmul(xb,xd,xr,0,00); return 0; } // M ODULE matvec. cpp #include matvec.h matvecmul (double *res, double *mat, double *vec, int rown, int coln ) { double z; for (y=0; y<rown; y++) { z=0.0; for (x=0; x<coln; x++) z=z+mat[(y*coln)+x]*vec[x]; // HEADER matvec. h matvecmul (double *res, double *mat, double *vec, int rown, int coln ); } } res[y]=z;

Modular Programlama Modüller veri ve fonksiyon karmaşasına bir çözüm getirir. Ancak bu struct ve fonksiyon çeşitliği sorununu çözmez, artırır. Ayrık veri yapıları, veri tipi güvenliğini bozar. Hazırlanırken ayrı yerlerde oldukları için modül yazımı kolaydır, ama kullanırken tekrar bir araya geldikleri için kullanımları karışıklaşır. Verileri ayrılığı, bilmediğiniz bir kodun verilerini koruma zorunluluğunu (zorluğunu) getirir.

Örnek Program (Kimlik Karşılaştır) Struct Kimlik MODULE A MODULE B MODULE C Tümü Aynı struct Kimlik struct Kimlik struct Kimlik İsimde! { { { char Soyad ] [; char Soyad ] [; char Soyad ] [; char Dini] 6 [; char Ad] [; char Ad] [; char Ad] [; char Kan] 8 [; }; char Baba ] [; char Baba ] [; char KO_ il] [; char Ana] [; char Ana] [; char KO_ ilce] [; char Dyeri ] [; char Dyeri ] [; char KO_ mahkoy ] [; unsigned Dtarihi; unsigned Dtarihi; char KO_ ciltno] 8 [; char Cins; char Cins; char KO_ aileno ] 8 [; char MedeniHali; char MedeniHali; char KO_ sirano ] 8 [; }; };

Örnek Program (Kimlik Karşılaştır) Struct Kimlik / / MODULE A, parametreli Kimlik struct' ını kullanıyor Karsilastir ( struct * Kimlik a, struct Kimlik b ) {... }; / / MODULE B, 8 parametreli Kimlik struct' ını kullanıyor Karsilastir ( struct * Kimlik a, struct Kimlik b, struct Bakilacak c ) {... }; / / MODULE C, 7 8 parametreli Kimlik struct' ını kullanıyor Karsilastir ( struct * Kimlik a, struct Kimlik b, struct Bakilacak c ) {... };

Programlama Modelleri (Paradigmaları) Unstructured, Structured, Procedural, Modular, Object- oriented, Component based, DataFlow,

Object - Oriented Programlama 4 5 6 7 8 9 0 Global Değişken G int Yerel Değişken M Method Method 4 Yerel Değişken Z Değiş. Sonu int Pro te cte d: Public: char double double int Method Method Method Method int 4

Class class Tarih { priv ate: public: int Gun; int Ay; int Yil; int gun() { return Gun;} int ay() { return Ay;} int yil() { return Yil;} bool Tarih:: ayarla( int g, int a, int y) } { if (( g > 0 )&&( g< = )) return false; if (( a > 0 )&&( a< = )) return false; if (( y > 0 )&&( g< = 9 9 9 9 )) return false; Gun= g; Ay= a; Yil= y; return true; bool ayarla( int g, int a, int y); };

Class T arih bayram; Tarih tatiller[ 0 ]; T arih * birgun; bayram. Gun= ; bayram. Ay= 4 ; bayram. Yil= 0 0 9 ; HATA! HATA! HATA! Derlenemez birgun = &bayram; tatiller[0 ]. ayarla(,, 0 0 ); x= tatiller[5 ]. gun(); bayram. ayarla(,4, 0 0 9 ); cout< < Gün: < < bayram. gun(); birgun- > ayarla(,, ); cout< < Ay: < < bayram. ay(); cout< < Yıl: < < bayram. yil(); birgun- > ayarla(, 6, 0 0 9 ); birgun- > ayarla(-,0,- 9 );

Örnek Program ) Object - Oriented Programlama ( // ANA PROGRAM prog. cpp #include matvec.h // M ODULE matvec. cpp #include matvec.h int main() { matrix xd(0,00); vector xb(0), xr(00); return 0; } xb=xd*xr; // HEADER matvec. h matrix::matrix (int x, int y) {... } vector * matrix::operator* (matrix x, vector y) {... } vector::vector(int s) {... } vector & vector::operator= (vector & a) {... } class matrix {... } class vector {... }

Programlama Modelleri (Paradigmaları) Unstructured, Structured, Procedural, Modular, Object -oriented, Component based, DataFlow,

Referanslar ) ( More than a Gigabuck : Estimating GNU/ Linux' ssize '' by David A. Wheeler, located at http:// wwwdwheeler.. com / sloc ) ( Estimating the Total Development Cost of a Linux Distribution By Amanda McPherson, Brian Proff itt, and Ron Hale- Evans. http:// wwwlinuxfoundation.. org/ publications / estimatinglinux. php ) ( Code Complete, second edition, Steve McConnell, Microsoft Press, ISBN : 0-756 -967-0 ) 4 ( Introduction to Object - Oriented Programming Using C + +, Peter Müller, http:// gd. tuwien. ac. at / languages / c/ c+ + oop - pmueller / tutorial. html ) 5 ( http:// en. wikipedia. org/ wiki / Object - orientated _ programming