bir fonksiyondan istenildiği zaman çıkmak

Başlatan picman, 18 Aralık 2008, 14:16:47

picman

yukarıdaki başlık altında da sordum ama cevap veren olmadı bende yeni başlık açayım dedim . arkadaşlar bir fonksiyondan istenildiği zaman nasıl çıkarım . eğer bu geriye değer döndüren bir fonksiyonsa nasıl fonsiyonun her hangi bir yerinden çıkarım. sadece return ifadesini kullanmak fonksiyondan çıkışı sağlarmı yada break deyimi ile bunu yapabilirmiyim. c dilinde bu işlem nasıl oluyor başka bir komutu mu vardır. bilgisi olan arkadaşlardan yarıdım bekliyorum . saygılarımla herkese kulay gelsin
Bilgi paylaştıkça artar..

Tagli

Diğer başlıkta bir cevap yazmıştım. Bu başlığı sonradan farkettim.
Gökçe Tağlıoğlu

kadirbas

C dilinde bir fonksiyondan fonksiyonun içinde istenilen herhangi bir yerde çıkmak için "return" deyimi kullanılır. Eğer fonksiyonunuzun bir geri dönüş değeri varsa, çıkmak istediğiniz yerde bir değer ile geri dönmelisiniz. Örneğin;
return 0
ya da
return deger;
gibi...

FEHMİ_ASM

#3
Yukarıdaki yazıların tümünü okudum. Ancak fonksiyondan çıkarken Return nasıl yazılmalı?
Aşağıda bir örneğini veriyorum. Fonksiyondan önemli bir gerekçe olmadan ya da bir karşılaştırma sonucunda fonksiyon sonuna varamadan çıkmam gerekiyor.
return (0);   //
return 1      //
return      //

Ve üst iki satırdaki 0 ile 1'in farkı ne?
                                               [MPLAB C18]
Hz.Hamza'nın Belinde İki Kılıç Duruyor ! Attığı Her Adım Bir Kalbi Durduruyor ! Ey Hamza ! Gördüğün Hiçbir Şeyden Korkmazsın , Bu Doğru Ama Heybetini Gizli Tut , Yürüyüşün Ölümü Korkutuyor !  İşte Hz.Ömer ve Hz.Ali , Biri Hattaboğlu , Biri Haydâr-ı Kerrar ! Ve Kolkola Ölümün Ağzına Giriyorlar !  Azrai

Klein


return; değer döndürmeyen bir fonksiyondan çıkarır.
return(x); değer döndüren fonksiyondan , dönüş değeri atayarak çıkarır.
return x;  hiç kullanmadım. derleyici hata vermiyor. return(x) ile aynı olabilir. 

FEHMİ_ASM

#5
Klein Hocam amacım main'de veya bir dış fonksiyonda iken çağırdığım fonksiyonu bir anda sonlandırıp kaldığım yere geri dönmek. Yaptığım ise yaklaşık olarak şu;


void main ()
{
unsigned int x;

TRISB=0x00;
PORTB=0x00;
PORTA=0x00;
ADCON1=0x07; //PortA Digital I/O
.
.     komutlar falan..

Test1(3);
<<<<<<<<<=============

}

Test1()
{
PORTB=0x0F;
MSDelay (4);
PORTB=0xF0;

return;  //Demekle beni buraya gönderen ok işaretinin bulunduğu satıra mı geçiyorum? Öyle ise istediğim de bu idi.
PORTB=0xFF  //Komutlar devam ediyor...

}

Bunun benzerini daha önceden test etmiştim ancak program biraz karışık olduğundan anlayamamıştım. Asıl programda 4-5 tane return var ve birkaç tanesi iç içe fonksiyonlardan oluşuyor. 
Klein hocam, sanırım dediğin üzere;

return (yanında 0'ı yok...) ifadesi, nerede olursam olayım, ister isem dış bir fonksiyon tarafından çağrılayım, -------daima çağrılan yere geri dönzerir.

ifadesini tahmin ediyorum. Doğru mudur?
İlgine teşekkür ederim.
Hz.Hamza'nın Belinde İki Kılıç Duruyor ! Attığı Her Adım Bir Kalbi Durduruyor ! Ey Hamza ! Gördüğün Hiçbir Şeyden Korkmazsın , Bu Doğru Ama Heybetini Gizli Tut , Yürüyüşün Ölümü Korkutuyor !  İşte Hz.Ömer ve Hz.Ali , Biri Hattaboğlu , Biri Haydâr-ı Kerrar ! Ve Kolkola Ölümün Ağzına Giriyorlar !  Azrai

Kadir Can(16F84)

#6
Doğrudur hocam.
Return ile fonksiyonu çağırana benim işim bitti, sen devam et diyoruz.
Örnek;
int karesi( int sayi)   //Karesi adlı fonksiyon
{
    if( sayi == 0 ){     //Sayı sıfırsa fonksiyonun yapması gereken iş
        return -1;         //Sıfırın karesi olmaz, fonksiyon işini bitiriyor ve aşağıdaki else çalışmıyor
    }else {                 //Sayı sıfır değilse
        return ( sayi * sayi );//Fonksiyonun işi biter ve sayının karesi döndürülür
    }
}

Klein

int func(int i){
.
.
.
return; // yanlış
return(); // yanlış
return(1); // doğru;
return(1*x); // doğru;
return(a+b); // doğru;
}
değer döndüren fonksiyonlardan çıkarken dönüş değeri vermek zorunlu.

void func(int i){
.
.
.
return(); // yanlış (belki bazı derleyiciler kabul edebilir)
return(0); // yanlış;
return; // doğru;
}

değer döndürmeyen fonksiyondan çıkarken  return ile değer döndüremeyiz.