تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 4 از 4

نام تاپيک: کسی میدونه توابع چیه و چطور تعریف میشه؟

  1. #1
    داره خودمونی میشه judaki's Avatar
    تاريخ عضويت
    Dec 2008
    پست ها
    73

    1 کسی میدونه توابع چیه و چطور تعریف میشه؟



    سلام دوستان خوبید

    ببخشید من توابع رو سر کلاسمون یاد نگرفتم و کتاب هم خوندم زیاد چیزی متوجه نشدم.
    مثل این که توابع 4 نوع اند .1 توابع با ورودی با خروجی 2 توابع با ورودی بدون خروجی و ...

    کسی میتونه کامل توضیح بده یا لینکی معرفی کنه که توابع رو خوب توضیح داده باشه و چند تا مثال هم از هر مدل به صورت خیلی ساده و مفهومی بده.

    کلا چند تا مثال با توضیح خوب از توابع . خواهشا مثل کتابهای آموزشی نباشه .
    ممنون

  2. #2
    داره خودمونی میشه
    تاريخ عضويت
    Mar 2008
    پست ها
    132

    پيش فرض

    در حالت کلی تعریف تابع به شکل زیر هست:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    که بر اساس این تعریف چهار حالت بوجود میاد:


    1- تابع پارامتر ورودی نداره و خروجی هم نداره


    2- تابع هم پارامتر ورودی داره اما فقط یه خروجی میتونه داشته باشه


    3-تابع یک خروجی داره اما هیچ پارامتر ورودی ای نداره


    4-تابع خروجی نداره اما یک پارامتر ورودی داره


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



    خب حالا بر مبنای هر کدوم از این حالات یه مثال میزنم .

    1-برنامه ای بنویسید که با فراخوانی تابع print پیغام hello,welcome رو به کاربر نشون بده .
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    2- برنامه ای بنویسید که عددی را گرفته به تابع بدهد اگر عدد زوج بودپیغامی مبنی برزوج بودن و اگر فرد بود پیغامی مبنی بر فرد بودن را چاپ کند.

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

    نکته 1 : حتما باید توابع در همه 4 حالت prototype داشته باشند. یعنی چی ؟ یعنی قبل تابع main() یه الگویی از تابع رو تعریف کنیم تا زمانی که کامپایلر به این خط رسید بفهمه ما جلوتر تابعی با اون مشخصات داریم . نوشتن این قسمت هم خیلی کار سختی نیست فقط باید خط اول توابع که شامل نوع خروجی و نام تابع و انواع پارامترها هست رو کپی بگیری وبیاری تو این قسمت قرار بدی . البته بهتر هست که تو قسمت پارامترهاش فقط نوع رو قرار بدی .
    نکته2: ما در دو حالت مقدار رو به تابع ارسال میکنیم
    1- call by value:
    2-call by refrence
    البته نمیدونم اینا رو به شما گفتن یا نه . اگر گفتن و شما هم درک کردید که هیچ اگر نه که بگید تا بیشتر توضیح بدم .
    نکته 3 : وقتی یه مقداری رو به یه تابعی ارسال میکنیم این مقدار نامش تو خط اول میتونه تغییر کنه یا نکنه. مثلا تو مثال بالا وقتی متغیر با نام num رو فرستادم به تابع میتونستم تو خط اول تابع اسمش رو بذارم هر چیزی غیر از num .

    3- برنامه ای بنویسید که داخل تابعی دو عدد را گرفته و جمع حاصل را به برنامه اصلی برگرداند.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    4-بر نامه ای بنویسید که عددی را از کاربر گرفته به تابعی ارسال کند تا به تعداد آن برای شما * را چاپ کند.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    من تا اونجایی که در توانم بود تلاش کردم توابع رو با مثال های خیلی ساده توضیح بدم . امیدوارم که براتون مفید واقع بشه .
    اگر سوالی بود مطرح کنید.
    موفق باشید.
    Last edited by dewdrops; 12-11-2010 at 10:23.

  3. 2 کاربر از dewdrops بخاطر این مطلب مفید تشکر کرده اند


  4. #3
    داره خودمونی میشه judaki's Avatar
    تاريخ عضويت
    Dec 2008
    پست ها
    73

    1

    سلام

    ببخشید جناب dewdrops اگه ممکنه یه مقداری هم درمورد اون نکته ی 2 توضیح بدید.

  5. #4
    داره خودمونی میشه
    تاريخ عضويت
    Mar 2008
    پست ها
    132

    پيش فرض

    برای توابع در c++ به 3 روش میشه مقدار ارسال کرد .

    1-call by value:ارسال با مقدار
    2- pass-by-reference by reference argument: ارسال با ارجاع با آرگومان ها ارجاعی
    3-pass-by-reference with pointer arguments:ارسال با ارجاع با آرگومان های اشاره گر

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

    اما تو حالت دوم و سوم هر تغییری روی مقدار متغیر بدی رو مقدار متغیر در تابع فراخواننده تاثیر میذاره.

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

    ارسال با ارجاع با ارسال با اشاره گر هیچ فرقی باهم ندارن .ولی ما ارسال با ارجاع رو فقط تو c++ داریم و تو C این روش وجود نداره.

    خب حالا میریم سر مثال:

    چون شما هنوز اشاره گر نخوندی من از کتاب دایتل یه مثال در رابطه با دو روش اول میذارم.


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


    موفق باشید.
    Last edited by dewdrops; 14-11-2010 at 21:07.

  6. این کاربر از dewdrops بخاطر این مطلب مفید تشکر کرده است


Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •