رفتن به مطلب

دستور return


پست های پیشنهاد شده

سلام دوستان

من مفهموم دستور return رو نمیفهمم. یعنی چی که میگین داده ها رو بر میگردونه ؟ به کجا برمیگردونه ؟ یعنی چی ؟

توی سایت های انگلیسی هم دیدم ولی همشون نوشتن یه مقداری بر میگردونه . من نمیفهمم

لطفا یه مثال هم باهاش بزنین

ممنونم

 

ویرایش شده توسط hcp90
لینک به ارسال

سلام و درود @hcp90

 

دستور return نتیجه را به محل فراخوانی تابع بر می گردونه.

function mehran() { // Function Definition
	
	return 10;
	
}

$num = mehran(); // Function Call

مثلا توسط کد فوق عدد 10 توی متغییر num قرار گرفت.

 

موفق باشید

لینک به ارسال
در ۱ ساعت قبل، mehran-b گفته است :

سلام و درود @hcp90

 

دستور return نتیجه را به محل فراخوانی تابع بر می گردونه.


function mehran() { // Function Definition
	
	return 10;
	
}

$num = mehran(); // Function Call

مثلا توسط کد فوق عدد 10 توی متغییر num قرار گرفت.

 

موفق باشید

منظورتون از اینکه بر میگردونه اینه که اون چیزی جلوی دستور return قرار میگیره به محل فراخوانی فرستاده میشه ؟

بعد چرا توی دستور زیر که به جای return از echo استفاده کردم و تابع رو ریختم توی یه متغیر و بعد اون رو echo کردم، چیزی ظاهر نمیشه ؟


function sum($num1 , $num2){
    $s = $num3 + $num4;
    echo $s;
}

$y = sum (1 , 2) . '<br>'; // این قسمت نمایش داده میشه
echo $y ;// و این قسمت که اکو داره، چیزی نمایش داده نمیشه

 

لینک به ارسال

درود مجدد

 

در 28 دقیقه قبل، hcp90 گفته است :

منظورتون از اینکه بر میگردونه اینه که اون چیزی جلوی دستور return قرار میگیره به محل فراخوانی فرستاده میشه ؟

بله دقیقا همینه اون مقدار جلوی return برمیگرده به محل فراخوانی و به طور کامل عملیات داخل تابع متوقف میشه (یعنی اگر داخل تابع بعد از return دستوری نوشته شده باشه اون دستورات اجرا نمیشن).

 

در 29 دقیقه قبل، hcp90 گفته است :

بعد چرا توی دستور زیر که به جای return از echo استفاده کردم و تابع رو ریختم توی یه متغیر و بعد اون رو echo کردم، چیزی ظاهر نمیشه ؟

خوب این مثالی که زدی خطا داره.

توی پارامترهای تابع اومدیم متغییرهای num1 و num2 رو دریافت کردیم.

پس داخل تابع باید از همین دو تا متغییر استفاده کنیم و num3 و num4 ای در کار نیست.

پس تابع میشه:

function sum($num1 , $num2){
	
    $s = $num1 + $num2;
	
	
    echo $s;
	
}

خوب حالا تابع sum هیچ مقداری ور بازگشت نمیده بلکه مستقیم در خروجی مقدار رو چاپ میکنه پس نحوه درست فراخوانیش میشه:

sum (1 , 2); //Output 3

تنها در صورتی حاصل یه تابع رو میشه ریخت داخل یه متغییر که تابع با استفاده از return حاصل عملیاتی رو که انجام داده بازگشت بده.

مثلا اگر تابع sum این شکلی تعریف میشد:

function sum($num1 , $num2){
	
    $s = $num1 + $num2;
	
	
    return $s;
	
}

اون موقع اون دستوری که بالا نوشتید جواب میده یعنی این:

$y = sum(1 , 2);

echo $y; //Output 3

 

انشاا... که متوجه شده باشید.

موفق باشید

لینک به ارسال
در 14 دقیقه قبل، mehran-b گفته است :

درود مجدد

 

بله دقیقا همینه اون مقدار جلوی return برمیگرده به محل فراخوانی و به طور کامل عملیات داخل تابع متوقف میشه (یعنی اگر داخل تابع بعد از return دستوری نوشته شده باشه اون دستورات اجرا نمیشن).

 

خوب این مثالی که زدی خطا داره.

توی پارامترهای تابع اومدیم متغییرهای num1 و num2 رو دریافت کردیم.

پس داخل تابع باید از همین دو تا متغییر استفاده کنیم و num3 و num4 ای در کار نیست.

پس تابع میشه:


function sum($num1 , $num2){
	
    $s = $num1 + $num2;
	
	
    echo $s;
	
}

خوب حالا تابع sum هیچ مقداری ور بازگشت نمیده بلکه مستقیم در خروجی مقدار رو چاپ میکنه پس نحوه درست فراخوانیش میشه:


sum (1 , 2); //Output 3

تنها در صورتی حاصل یه تابع رو میشه ریخت داخل یه متغییر که تابع با استفاده از return حاصل عملیاتی رو که انجام داده بازگشت بده.

مثلا اگر تابع sum این شکلی تعریف میشد:


function sum($num1 , $num2){
	
    $s = $num1 + $num2;
	
	
    return $s;
	
}

اون موقع اون دستوری که بالا نوشتید جواب میده یعنی این:


$y = sum(1 , 2);

echo $y; //Output 3

 

انشاا... که متوجه شده باشید.

موفق باشید

اسم متغیر رو حواسم نبود

بله متوجه شده

خیلی ممنون از شما

لینک به ارسال
در در 8/15/2018 at 22:51، mehran-b گفته است :

خدا رو شکر

پاینده باشید


function factorial ($x){

    if ($x == 1){
         return 1 ;
    }else {

        return $x * factorial($x-1);
    }


}
echo factorial(5);

مثلا توی این کد که فاکتوریل رو درست کردم، مثلا 5 دادم به تابع. این تابع میاد 5 رو وارد میکنه و بعد میره 5 رو در 4 فاکتوریل ضرب میکنه. به همین صورت تا 1 فاکتوریل میره. وقتی به یک میرسه، میره توی دستور if و 1 برگردونده میشه. پس اون پایین که من تابع رو فراخوانی کردم باید مقدار 1 چاپ بشه که. چون اخرین چیزی که ارسال شده به محل فراخوانی، عدد 1 بوده. درصورتی که 120 رو چاپ میکنه

چرا اینجوریه :D

لینک به ارسال

درود بر شما @SadraHkm

 

تابع فاکتوریل مثال خوبی برای یک تابع بازگشتیه که بیشتر مواقع در آموزش اصول برنامه نویسی ازش یاد میشه.

در ۱ ساعت قبل، SadraHkm گفته است :

چون اخرین چیزی که ارسال شده به محل فراخوانی، عدد 1 بوده. درصورتی که 120 رو چاپ میکنه

عجب اشتباه بزرگی آخرین و تنها خروجی به محل فراخوانی عدد 120 (1 * 2 * 3 * 4 * 5) بوده که چاپ شده خروجی تابع وقتی 1 بوده که ورودیش 1 بوده یعنی جایی که تابع بازگشتی ما رسیده به فاکتوریل 2 و مقداری که بازگشت داده جای عبارت زیر عدد 2 بوده (منظور از بازگشت ، بازگشت به حالتیه که ورودی تابع 3 بوده).

2 * factorial(2 - 1); // Return 2

 

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...