آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

دستور return چیست !؟ (توضیحات معمول برای من قابل هزم نیست)

alfredo  10 سال پیش  10 سال پیش
0 0

سلام دوستان.

میدونم که return یک مقدار رو بر میگردونه.

ولی متوجه نمیشم چرا یک مقدار باید برگرده !؟

به کجا باید برگرده !؟

مگه وقتی ما یک متغیر رو = با یک مقدار قرار میدیم، اون متقیر دیگه حاوی اون مقدار نیست !؟ پس چرا باید return بشه !؟

با تشکر.

 برای این سوال 5 پاسخ وجود دارد.
پاسخ به سوال 
Ali  10 سال پیش
+1 0

مثلا یه متد درست میکنی واسه جمع 2عدد

 public int sum(int a, int b) {

        int c = a + b;

        return c;

 

    }

بعد از این متد استفاده میکنی  ,2عدد بهش میدی خودش واست جمع میکنه .

int x=sum(4,2);

که x  برابر میشه با 6.

0 0
خوب اگه این return رو ننویسیم هم نباید مشکلی باشه ! تازه اونجاهایی که return خالی مینویسن چی !؟ (10 سال پیش)
+1 0
اگه ریترن رو ننویسی چیزی بر نمی گرده مثل اینکه به طرف بگی این کارو واسم انجام بده بعد برو از بانک از حساب من پول وردار ولی چک بهش ندی. میشه؟؟ (10 سال پیش)
+2 0
تابع به 2 صورته. یا باید بازگشتی باشه یعنی دارای return . یا بدون بازگشتی که در این صورت void که دیگه return نداره. به این صورت: public void نام تابع(داده){ عملیات } (10 سال پیش)
0 0
خوب این return مقدار رو به کجا میفرسته !؟ یا همون برمیگردونه !؟ مثل استاتیک میشه که از اکتیویتی های دیگه میشه بهش دسترسی داشت !؟ اون هایی که آخر متند return خالی مینویسن چیه اونوقت !؟ (10 سال پیش)
0 0
شما یه جا از یه فرمول استفاده می کنی؟ یه جا دیگه میگی نتیجش رو بده مثلا فرض کن یه مغازه بزرگ داری میگی هر وقت مشتری اومد ببینیش چی می خواد ( اینجا همون جایی هست که یه چیزی رو ارسال می کنه و منتظر ریترن می مونه - یعنی منتظر بازگشت نتیجه -) بعد هرچی خواست رو بدین به حسابدار حساب کنه ( اینجا محاسبات انجام میشه که چقد خرج کرده - اینجا همونجایی هست که ریترن داریم - بعد از انجام محاسبات مثلا شده صد هزار تومن - این نتیجه ریترن میشه به صاحب مغازه -) صاحب مغازه مقدار ریترن شده که میشه پول اجناس رو از خریدار میگیره و جنس رو بهش میده (10 سال پیش)
پاسخ به سوال 
بهروز  10 سال پیش
+5 0

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

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

حالا این تابع وقتی شروع به کار میکنه بعد از اینکه کارش تموم شد یا یه مقدار رو برمیگردونه .یا احتیاجی نیست بعد از پایان عملیات، مقداری برگردونه.

مثلا شما میخواید تابع sum  رو بنویسید .که دو عدد میگیره و مقدار جمع رو بر میگردونه...دقت کنید مقدار جمع رو برمیگردونه.

  public int sum(int a , int b)
{
int result=a+b;
return result;
}

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

  int tmp=sum(3, 5);

الان وقتی تابع اجرا میشه .مقدار 8 رو برمیگردونه به اونجایی که صدا زده شده .پس مقدار tmp  برابر 8 میشه.

 

پاسخ به سوال 
مسعود فرمانی  10 سال پیش
+6 0

توابع یا همون متد ها در جاوا بلوک های کدی اند که بسته به خواسته برنامه نویس کار های خاصی انجام میدن و اجرای برنامه و عملکرد اون کلا بوسیله متدها انجام میشه...(متد = عملکرد)

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

این در مورد تعریف ساده از ورودی متد...

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

حالا ممکنه متد صدا زده شده قرار نباشه مقداری رو محاسبه کنه و در اختیار متد بیرونی قرار بده(برگردونه) و قرار باشه مثلا بره فلان فیلد کلاس رو false کنه یا اینکه فقط یه پیغام رو نمایش بده و....اینجاست که میگیم این متد از نوع void هست یعنی هیچ مقداری برنمیگردونه...

 int methodA(){//تعریف methodeA
int a = 4;
.
.
.
boolean b = methodB();//مقدار خروجی methodB رو ذخیره کردیم
methodB();//methodB رو صدا زدیم ولی خروجیشو ذخیره نکردیم

methodC();این متد خروجی نداره که بخوایم جایی ذخیره کنیم
int a = methodC();//خطای کامپایل میگیریم چون سعی کردیم خروجی این متد رو ذخیره کنیم ولی این متد خروجی نمیده
}

boolean methodB(){
boolean b;
//یه سری کار...
return b;
}

void methodC(){
//یه سری کار...
return;//میتونیم اینو ننویسیم
}

مثلا توی تکه کد مثال که بالا نوشتم خود methodeA خروجی از نوع int برمیگردونه(کارایی که توی بدنه واسش نوشتیم رو انجام میده و حاصل محاسبات (معمولا) رو تحویل میده(برمیگردونه)  )

و methodB هم مقدار boolean برمیگردونه و ما این مقدار تحویلی رو در یه متغیر ذخیره کردیم...

methodC هم که هیچ مقداری تحویل نمیده(بر نمیگردونه)...

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

 

0 0
خیلی ممنونم از توضیحات دقیق و با جزئیات شما. پس اونجاهایی که آخر یک متد، تنها مینویسند return ، اونجا چی قراره برگشت داده بشه !؟ و اینکه در مثالی که زدید، از کلمه return استفاده نکردید، پس مقداری بر نمیگرده؟ (10 سال پیش)
0 0
خیلی ممنونم از توضیحات دقیق و با جزئیات شما. پس اونجاهایی که آخر یک متد، تنها مینویسند return ، اونجا چی قراره برگشت داده بشه !؟ و اینکه در مثالی که زدید، از کلمه return استفاده نکردید، پس مقداری بر نمیگرده؟ (10 سال پیش)
+2 0
اونجایی که یه return خالی میذارن تابع همون نوع void هست...گاهی برنامه نویس لازم میبینه در صورت برقرار شدن یه شرط خاص،بقیه کدهای موجود توی بدنه متد انجام نشه و اجرای متد نیمه کاره تموم شه.به خاطر همینه که از return خالی استفاده میکنن ولی اگه قرار باشه متد همه کاراشو همیشه انجام بده نیازی به نوشتن اون return خالی نیست... (10 سال پیش)
+1 0
در مورد قسمت آخر سوالتون،پاسخ رو ویرایش کردم .. (10 سال پیش)
+1 0
دمت گرم آقا مسعود. (10 سال پیش)
پاسخ به سوال 
amraee  10 سال پیش
+3 0

 return در تابع ، مثل یک گزارش کار و یا نتیجه کار می باشد که وقتی کار تابع تمام شد می توانید آنرا داشته باشید و اینکه گفتید کجا برمی گرده ، دقیقا بجای اسم خودش می شینه، یعنی مقدار return شده پس از فراخوانی و اجرای تابع، بجای خود تابع می شیند مثلا

x = f(y);

مقدار بازگشتی پس از اجرای تابع f بجای f می نشیند و طبق دستور فوق می توانیم آنرا در x واریز کنیم.

هر وقت دستور return اجرا بشه اجرای تابع هم تمام میشه حتی اگر چنین خط کد از آن باقی مانده باشه

+1 0
همه شما دوستای گلم ممنونم، بالاخره فهمیدم :) (10 سال پیش)
پاسخ به سوال 
ABOLFAZL  10 سال پیش
+2 0

با سلام خدمت همه دوستانی ک نظر دادن و الطف کردن و اطلاعاتشون رو انتشار دادن من فک کنم بدونم مشکل دوس عزیزمون کجاست با توجه به اینکه خودم دانشجوی نرم افزار کامپیوتر هستم

ببینید دوست عزیز

من خودمم قبلا همچین سوالایی برام پیش میومد البته موقعی ک تو هنرستان درس میخوندم

حتی خیلی وقتا متوجه نمیشدم ک تفاوت متغیر ها  توی چیه و به چه دردی میخورن و تابع چیه کلاس چیه

ولی تنها راه حلی ک واسه این کار وجود داره اینه باید پایه برنامه نویسیتو قوی کنی ینی درباره چیزی ک بلد نیستی باید سرچ کنی

و چند بار مثال دربارش حل کنی تا متوجه بشی

در باره این پرسشتونم همین کارو انجام بدین

چون نظرها و جوابهای بالا بسیار کامل هستش و من واقعا نمیدونم ک چی باید به این  نظر ها اضافه کنم تا درست تر بشه.

ولی  ی سایتی رو بهتون معرفی میکنم ک برین و تو این سایت مثال هاشو بخونین و مطاله کنین

بسیار سایت کاملی هستش درباره آموزشهای جاوا و اندروید

http://www.sokanacademy.com/categories/programming/java/tutorials

 


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .