16 Temmuz 2013 Salı

C++ FONKSİYONLAR

C++ FONKSİYONLAR 


Bu makalede sizlere C++ Programlama Dilinde Fonksiyonlardan bahsedeceğiz...



C++ FONKSİYONLAR

Bir işlevi programın bir noktada çağrıldığında yürütülen tabloların bir gruptur. Aşağıdaki ifade biçimi: 

türü adı (parameter1, parameter2, ...) {ifadeler} 

burada: 

  • türü işlevi tarafından döndürülen veri veri tür belirteci olduğunu.
  • ismi işlevini çağırmak mümkün olacaktır hangi tanımlayıcı olan.
  • parametre (gerektiği kadar gibi): ve hangi düzenli yerel değişken olarak işlev içinde hareket: Her parametre herhangi bir normal değişken bildiriminde (int x örneğin) gibi, bir tanımlayıcı ardından veri tür belirteci oluşur. Onlar denir işleve argümanlar geçmesine izin. Farklı parametreler virgül ile ayrılır.
  • ifadeleri işlevin organıdır. Bu parantez {} çevrili tabloların bir bloktur.

Burada ilk fonksiyonu örnek var: 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// function example
#include <iostream>
using namespace std;

int addition (int a, int b)
{
  int r;
  r=a+b;
  return (r);
}

int main ()
{
  int z;
  z = addition (5,3);
  cout << "The result is " << z;
  return 0;
}
The result is 8



Bu kodu incelemek için, her şeyden önce bir şey bu yazının başında söylediğim unutmayın: bir C + + programı her zaman ana fonksiyonu ile yürütme başlar. Bu yüzden orada başlayacak.

Biz int türünde değişken z bildirerek ana işlev başlar görebilirsiniz. Hemen ardından, biz ek adlı bir işlev çağrısına bakın. Dikkat biz işlevi ve fonksiyonu kendisi üzerinde bazı kod satırları bildirimi için çağrı yapısı arasındaki benzerlikleri görmek mümkün olacak:



Parametreleri ve argümanları açık bir yazışma var. 5 ve 3, int a ve int karşılık b parametreleri fonksiyonu eklenmesi için ilan: anaişlevi içinde biz Ayrıca iki değeri geçen çağırdı.

Ana fonksiyonu içinde hangi noktada, kontrol ana tarafından kayıp ve ek olarak işlev geçirilir. Çağrısında geçirilen her iki argümanın değeri (5 ve 3) fonksiyonu içindeki yerel değişkenler int ve int b kopyalanır.

Fonksiyon Ayrıca başka bir yerel değişken (int r) beyan ve ifade ile r = a + b, r için bir artı b sonucu atar. Gerçek parametreleri için geçti ve b, sırasıyla 5 ve 3 olduğu için, sonuç 8'dir.

Aşağıdaki kod satırı:
 
 return (r); 


fonksiyonu ek sonuçlandırır, ve ilk etapta (bu durumda, ana) de denir işlevi için kontrol geri döner. Şu anda program ek olarak çağrısıyla kesildi hangi aynı noktadan düzenli seyreder. Ama ayrıca, çünkü bir değeri belirtilen fonksiyonu ek olarak return deyimi: değişken r (dönüş (r);) içeriği o anda 8 bir değeri vardı. Bu değer, işlev çağrısı değerlendirilmesi değer olur.


Bu yüzden değerlendirilir zaman işleve verilen değeri kendisi aramak bir işlev tarafından döndürülen değerini, değişken z 8 ektarafından döndürülen değeri (5, 3), olarak ayarlanır. Bir başka deyişle açıklamak için, bir işlev (ek (5,3)) için arama anlamıyla döndürür değeri (8) ile değiştirilir hayal edebiliyorum.

Ana kod aşağıdaki satırı:
 
 cout << "The result is " << z; 


Bu, zaten bekleyebileceğiniz gibi, ekrandaki sonucun baskı üretir.

Değişkenler Kapsamı


, Bir fonksiyon ya da başka bir iç blok içinde bildirilen değişkenler kapsamı sadece kendi fonksiyon ya da kendi blok ve bunların dışında kullanılamaz. Örneğin, önceki örnekte onlar fonksiyon ek olarak yerel değişkenler bu yana ana işlevi doğrudan değişkenleri a, b ya da r kullanmak imkansız olurdu. Bu ana fonksiyonu için yerel bir değişken olduğu için Ayrıca, bu fonksiyon Ayrıca içinde doğrudan değişken z kullanmak imkansız olurdu.


Bu nedenle, yerel değişkenler kapsamında beyan edildiği aynı blok seviyesi ile sınırlıdır. Yine de, biz de küresel değişkenleri bildirmek için imkanınız var; Bu tüm fonksiyonları iç ve dış, kodun herhangi bir noktadan görülebilir. Genel değişkenleri bildirmek için sadece herhangi bir işlev veya blok dışında değişken bildirmek zorunda, yani doğrudan programın vücutta, anlamına gelir. 

Ve burada işlevleri hakkında başka bir örnek: 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// function example
#include <iostream>
using namespace std;

int subtraction (int a, int b)
{
  int r;
  r=a-b;
  return (r);
}

int main ()
{
  int x=5, y=3, z;
  z = subtraction (7,2);
  cout << "The first result is " << z << '\n';
  cout << "The second result is " << subtraction (7,2) << '\n';
  cout << "The third result is " << subtraction (x,y) << '\n';
  z= 4 + subtraction (x,y);
  cout << "The fourth result is " << z << '\n';
  return 0;
}
The first result is 5
The second result is 5
The third result is 2
The fourth result is 6


Bu durumda biz çıkarma adlı bir işlev oluşturduk. Bu işlev yaptığı tek şey geçirilen parametreleri hem çıkarmak için ve sonuç döndürmektir.

Biz fonksiyonu ana incelemek Bununla birlikte, biz çıkarma çalışması için birkaç çağrı yapmış göreceksiniz. Bir işlev çağrılabilir başka yollar veya anları görmek, böylece bazı farklı arama yöntemleri kullandık.

Tam olarak bu örnekler anlamak için bir işlevine bir çağrı işlev çağrısı kendisini geri gidiyor değer yerini olabileceğini bir kez daha düşünmek gerekir. Örneğin, İlk durumda (biz önceki örneklerde kullandığınız aynı model olduğu için zaten bilmeli):
 1 
 2  
 z = subtraction (7,2); cout << "The first result is " << z; 


Bunu döndürür değeri (yani, 5) tarafından işlev çağrısı yerine, biz olurdu:
 1 
 2  
 z = 5; cout << "The first result is " << z; 


Yanısıra
 
 cout << "The second result is " << subtraction (7,2); 


önceki arama ile aynı sonucu verir, ancak bu durumda biz doğrudan cout için bir ekleme parametre olarak çıkarma için çağrı yaptı.Sadece biz yazılı sanki sonuç aynı olduğunu göz önünde bulundurun:
 
 cout << "The second result is " << 5; 


5 yılından bu yana çıkarma (7,2) tarafından döndürülen değerdir.

: Durumunda
 
 cout << "The third result is " << subtraction (x,y); 


Biz tanıttı tek yeni bir şey çıkarma parametreleri değişken yerine sabit olmasıdır. Bu mükemmel geçerlidir. Bu durumda değerleri çıkarma 2 sonucunda vererek, sırasıyla 5 ve 3 olan x ve y değerleri vardır işlev geçirilir.

Dördüncü durum aynı fazla. Sadece dikkat edin yerine:
 
 z = 4 + subtraction (x,y); 


Biz yazdım olabilir:
 
 z = subtraction (x,y) + 4; 


aynı sonuç. (,) Tüm ifadenin sonunda gider Eğer noktalı virgül işareti olduğunu görebilirsiniz bu yüzden yer açtınız. Bu, mutlaka hemen işlev çağrısı sonra gitmek zorunda değildir. Açıklama bir kez daha bir işlev dönen değeri ile değiştirilebilir hayal bu olabilir:
 1 
 2  
 z = 4 + 2; z = 2 + 4; 


Yok daire tipi ile çalışır. Boşluğun kullanımı.


Bir işlev beyan sözdizimi Hatırlarsanız:

türü adı (argument1, argument2 ...) deyimi 

Eğer beyan bir tür ile başlar göreceksiniz, bu işlevi kendisi (yani, dönüş deyimi ile fonksiyonu tarafından döndürülen veri türünü) türüdür. Ama biz hiçbir değer dönmek isterseniz?

Biz sadece ekranda bir mesaj göstermek için bir işlevi yapmak istediğiniz düşünün. Biz herhangi bir değer döndürmek için buna ihtiyacı yoktur. Bu durumda biz işlevi için geçersiz tür belirteci kullanmalısınız. Bu tür yokluğu gösteren özel belirleyici olduğunu. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
// void function example
#include <iostream>
using namespace std;

void printmessage ()
{
  cout << "I'm a function!";
}

int main ()
{
  printmessage ();
  return 0;
}
I'm a function!



void Ayrıca açıkça bunu çağrıldığında işlev gerçek parametreleri almak istediğiniz belirtmek için işlevin parametre listesinde kullanılabilir. Örneğin, fonksiyon printmessage olarak ilan olabilirdi:
 1 
 2 
 3 
 4  
 void printmessage ( void ) { cout << "I'm a function!" ; } 


Bu parametre listesinde geçersiz belirtmek için isteğe bağlı olsa da. C ++ biz parametreleri olmayan bir işlev istiyorsanız  bir parametre listesi sadece boş bırakılabilir.

Ne zaman unutmamalısınız bir işlevi çağırmak için biçim adını belirterek ve parantez arasında parametreleri kapsayan içerir olmasıdır.Parametrelerin olmayan varlığı parantez yazmak zorunluluğundan bizi muaf değildir. Bu nedenle printmessage için çağrı:
 
 printmessage (); 


Parantez açıkça bu bir işlevi değil, bir değişken adını veya başka bir C + + açıklamaya bir çağrı olduğunu göstermektedir. Aşağıdaki çağrısı yanlış olurdu:
 
 printmessage; 

0 yorum:

Yorum Gönder