اطلاعیه

Collapse
No announcement yet.

اعلان روال در C

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

    اعلان روال در C

    سلام
    حتما فرق روال با تابع رو میدونید تابع یدونه خروجی داره و روال چندتا
    در پاسکال میشه هم روال و هم تابع رو تعریف کرد
    اما من در سی تا بحال تعریف روال رو ندیدم!
    کسی از دوستان تعریف روال در C بلده ؟

    *یادگیری علم زمانی مشکل است که قبل از یادگیری آن را پیچیده تصور کنیم.
    *چرا فکر میکنیم مباحث مهم و پیشرفته و سطح بالا باید پیچیده باشند.

    #2
    پاسخ : اعلان روال در C

    C فقط تابع داره که همون کار روال رو میکنه. اگه شما بخوای تابع چند تا خروجی داشته باشه باید از اشاره گرها یا متغیرهای ارجاعی استفاده کنید. مثلا وقتی میخواید تابع دو تا خروجی داشته باشه یکیش که همون مقدار برگشتی تابع هست دومیش رو میتونید از قبل براش تعریف متغیر کنید و آدرس اون رو به تابع پاس کنید

    int myfunc(int* m)
    {
    *m=5;
    return 3;
    }

    عدد 3 بعنوان خروجی اصلی تابع در مقدار برگشتی تابع با return قرار میگیره و عدد 5 هم بعنوان یه خروجی دیگه در متغیری که آدرسش رو در m قرار دادیم قرار میگیره

    دیدگاه


      #3
      پاسخ : اعلان روال در C

      نوشته اصلی توسط mojalan
      C فقط تابع داره که همون کار روال رو میکنه. اگه شما بخوای تابع چند تا خروجی داشته باشه باید از اشاره گرها یا متغیرهای ارجاعی استفاده کنید. مثلا وقتی میخواید تابع دو تا خروجی داشته باشه یکیش که همون مقدار برگشتی تابع هست دومیش رو میتونید از قبل براش تعریف متغیر کنید و آدرس اون رو به تابع پاس کنید

      int myfunc(int* m)
      {
      *m=5;
      return 3;
      }

      عدد 3 بعنوان خروجی اصلی تابع در مقدار برگشتی تابع با return قرار میگیره و عدد 5 هم بعنوان یه خروجی دیگه در متغیری که آدرسش رو در m قرار دادیم قرار میگیره
      بله متوجه ام
      راستش یه کتاب دارم به اسم "مرجع کامل پردازش تصویر در سی" و کدهای کاربردی پردازش تصویر در کتاب هست
      اما در کدها صحبت از روال شده و یکی از اون روال ها رو در پایین گذاشتم
      اگه در c روال نباشه پس کد زیر باید یه تابع باشه که بطور خاصی اعلان شده!

      کد:
      /*******************************************
      
      *
      
      * read_image_array(...
      
      *
      
      * This routine reads the image data from
      
      * either a tiff or bmp image.
      
      *
      
      ********************************************/
      
       
      
      read_image_array(file_name, array)
      
      char *file_name;
      
      short **array;
      
      {
      
      int ok = 0;
      
       
      
      if(is_a_tiff(file_name)){
      
      read_tiff_image(file_name, array);
      
      ok = 1;
      
      }
      
      
      if(is_a_bmp(file_name)){
      
      read_bmp_image(file_name, array);
      
      ok = 1;
      
      }
      
       
      
      if(ok == 0){
      
      printf("\nERROR could not read file %s",
      
      file_name);
      
      exit(1);
      
      }
      
       
      
      } /* ends read_image_array */

      کد رو در برنامه Notpad بگذارید تا درست شه
      *یادگیری علم زمانی مشکل است که قبل از یادگیری آن را پیچیده تصور کنیم.
      *چرا فکر میکنیم مباحث مهم و پیشرفته و سطح بالا باید پیچیده باشند.

      دیدگاه


        #4
        پاسخ : اعلان روال در C

        کلمات function, routine, procedure همه اینها در زبانهای مختلف عملا یه معنی میدن یعنی یه قسمت جدا از برنامه که کار خاصی رو انجام میدن. این تابعی یا روتینی هم که شما نوشتین در واقع آدرس فایل رو مثل یه رشته و همچنین آدرس آدرس (pointer to pointer) یه آرایه رو میگیره و از فایل میخونه و مقادیر پیکسلها رو داخل اون مینویسه. اولین آرگومان ورودی و دومین آرگومان بعنوان خروجی استفاده شده.
        موقع تعریف یا اعلان تابع هم میتونید اینطور بنویسید :

        read_image_array(char *file_name, short **array)

        دیدگاه


          #5
          پاسخ : اعلان روال در C

          نوشته اصلی توسط mojalan
          موقع تعریف یا اعلان تابع هم میتونید اینطور بنویسید :

          read_image_array(char *file_name, short **array)
          پس من یه جمع بندی میکنم:

          تابع یا روال در سی میتونه بدون نوع برگشتی تعریف بشه حتی کلمه کلیدی void میتونه نباشه
          و نوع پارامترها که معمولا در داخل لیست پارامترای تابع میاد میتونه بعد از لیست پارامترا و قبل از آکولاد مشخص بشه(مطابق شکل)


          *یادگیری علم زمانی مشکل است که قبل از یادگیری آن را پیچیده تصور کنیم.
          *چرا فکر میکنیم مباحث مهم و پیشرفته و سطح بالا باید پیچیده باشند.

          دیدگاه


            #6
            پاسخ : اعلان روال در C

            عذر میخوام وقتی تابع مقدار برگشتی نداره باید از کلمه void استفاده بشه

            دیدگاه


              #7
              پاسخ : اعلان روال در C

              اگر نوع تابع تعریف نشه به صورت دیفالت از نوع integer خواهد بود .

              دیدگاه

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