PDA

نسخه کامل مشاهده نسخه کامل : چطور میشه از یک تابع فرعی به تابع اصلی main() برگشت



Iman System
11-10-2008, 14:34
یعنی بعد از شرطی یا اتمام تابع فرعی به ابتدای تابع اصلی برگشت.
در هر دو صورت برگشتی int و void ؟

devil_ff2008
11-10-2008, 18:52
بعد از این که برگشت به main با goto بفرستش به اول main
البته کارشناس ها و برنامه نویسان حرفه ای استفاده از goto رو پیشنهاد نمیکنن

Iman System
11-10-2008, 19:27
خوب از تابع فرعی چطور بیام تو تابع اصلی که از کل برنامه خارج نشه به جز حالت switch..case

devil_ff2008
11-10-2008, 21:20
وقتی زیربرنامه رو صدا بزنی بعد از اجرا شدنش دوباره به main برمیگرده دیگه
و میتونیید بعد از صدا زدنش از goto استفاده کنید

Iman System
11-10-2008, 22:52
اگه در زیربرنامه از for ( ; ; ) استفاده بشه چی ؟

devil_ff2008
11-10-2008, 23:02
فرقی نمیکنه
البته با goto از حلقه هم میتونید خارج بشید

Iman System
12-10-2008, 00:22
یعنی با goto میشه از یک بلوک به بلوک دیکه سوییچ کرد؟

devil_ff2008
12-10-2008, 00:31
سویچ رو نمیدونم والا ولی میشه خارج شد
اونم میتونی امتحان کنی

Iman System
12-10-2008, 00:57
امتحان کردم نشد! روش دیگه ای نیست ؟

Iman System
12-10-2008, 09:20
روش دیگه ای نبود !!!

devil_ff2008
12-10-2008, 14:33
فکر نمیکنم با هیچ دستوری شما بتونین به وسط یک حلقه یا دستور دیگه ای سوییچ کنین

hoax3r
12-10-2008, 19:39
نمیدونم چرا همچین کاری می خوای بکنی ولی این نمونه کدا رو ببین
 
مثلا اگه بخوای بعد اتمام یه تابع فرعی به ابتدای تابع main بری کدی که مشخص کردم رو انتهای تابع فرعی قرار بده(احتمال اینکه روی بعضی کامپایلر ها کار نکنه هست):

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
 
اگه وسط تابع میخوای استفاده کنی میتونی خود تابع main رو فراخانی کنی، ولی خوب باید یه فکری هم برای آدرس های برگشتی 
تابع فرعی کنی که تو stack میمونن خصوصا اگه تابع main رو بخوای زیاد فراخوانی کنی.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

شاد باشید

eng.j.mehrdad
12-10-2008, 19:57
محتویات Main رو بریز تو یه تابع و بازگشتی کن تو تابع فرعیت

Iman System
13-10-2008, 21:24
روش های بالا رو اجرا کردم ولی نتیجه ای نگرفتم.
در ضمن من چند برنامه رو (توابع فرعی) در چند هدر مختلف گذاشتم و در main بوسیله switch..case به اونها دسترسی دارم ولی میخوام با اجرای شرطی در توابع فرعی به ابتدای تابع main برگشته و به برنامه ی دیگه ای (تابع فرعی دیگه) دسترسی پیدا کنم و به همین منوال در هر موقعیتی به تابع اصلی و توابع فرعی دسترسی داشته باشم.
vc++ 6 in windows
gcc in linux

eng.j.mehrdad
14-10-2008, 01:47
روش های بالا رو اجرا کردم ولی نتیجه ای نگرفتم.
در ضمن من چند برنامه رو (توابع فرعی) در چند هدر مختلف گذاشتم و در main بوسیله switch..case به اونها دسترسی دارم ولی میخوام با اجرای شرطی در توابع فرعی به ابتدای تابع main برگشته و به برنامه ی دیگه ای (تابع فرعی دیگه) دسترسی پیدا کنم و به همین منوال در هر موقعیتی به تابع اصلی و توابع فرعی دسترسی داشته باشم.
vc++ 6 in windows
gcc in linux

ببین میتونی از این ایده بگیری، من وقت ندارم بیشتر توضیح بدم:
" اجراش نکن حلقه بی نهایت میده


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

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