اطلاعیه

Collapse
No announcement yet.

درک نکردن مفهوم وکارکرد تابع

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

    درک نکردن مفهوم وکارکرد تابع

    سلام دوستان

    مدتیه میخوام نحوه ی کارکرد یک تابع ساده رو در بسکام درک کنم ولی نمی تونم،از دوستان میخوام که برنامه زیر رو که از کتاب 1nafar کپی کردم ،برام مفصل توضیح بدهید ....تشکر
    کد:
    [code]$regfile = "m16def.dat"
     $crystal = 1000000
     Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = PORTC.4 , Db5 = PORTC.5 , Db6 = PORTC.6 , Db7 = PORTC.7 , E = PORTC.2 , Rs = PORTC.0
     Declare Function Myfunction ( Byval I As Integer , S As String ) As Integer
     Dim K As Integer , Z As String *10, T As Integer
     K = 5 : Z = "123 " : T = Myfunction(k , Z) 
    LocAte 1 , 1 
    Lcd T '25
     Locate 1 , 7
     Lcd Z 'Bascom
    
    Locate 2 , 1 Lcd K '5 
    End 
    
     Myfunction ( Byval I As Integer , S As String ) As Integer
     local P As Integer 
    Functions:
     P = I * 5
     I = 5 
    S = "Bascom" 
    T = P 
    Myfunction = T
     End Function
    [/code]

    #2
    پاسخ : درک نکردن مفهوم وکارکرد تابع

    نوشته اصلی توسط میثم قاسمی نیا
    سلام دوستان

    مدتیه میخوام نحوه ی کارکرد یک تابع ساده رو در بسکام درک کنم ولی نمی تونم،از دوستان میخوام که برنامه زیر رو که از کتاب 1nafar کپی کردم ،برام مفصل توضیح بدهید ....تشکر
    کد:
    [code]$regfile = "m16def.dat"
     $crystal = 1000000
     Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = PORTC.4 , Db5 = PORTC.5 , Db6 = PORTC.6 , Db7 = PORTC.7 , E = PORTC.2 , Rs = PORTC.0
     Declare Function Myfunction ( Byval I As Integer , S As String ) As Integer
     Dim K As Integer , Z As String *10, T As Integer
     K = 5 : Z = "123 " : T = Myfunction(k , Z) 
    LocAte 1 , 1 
    Lcd T '25
     Locate 1 , 7
     Lcd Z 'Bascom
    
    Locate 2 , 1 Lcd K '5 
    End 
    
     Myfunction ( Byval I As Integer , S As String ) As Integer
     local P As Integer 
    Functions:
     P = I * 5
     I = 5 
    S = "Bascom" 
    T = P 
    Myfunction = T
     End Function
    [/code]
    تابعی به اسم myfunction تعریف کرده دوتا آرگمان ورودی از نوع اینتجر و استرینگ داره
    که از نوع byval هستن
    دو نوع ارجاع کلی داریم
    byval : ارجاع از طریق مقدار که یک کپی از مقدار که برای تابع ارسال میشه مورد عملیات خاصی که داخل تابع تعریف شده قرار میگیره و بدون اینکه متغییر اصلی که به این تابع ارجاع داده شده تغییر بکنه
    byref : درواقع میاد و بجای اینکه ی کپی از مقادیر رو به تابع ارسال کنه آدرس مقدار اصلی در حافظه رو به تابع ارسال میکنه در نتیجه داخل تابع هر نوع تغییری ایجاد بشه مستقیما روی محلی اعمال میشه که داده های اصلی داخلش قرار گرفتن و این میشه که ارجاع از طریق رفرنس در صورتی که داخل تابع متغیر ارجاع داده شده مورد تغییر قرار بگیره اصلش هم بیرون از بدنه تابع تغییر میکنه

    مقدار بازگشتی تابع بالا از نواع اینتجر هست
    هر تابع فرضا مقداری ورودی میگیره ی مقدار خروجی میده
    مثل تابع f(x)= sinx
    بعد از اینکه تابع رو صدا میزنیم آرگمان های مورد نظر رو بهش ارسال میکنیم و مقدار بازگشتیش رو که حاصل عملیات مدنظرمون هست ازش استفاده میکنیم
    اشک هایی که پس از هر شکست ریخته میشوند همان عرق هاییست که برای پیروزی ریخته نشده است

    دیدگاه


      #3
      پاسخ : درک نکردن مفهوم وکارکرد تابع

      در مورد نحوه برگردوندون اطلاعات محاسبه شده توسط تابع به دو شکل عمل میشه
      1:
      return meghdare mohasebe shode
      2:
      esme tabe = meghdar mohasebe shode
      در بیسیک دو روش اصلی به صورت فوق هست تفاوتشون این هست روش اول بعد از اجرا شدن باعث انصراف از ادامه اجرای خطوط تابع میشه و در روش دوم مقدار رو ارجاع میده و تا آخر تابع اجرا میشه
      البته بیسیکی که تو بسکام به کار گرفته شده ی اسباب بازی از بیسیک واقعی هست و این چیزا براش تعریف نشده شما باید آخر تابع و به روش دوم استفاده کنید
      اشک هایی که پس از هر شکست ریخته میشوند همان عرق هاییست که برای پیروزی ریخته نشده است

      دیدگاه


        #4
        پاسخ : درک نکردن مفهوم وکارکرد تابع

        نوشته اصلی توسط mehran901
        در مورد نحوه برگردوندون اطلاعات محاسبه شده توسط تابع به دو شکل عمل میشه
        1:
        return meghdare mohasebe shode
        2:
        esme tabe = meghdar mohasebe shode
        در بیسیک دو روش اصلی به صورت فوق هست تفاوتشون این هست روش اول بعد از اجرا شدن باعث انصراف از ادامه اجرای خطوط تابع میشه و در روش دوم مقدار رو ارجاع میده و تا آخر تابع اجرا میشه
        البته بیسیکی که تو بسکام به کار گرفته شده ی اسباب بازی از بیسیک واقعی هست و این چیزا براش تعریف نشده شما باید آخر تابع و به روش دوم استفاده کنید
        سلام
        دوست عزیز بابت پاسخ وراهنماییتون تشکر میکنم...با این حالا من تو مثال بالا متوجه نشدم که کجا تابع رو صدا زدیم وکجا متغیر k و z رو فرستادیم ،درواقع تو آنالیز تابع موندم وگیج میزنم

        دیدگاه

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