CPP 018 – Fonksiyonlara Giriş

Şuana kadar tüm kodlarımızı main fonksiyonuna yazdık. Diğer fonksiyonlar da aslında aynı mantıkla çalışıyor.

#include <iostream>
using namespace std;

void merhaba() {
	cout << "Hello World!" << endl;
}

int main() {
	merhaba(); // fonksiyonu çağırdık
}

Öncelikle fonksiyonumuzu tanımlıyoruz sonra çağırıyoruz. Fonksiyonumuz yapısına bakarsak

\underbrace{void}_{(1)}~~\underbrace{merhaba}_{(2)}\underbrace{()}_{(3)} \underbrace{\{\dots\}}_{(4)} \\

\begin{align*}
&(1)Dönüş~tipi\\
&(2)Adı\\
&(3)Aldığı~parametreler\\
&(4)Gövdesi
\end{align*}

Aslında biz bunu daha önce görmüştük:

Bir~Fonksiyonun~Anatomisi

\\~~\\
\underbrace{int}_{(1)} ~~ \underbrace{main}_{(2)}\underbrace{()}_{(3)}
\underbrace{\{~~~~\}}_{(4)}
\\~~\\
  • Fonksiyonlarımız isimleri var tıpkı değişkenlerimizin olduğu gibi
  • Fonksiyonun dönüş tipi int, char gibi şeyler olabileceği gibi void de olabilir. Eğer void ise o fonksiyonun herhangi bir değer döndürmeyeceği anlamına gelir.
  • Fonksiyonun alacağı değişkenler () parantezleri içine yazılır. Eğer bir değişken almıyorsa boş bırakıyoruz. (int a, int b)
  • {} parantezlerinin içine fonksiyonun içerdiği kodları yazıyoruz.

şimdi fonksiyona bir değişken atalım.

#include <iostream>
using namespace std;

void merhaba(int a) {
	cout << a << endl;
	cout << "&a in merhaba: " << &a << endl;
}

int main() {
	int a = 5;
	cout << "&a in main: " << &a << endl;
	merhaba(a);
}
// &a in main : 000000BC836FFB14
// 5
// & a in merhaba : 000000BC836FFAF0

& operatörü ile bir değişkenin adresini yazabiliriz. Burada main fonksiyonun içindeki a değişkeniyle merhaba fonksiyonunun içindeki a değişkeni aslında farklı değişkenlerdir ve bellekte farklı yerleri tutar. İsimleri aynı olabilir ya da farklı olabilir bu herhangibir şeyi değiştirmez.

Yani işin özü fonksiyona atanan değişkenlerin bellekte bir kopyası oluşturulur. Bu kopya fonksiyonun içinde geçerlidir.

Neden fonksiyonları kullanıyoruz?

  • Aynı kod parçasını tekrar ve tekrar kullanabilmek için.
  • Programımızı anlamlı alt parçalara bölüp daha anlaşılabilir hale getirmek için.

Bu dediklerimin ilk başta çok da anlam ifade etmediğinin farkındayım. Fakat ilerde daha karmaşık kodlara yazmaya başladıkça ne kadar kullanışlı olduğunu farkedeceksiniz.

Fonksiyonu çağırmak

  • fonksiyonu çağırmak için fonksiyonun ismini ve () içinde aldığı parametreleri yazıyoruz.
  • fonksiyonu çağırmadan önce tanımladığımıza emin olmalıyız. C++ da compiler dosyaları yukarıdan aşağıya okur. Okurken öncelikle merhaba fonksiyonunu okuyup tanıması lazım. Eğer main fonksiyonunu önce merhaba fonksiyonunu sonra yazsaydık kodumuz derleme hatası verecekti: identifier not found

Örnek

#include <iostream>
using namespace std;

float kare_alani_hesapla(float a) {
	return a * a;
}

float dikdortgen_alani_hesapla(float a, float b) {
	return a * b;
}

int main() {
	cout << kare_alani_hesapla(5) << endl; // 25
	cout << dikdortgen_alani_hesapla(3, 5) << endl; // 15
}

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *