FONKSİYONLAR Programlamada fonksiyon kullanmanın en önemli sebebi kodların tekrar edilmesini engellemektir. Örneğin; karekök yada üsalma işlemi yapan bir fonksiyon tasarlarsak her karekök yada üsalma işlemi yaptığımızda bu işlemlere ait kodları yazmaktan kurtulmuş oluruz. Fonksiyon kullanımının diğer sebebi ise programları karmaşıklıktan kurtarmasıdır. Program parçalara bölünüp bu parçaların birleştirilmesi sureti ile sonuca ulaşılmasıdır.
FONKSİYONLARIN TANIMLANMASI tür fonksiyonAdi(parametreler) { Komutlar } Burada tür, fonksiyon içindeki işlemlerin sonucunda bize dönecek değerin türüdür. Döndürmek istediğimiz değer tamsayı (int), karakter (char), vb. olabilir. Örneğin; int toplam() fonksiyonunun bize döndürdüğü değer tamsayı olacaktır. Eğer fonksiyonumuz değer döndürmüyorsa tanımlamadaki tür kısmına void yazılacaktır. Void ekranayaz() cout<<“Deger dondrmeyen fonksiyon” ;
FONKSİYON PROTOTİPLERİ Fonksiyon prototipleri fonksiyonları derleyiciye tanıtmak için kullanılır. C++ da fonksiyonun tanımlanmasının fonksiyon çağrılmadan önce yapılması gerekmektedir. Program kodu derleyicide yukarıdan aşağıya doğru çalıştırılır. Eğer fonksiyon tanımlanması fonksiyon çağrıldıktan sonra yapıldıysa, derleyiciye tanımadığı bir fonksiyonu çağırmasını söylemiş oluruz. Bu durumda hata verecektir. Bu hatanın önüne geçmek için fonksiyon prototipleri kütüphane dosyalarının hemen altında tanımlanır. Prototipini tanımladığımız bir fonksiyonu heryerde oluşturabilir. Prototip örnekleri: int karekok (int x); int karekok(int);
#include<iostream> using namespace std; int enbuyuk(int, int, int); int main(){ int x,y,z; cout<<"Uc sayi giriniz:"<<endl; cin>>x>>y>>z; cout<<"Sayilarin en buyugu:"<<enbuyuk(x,y,z)<<endl; system("PAUSE"); return 0; } int enbuyuk(int a, int b, int c){ int enb; if(a>b) enb=a; else enb=b; if(enb<c) enb=c; return enb;
#include <iostream> using namespace std; void kareal(){ int x; cout<<"Karesi alinacak sayiyi giriniz"; cin>>x; cout<<"Sayinin karesi:"<<x*x<<endl; } int main(){ kareal(); system("PAUSE"); return 0;
#include<iostream> using namespace std; int deneme(){ int x=10; return x; } int main(){ cout<<deneme()<<endl; system("pause"); return 0;
#include<iostream> using namespace std; int topla(){ int x,y; cout<<"2 sayi girin:"<<endl; cin>>x>>y; return x+y; } int main(){ cout<<"Sayilarin toplami:"<<topla()<<endl; system("pause"); return 0;
#include<iostream> using namespace std; void degerile(int y){ y=9; cout<<"Deger ile cagirma!!"<<endl; } int main(){ int a=5; cout<<"Degiskenin ilk degeri:"<<a<<endl; degerile(a); cout<<"Deger ile cagrildiktan sonraki degeri:"<<a<<endl; system("pause"); return 0;
#include<iostream> using namespace std; void ekranayaz(int); int main(){ int i; cout<<"bir sayi giriniz:"; cin>>i; ekranayaz(i); system("pause"); return 0; } void ekranayaz(int x) {cout<<"Fonksiyonuna parametre olarak verilen deger:"<<x<<endl;
#include<iostream> using namespace std; int usalma(int, int); int main(){ int a,b; cout<<"Taban"; cin>>a; cout<<"Us:"; cin>>b; cout<<a<<"^"<<b<<"="<<usalma(a,b)<<endl; system("pause"); return 0; } int usalma (int x, int y) { int t=1; for (int i=1;i<=y; i++) t=t*x; return t;
#include<iostream> using namespace std; int faktoriyel(int); int main(){ int x; cout<<"bir sayi giriniz:"; cin>>x; cout<<"Girilen sayinin faktoriyeli:"<<faktoriyel(x)<<endl; system("pause"); return 0; } int faktoriyel(int x){ int i, fakt=1; for(i=x;i>0;i--) fakt=fakt*i; return fakt;
YİNELEMELİ FONKSİYONLAR Aşağıdaki örnekte (recursive) yani özyinelemeli fonksiyona örnek görmektesiniz. Yinelemeli fonksiyonlar kendi kendini çağıran fonksiyonlardır. int faktoriyel (int a) olarak verilmiş olan fonksiyon içerisinde kendi kendisini faktoriyel (a-1) olarak çağırıp (a-1)’in faktoriyeli ile a yı çarpmak suretiyle faktoriyel hesaplama işlemi yapıldığına dikkat ediniz.
#include <iostream> using namespace std; int faktoriyel(int); int main(){ int sayi; cout<<"Faktoriyeli alinacak sayiyi giriniz:"; cin>>sayi; cout<<"Sayinin Faktoriyeli:"<<faktoriyel(sayi)<<endl; system("pause"); return 0; } int faktoriyel (int a){ int x; if(a>1) x=a*faktoriyel(a-1); else x=1; return x;