C++ Dersi: Nesne Tabanlı Programlama

Benzer belgeler
C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama

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

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama

DERSİN WEB SİTESİ:

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

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

MAK 1005 Bilgisayar Programlamaya Giriş. Fonksiyonlar. Prof. Dr. Necmettin Kaya

11- FONKSİYONLAR (FUNCTIONS)

BİL-142 Bilgisayar Programlama II

Hafta 13 Fonksiyonlar

10/17/2007 Nesneye Yonelik Programlama 3.1

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı

NESNEYE YÖNELİK PROGRAMLAMA

Fonksiyonlar (Altprogram)

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

Adım Adım C-II. Eksik kalmış konular

BİLG Dr. Mustafa T. Babagil 1

C++ Operatörler (Operators)

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İLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

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

1 PROGRAMLAMAYA GİRİŞ

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

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

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

Pointers (İşaretçiler)

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

BTEP243 Ders 3. class Yazım Kuralı:

Fonksiyon Türleri. Bildiğiniz gibi, C++'da iki fonksiyon türü ile karşılaşıyoruz. C++'nın kullanıma sunduğu hazır fonksiyonlar.

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

Deney 7: Fonksiyon Tanımlama ve Parametre Aktarım Yöntemleri

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

Dr. Fatih AY Tel:

Dr. Fatih AY Tel: fatihay@fatihay.net

Algoritma ve Programlama: Karar Yapıları ve Döngüler

C PROGRAMLAMA D İ L İ

Pointer Kavramı. Veri Yapıları

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

C++ Dersi: Nesne Tabanlı Programlama

HSancak Nesne Tabanlı Programlama I Ders Notları

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

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

Lambda İfadeleri (Lambda Expressions)

Bölüm 9. Altprogramlar ISBN

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR

Fonksiyonlar -Genel Test- A

Göstericiler (Pointers)

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

#ifndef COMPLEX_H #define COMPLEX_H

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

NESNEYE YÖNELİK PROGRAMLAMA

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

Örnek1: #include <iostream> #include <string> using namespace std;

C Programlama Dilininin Basit Yapıları

Diziler (Arrays) Çok Boyutlu Diziler

NESNEYE YÖNELİK PROGRAMLAMA THIS İŞARETÇİSİ, KOPYA YAPICI FONKSİYON, STATİK ELEMANLAR, ARKADAŞ SINIF VE FONKSİYONLAR,NESNE DİZİLERİ

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

FONKSIYONLAR(ISLEVLER)

BİL-142 Bilgisayar Programlama II

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

Operatörlere Yeni İşlevler Yüklenmesi (Operator Overloading)

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

sayi=3 harf=a reelsayi=8.72 Bellek durumu 5. İşaretç iler (pointers)

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

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

5. BÖLÜM (10ncu ve 11nci hafta)

BİLG Dr. Mustafa T. Babagil 1

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

PROGRAMLAMAYA GİRİŞ DERS 2

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

şeklinde tanımlanmıştır. O halde, dosyaları daha önceki bilgilerimizi kullanarak FILE *Dosya1, *Dosya2;

Sunum İçeriği. Programlamaya Giriş

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

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

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

Algoritma ve Programlama II Recursive Fonksiyonlar Dosyalama

Özyineleme (Recursion)

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

C++ Dersi: Nesne Tabanlı Programlama

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

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance

HSancak Nesne Tabanlı Programlama I Ders Notları

NESNEYE YÖNELİK PROGRAMLAMA

İsimler ve Kapsam. 24 Şubat Programlama Dilleri - Pamukkale Üniversitesi 1

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

enum, struct, union ve typedef Yapıları

Yrd. Doç. Dr. Caner ÖZCAN

Adım Adım C. Dr. Hidayet Takcı

C# Metotlar ve Metot Tanımlama

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

String ve Karakter Dizileri. Yrd. Doç. Dr. Fehim KÖYLÜ Erciyes Üniversitesi Bilgisayar Mühendisliği Bölümü

ALGORİTMA VE PROGRAMLAMA II

NESNE TABANLI PROGRAMLAMA Final Sınavı Cevapları

Main() Fonksiyonu. Main () Fonksiyonu. int main() İfadeler. Return ;

Transkript:

C++ Dersi: Nesne Tabanlı Programlama Bölüm 5: Fonksiyonlar

İçerik Standart Kütüphane Fonksiyonları Kullanıcı Tarafından Tanımlanan Fonksiyonlar Fonksiyon Tanımı Fonksiyon Prototipi void Fonksiyonları Parametreli Fonksiyonlar Varsayılan Parametreler Değişken Kapsamı Tekli Kapsam Çözme Operatörü :: Fonksiyon Yükleme Satıriçi Fonksiyonlar 2

Fonksiyonlar bir görevi yapan komutlar grubudur. Fonksiyonlar uzun bir problemi daha küçük problemlere bölerek çözmek ve program yazımını basitleştirmek için kullanılır. Fonksiyonu bir kere yazıp programın farklı yerlerinden çağırmak mümkündür. 3

Standart Kütüphane Fonksiyonları Standart kütüphanelerde değişik amaçlar için kullanılabilen birçok fonksiyon tanımlanmıştır. Örneğin, aşağıdaki fonksiyonları kullanabilmek için <cmath> kütüphanesini #include komutu ile programa katmamız gerekir. Matematiksel İfade Fonksiyon 3 5 pow(3.0,5.0) 16 sqrt(16.0) -8 abs(-8) 4

#include <iostream> #include <cmath> using namespace std; int main() cout<<"3 uzeri 5= "<<pow(3.0,5.0)<<endl; // 3 5 cout<<"16'nin kare koku= "<<sqrt(16.0)<<endl; // 16 cout<<"-8'in mutlak degeri= "<<abs(-8)<<endl; // -8 return 0; ÇIKTI 3 uzeri 5= 243 16 nin kare koku= 4-8 in mutlak degeri= 8 5

Kullanıcı Tarafından Tanımlanan Fonksiyonlar VeriTipi fonksiyonadı (parametre listesi) Veri Tipi Fonksiyon Adı Parametre Listesi int main () cout << "Merhaba C++!"; return 0; Fonksiyon Başlığı Fonksiyon Gövdesi 6

#include <iostream> using namespace std; int fakt(int x) int f=1; for (int i=1;i<=x;i++) f *= i; return f; main() int sayi; cout<<"sayi giriniz:"; cin>>sayi; cout<<sayi<<"!="<<fakt(sayi)<<endl; Fonksiyon Başlığı Fonksiyon Gövdesi Fonksiyon Çağırma ÇIKTI Sayi giriniz:4 4!=24 7

#include <iostream> using namespace std; int fakt(int x) 3... return f; 4 main() 1... 5 cout<<sayi<<"!="<<fakt(sayi)<<endl;... 2 8

#include <iostream> using namespace std; int fakt(int x) int f=1; for (int i=1;i<=x;i++) f *= i; return f; int main() int n,sonuc; cout<<"bir sayi giriniz:"; // Faktoriyel hesaplayan fonksiyon cin>>n; // Girilen n değerini kullanarak fonksiyon 4 kez çağırılır sonuc=(fakt(n)/4)*(6/fakt(n-1))+(fakt(n-2)/2)*(7/fakt(n-3)); cout<<"sonuc="<<sonuc<<endl; return 0; ÇIKTI Bir sayi giriniz:4 Sonuc=13 9

Fonksiyon Prototipi Kullandığımız her ismin (değişken, sabit, fonksiyon, vs.) kullanımından önce tanımlanması gerekir. Fonksiyonları önceden tanıtıp fonksiyon içeriğini istediğimiz yere, hatta başka bir dosyaya bile yazmamız, fonksiyon prototipi (function prototype) ile mümkün olabilmektedir int fakt(int x); int fakt(int); // veya 10

#include <iostream> using namespace std; int fakt(int); // Fonksiyon prototipi int main() int n,sonuc; cout<<"bir sayi giriniz:"; cin>>n; // Girilen n değerini kullanarak fonksiyon 4 kez çağırılır sonuc=(fakt(n)/4)*(6/fakt(n-1))+(fakt(n-2)/2)*(7/fakt(n-3)); cout<<"sonuc ="<<sonuc<<endl; return 0; int fakt(int x) // Faktoriyel hesaplayan fonksiyon int f=1; for (int i=1;i<=x;i++) f *= i; return f; 11

void Fonksiyonları Bir fonksiyon değer döndürmüyorsa veya parametre içermiyorsa, bu durumu void yazarak belirtmemiz gerekir. #include <iostream> using namespace std; void mesaj(void); int main() mesaj(); return 0; void mesaj(void) // Fonksiyon prototipi // Fonksiyon çağırımı // Mesaj yazan fonksiyon cout<< Kullaniciya mesaj ; cout<< ileten bir fonksiyon <<endl; ÇIKTI Kullaniciya mesaj ileten bir fonksiyon 12

#include <iostream> main using namespace std; void buyuk(float,float); // Fonksiyon prototipi int main() float x,y; buyuk cout<<"iki deger giriniz:"; cin>>x>>y; // İki sayı girilir buyuk(x,y); // İki sayı fonksiyona yollanır return 0; void buyuk(float a,float b) // İki sayının büyüğünü bulan fonksiyon cout<<"sayilarin buyugu :"; if (a>b)cout<<a<<endl; // İki sayı karşılaştırılır else cout<<b<<endl; // Büyüğü ekrana yazdırılır 3.4 2.1 x y 3.4 2.1 a b ÇIKTI Iki deger giriniz:3.4 2.1 Sayilarin buyugu :3.4 13

#include <iostream> using namespace std; double alan(void); // Fonksiyon prototipi int main() double sonuc; sonuc=alan(); // alan() fonksiyonu çağırılır, döndürdüğü değer sonuc'a atanır cout<<"alan = "<<sonuc<<endl; return 0; double alan(void) // En ve boyu okuyup dikdörtgenin alanını hesaplayan fonksiyon double en,boy; cout<<"dikdortgenin en ve boyunu giriniz:"; cin>>en>>boy; // En ve boyu okur return en*boy; // Alanı hesaplayıp döndürür ÇIKTI Dikdortgenin en ve boyunu giriniz: 2.2 3.3 Alan = 7.26 14

Parametreli Fonksiyonlar Çağırılan fonksiyonla çağıran fonksiyon arasında veri alışverişi parametre kullanılarak yapılır. Çağıran fonksiyonda yer alan parametrelere gerçek parametre, çağırılan fonksiyonda yer alan parametrelere formal parametre ismi verilir. Bu parametrelerin sayısının ve veri tipinin uyumlu olması gerekir. 15

void fon(int,float); int main() int x=5; float y=3.6; fon(x,y); void fon(int a, float b) Gerçek parametre Formal parametre Bu parametreler değer parametresi (call by value) veya referans parametresi (call by reference) olarak kullanılabilir. 16

Referans Değişkeni Referans değişkenleri bir değişkene farklı bir isim vermek için kullanılır. Referans değişkenleri & (referans) operatörü ile tanımlanır. int deger = 5; int &ref = deger; 5 ref deger ref = 7; 5 ref 7 deger 17

Referans değişkenlerini tanımladığımızda mutlaka ilk değer atamasını yapmamız gerektiğini, bir başka deyişle hangi değişkenin referansı olacağını belirtmemiz gerektiğini unutmayalım. int &ref; // X geçersiz tanımlama Bir referans değişkeni tek bir değişkenin referansı olabilir ve bu ilk atama sırasında belirlenir. Daha sonra bu referans değişkeni farklı bir değişkenle ilişkilendirilemez. int x=5,y=6; int &ref=x; ref=y; // X Geçersiz atama

Fonksiyon Parametreleri C++ dilinde parametreler iki şekilde yollanabilir. Değer Parametresi: Çağırılan fonksiyona gerçek parametre değerinin bir kopyası yollanır. Fonksiyonda formal parametre için bellekte bir yer açılır ve yollanan değer bu yere kopyalanır. Fonksiyon bitiminde yeni açılan yer yok olur ve gerçek parametrenin değeri etkilenmez. Referans Parametresi: Fonksiyona gerçek parametrenin referansı yollanır. Böylece fonksiyon başlığında yer alan formal parametre ve yollanan gerçek parametre bellekte aynı hücreyi paylaşır. Fonksiyonda formal parametreye yapılan herhangi bir değişiklik gerçek parametreye de yansır.

void fun (int x, int &y) //Fonksiyon başlığı Değer Parametresi Referans Parametresi fun(a,b); // Fonksiyon çağırımı a 2 b 3 y x 2

#include <iostream> using namespace std; void surpriz (int a, int &b) a=5; b=6; cout<<"a= "<<a<<" b= "<<b<<endl; int main() int i=10, j=20; surpriz(i,j); cout << "i= "<<i<<" j= "<<j<<endl; return 0; 5 10 a 10 6 20 b i ÇIKTI a= 5 b= 6 i= 10 j= 6 j

Varsayılan Parametreler Çağırılan fonksiyondaki formal parametreler ile fonksiyon çağırımında yer alan gerçek parametrelerin sayı ve tip olarak uyuşması gerekir. Çağıran fonksiyon, çağırdığı fonksiyona gerçek parametre yollamayacaksa, varsayılan parametreler (default parameter) kullanılır. Gerçek parametre yollanmadığında daha önce tanımlanmış değeri alan parametrelere varsayılan parametre denir.

#include <iostream> using namespace std; void fon(int x=1,int y=20) cout<<x<< <<y<<endl; int main() fon(5,10); fon(5); fon(); return 0; // Varsayılan değerlerle 2 formal parametre // 2 gerçek parametre ile fonksiyon çağırımı // 1 gerçek parametre ile fonksiyon çağırımı // Gerçek parametresiz fonksiyon çağırımı ÇIKTI 5 10 5 20 1 20

Varsayılan parametreler parametre listesinin sonunda yer almalıdır. void fon(int x=5, int y) // X Hata Varsayılan parametreleri fonksiyon prototipinde veya fonksiyon başlığında belirtebiliriz, ancak ikisinde birden belirtmememiz gerekir. void fon(int, int=5); // fonksiyon prototipi... void fon (int y, int x=5) // fonksiyon başlığı...

Değişken Kapsamı Her değişkenin program içinde hangi bölgelerde kullanılabileceğini gösteren bir kapsamı (scope) vardır. Değişken kapsamı yerel (local) ve genel (global) kapsam olmak üzere ikiye ayrılır. Genel Kapsam: Genel değişkenler fonksiyonlardan önce, programın başında yaratılan ve aynı isim yeniden tanımlanmadıkça programın her yerinde kullanılabilen değişkenlerdir. Yerel Kapsam: Yerel değişkenler fonksiyon içinde tanımlanan ve sadece o fonksiyon içinde kullanılabilen değişkenlerdir.

#include <iostream> using namespace std; void bir(void); int x; // Genel değisken int main() x=5; cout<<"fonksiyon cagirmadan once genel x: "; cout<<x<<endl; bir(); // Fonksiyon çağırımı cout<<"fonksiyon bittiginde genel x: "; cout<<x<<endl; return 0; void bir(void) int y=8; ÇIKTI Fonksiyon cagirmadan once genel x:5 Fonksiyon icinde genel x ve yerel y:5 8 Fonksiyon bittiginde genel x: 10 // Fonksiyon tanımı // Yerel degisken cout<<"fonksiyon icinde genel x ve yerel y: "; cout<<x<<" "<<y<<endl; x=10;

Tekli Kapsam Çözme Operatörü :: Genel değişkenlere, içinde aynı isimde yerel değişken tanımı olan fonksiyonlardan erişmek için Tekli Kapsam Çözme Operatörünü (::) kullanabiliriz. #include <iostream> using namespace std; void fon(); int i; int main() i=3; fon(); return 0; void fon() char i; // Genel i değişkeni // Yerel i değişkeni i='b'; ::i=6; cout<<"yerel i: "<<i<<endl; cout<<"genel i: "<<::i<<endl; ÇIKTI Yerel i: B Genel i: 6

Fonksiyon Yükleme Aynı isimde birden fazla fonksiyonu, farklı parametrelerle tanımlayabiliriz. Bu yönteme, fonksiyon yükleme ismi verilir. #include <iostream> using namespace std; int topla (int,int); double topla (double,double ) int main() ÇIKTI 1.topla fonksiyonu: 5 2.topla fonksiyonu: 9.9 cout<<"1.topla fonksiyonu: "<<topla(2,3)<<endl; cout<<"2.topla fonksiyonu: "<<topla(4.3,5.6)<<endl; return 0; int topla (int x, int y) // Tamsayı toplayan fonksiyon return x+y; double topla (double x, double y) // Reel sayı toplayan fonksiyon return x+y;

Satıriçi Fonksiyonlar Satıriçi (inline) fonksiyonlar, fonksiyonun kullanıldığı yerlere doğrudan yapıştırılır, böylece fonksiyon çağırma işleminin yapılmasına gerek kalmaz. inline VeriTipi fonksiyonadı() Örnek: //tanımlamalar inline double alan() return a*a;