اطلاعیه

Collapse
No announcement yet.

دستوری برای پرش از تابع در کدویژن

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    دستوری برای پرش از تابع در کدویژن

    سلام، برای پرش از یک تابع به تابع دیگر در کدویژن باید از چه دستوری استفاده کرد؟
    چون دستور goto فقط برای پرش داخل تابع هستش و نمیتونه خارج از تابع کار کنه.
    مثلا من میخوام وقتی تابع چک رو با check(); فراخوانی کردم و بعدش تابع چک اجرا شد اونوقت از تابع چک به برچسب استارت در یک تابع دیگه برش کنه.
    اینکار رو توسط چه دستوری میتونم انجام بدم؟؟

    به طور مثال:
    کد:
    
    #include <mega8.h>
    #include <delay.h>
    #include <alcd.h>
    
    
    void check();
    
    
    void main(void)
    {
        lcd_gotoxy(0,0);
        lcd_puts("config");
        delay_ms(500);
        lcd_clear();	
    start:  
        lcd_gotoxy(0,0);
        lcd_puts("Hii");
        delay_ms(500);	
        check();
    }
    
    
    void check()
    {
        lcd_gotoxy(0,0);
        lcd_puts("bye");
        delay_ms(500);
        goto start;
    }

    #2
    پاسخ : دستوری برای پرش از تابع در کدویژن

    سلام بنظر من یه تابع دیگه بساز این دو تا تابع رو داخل اون فراخوان کن پشت سر هم التبه شاید این روش حرفه ای نباشه
    I&#039;m going to
    RWTH Aachen
    University

    دیدگاه


      #3
      پاسخ : دستوری برای پرش از تابع در کدویژن

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

      دیدگاه


        #4
        پاسخ : دستوری برای پرش از تابع در کدویژن

        بجای start از دستور while استفاده کن به این شکل :

        کد:
        while(1) {
            lcd_gotoxy(0,0);
            lcd_puts("Hii");
            delay_ms(500);	
            check();
        }
        }
        در این حالت بعد از اجرای تابع check دوباره برنامه درون شرط while برمیگرده

        دیدگاه


          #5
          پاسخ : دستوری برای پرش از تابع در کدویژن

          در این sample code روش while جواب میده ... مگر اینکه برنامه پیچیده تر باشه که در این صورت پیشنهاد میکنم کد اصلی رو بذاری تا دوستان کمک کنند.

          دیدگاه


            #6
            پاسخ : دستوری برای پرش از تابع در کدویژن

            بهتره تا جایی که میشه منطق تابع ها رو جدا طراحی کنید تا مجبور نباشید به وسط تابع پرش کنید. اینطور میشه خود تابع رو ساده فراخوانی کرد.
            یا اینکه داخل تابع شرط بزارید و باز خود تابع رو فراخوانی کنید
            If the wind will not serve, take to the oars

            دیدگاه


              #7
              پاسخ : دستوری برای پرش از تابع در کدویژن

              سلام
              من خودم با این مشکل مواجه شدم کاری که به ذهنم در اخر کار رسید گذاشتن یک شرط بود که در صورت برقراری شرط یک عدد که او تابع نمی ساخت رو return کردم و در نهایت توی تابع main اون عدد بازگشتی رو دوباره با یه شرط چک کردم و جواب گرفتم

              دیدگاه


                #8
                پاسخ : دستوری برای پرش از تابع در کدویژن

                هر چند این روش برنامه نوبسی چنگی به دل نمیزنه ولی معلومه که اصرار داری ار تابع برگردی به لیبل start:
                اینجوری میتونم کمک کنم
                وقتی میری توی یک تابع چه اتفاقی میافته؟ جواب ادرس مکانی که تابع را صدا کردی پوش میشه تو استک
                موقعی که از تابع میخوای برگردی چی میشه؟ جواب ادرس از استک پاپ میشه . یعنی بر میگرده و برنامه میپره همونجا که که تابع را صدا کردی
                حالا اگر در داخل تابع قبل از برگشت ادرس داخل استک با ادرس لیبل start: عوض بشه چی میشه؟ جواب با شما
                جدیدترین ویرایش توسط kamy007; ۰۱:۱۶ ۱۳۹۶/۰۷/۰۴.

                دیدگاه

                لطفا صبر کنید...
                X