10/17/2007 Nesneye Yonelik Programlama 3.1



Benzer belgeler
ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

BİL-142 Bilgisayar Programlama II

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

ELN1001 BİLGİSAYAR PROGRAMLAMA I

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

Hafta 13 Fonksiyonlar

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-1 Kapsama Kuralları & Rasgele Sayı Üretimi & Rekürsif (Özyinelemeli) Fonksiyonlar

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

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

Dr. Fatih AY Tel: fatihay@fatihay.net

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

PROGRAMLAMAYA GİRİŞ DERS 2

Pros and Cons of Pointers. Pointers. Avantajlar. Dezavantajlar

C++ Dersi: Nesne Tabanlı Programlama

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

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

Yrd. Doç. Dr. Caner ÖZCAN

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

BİL-142 Bilgisayar Programlama II

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

C++ Dersi: Nesne Tabanlı Programlama

BİLG Dr. Mustafa T. Babagil 1

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Fonksiyonlar -Genel Test- A

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

Fonksiyonlar (Altprogram)

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

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

C PROGRAMLAMA D İ L İ

Nesne Yönelimli Programlama

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

Programlama Dillerinde Kullanılan Veri Tipleri

Yrd. Doç. Dr. Caner ÖZCAN

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

BTEP243 Ders 3. class Yazım Kuralı:

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

Bölüm 9. Altprogramlar ISBN

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.

BLM 112- Programlama Dilleri II. Hafta 1 Giriş, Kapsama Kuralları ve Rasgele Sayı Üretimi

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

Bilgisayar programlama III Fonksiyonlar

Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama

C++ Class larina baslangic. C++ Versus C Object-oriented Language C++ Structure dan Object Create etmek. Structure tanimlama.

Nesne Tabanlı Programlama

1 PROGRAMLAMAYA GİRİŞ

Programlama Dilleri 1. Ders 12: Belirleyiciler ve Niteleyiciler

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

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

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

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

C++ Dersi: Nesne Tabanlı Programlama

DERSİN WEB SİTESİ:

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

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

C++ Statements. { ve } arasında ifade edilen bir dizi statement bir compound statement (birleşik ifade) oluşturur.

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

11- FONKSİYONLAR (FUNCTIONS)

BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING)

NESNEYE YÖNELİK PROGRAMLAMA

C Programlama Dilininin Basit Yapıları

BLM 112- Programlama Dilleri II. Hafta 2 C Programlarının Bellek Düzeni ve Rekürsif (Özyinelemeli) Fonksiyonlar

C++ Dersi: Nesne Tabanlı Programlama

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

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

Yordamsal Tabanlı Programlama

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

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

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

Fall Object-Oriented Programming Laboratory 02 - Structures

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

Sunum İçeriği. Programlamaya Giriş

Fonksiyonlar - Functions. Örnek. Örneğin. C dilinde 5/13/2011. ENF-102 Jeoloji

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

const objects & const member functions

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

HSancak Nesne Tabanlı Programlama I Ders Notları

C++ Programming: Program Design Including Data Structures, Third Edition. Bölüm 3: Giriş/Çıkış

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

C Programlama printf() Fonksiyonu

Nesne Tabanlı Programlama

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

C#(Sharp) Programlama Dili

Karabük Üniversitesi, Mühendislik Fakültesi... WEB TEKNOLOJİLERİ

/*int sayi1, sayi2,toplam=0;

C++ Operatörler (Operators)

NESNEYE YÖNELİK PROGRAMLAMA

Eln 1001 Bilgisayar Programlama I

ALGORİTMA VE PROGRAMLAMA II

C++ Dersi: Nesne Tabanlı Programlama

Pointer Kavramı. Veri Yapıları

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

ALGORİTMA VE PROGRAMLAMA II

BÖLÜM 4: DEĞİŞKENLER, SABİTLER VE OPERATÖRLER

Bir C programı C fonksiyonlarından oluşur. Bunlar arasında main() adı verilen ana fonksiyon daima olmalıdır. C fonksiyonları programı oluşturan

Temel Giriş/Çıkış Fonksiyonları

Programlama Dilleri 3

Transkript:

Procedure-Based Programming in C++ Çoğu gerçek dünya problemleri binlerce kod satırı gerektirir ( MS Windows NT 5.0 25 million dan fazla kod satırından oluşmaktadır). Yazılımın tasarımı, kodlanması ve bakımını kolaylaştırmak için programlama dilleri (C++ dahil) genelde tepeden aşağıya (top-down design) böl-yönet yönteminde olduğu gibi (divide-and-conquer) tasarım desteği sunarlar. C++ buiş için iki tip modül desteğine sahiptir: function ve class. C++ programcısının yazdığı yeni modüllerin daha önce yazılan function ve class ları çağırabilmesine destek verir. 10/17/2007 Nesneye Yonelik Programlama 3.1

Örnek: Standard Math Function #include <iostream> #include <cmath> // called maht.h in old C style int main() { double number, root; while (true) { cin >> number; cout << The square root of << number << is ; root = sqrt (number); cout << root << endl; } return 0; } 10/17/2007 Nesneye Yonelik Programlama 3.2

C++ Standart Kütüphanesindeki Fonksiyonlar C++ ın önceden tasarlanmış (pre-defined) zengin bir fonksiyon seti vardır: Giriş/çıkış (Input/output) Yaygın matematiksel fonksiyonlar - Common mathematical functions Katar düzenleyicileri - String manipulations Karakter düzenleyicileri - Character manipulations Hata kontrolleri - Error checking Mümkün olduğunca aynı işi yapan yeni fonksiyonlar yazmak yerine mevcut olanları kullanmak gerekir: Standart fonksiyonlar uzmanlarca yazılmıştır. Standart fonksiyonlar daha verimlidir. Standart fonksiyonlar daha taşınabilirdir. Yeni kod geliştirime maliyeti gerektirir. 10/17/2007 Nesneye Yonelik Programlama 3.3

10/17/2007 Nesneye Yonelik Programlama 3.4

Fonksiyon Deklarasyonu (Function Definitions) Yazım şekli: <return_type> <function_name> (<parameters>){ <local_variable_declerations> <procedure_body_statements> } Notes: Eğer geri döndürdüğü değer tipi (return type) bildirilmemişse, int default olarak kabul edilir. Eğer geri döndürdüğü değer tipi void ise, fonksiyondan bir değer dönmez. Dolayısıyle return ifadesine gerek yoktur. Eğer geri döndürdüğü değer tipi void değilse, fonksiyonda en az bir tane return ifadesine gerek vardır. 10/17/2007 Nesneye Yonelik Programlama 3.5

Function Declaration / Prototype Bir fonksiyon main veya diğer bir fonksiyon tarafından kullanılmadan önce deklaredilmelidir. Bu iş için iki yol vardır: Fonksiyonun ilk kullanımından önce fonksiyon tanımlamasını belirtmek, Fonksiyon deklerasyonunu (function prototype) fonksiyonun ilk kullanımından önce belirtmek 10/17/2007 Nesneye Yonelik Programlama 3.6

10/17/2007 Nesneye Yonelik Programlama 3.7

Değişkenin Etki Alanı (Variable Scope) Hem parametre değişkenleri ve hem de fonksiyon içerisinde tanımlanan değişkenler yerel değişkenlerdir (local variable). Yerel değişkenlere ancak ait oldukları fonksiyon içerisinden erişilebilir. Yerel değişkenlerin değerinin değişiminin, fonksiyon dışında tanımlı aynı isimlere sahip değişkenlere etkisi yoktur. Fonksiyon ilk olarak çağrıldığında, fonksiyonun yerel değişkenleri aktif duruma geçerler. Fonksiyon sonlandığında bu değişkenler hafızadan atılır. Bu kuralın bir istisnası: static olarak tanımlanan yerel değişkenler aynı fonksiyonun farklı çağrımlarında bir önceki değerini muhafaza ederler. 10/17/2007 Nesneye Yonelik Programlama 3.8

Fonksiyon Parametrelerinin İletilme Mekanizması Parameter Passing Mechanisms Call-by-value C++ nin varsayılan mekanizması Fonksiyonun çağrılmasında kullanılan parametreler (actual parameters )fonksiyonun çağrımında fonksiyonun deklerasyonunda oluşturulan parametrelere (formal parameters) kopyalanır. Fonksiyonun çağrıldığı yere gere dönüşünde Fonksiyonun çağrılmasında kullanılan parametrelerin değerleri değiştirilmez. Call-by-reference Fonksiyonun çağrılmasında kullanılan parametrelerin memory adresleri fonksiyonun deklerasyonunda oluşturulan parametrelere kopyalanır. Değer kopyalama olmadığından büyük nesneler için zaman ve memory alananından tasarruf edilir. Fonksiyonun çağrıldığı yere gere dönüşünde Fonksiyonun çağrılmasında kullanılan parametrelerin değerleri değiştirilebilir. Bunu önlemek için formal parameter const olarak tanımlanabilir. 10/17/2007 Nesneye Yonelik Programlama 3.9

10/17/2007 Nesneye Yonelik Programlama 3.10

Parametrelerin Tip Dönüşümüne Zorlanması Type coercion of parameters Eğer fonksiyon çağırma ifadesindeki parametrenin tipi fonksiyon deklarasyonundaki tipten farklı olması durumunda C++ parametrenin tipini mümkünse beklenilen tipe çevirir. Promotion: (çevirim sırasında bilgi kaybı yok) Örnek: char, bool, veya short int, int tipine dönüştürüldüğünde; double, long double tipine dönüştürüldüğünde Conversions: (bilgi kaybı olabilir) Örnek: float, int tipine çevrildiğinde; int, bool tipine çevrildiğinde 10/17/2007 Nesneye Yonelik Programlama 3.11

Başlık Dosyaları - Header Files Başlık dosyaları derleyicilere fonksiyon deklarasyonlarıyla (prototypes) ilgili bilgileri temin ederler Kullanıcı programlar diğer dosyalarda tanımlanan fonksiyonları çağırdığında gerekli tip kontrolü yerine getirilir #include önişlemci talimatı (processor directive) kullanılarak dosyalar programa dahil edilir: Standart kütüphane dosyaları (standard library functions) #include <iostream> Kullanıcı tarafından programlanmış fonksiyonlardan oluşan başlık dosyalar (User-programmed functions) #include myheader.h 10/17/2007 Nesneye Yonelik Programlama 3.12

10/17/2007 Nesneye Yonelik Programlama 3.13

10/17/2007 Nesneye Yonelik Programlama 3.14

rand ( ) function 0 <= rand( ) <= RAND_MAX aralığında sahte rasgele sayılar (pseudorandom numbers) oluşturur. RAND_MAX cstdlib başlık dosyasında tanımlanmış bir sabittir. srand ( ) fonksiyonu kullanılarak rand ( ) fonksiyonu için başlangıç tohumu (starting seed) belirlenebilir. Ölçeklendirme: 0.0 1.0 aralığında sayı elde etmek için float(rand()) / RAND_MAX 0 N arasında bir tamsayı elde etmek için rand() % (N+1) 10/17/2007 Nesneye Yonelik Programlama 3.15

Storage Classes, Scope ve Linkage Her bir nesnenin (değişkenler ve fonksiyonlar da dahil) bilgisayarın memorysinde bulunduğu zaman periyodunu belirleyen bir depolama sınıfı (storage class) i vardır. Her bir nene için bu nesneye program kodunun hangi bölümlerinin erişebilecegini belirleyen bir etki alanı (scope) var. Her bir nesne için bu nesneye hangi kaynak dosyaların erişebileceğini belirleyen bir bağlantı kurucu (linkage) var. 10/17/2007 Nesneye Yonelik Programlama 3.16

Automatic Storage Class Automatic storage class fonksiyonlardaki yerel değişkenler için varsayılan olarak oluşturulurlar. Dolayısıyla keyword auto kullanılmasa bile aksi belirtilmedikçe yerel değişkenler automatic storage class a sahiptirler. Otomatik değişkenler bloklar içinde değişkenler deklare edildiklerinde de oluşturulabilirler. register anahtar kelimesi hızlı hesaplama yapmak için ilgili değişkenin değerinin registerda tutulması gerektiği bilgisini derleyiciye bildirir. Örnekler: auto float density = 0.0; register int counter = 0; 10/17/2007 Nesneye Yonelik Programlama 3.17

static Storage Class static storage sahip değişkenler ve fonksiyonlar programın çalışması süresince (program running/execution time) mevcutlar. externstatic storage class: Fonksiyon ve blokların dışında tanımlanan değişkenler (global variables) varsayılan olarak extern static storage class a sahipler Eğer başlangıç değeri mevcutsa bu değer bir kez atanır. Yerel değişkenler static anahtar kelimesiyle static storage class a sahip olmaları sağlanabilir. 10/17/2007 Nesneye Yonelik Programlama 3.18

Nesnelerin Etki Alanları (Scope) File Scope: Fonksiyonların dışında, dosya içerisinde tanımlanan değişkenlerdir (global variables). Bu tip değişkenlere herhangi bir fonksiyonun herhangi bir yerinden erişilebilirler. Fuction Scope: Bir fonksiyonun içinde tanımlanan yerel değişkenler ve etiketler (case ve goto etiketleri). Bunlar sadece bulundukları fonksiyonlar içinde kullanılabilirler. Block scope: Block içinde deklare edilen değişkenler Function Declaration Scope: Fonksiyon deklarasyonlarında kullanılan tanımlayıcılar. Class Scope: daha sonra bahsedilecek 10/17/2007 Nesneye Yonelik Programlama 3.19

Recursion - Rekürsiyon- Yineleme Bir çok problem kendi kendini çağıran fonksiyonlarla kolayca çözümlenebilir: Ağaç yapılı veri yapıları (tree-structured data structures) Liste işleme (list processing) Bir cok matematiksel fonksiyon Fonksiyon kendi kendini problemin daha küçük bir parçasını çözmek için çağırır Karmaşıklığı (Complexity) azaltmak için bir divideand-conquer tekniğidir. 10/17/2007 Nesneye Yonelik Programlama 3.20