KSP KSP Sistem Fonksiyonları Yükleme İletişim Haberler Hakkımda

Fonksiyonlar

Fonksiyonlar büyük bir programı küçük parçalara bölerek projenin yönetilebilmesini sağlar ve ayrıca bu fonksiyonlar daha sonra gerekli hallerde başka programlarda da kullanılabilir. Böylelikle aynı işin tekrar yapılması engellenmiş olur.

Bir fonksiyonun iki ana önemli yapıtaşı vardır. Bunlar bir fonksiyonda her zaman olmayabilir. Fakat tanımları önemlidir.

Birincisi **parametre** olarak adlandırılan ve bir fonksiyona işlemesi için dışarıdan verilen bilgiyi ifade eder.

İkincisi **dönüş değeri** denilen kavramdır. Bazen bir fonksiyonu çalıştırdıktan sonra bu fonksiyondan bir sonuç dönmesini isteriz. Bu dönüş değeri olarak adlandırılır.

Bu iki ana kavramdan sonra bir fonksiyon nasıl tanımlanır ona bakalım.

Değer dönmeyen fonksiyonlar

Önce fonksiyonumuz için basit bir senaryo düşünelim. Örneğin iki sayıyı önce toplayalım sonra toplamın değerini çıktı olarak görmek isteyelim. Öncelikle fonksiyonumuz herhangi bir değer döndürmeyeceğinden dönüş değerimiz boş olacak. Ayrıca fonksiyonun çalışması için iki adet sayısal değere ihtiyacı olacağını biliyoruz. Bunları da parametre olarak dışarıdan sağlayacağız.

Şimdi fonksiyonumuzu başka bir dosyada tanımladığımızı farzedelim.

			
boş topla_ve_yaz(tam sayı1 , tam sayı2)
{
   tam sonuç;
   sonuç = sayı1 + sayı2;
   
   YAZ "Toplamın sayısal değeri = " + sonuç;
}


Fonksiyonumuzu kullanmadan önce fonksiyon tanımlama ile ilgili birkaç noktayı belirtelim.

  1. Fonksiyon tanımlama elemanları şu şekildedir (Örnekteki değerler kullanılarak anlatılacaktır):
    1. Dönüş değeri : boş
    2. Fonksiyon adı : topla_ve_yaz
    3. Parantezler : parametreleri içine almak için kullanılır.
    4. Parametreler : veri_tipi değişken adı şeklinde belirtilir. (Not: )
    5. Fonksiyona ait kodlar : { } işaretleri içinde fonksiyonumuzda ne yapmak istiyorsak ona ait kodlar yazılır.
    6. Fonksiyon değer dönüyorsa dön anahtar kelimesi kullanılır. (Aşağıda detaylı anlatılacak)

  2. Dönüş değeri, fonksiyon eğer değer dönüyorsa veri tipleri bölümünde anlatılan değerlerden birini alabilir. (Örn : tam , tam64, onda gibi)
  3. Değişken adları (1-d) parametrelerin daha sonra nerede kullanılacağının belirtilmesi içindir.
  4. Parametrelerin veri tipleri uyuşmalıdır. (Daha sonra bahsedilecektir.)


Şimdi de fonksiyonumuzu kodumuzda kullanmak istiyoruz. Gerekli olan parametreleri sağlamak için önce sayısal değer içeren değişkenlerimizi tanımlamamız lazım.

tam değer_1 = 25;
tam değer_2 = 152;	
		
....			 // 
.....			 // burada başka kodlar olduğunu farzedelim.

 // Şimdi fonksiyonumuzu kullanıyoruz. Yukarıda isimlerimizi tanımlamıştık.	

topla_ve_yaz( değer_1 , değer_2);

/*Burada fonksiyon kullanımının kod karmaşasını azalttığını görüyoruz. 
Böylece programın okunabilirliği ve bakımının çok daha kolay olmasını bekleriz. */

tam değer_3 = 1000;
tam değer_4 = 2000;

topla_ve_yaz( değer_3 , değer_4);

/*Burada başka bir fayda ile daha karşılaştık. Fonksiyonların tekrar kullanılabilir olduğunu görüyoruz. 
Tekrar 3 satır kod yazmak yerine tek satırlık fonksiyon çağırma kodu ile istediğimiz sonucu gerçekleştirdik.*/
			
			

Değer dönen fonksiyonlar

Bazen de fonksiyonumuzun bize daha sonra kullanılmak üzere bir değer dönmesini isteriz.

Yine basit bir senaryo oluşturalım. Bir toplama işleminin değerini dönen bir fonksiyon yazalım. Bu işlemin sonucunu da çıktı olarak almak isteyelim.

Dönmesini istediğimiz değer bir tam sayı olacak.

Toplama istediğimiz sayıları da biz dışarıdan parametre olarak sağlayacağız.


tam topla (tam sayı1 , tam sayı2) 
{

   dön sayı1 + sayı2;

}		
			

Tanımlamayı bitirdik. Kullanma vakti geldi.


 // Öncelikle toplama işlemi için iki sayı tanımlayalım.

tam değer1 = 155;
tam değer2 = 266;
tam sonuç;

Fonksiyonumuzun çıktısını iki şekilde alabiliriz.

1-) Dönüş değerini başka bir değişkene aktararak.


sonuç = topla( değer1 ,değer2 );

YAZ sonuç;

2-) Veya yukarıdaki toplama işlemini değişkene aktarmadan dönüş değerini doğrudan kullanarak.


YAZ topla( değer1 ,değer2 );



dön ifadesinin kullanımı

Şu şekillerde kullanabiliriz :


dön standart veri_tipleri;   // standart veri tipleri ile	
dön veri * veri;     // çarpma işlemcisi ile
dön veri / veri;     // bölme işlemcisi ile					
dön veri + veri;     // toplama işlemcisi ile
dön veri - veri;     // çıkarma işlemcisi ile
		


Fonksiyon imzası kavramı

Fonksiyonların ve parametrelerin yanlış kullanımına engel olmak için fonksiyon imzası denen bir kavram geliştirilmiştir. Bu diğer bazı dillerde de mevcuttur.

Burada fonksiyon sadece ismi ile değil parametre adları fonksiyon ismine eklenerek saklanır.Böylece fonksiyondaki parametrelerin yanlış veri tipleri ile kullanılması engellenmiş olur.

Örnek

			
boş 	çarp_yaz(tam64 değer1, tam64 değer2)
{
	YAZ değer1 * değer2;
}	

	

Şimdi tanımladığımız fonksiyonu kullanalım.

			
itam sayı1 = 5;
itam sayı2 = 10;

tam64 sayı3 = 100;
tam64 sayı4 = 200;

çarp_yaz(sayı1 , sayı4);		// veri tipi hatalı
çarp_yaz(sayı1 , sayı2);		// veri tipi hatalı

çarp_yaz(sayı4 , sayı3);		// doğru
çarp_yaz(sayı3 , sayı4);		// doğru
çarp_yaz(sayı3 , sayı3);		// doğru
			

Not : fonksiyon imzası fonksiyon dönüş değeri ile ilgili değildir.

Farklı fonksiyon imzası kavramını kullanarak aynı fonksiyon ismini farklı parametrelerle kullanabiliriz. Buna fonksiyon aşırı yüklemesi (function overloading) denir.

Örnek

			
boş 	çarp_yaz(tam64 değer1, tam64 değer2)
{
	YAZ değer1 * değer2;
}	

boş 	çarp_yaz(tam değer1, tam değer2)
{
	YAZ değer1 * değer2;
}	

boş 	çarp_yaz(itam64 değer1, itam64 değer2)
{
	YAZ değer1 * değer2;
}	

boş 	çarp_yaz(itam değer1, itam değer2)
{
	YAZ değer1 * değer2;
}	

boş 	çarp_yaz(onda değer1, onda değer2)
{
	YAZ değer1 * değer2;
}

	

Yukarıdaki tanımlamalarda parametre veri tiplerine dikkat edin.

Parametre olarak fonksiyonlar

Dönüş tipleri uyduğu sürece fonksiyonları parametre olarak kullanabilirsiniz.

 
tam a ( tam x ) 
{ 
 dön x;
}

tam b()
{ 
 dön 37;
}

tam cc(tam a , tam b) 
{ 
  dön a+b;
}	

//fonksiyonları tanımladıktan sonra kullanalım.	

tam sayı = 54;
YAZ "Fonksiyon sonucu = " + cc( a(sayı) , b());
			

@x ifadesi

Bazen özellikle aktif parametre olarak numerik değerleri kullanırken değişken tanımlamak istemeyebilirsiniz. Bunu kolaylaştırmak ve numerik değerin veri tipini aktif parametre kullanırken belirleyebilirsiniz.


@i

@t

@i64

@t64

@onda

Kullanımı şu şekildedir :


// önce fonksiyon tanımlayalım

itam topla(itam x , itam y)
{
   dön x + y;
} 

// şimdi fonksiyonu kullanalım

YAZ "Toplam = " + topla(@i 55 , @i 70);