SadraHkm

دستور return

8 پست در این موضوع قرار دارد

ارسال شده در (ویرایش شده)

سلام دوستان

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

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

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

ممنونم

 

ویرایش شده در توسط hcp90
0

به اشتراک گذاری این پست


لینک به پست

سلام و درود @hcp90

 

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

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

$num = mehran(); // Function Call

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

 

موفق باشید

3

به اشتراک گذاری این پست


لینک به پست
در ۱ ساعت قبل، 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 ;// و این قسمت که اکو داره، چیزی نمایش داده نمیشه

 

0

به اشتراک گذاری این پست


لینک به پست

درود مجدد

 

در 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

 

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

موفق باشید

2

به اشتراک گذاری این پست


لینک به پست
در 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

 

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

موفق باشید

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

بله متوجه شده

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

0

به اشتراک گذاری این پست


لینک به پست
در هم اکنون، hcp90 گفته است :

بله متوجه شده

خدا رو شکر

در هم اکنون، hcp90 گفته است :

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

پاینده باشید

0

به اشتراک گذاری این پست


لینک به پست
در در 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

0

به اشتراک گذاری این پست


لینک به پست

درود بر شما @SadraHkm

 

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

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

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

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

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

 

1

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری