Fonksiyonlar Hakkında (Bölüm1)

Fonksiyonlar makale dizimizin ilk makalesinde C programlama dilinin temel taşlarından fonksiyonlara giriş yapıyoruz.

Fonksiyonlar makale dizimizin ilk makalesinde C programlama dilinin temel taşlarından fonksiyonlara giriş yapıyoruz.

FONKSİYONLAR HAKKINDA

C orta seviye bir programlama dilidir. Düşük seviye dillerde Java, C# gibi dillerdir.Bu tanımdan şunu izah etmeye çalışıyorum ki; en düşük seviye dil en çok bilgisayar diline yakın olan dildir.Mesela C orta seviyedir bu yüzden fonksiyonlar bu programlama dilinin sağ ve sol elidir diye düşünebiliriz yani neredeyse tüm işi fonksiyonlara bıraktık gibi. Ama bir javada Classlar tüm işi götürmektedir. O zaman bu fonksiyonlar konusu çok önemlidir diyerek çok ince ince bu konuyu sizlere anlatmaya çalışacağım lütfen her kelimeme çok dikkat edin!

Bir bilgisayar programcısına neden matematik dersi verilir?

Çoğu insan bunu hep sorgular durur; gerçi bunu sorgulayan kişilere hep şaşkınlıkla bakarım, ama belki fonksiyonlar konusunu daha Sanalkurs için makale haline getirmediğimdendir.

Şimdi matematikteki bir fonksiyonlar konusunu hatırlamak gerekirse, f(x)=10x gibi en basit 1. dereceden bir fonksiyon görmüş oluruz ve f(x) fonksiyonunun değerinin bulunması için x'e bir değer verilir, ki bu X bir parametredir arkadaşlar. Bu kelime çok önemli: PARAMETRE.
X parametresi 1 için f(x) fonksiyonumuz 10 değerini alır ve fonksiyonun geri döndürdüğü değer 10'dur. GERİ DÖNDÜRDÜÃÜ DEÐER.

Arkadaşlar sizden ricam bu 2 kelimeyi ya da cümleciği çok iyi kavramanız:
-Parametre
-Geri Döndürdüğü Değer


Şimdi tüm bu anlatmaya çalıştığım kısmın bilgisayar programı olan C'de ne işe yaradığını göstermeye çalışacağım ve yukarıdaki kısımları çok iyi anladıysanız, fonksiyon konusunu çözdüğünüze inanın.

Şimdi bir C fonksiyonunun syntax'ını görelim de, siz de anlayın ki C'de fonksiyonları çok iyi anlamışsınız.


Döndürdüğü_değer_tipi      fonksiyonun_ismi (parametre_listesi) 



tanımlamalar ve komutlar 

}




--Döndürdüğü_değer_tipi
Fonksiyonlar genelde başka bir fonksiyon içinden çağırılırlar (main (void) de bir fonksiyondur). Bu yüzden fonksiyonlar yapmaları gereken işi yaptıktan sonra kendilerini çağıran fonksiyona bir değer döndürürler ve bu yüzden Döndürdüğü_değer_tipi diye bir
Syntax görüyorsunuz ve bu int ,char , double gibi veri tipleridir.

--Fonksiyonun_ismi
Tanımladığımız fonksiyona verdiğimiz isimdir. Program içerisinde fonksiyonumuza bu isimle ulaşacağız. Bu ismin fonksiyonun yaptığı işlevi açıklayıcı nitelikte olması tercih edilir. Mesela faktoriyel hesabı kullanacağım zaman fak() diye bir isim yazarım sizde bu şekilde belirleyici isimler kullanabilirsiniz tabi üşenmezseniz tüm ismi yazın fark eden bir şey hiçbir şekilde olmayacaktır ne zaman farkı nede başka bir sorun çıkmaz yeter ki Türkçe karakter kullanmayın.

--Parametre_listesi
Yukarıda matematikte parametreleri kullanırken gördüğümüz şekilde mesela x parametresi için bir değer atayacaksak program içindede aynı şekilde bazı değişkenlerimiz olacak mesela x olabilir ki bu değişkeni çağırdığımız fonksiyonda kullanmak için işte bu parametre listesinde yazmamız gerekir şöyle de açıklayıcı bir örnek veriyim daha iyi anlaşılsın.


İnt faktoriyel(int x,int y);



Burada döndürülecek değer yani sonucumuz int yani integer(tamsayı) olmalıdır neden? Çünkü faktoriyel isimli fonksiyonumuzdan önce int yazıyor. Sonra parametre kısmına bakıyorum (int x,int y) demek ki 2 tane değişken gönderiyoruz çağırdığımız fonksiyona x ve y hemde integer veri tipinde yani tamsayı. Belki şu kısıma takılan olur diye belirtmeden geçemeyeceğim.Tam sayı derken mesela 3 mesela 5 , double veri tipinde olsaydı 3.4 , 5.0 evet 5.0 da bir double tip yani ondalık sayı bundan şunu anlayabilirsiniz sonuçlarınız tam sayı olduğu halde virgüllü ,0 halinde çıksın isterseniz double tipine çevirmeniz yeterli olur.

Fonksiyonları biz programlamada kolaylık olsun diye kullanıyoruz aslında mesela bir birinden farklı sayıların mesela 100 farklı sayının faktoriyelini almaya çalışan bir program yazacağımız zaman 100 kere aynı kodu yazmak yerine bir kere faktoriyel fonksiyonunu yazarım işim düşüncede o fonksiyonu çağırırım nasıl kulağa hoş geliyor değil mi ?
Çok daha fazlası var mesela bir kere faktoriyel fonksiyonunu yazdınız diyelim ki oda 5 satırlık basit bir kod 100 kere çağırın aynı fonksiyonu eğer 5 satır kod içinde hatanız yoksa sorun olmaz peki ya 5x100 500 satırda acaba kaç kere hataya düşersiniz.

O yüzden hatalarınız azalsın programlarınız hız kazansın diye fonksiyonlarınızı oluşturun ihtiyacınız oldukça bol bol çağırın o fonksiyonları.

Bahsettin bahsettin vermedin şu faktoriyel hesabını demeyin, diye onu da veriyorum:

Bu normal fonksiyonsuz hali:


#include <stdio.h>

int main()

{ int x,i,j=1;

printf("faktoriyelini hesaplatmak istediginiz sayiyi giriniz");

scanf("%d",&x);



for(i=1;i<=x;i++)

{

 j=i*j;

}

printf("istediginiz sayinin faktoriyelini hesaplayip %d bulduk",j);

getchar();getchar();

return 0;

}





Buda fonsiyonla çağırılmış hali:


#include <stdio.h>

int faktoriyel(int a)

{ int i,j=1;

 for(i=1;i<=a;i++)

{

 j=i*j;

}

printf("istediginiz sayinin faktoriyelini hesaplayip %d bulduk",j);



}





int main()

{ int x;

printf("faktoriyelini hesaplatmak istediginiz sayiyi giriniz");

scanf("%d",&x);

faktoriyel(x);





getchar();getchar();

return 0;

}



fonksiyonlu halinde yazan faktoriyel(x); kısmını kaç kere kullanırsanız o kadar çok faktoriyelini almış olursunuz.

100 kere şu kodları yazacağıma:


#include <stdio.h>

int main()

{ int x,i,j=1;

printf("faktoriyelini hesaplatmak istediginiz sayiyi giriniz");

scanf("%d",&x);



for(i=1;i<=x;i++)

{

 j=i*j;

}

printf("istediginiz sayinin faktoriyelini hesaplayip %d bulduk",j);

getchar();getchar();

return 0;

}



100 kere faktoriyel(x); yazarım! Nasıl ama? :)



Diğer yazımda görüşmek dileğiyle anlamadığınız kısımları geçmeyin, mutlaka sorun...
  • Etiketler;
Emre Çamalan
1986 doğumlu olan Emre Çamalan, Atılım Üniversitesi Bilgisayar Mühendisligi 2. sınıfta burslu olarak eğitimini sürdürüyor. Programlama merakı ve tecrübesi okuldan öncelere dayananan yazar, Ankara'da yaşıyor.
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

hocam ilk önce ellerinize agzınıza saglık.şimdi ben yeni kursa başladım bilge adamda.yazılım kursuna.1.haftam oldu ama şimdiye kadar az bucuk bişeyler ögrendim ama cok zor bırakmayı düşünüyorum.çok agır geliyo bana sizce devammı tamam mı.yapabilirmi herkez ama ben çok istoyrum bir yandan da çok agır geliyo.ne yapmamı önerirsiniz,simdidn tşk ediyorum
sizin bu sordugunuz soruyu bilgisayar mühendisligine gelmiş ama aile zoruyla hiç istemeden sevmeden gönderilmiş kız arkadaşlarımda görüyorum içlerinden hayır ben bu işi yapmak zorundayım diyenler 1 yıl sonra kod yazmaya başladılar :) yok ya ben vazgeçicem olmuyor diye yakınanlar 1 degil 3 yıl geçsede daha kod yazamıyorlar . kısaca demek istiyorumki herşey size bağlı eger yaparım diyorsanız zaten birgün birden bire kendinizi kod yazarken bulacaksınız yok yapamam diyorsanız zaten yapamazsınız.
fonksiyona makul bir yaklaşım getirmişsiniz yani 100kere yazacağıma derken..insan 100kere yazmamak için oturur 2saat fonksiyon çalışır demi:kirp::D
Hocam elinize sağlık çok güzel açıklamışınız.Üniversitedeki hocamın anlattığından anlamamışdım teşekkürler.
Böyle yorumlar beni yeni dersler yazmaya şevklendiriyor Asıl Ben Teşekkür ederim..
hocam teşekkürler ben de yeni başladım bu c Ye ve azmediyorum birşeyler öğrenmek için.Öncelikle kitaplar okudum ve hala kitap alıp okumak istiyorum birşeyler öğrenmek için.C de bazı kodları ezberledim ama tabi görsel olmadan ve biri bana göstermeden anlamam biraz zorlaşıyor .Siz de burda anlatıyorsunuz teşekkürler de ya bu c kodlarını microsoft c++ derleyicisinde mi yazıyosunuz ona göre program indircem de söylerseniz ya da bir link verirseniz sevinirim.Şu c yi bir öğrensem süper olcak ya:-dusun:
öncelikle sana başarılar diliyorum hiçbir zaman yılma, başını biraz anlayınca görüceksin görselliğe gerek olmadığını.. istersen google dan BorlandC.502.rar diye arat istersen http://rapidshare.com/files/17162128/BorlandC.502.rar. burdan direk indir ama microsoftta olur fazla fark yok ama başlangıçta borland işini görür hatta iyi olur...
[b]burdan bir neticeye geldim sorun hocalarda ogrencilerde degil nasil ama :) [/b]

Yukarı Git