Bu konuyu tam anlayabilmek için fonksiyon ve prosedür arasındaki farkı bilmek gerekir.
Basitçe;
Prosedür (Procedure) : Bir takım işlemler yapan ancak değer döndürmeyen alt yordamı kasteder
Fonksiyon (Function) : Yine bir takım işlemler yapan ancak bir değer döndüren alt yordamları ifade eder.
C orta düzeyli bir dil olduğu için, çoğu dilde bulunan fonksiyon prosedür ayrımı ihmal edilmiştir. C dilinde bütün fonksiyon ve prosedürlerin kalıbı aynıdır. Ancak değer döndürmeyen bir fonksiyon tanımlayacağın zaman fonksiyonun döndürdüğü değer tipini belirlen tip cast yerine "void" ifadesini kullanırsın. Eğer tanımladığı bir fonksiyonsa, yani değer döndüren bir alt yordam ise o zaman da fonksiyonun döndüreceği değeri işlem sonunda "return" ifadesi ile yüklersin.
Yani:
void prosedur_1() {
//Bu bir prosedürdür. Burada işlemler yapılır ama sonuçta
// döndürülebilen bir değer oluşmaz.
}int fonksiyon_1() {
//Bu bir fonksiyondur. Burada bir işlem yapılır ve bir değer döndürülür
int dondurulecek_deger=10;
return dondurulecek_deger;
}
gibi.
Halbuki pascal/delphi, basic gibi sözdizimleri (syntax leri) kuralcı dillerde ise bu ayrım vardır :
Function fonksiyonum(param1: integer) : ingeter;
beginvarDondurulecek_Sonuc : Integer;
Dondurulecek_Sonuc : =10;
fonksiyonum : = Dondurulecek_Sonuc;
end;
Procedure presedurum(param1: integer) ;
begin...end;
yukarıda görebileceğin gibi, bu dillerde "return" gibi genel bir ifade kullanmazsın, alt yordamın tipini (fonksiyon mu yoksa prosedür mü olduğunu) baştan belirttiğin için değer döndürmek için doğrudan yordamın kendi adını kullanırsın.