Karmaşık yapılı C++ programlarındaki bu karmaşıklığı azaltmak ve programı modüler bir yapıya kavuşturmak için fonksiyonlardan yararlanılır.
Fonksiyon, programcının tekrarlanan kodlar yazmasını önler. Fonksiyon belirli bir adı olan program parçalarıdır. Fonksiyonların çalışabilmesi için bir başka fonksiyondan adı ile çağrılması gerekmektedir.
Aslında C++ programları fonksiyonlardan oluşur.
Şu ana dek kullandığımız main() de bir fonksiyondur.(Ana fonksiyon olarak kullanıyorduk)
Ancak bu fonksiyonun bir başka fonksiyon içinden çağrılmasına gerek yoktur. Her C++ programında bir main() fonksiyonun yer alması gerekmektedir. main() fonksiyonu, program çalıştırıldığında otomatik olarak çağrılan bir fonksiyondur. Bir main() fonksiyonu içinden bir başka fonksiyon çağrılabildiği gibi, herhangi bir fonksiyon içinden bir başka fonksiyon çağrılabilir.
Fonksiyon(lar) Nasıl Çalışır ?
Bir fonksiyon çalıştırıldığında, onun bir işi yerine getirmesi beklenecektir. Fonksiyonun döndürdüğü (ürettiği) değer onu çağıran fonksiyona aktarılarak bu değer işlenmeye devam edebilir.
Veya fonksiyon bir değer üretir, ancak bu değer ana programa aktarılmaz. Bir fonksiyon çalıştıktan sonra, kontrol yeniden onu çağıran programa geçer. Ana programın bir alt satırından itibaren diğer deyimler çalışmaya devam eder.
Fonksiyonların Tanımlanması
Fonksiyonların kullanılabilmesi için belirli bir biçimde tanımlanması gerekmektedir. Bu yapı aşağıda belirtildiği biçimde olacaktır. Her şeyden önce bir fonksiyonun mutlaka bir adı olmalıdır.
Kod: Tümünü seç
tür fonksiyon_adı(parametre_listesi)
{
deyimler
}
Örnek:
Bir sayi() fonksiyonunun tamsayı değer döndürececeğini varsayalım. Bu durumda,
Kod: Tümünü seç
int sayi();
Kod: Tümünü seç
int sayi(void);
Kod: Tümünü seç
int sayi(int x);
Kod: Tümünü seç
void sayi();
Kod: Tümünü seç
void sayi(int x);
Örnek :
Bir ana fonksiyondan bir başka fonksiyon çağırarak işlem yapmak istiyoruz. Çağırmak istediğimiz fonksiyonun adı mesaj_gor() olsun ve bu fonksiyon sadece bir mesaj görüntüleme işlemini yerine getirsin;
Kod: Tümünü seç
#include <iostream>
using namespace std;
int mesaj();
int main()
{
mesaj();
}
int mesaj()
{
cout << "mesaj basariyla goruntulendi.." << "\n";
system("PAUSE");
}
Fonksiyonun Değer Döndürmesi
Bir fonksiyon çalıştığında, doğal olarak bir sonuç üretecektir.
Bu sonucun, kendisini çağıran fonksiyona gönderilmesi veya bir başka deyişle döndürülmesi söz konusu ise, fonksiyon içinde return deyimini kullanırız.
Örnek :
Bir ana fonksiyondan bir başka sayilar() isimli fonksiyon çağrılmaktadır. Söz konusu sayilar() fonksiyonunda sayi değişkeninin değeri 5 olarak belirlenmiştir. Bu değeri ana programa döndürmek istiyoruz.
Kod: Tümünü seç
#include <iostream>
using namespace std;
int sayilar();
int main()
{
cout << "Sonuc:" << sayilar()<< "\n";
system("PAUSE");
}
int sayilar()
{
int sayi=5;
return (sayi);
}
Her fonksiyon bir diğerinden bağımsız olarak düzenlenir. Bir fonksiyon içinde yer alan bir değişkeni bir başka fonksiyon içinde aynen kullanamayız. Bunun için farklı yöntemlere başvurulur.
Bunlardan birincisi, fonksiyonlar arasında parametre geçirilmesidir.
Parametre geçirilmesini sağlamak için fonksiyonlar şu şekilde tanımlanır:
Kod: Tümünü seç
tür fonksiyon_adı (parametre_listesi)
{
deyimler
}
Örnek:
Bir fonksiyon yardımıyla üs alma işlemlerini yerine getirmek istiyoruz. Bu işlem, x ve y verildiğinde ifadesinin değerini hesaplayacaktır. Programımızı hazırlayalım ;
Kod: Tümünü seç
#include <iostream>
using namespace std;
int us(int sayi, int ussu);
main ()
{
cout << "Islem sonucu :" << us(5,2) << "\n";
system("PAUSE");
}
int us(int sayi, int ussu)
{
int sonuc=1;
int i;
for(i = 0; i < ussu; i++)
sonuc *= sayi;
return(sonuc);
}
Küresel Değişkenler Yardımıyla Fonksiyonlar Arasında Değer Taşımaksonuç 25 dir .
Fonksiyonlar arasında parametre geçirerek veri aktarılması işleminin nasıl gerçekleştirilebildiğini gördük.
Benzer bir sonuca ulaşmak için küresel değişkenlerden de yararlanabiliriz. Küresel değişkenleri derslerin başında incelemiştik. Küresel değişkenler, programın çalışması boyunca, fonksiyonlar dahil, değeri geçerli olan değişkenlerdir.
Küresel değişkenler fonksiyonların içinde değil, ondan önce tanımlanır. Bir küresel değişken tanımından sonra yer alan tüm fonksiyonlar için bu değişkenin değeri geçerlidir.
Static Değişkeninin Fonksiyonlarda Kullanımı
Bu tür değişkenler, fonksiyon terkedildiğinde değerlerini kaybetmezler. Aynı fonksiyon bir daha çalıştırıldığında, daha önceki değer yeniden kullanılabilir.
Program içindeki bir fonksiyonun ya da küresel değişkenin başına static tanımı yapıldığı takdirde, bu fonksiyon veya değişken diğer kaynak program dosyalarına karşı erişilmez olacaktır. Bunun anlamı, diğer dosyalardan yapılacak erişimlere karşı "gizli" kalacaktır.
Hazır Fonksiyon Nedir ?
C++'da iki fonksiyon türü ile karşılaşıyoruz. Bunlardan birincisi C++'nın hazır fonksiyonları, diğer ise kullanıcı tarafından yaratılan fonksiyonlardır.
C++'nın hazır fonksiyonları, adından da anlaşılabileceği gibi, programcıya hazır olarak sunulan fonksiyonlardır. Bu fonksiyonlar bir C++ kitaplığında yer alır. Bu kitaplık dosyası programın başında #include deyimi ile programa dahil edilir. Böylece program bu kitaplık içinde yer alan tüm fonksiyonları doğrudan kullanabilir.
Örnek:
Program içinde C++'nın cos() matematiksel fonksiyonu kullanmak istiyoruz. Bu fonksiyonun kullanılabilmesi için, programın başında matematik kitaplığı programa dahil edilmelidir:
Kod: Tümünü seç
#include<math>