اطلاعیه

Collapse
No announcement yet.

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

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

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

    با سلام
    توابع در زبان سی چطوری تعریف می شوند؟ فرق برچسب و تابع در چی هست؟ایا برچسب کار تابع را انجام می دهد؟
    مثلا مگر اینطور تعریف نمی شوند؟
    [code=c]
    void display()
    {


    }

    void main (){
    display()

    }
    [/code]

    [code=c]
    loop:
    xxxxxxxx

    goto loop;

    [/code]


    سپاس

    #2
    پاسخ : چند سئوال در مورد توابع در زبان سی

    کار تابع اینه که یه سری کدی که توش تعریف کردی رو هر وقت که صداش کردی بیاد انجام بده و بره ادامه کارارو از بعد از فرا خوانیش اجرا کنه، یعنی بعد از هر بار اجرا خودش بر میگرده سر جایی که ازش صدا شده، اما goto معمولا این کارو نمیکنه! و کار اصلی goto انتقال روند اجرای برنامست! یعنی بهش میگی حالا برو از فلان خط اجرا کن و حالا برو از فلان خط اجرا کن.
    استفاده از goto کدت رو به زشت ترین کد ممکن تبدیل میکنه، جوری که اگه زیاد ازش استفاده کرده باشی اگه بعد چند مدت کدت رو بخونه به خودت بد و بیرا میگی، خوانایی و قابلیت درک کد رو به شدت پایین میاره.
    2تا کار خیلی مهمی هم که توابع میتونن انجام بدن اما goto نه اینه که توابی میتونن ورودی داشته باشن و خروجی بر گردونن
    ;()((void (*)(void))0x0000))

    دیدگاه


      #3
      پاسخ : چند سئوال در مورد توابع در زبان سی

      نوشته اصلی توسط SAJAD-G
      کار تابع اینه که یه سری کدی که توش تعریف کردی رو هر وقت که صداش کردی بیاد انجام بده و بره ادامه کارارو از بعد از فرا خوانیش اجرا کنه، یعنی بعد از هر بار اجرا خودش بر میگرده سر جایی که ازش صدا شده، اما goto معمولا این کارو نمیکنه! و کار اصلی goto انتقال روند اجرای برنامست! یعنی بهش میگی حالا برو از فلان خط اجرا کن و حالا برو از فلان خط اجرا کن.
      استفاده از goto کدت رو به زشت ترین کد ممکن تبدیل میکنه، جوری که اگه زیاد ازش استفاده کرده باشی اگه بعد چند مدت کدت رو بخونه به خودت بد و بیرا میگی، خوانایی و قابلیت درک کد رو به شدت پایین میاره.
      2تا کار خیلی مهمی هم که توابع میتونن انجام بدن اما goto نه اینه که توابی میتونن ورودی داشته باشن و خروجی بر گردونن
      ممنون دوست عزیز: الان ایا این کد ها از نظر بر چسب درست هستند(اصول برنامه نویسی)؟
      مخصوصا شرط if که گذاشتم؟ goto start
      [code=c]
      if (PIND.3==0)

      goto start;
      [/code]

      [code=c]
      start :

      Bearer_Set_APN(Bearer);
      lcd_clear();
      lcd_gotoxy(0,0);
      lcd_puts("STEP1"
      delay_ms(1000);


      step2:
      printf("AT+FTPCID=1%c",Enter);
      getstr(str1);
      getstr(str1);
      lcd_clear();
      lcd_gotoxy(0,0);
      delay_ms(100);
      lcd_puts("STEP2"
      if (!strcmp(str1,"OK&quot)
      {
      lcd_gotoxy(0,1);
      lcd_puts("OK"
      }
      else
      {
      goto step2;
      }
      delay_ms(1000);

      step3:
      printf("AT+FTPPUTOPT=%cAPPE%c%c",double_ quote,double_quote,Enter);
      getstr(str1);
      getstr(str1);
      lcd_clear();
      lcd_gotoxy(0,0);
      lcd_puts("STEP3"
      if (!strcmp(str1,"OK&quot)
      {
      lcd_gotoxy(0,1);
      lcd_puts("OK"
      }
      else
      {
      goto step3;
      }
      delay_ms(1000);

      step4:
      printf("AT+FTPSERV=%c%s%c%c",double_quot e,FTP_Server,double_quote,Enter);
      scanf("%s",str1);
      scanf("%s",str1);
      lcd_clear();
      lcd_gotoxy(0,0);
      lcd_puts("STEP4"
      if (!strcmp(str1,"OK&quot)
      {
      lcd_gotoxy(0,1);
      lcd_puts("OK"
      }
      else
      {
      goto step4;
      }
      delay_ms(1000);

      step5:
      printf("AT+FTPUN=%c%s%c%c",double_quote, FTP_User,double_quote,Enter);
      scanf("%s",str1);
      scanf("%s",str1);
      lcd_clear();
      lcd_gotoxy(0,0);
      lcd_puts("STEP5"
      if (!strcmp(str1,"OK&quot)
      {
      lcd_gotoxy(0,1);
      lcd_puts("OK"
      }
      else
      {
      goto step5;
      }
      delay_ms(1000);

      step6:
      printf("AT+FTPPW=%c%s%c%c",double_quote, FTP_Pass,double_quote,Enter);
      scanf("%s",str1);
      scanf("%s",str1);
      lcd_clear();
      lcd_gotoxy(0,0);
      lcd_puts("STEP6"
      if (!strcmp(str1,"OK&quot)
      {
      lcd_gotoxy(0,1);
      lcd_puts("OK"
      }
      else
      {
      goto step6;
      }
      delay_ms(1000);

      step7:
      printf("AT+FTPPUTNAME=%c%s%c%c",double_q uote,FTP_File_Name,double_quote,Enter);
      scanf("%s",str1);
      scanf("%s",str1);
      lcd_clear();
      lcd_gotoxy(0,0);
      lcd_puts("STEP7"
      if (!strcmp(str1,"OK&quot)
      {
      lcd_gotoxy(0,1);
      lcd_puts("OK"
      }
      else
      {
      goto step7;
      }
      delay_ms(1000);

      step8:
      printf("AT+FTPPUTPATH=%c%s%c%c",double_q uote,FTP_File_Path,double_quote,Enter);
      scanf("%s",str1);
      scanf("%s",str1);
      lcd_clear();
      lcd_gotoxy(0,0);
      lcd_puts("STEP8"
      if (!strcmp(str1,"OK&quot)
      {
      lcd_gotoxy(0,1);
      lcd_puts("OK"
      }
      else
      {
      goto step8;
      }
      delay_ms(1000);



      step9:
      printf("AT+FTPPUT=1%c",Enter); //ok +ftpput=2,1280 +ftpput=1,1,1280
      scanf("%s",str1);
      scanf("%s",str1);
      scanf("%s",str1);
      lcd_clear();
      lcd_gotoxy(0,0);
      lcd_puts("STEP9"
      lcd_gotoxy(0,1);
      lcd_puts(str1);
      delay_ms(1000);

      if(strcmp(str1,"+FTPPUT:1,1,1300&quot)
      goto step9;

      while (1)
      {
      // Place your code here
      lcd_gotoxy(0,0);
      lcd_puts("Zero-elec.com"
      lcd_gotoxy(0,1);
      lcd_puts("Repeat:1 "


      // if(keyscan() == 1)

      if (PIND.3==0)

      goto start;

      }
      }

      [/code]


      سپاس

      دیدگاه


        #4
        پاسخ : چند سئوال در مورد توابع و.....در زبان سی

        تو کدی که گذاشتی اگه شرطت درست باشه لیبل start شروع میشه و بعدش step2 اجرا میشه و اگه goto داخل step2 اجرا نشه step3 میره لیبل بعدی اجرا میشه و الی آخر
        ;()((void (*)(void))0x0000))

        دیدگاه


          #5
          پاسخ : چند سئوال در مورد توابع و.....در زبان سی

          نوشته اصلی توسط SAJAD-G
          تو کدی که گذاشتی اگه شرطت درست باشه لیبل start شروع میشه و بعدش step2 اجرا میشه و اگه goto داخل step2 اجرا نشه step3 میره لیبل بعدی اجرا میشه و الی آخر
          ممنون دوست عزیز: پس ان دستور if از نظر ساینتکس درسته.
          یک سئوال دیگه داشتم: توی این کد با زدن دکمه 1 از کی پد دستورات اجرا میشه !! گمان کنم از همان step ها شروع میشه !! میخوام کیپد اش را حذف کنم و به جایش دکمه فشاری بزارم که میشه همان PIND.3==0 !!!
          توی لینک زیر: دستورات که بهشان مشکوک هستم و گمان کنم برای کی پد هست را کامنت کردم با // که با خط ابی مشخص هست توی صفحه وب !! به نظر شما درست انتخاب کردم کد های حذف کی پد را؟ ته صفحه کد ها : مجموع کد ها ی انتخاب شده مشخص هست ! شما برنامه نویسی تان خوب هست لطفا راهنمایی کنید!
          http://www.mediafire.com/view/b456qrc0la7qyacq/send_data_to_web.c
          سپاس

          دیدگاه

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