ساخت توابع و زیر برنامه
فر ض کنید یک فرمول را در یک زیر برنامه نوشته اید. حال می خواهید در جاهای مختلف برنامه اصلی مقادیری در این فرمول جایگذاری و جواب را استخراج کنید. البته بدون آنکه مقادیر فرمول عوض نشود. البته با یک دستور ساده gosub می توان به یک زیر برنامه رفت و به آسانی با return بازگشت اما نمی توان انواع متغیر را به آن زیر برنامه نسبت داد. در ادامه دو روش را برای ساخت زیر برنامه فرا خواهید گرفت.
دستور معرفی متغیرهای توابع و فرمول در زبان بیسیک BASIC
1 |
Declare function sublable [( [ byref /byval ] var as type 1)] as type2 |
در مرحله اول با این دستور نام زیر برنامه ای که تابع در آن قرار می گیرد و متغیرهای محلی مورد استفاده در آن معرفی می شوند.
Sublable : نام زیر برنامه تابع
Byref : مشخصه متغیری که به زیر برنامه ارجاع می دهیم. در صورت که این گزینه باشد خود متغیر به زیر برنامه ارجاع می شود و پس از برگشت از زیر برنامه مقدارش تغییر کرده است.
Byval : مشخصه متغیری که به زیر برنامه ارجاع می دهیم. در صورت که این گزینه باشد تنها یک image متغیر به زیر برنامه ارجاع می شود و پس از برگشت از زیر برنامه مقدارش تغیر نمی کند.
نکته : اگر این دو گزینه را انتخاب نکنید به صورت پیش فرض byref در نظر گرفته می شود.
Var : نام متغیر محلی برای استفاده در زیر برنامه
Type 1 : نوع متغیر در زمان ارجاع
Type 2 : نوع متغیر در زمان برگشت از زیر برنامه
نکته : در برنامه نویسی این متغیر ها فضایی از حافظه را اشغال نمی کنند و نمی توان در برنامه اصلی به آنها مقدار داد و تنها در زیر برنامه قابل دسترسی است.
دستور ارسال چند متغیر مورد نظر برای قرار دادن در تابع یا فرمول
1 |
Var = sublable ( var 1 , var 2 ,..) |
Sublable : نام زیر برنامه تابع
Var : نام متغیری برای ریختن جواب فرمول در آن ( اجباری )
Var 1,2 : متغیرهایی که می خواهیم در فرمول جایگذاری شوند. این متغیرها به ترتیب در جای متغیرهای محلی ذکر شده در فرمول جایگذاری می شوند.
ساخت زیر برنامه در زبان بیسیک BASIC
1 2 3 4 |
Function sublable: ………formul End function |
Sublable : نام زیر برنامه
…..formul : تابع یا فرمول مورد نظر
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Dim a as byte Dim b as byte Dim n as integer Declare function all ( byval x as byte , y as byte ) as integer A =1 B= 2 N= ali ( a , b ) , x=a , y=b , go to ali function N= a+b , a=1 , b=6 , n=1+6 End Function ali: X = x +2 , x= 1+2 Y = y *x , y =2*3 -------àb N= x + y , n= 3+6--------àn End function |
چون قبل از متغیر x از by val استفاده شده مقدار برگشتی a از زیر برنامه تغییر نمی کند و همان 1 باقی می ماند. اما b تغییر می کند.
دستور معرفی زیر برنامه با دسترسی متغیرها
1 |
Declare sub sublable [( [byref/byval] var as type1)] |
در مرحله اول با این دستور نام زیر برنامه ای که فراخوانی می شود و متغیرهای مورد استفاده در آن معرفی می شوند.
نکته : متغیرها محلی نیستند و باید قبل از استفاده از این دستور معرفی شوند.
Sublable : نام زیر برنامه
Byref : مشخصه ی متغیری که به زیر برنامه ارجاع می دهیم. در صورت که این گزینه باشد, خود متغیر به زیر برنامه ارجاع می شود و پس از برگشت از زیر برنامه, مقدارش تغییر کرده است.
Byval : مشخصه ی متغیری که به زیر برنامه ارجاع می دهیم. در صورتی که این گزینه باشد, تنها یک image متغیر به زیر برنامه ارجاع می شود و پس از برگشت از زیر برنامه, مقدارش تغییر نمی کند.
نکته : اگر این دو گزینه را انتخاب نکنید, به صورت پیش فرض byref در نظر گرفته می شود.
Var : نام متغیر برای استفاده در زیر برنامه
Type : نوع متغیر در زمان ارجاع
دستور ارسال چند متغیر مورد نظر برای قرار دادن در تابع یا فرمول
1 |
Call sublable ( var 1 , var 2 ,…) |
Sublable : نام زیر برنامه
Var 1,2 : متغیرهایی که می خواهیم در زیر برنامه جایگذاری شوند. این متغیرها به ترتیب در جای متغیرهایی که در زیر برنامه استفاده کرده ایم, جایگذاری می شوند.
ساخت زیر برنامه در زبان بیسیک BASIC
1 2 3 4 |
Sub sublable: State End sub |
Sublable : نام زیر برنامه
State : تابع یا فرمول مورد نظر
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Dim a as byte Dim b as byte Dim c as byte Dim x as byte Dim y as byte Declare sub ali ( byval x as byte , y as byte ) A = 1 B= 2 Call ali ( a,b ) , x = a , y = b , go to ali function C=a+b , a =1 , b=6 , c =1+6 C = x , c= 3 Y = x , y =3 End Sub ali: X = x+2 , x= 1+2 Y= y *x , y= 2*3--------à b End sub |
چون قبل از متغیر x از byval استفاده شده مقدار برگشتی a از زیر برنامه تغییر نمی کند و همان 1 باقی می ماند. اما b تغییر می کند.