Gönderen Konu: C de Fonksiyon kurma  (Okunma sayısı 2639 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı asi kaptan

  • Deneyimli Üye
  • *
  • İleti: 332
  • Rep Gücü : 205
  • Cinsiyet: Bay
  • "Oyun bitince, şah da piyon da aynı kutuya konur''
    • Profili Görüntüle
    • İLLEGALPC
C de Fonksiyon kurma
« : Ağustos 04, 2009, 02:02:35 ÖÖ »

Fonksiyonlar Kurulumu:

Fonksiyonda en belirgin özellik void komutunun kullanılmasıdır. Void kelime anlamı itibariyel boş, geçersiz demektir. Ama biz burada void ile fonksiyon kuracağız.
Normal şartlarda #include <stdio.h> hemen sonra int main (void) komutunu kullanırız.
Fonksiyon kurulumunda işler başka. Bu defa #include <stdio.h> hemen sonra void komutunu çekiyoruz önce void yazıyoruz sonra da fonksiyonumuza bir isim veriyoruz ve en sonunda parantez içerisine int main komutunda belirtilecek olay giriyoruz.
Daha sonra int main (void ) komutunun altında bu void ile hazırlamış olduğumuz fonksiyon isimlerini yazarak topluca çalıştırabiliyoruz.
Her bir fonksiyon ismi kendi değerine bakar diğerine bakmaz. Mesela küp hesapla kendi a değerini hesaplarken , kare fonksiyonu kendi a değerini hesaplar ve biri diğerinin hesabına karışmaz.
Önemli olan main döngüsü içerisinde belirtilen fonksiyonun karşısındaki paranteze fonksiyonla ilgili değer girilsin.
Her fonksiyon bloğu void komutundan hemen sonra {} parantezleri arasında başlar biter
Her blokta girilen değerler kendi fonksiyonu için iş yaparken int main (void )bloğunda girilen her türlü değer bütün alt fonksiyonlar için global değer anlamını taşır.
Diyelim ki main bloğunda a ile tanımlanmış int girdisi program derlendiğinde, program kullancıya bir değer gir dediğinde kullanıcı a için 20 değerini girse bu 20 değeri her bir fonksiyon bloğunda farklı işlemlere tabi tutulacaktır.
Kare fonksiyonu 20 değerini kare formulune uygularken küp fonksiyonu da küp fonksiyonuna uygular.

ORNEK:


include<stdio.h>
// Verilen sayinin karesini hesaplar
void kare_hesapla( int sayi )
{
// kare_hesapla fonksiyonunda
// a degiskeni tanimliyoruz.
int a; //Sadece bu fonksiyon için geçerli olan int değeridir
a = sayi * sayi;
printf( "Sayının karesi\t: %d\n", a );
}

// Verilen sayinin kupunu hesaplar
void kup_hesapla( int sayi )
{
// kup_hesapla fonksiyonunda
// a degiskeni tanimliyoruz.
int a; //Sadece bu fonksiyon için geçerli olan int değeridir
a = sayi * sayi * sayi;
printf( "Sayının küpü\t: %d\n", a );
}

int main( void ) //bütün fonksiyonları çalıştıran gövde makine program bloğu
{
// main( ) fonksiyonunda
// a degiskeni tanimliyoruz.
int a;//Kullanıcıların bütün fonksiyonlar için girdiği global int değeridir.
printf( "Sayı giriniz> ");
scanf( "%d",&a );
printf( "Girdiğiniz sayı\t: %d\n", a );
kare_hesapla( a );//yukarıdaki fonksiyonu çalıştımak için yukarıda void ile tanımlanan fonksiyonun adını ve işlem değerini parentez ile belirtmek yeterli.
// Eger a degiskeni lokal olmasaydi,
// kare_hesapla fonksiyonundan sonra,
// a'nin degeri bozulur ve kup yanlis
// hesaplanirdi.
kup_hesapla( a ); );//yukarıdaki fonksiyonu çalıştımak için yukarıda void ile tanımlanan fonksiyonun adını ve işlem değerini parentez ile belirtmek yeterli.
getchar (); //bu komut programı çalışırken ekrana getirir. pause gibi birşey.
return 0;
}

II. Örnek:
/* Ev sekli cizen program */
#include<stdio.h>
// Evin catisini cizen fonksiyon.
void catiyi_ciz( void )
{
printf( " /\\ \n" );
printf( " / \\ \n" );
printf( " / \\ \n" );
printf( " / \\\n" );
printf( "Masterhack\n" );
}

// Evin katini cizen fonksiyon.
void kat_ciz( void )
{
printf( "| |\n" );
printf( "| |\n" );
printf( "| |\n" );
printf( "Masterhack\n" );
}

// Programin calismasini saglayan
// ana fonksiyon.
int main( void )
{
catiyi_ciz( );
// 3 adet kat ciziliyor.
kat_ciz( );
kat_ciz( );
kat_ciz( );

return 0;
}

Bu örnekte hem void hem de int main (void ) değer almadığından fonksiyonların parentezleri boş bırakılmıştır. kat_ciz(); gibi.