SadraHkm 20 ارسال شده در مرداد 97 گزارش بازنشر ارسال شده در مرداد 97 (ویرایش شده) سلام دوستان من مفهموم دستور return رو نمیفهمم. یعنی چی که میگین داده ها رو بر میگردونه ؟ به کجا برمیگردونه ؟ یعنی چی ؟ توی سایت های انگلیسی هم دیدم ولی همشون نوشتن یه مقداری بر میگردونه . من نمیفهمم لطفا یه مثال هم باهاش بزنین ممنونم ویرایش شده مرداد 97 توسط hcp90 نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مرداد 97 گزارش بازنشر ارسال شده در مرداد 97 سلام و درود @hcp90 دستور return نتیجه را به محل فراخوانی تابع بر می گردونه. function mehran() { // Function Definition return 10; } $num = mehran(); // Function Call مثلا توسط کد فوق عدد 10 توی متغییر num قرار گرفت. موفق باشید 3 نقل قول لینک به ارسال
SadraHkm 20 ارسال شده در مرداد 97 مالک گزارش بازنشر ارسال شده در مرداد 97 در ۱ ساعت قبل، 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 ;// و این قسمت که اکو داره، چیزی نمایش داده نمیشه نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مرداد 97 گزارش بازنشر ارسال شده در مرداد 97 درود مجدد در 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 نقل قول لینک به ارسال
SadraHkm 20 ارسال شده در مرداد 97 مالک گزارش بازنشر ارسال شده در مرداد 97 در 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 انشاا... که متوجه شده باشید. موفق باشید اسم متغیر رو حواسم نبود بله متوجه شده خیلی ممنون از شما نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مرداد 97 گزارش بازنشر ارسال شده در مرداد 97 در هم اکنون، hcp90 گفته است : بله متوجه شده خدا رو شکر در هم اکنون، hcp90 گفته است : خیلی ممنون از شما پاینده باشید نقل قول لینک به ارسال
SadraHkm 20 ارسال شده در مرداد 97 مالک گزارش بازنشر ارسال شده در مرداد 97 در در 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 رو چاپ میکنه چرا اینجوریه نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مرداد 97 گزارش بازنشر ارسال شده در مرداد 97 درود بر شما @SadraHkm تابع فاکتوریل مثال خوبی برای یک تابع بازگشتیه که بیشتر مواقع در آموزش اصول برنامه نویسی ازش یاد میشه. در ۱ ساعت قبل، SadraHkm گفته است : چون اخرین چیزی که ارسال شده به محل فراخوانی، عدد 1 بوده. درصورتی که 120 رو چاپ میکنه عجب اشتباه بزرگی آخرین و تنها خروجی به محل فراخوانی عدد 120 (1 * 2 * 3 * 4 * 5) بوده که چاپ شده خروجی تابع وقتی 1 بوده که ورودیش 1 بوده یعنی جایی که تابع بازگشتی ما رسیده به فاکتوریل 2 و مقداری که بازگشت داده جای عبارت زیر عدد 2 بوده (منظور از بازگشت ، بازگشت به حالتیه که ورودی تابع 3 بوده). 2 * factorial(2 - 1); // Return 2 1 نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .