Anasayfa C Dili Fonksiyonlar

C Dili Fonksiyonlar

Okan

Diğer programlama dillerinde olduğu gibi C programlama dilinde de fonksiyonlar en önemli konulardan birisidir. Programlama dilleri içinde fonksiyonlar temel yapı taşıdır.

Fonksiyonlar büyük bir programı küçük parçalara bölmemizi ve daha basit küçük parçalar halinde kod yazmamızı sağlar.

Fonksiyonların genel yapısı şu şekildedir:

dönüştipi  fonksiyon_adı (parametreler-zorunlu değil-)
{
işlem1;
işlem2;
...
}

Dönüş tipi : Eğer fonksiyon bir değer geri döndürecekse değerin ( int , float vs.) tipi belirtilir. Yani fonksiyonun geri döndüreceği değişkenin türü int ise fonksiyonun dönüş tipi de int olmalıdır. Eğer değer döndürmeyecekse dönüş tipi void olmalıdır. Bu değerler return deyimi ile döndürülür.

Parametreler: Parametreler fonksiyona ana program tarafından gönderilen uygun veri tipinde değerlerdir. Fonksiyon ana programdan gelen değeri alarak işlemler yapar.

Fonksiyonları genel olarak 2 başlık altında inceleyeceğiz.

Değer Döndürmeyen Fonksiyonlar

Bu tür fonksiyonlar ana program tarafından çalıştırılır fakat ana programa bir değer döndürmezler.

Bu yüzdem bu tür fonksiyonlar veri tipi olarak boş anlamına gelen void kelimesini kullanırlar.

Parametresiz

Değer döndürmeyen ve parametresiz fonksiyonlara örnek verelim. Örneğin, ekrana sadece “KOD BLOKLARI” yazan fonksiyonun ne değer döndürmesine ne de parametre almasına gerek yoktur.

#include <stdio.h>

void merhaba()
{
	printf("KOD BLOKLARI");
}
main()
{
	merhaba();
}

Fonksiyon hiçbir değer döndürmediği için dönüş tipi void olmuştur.

Kodun çıktısı şu şekildedir:

fonksiyonlar-1

Şimdi de farklı bir örnek yapalım. Kullanıcıdan iki sayı alıp bu sayıları ekrana yazdıran bir fonksiyon yazalım.

#include <stdio.h>

void topla()
{
	int sayi1;
	int sayi2;
	printf("1.Sayiyi giriniz: ");
	scanf("%d",&sayi1);
	printf("2.Sayiyi giriniz: ");
	scanf("%d",&sayi2);
	printf("Sayilarin toplami %d dir",sayi1 + sayi2);
}
main()
{
	topla();
}

Bu fonksiyonda da ana programa herhangi bir değer döndürmediği için dönüş tipi void olmuştur. Ana programdan gönderilmesi gereken bir değer olmadığı için parametre kullanmadık.

Kodun ekran çıktısı şu şekildedir:

fonksiyonlar-2

Değer döndürmeyen ve parametresiz fonksiyonlar en basit haliyle bu şekildedir.

Parametreli

Bazı durumlarda ana programdan fonksiyonlara, fonksiyonlarda kullanılmak üzere değer göndermesi gerekebilir. Bu değer gönderme işini fonksiyonlarda parametre yardımıyla yapıyoruz.

Örneğin ana programdaki 2 sayıyı fonksiyon yardımıyla toplamak istediğimiz zaman, fonksiyonların bu sayıyı bilmesi gerekir yani ana programdaki o 2 sayıyı fonksiyona göndermemiz gerekir. Bunu da parametre yardımı ile yapacağız.

#include <stdio.h>

void topla(int sayi1, int sayi2)
{
	printf("Sayilarin toplami %d dir",sayi1 + sayi2);
}
main()
{
	topla(12,6);
}

Yukarıda bahsettiğim gibi, ana program tarafından fonksiyona 12 ve 6 sayını gönderdik. Bu gönderilen değerler int veri tipinde olduğu için parametrelerin veri tipide int olmalıdır. Daha sonra fonksiyon bu sayıların toplamını ekrana yazdırdı. Yine herhangi bir değer döndürmediği için fonksiyonun dönüş tipi void oldu.

Kodun ekran çıktı şu şekildedir:

fonksiyonlar-3

Değer döndürmeyen fonksiyonlar genel itibarıyla bu şekildedir.

Değer Döndüren Fonksiyonlar

Değer döndüren fonksiyonlarda, fonksiyon tarafından üretilen değer return ifadesi ile ana programa ya da çağrıda bulunan fonksiyona döndürülür.

Yukarı da yaptığımız topla fonksiyonunu değer döndüren fonksiyon haline getirelim. Yani ana programdan topla fonksiyonuna 2 sayı gönderelim. Topla fonksiyonu da bu sayıları toplayıp sonucunu ana programa döndürsün.

#include <stdio.h>

int topla(int sayi1, int sayi2)
{
	int toplam;
	toplam = sayi1 + sayi2;
	return toplam;
}
main()
{
	int sonuc;
	sonuc = topla(12,24);
	printf("toplam = %d",sonuc);
}

Burada ana program topla fonksiyonuna iki sayı gönderdi ve topla fonksiyonu bu değerleri topladı ve ana programa döndürdü. Yani topla(12,24) yazdığımız zaman topla fonksiyonu bize 36 değerini verir. Biz de ana programda “sonuç” değişkenini eşitledik bu değeri.

Döndürdüğümüz değer int türünde olduğu için fonksiyonun dönüş tipide int oldu.

Kodun ekran çıktısı aşağıdaki şekildedir:

fonksiyon-4

Şimdi de bölme işlemi yapan fonksiyon yapalım ve bu fonksiyonda döndürülen değer float veri tipinde olacağı için fonksiyonun dönüş tipi de float olmalıdır.

Kodu şu şekildedir:

#include <stdio.h>

float bol(float sayi1, float sayi2){
	float sonuc;
	sonuc  = sayi1 / sayi2;
	return sonuc;
}
main()
{
	float sonuc;
	sonuc = bol(10,3);
	printf("Islemin sonucu %f dir",sonuc);
	
}

Dönüş tipimiz, ana programa döndürülecek veri tipinde aynı olmalıdır. Bu yüzden fonksiyonumuzun dönüş tipi float olmuştur.

Kodun ekran çıktısı aşağıdaki gibidir:

fonksiyonlar-5

Şimdi de son olarak tüm bunları kullanarak bir örnek yapalım.

Sınıftaki öğrencilerin dersten geçip geçmediğini bulan bir program yazalım. Bu programda öğrencilerin ortalamasını tek tek hesaplamak yerine bir tane fonksiyon oluşturacağız. Bu fonksiyona vize ve final notunu göndereceğiz. Fonksiyonda bize dersten geçip geçmeyeceğini söyleyecek.

#include <stdio.h>

void nothesapla(float vize, float final)
{
	float puan = (vize * 0.4) + (final * 0.6);
	printf("Notunuz = %f\n",puan);
	
	if(puan > 60){
		printf("Dersi gectiniz.");
	}
	else if (puan > 50){
		printf("Dersi sorumlu gectiniz.");
	}
	else{
		printf("Dersten kaldiniz.");
	}
}
main()
{
	nothesapla(60,75);
}

notHesapla() fonksiyonumuz, ana program tarafından gönderilen iki sayıyı kullanarak öğrencinin ortalamasını buldu ve dersten geçip geçmediğini hesapladı.

Kodun ekran çıktısı şu şekildedir:

fonksıyonlar-6

Fonksiyonları kullanarak çok fazla örnek yapabiliriz.  Konuyu örnekler yaparak daha iyi kavramak için C Programlama Dili Örnekleri sayfasında 52‘ den 58. soruya kadar olan örnekleri çözebilirsiniz

Yorum Yap

Bu web sitesi deneyiminizi geliştirmek için çerezler kullanmaktadır. Kabul Et Tamamını Oku

Gizlilik Politikası