C Programlama Dili – Fonksiyonlar ile Çalışmak

ccpl

İyi programlamanın temelinde sadece çok iyi algoritma bilgisi bulunmaz.İyi programcı aynı kodlarını en iyi şekilde tasarlayan kişidir.Yazdığınız bir programın kalitesi aynı zamanda o programın kodlarıyla uğraşacak başka kişilerin sizin yazdığınız kodları ne kadar iyi anladığı ile alakalıdır.Hatta bu durum sizi daha sonra zor durumlara da sokabilir.

Programcının hazırladığı kodları minimal derecede dahi olsa parçalara ayırması demek beraberinde bir çok konuyu da rahatlıkla çözümleyebileceği anlamına gelir.Burada ki parçalara ayırmakta ki kasıt en ufak bir operasyonu bile fonksiyonlara bölerek kodu çalışır hale getirmektir.Fonksiyonlar şu şekilde ifade edilir :

int fonksiyonadi ()
void fonksiyonadi ()

Ancak kafanız karışmasın, fonksiyonlar daha bir çok ifade ile de tanımlanabilir.Biz şimdilik temel konulara değineceğiz.

Hemen bir önce ki yazıda verdiğim örnek ile konuyu destekleyelim :

#include 
int main ()
{
int sayi = 'a';
char harf = 15;
printf ("INT Veri turu su anda : %d\n", sayi);
printf ("INT Veri turu su anda : %c\n\n", sayi);
printf ("CHAR Veri turu su anda : %d\n", harf);
printf ("INT Veri turu su anda : %c\n", harf);
system ("pause");
return 0;
}

Burada yaptığımız işlemi tek fonksiyon ile bitirdik.Basit gibi görünen bu kod yapısı yüzlerce satır kodun olduğu bir yapı içerisinde içinden çıkılamaz bir hale gelecektir.Şimdi bu kodumuzu fonksiyonlara ayırdığımızı düşünelim :

#include 
void goster ()
{
int sayi = 'a';
char harf = 15;
printf ("INT Veri turu su anda : %d\n", sayi);
printf ("INT Veri turu su anda : %c\n\n", sayi);
printf ("CHAR Veri turu su anda : %d\n", harf);
printf ("INT Veri turu su anda : %c\n", harf);
}
int main ()
{
goster ();
system ("pause");
return 0;
}

Bu aÅŸamadan sonra “ goster () ” fonksiyonu içerisinde yapacağınız deÄŸiÅŸklikler “ main () ” fonksiyonunu pekte ilgilendirmemektedir.

Fonksiyonlar kendi aralarında veri alışverişinde bulunabilirler.Buna en güzel örnek ise basit bir hesap makinası kodu örneği olabilir :

#include 
int topla ( int sayi1, int sayi2 )
{
int sonuc;
sonuc = sayi1 + sayi2;
return sonuc;
}
int cikar ( int sayi1, int sayi2 )
{
int sonuc;
sonuc = sayi1 - sayi2;
return sonuc;
}
int bol ( int sayi1, int sayi2 )
{
int sonuc;
sonuc = sayi1 / sayi2;
return sonuc;
}
int carp ( int sayi1, int sayi2 )
{
int sonuc;
sonuc = sayi1 * sayi2;
return sonuc;
}
int islem ()
{
int sayi1;
int sayi2;
int islemTuru = 0;
int sonuc;
printf ("Islem Yapilacak 1. sayi : ");
scanf ("%d", &sayi1);
printf ("Islem Yapilacak 2. sayi : ");
scanf ("%d", &sayi2);
printf ("Yapilacak islem icin operator secin \n\n Toplama [1]\n
Bolme [2]\n Carpma [3]\n Cikarma [4] : ");
scanf ("%d", &islemTuru);
switch (islemTuru)
{
case 1 :
{
sonuc = topla ( sayi1, sayi2 );
printf ("Islem sonucu : %d \n", sonuc);
break;
}
case 2 :
{
sonuc = bol ( sayi1, sayi2 );
printf ("Islem sonucu : %d \n", sonuc);
break;
}
case 3 :
{
sonuc = carp ( sayi1, sayi2 );
printf ("Islem sonucu : %d \n", sonuc);
break;
}
case 4 :
{
sonuc = cikar ( sayi1, sayi2 );
printf ("Islem sonucu : %d \n", sonuc);
break;
}
default :
{
printf ("Hatali giris");
break;
}
}
}
int main ()
{
islem ();
system ("pause");
return 0;
}

Kod içerisinde göreceğiniz gibi henüz daha aşina olmadığımız bazı konular var.Onları sonra ki yazılarda zaten göreceğimiz için ben size şimdilik hem değişkenler hem de operatörler hakkında kısa kısa bilgiler vereceğim.

Dikkat ederseniz bir deÄŸiÅŸkene ” degisken = 10 ” demek yerine ” degisken = degisken1 * degisken2 ” ifadesini kullanabiliyoruz ve bunda bir sorun yok.Ama aynı deÄŸiÅŸkeni ” int degisken “  ifadesiyle tanımlamak yerine ” int degisken = degisken1 * degisken2 ” olarakta tanımlayabilirdik, fakat bu kötü programcılığa girecektir.

Diğer bir konuda aynı isimlerde bir çok degişken tanımlayabiliyor olmamız ancak sakın unutmayın, değişkenler global olarak tanımlanmadıkları sürece fonksiyon blokları içerisinde oluşturulur ve yok edilirler.Globalden kasıt ise fonksiyonların başlama noktasının dahi üzerinde ki tanımlama alanıdır.Örneğin :

#include
int degisken; // bu değişken artık tüm kod satırlarında kullanılabilir.
int birseyyap ()
{
        int degisken2; // bunun ömrü birseyyap fonksiyonu çalışıp durana kadardır
        degisken = 5; // global değişken artık 5 değerini aldı ve ömrü devam ediyor.
}

Fonksiyonlarınızı hazırlarken mümkün olduÄŸu kadar bulunabilir olmasına dikkat etmelisiniz.Yapılacak iÅŸlem ile alakalı isimler verdiÄŸiniz fonksiyonlarınız programcılık hayatınızı daha da kolaylaÅŸtıracaktır.Ayrıca fonksiyonlarınıza isim verirken iki kelime kullanmanız gereken durumlarda “ _ ” kullanabilirsiniz :

int toplama_Islemi ()

Veya ikinci kelimenin ilk harfi büyük olabilir :

int toplamaIslemi ()

Bu şekilde de yazabilirsiniz ancak arada ki görsel farka dikkat edin :

int toplamaislemi ()

Örnek olarak verdiÄŸim kodda deÄŸer döndüren fonksiyonların çalışma mantığını çok rahatlıkla anlayabileceÄŸinize inanıyorum.Ancak 2 deÄŸer alan bir fonksiyona 3. deÄŸer gönderemeyeceÄŸinizi unutmayın.Ayrıca kod içerisinde bahsi geçen ” islem () ” fonksiyonunun kod bloÄŸunu, fonksiyonlar da ki sıralama ve kod derleme mantığını anlayabilmek için en tepeye çıkararak neler olduÄŸunu görmeniz sizin için iyi bir deneyim olacaktır.

Bu arada 4 işlem operatörünü de kısaca görmüş oldunuz.

( Code Snippet ile ilgili bir sorundan dolayı & ifadesi &amp olarak görünmekte.Bu yüzden o bölümü sadece & olarak değiştirmelisiniz )

Kolay gelsin.

Yorum Yaz ( Türkçe gramer ve imla kurallarına uymayan yorumlar yayınlanmaz. )