ادامه دستورات بیسیک بخش پنجم
زیر برنامه
زیر برنامه یا برنامه فرعی ، بخشی مستقل از برنامه اصلی را تشکیل می دهد . هر زیر برنامه مجموعه ای از دستورالعمل هاست که هدف خاصی را دنبال کرده و به دفعات در برنامه اصلی فراخوانده شده و اجرا گردد.به دلیل استقلال زیر برنامه در یک برنامه اصلی می تواند تعدادی زیر برنامه باشد .یکی از ویژگی های زیر برنامه این است که از مقادیر متغیرهای برنامه اصلی می توانند استفاده کنند .
با تقسیم یک برنامه به چند زیر برنامه می توان برنامه اصلی را قابل فهم و خوانتر نمود .
نکته : زیر برنامه بعد از دستور END برنامه اصلی قرار می گیرند .
دستور SUB
با استفاده از این دستور می توان یک برنامه فرعی ایجاد کرد ، شکل کلی زیر برنامه :
( لیست پارامترها ) نام زیر برنامه SUB
محتوای زیر برنامه
END SUB
لیست پارامترها : متغیرهایی هستند که باید از برنامهاصلی به زیر برنامه منتقل شوند .
فرا خوانی یک زیر برنامه : فراخوانی یک زیر برنامه به معنای اجرای زیر برنامه می باشد . دستور CALL این کار را انجام می دهد . شکل کلی دستور ( آرگومان ها ) نام زیر برنامه CALL
آرگومان : به مجموعه متغیرهای مختلف که موقع فراخوانی به زیر برنامه منتقل می شوند ، آرگومان گفته مشود .
نکته : متغیرهای زیر برنامه ، مقادیر خود را فقط در داخل آن زیر برنامه حفظ می کنند به چنین متغیرهایی متغیر محلی می گویند.
برنامه ای بنویسید که بتواند عددی را از ورودی خوانده سپس با استفاده از برنامه فرعی FACT فاکتوریل آنرا محاسبه کرده نمایش دهد .
CLS
INPUT n
CALL FACT(n)
END
----------------
SUB FACT (n)
Mul = 1
FOR I = 1 To n
Mul = Mul * I
NEXT I
PRINT n”!”,Mul
END SUB
دستور GOSUB , RETURN
از دستور GOSUB به منظور انتقال کنترل به زیر برنامه استفاده می گردد و دستور RETURN کنترل را به دستور بعد از GOSUB هدایت می نماید . شکل کلی
شماره خط یا برچسب GOSUB
--
--
--
شماره خط یا برچسب RETURN
شماره خط یا برچسب : برچسب یا شماره خط ، خطی از برنامه اصلی را مشخص می کند که زیر برنامه مربوطه از آنجا آغازمی گردد و ذکر آن در این دستور اجباری است .
نکته : شماره خط نمی تواند به صورت متغیر یا عبارت بیان شود .
اجرای زیر برنامه تا زمان برخورد به اولین دستور RETURN ادامه می یابد ؛ سپس کنترل به دستور بعد از دستور GOSUB هدایت می شود . اگر در دستور RETURN برچسب یا شماره خطی ذکر شود کنترل بعد از اجرای زیر برنامه به شماره خط یا برچسب انتقال می یابد.
مثال : نمایش سه رشته کنار یکدیگر با اجرای یک زیر برنامه
CLS
GOSUB 40
END
---------------
40 PRINT “ SubrotINE” ;
PRINT “ IN” ;
PRINT “ Progress”
RETURN
مثال 2: برنامه زیر نام چهار نفر را از ورودی دریافت کرده سپس حروف دوم آن ها را کنار هم قرداده و نمایش می دهد .
CLS
GOSUB 100
PRINT y$
END
--------------
100 FOR I = 1 To 4
INPUT x$
Y$ = y$ MID$( x$ , 2 1 )
NEXT I
RETURN
دستور ON … GOSUB
از این دستور برای انشعاب یا کنترل برنامه به چند زیر برنامه دلخواه بر اساس مقادیر مختلف یک عبارت محاسباتی یا یک متغیر استفاده می شود . شکل کلی دستور :
شماره خطوط یا برچسب ها GOSUN عبارت یا متغیر ON
شماره خطوط یا برچسب ها : اولین خطوطی از زیر برنامه ها را مشخص می کند که انشعاب به آنها براساس مقدار متغیر یا عبارت محاسباتی که در دستور فوق گنجانده شده ، انجام مب پذیرد .اگر مقدار عبارت یا متغیر یک باشد کنترل برنامه به اولین شماره خط یا برچسب منتقل می شود و اگر مقدار عبارت یا متغیر دو باشد کنترل برنامه به دومین شماره خط یا برچسب منتقل می شود و به همین ترتیب ادامه پیدا می کند .
مقدار عبارت یا متغیر : می تواند هر عددی از 1 تا 255 باشد .
مثال 1:
CLS
FOR I = 1 TO 2
ON I GOSUB ONE , TWO
NEXT I
END
ONE : PRINT “ ONE “
RETURN
TWO : PRINT “ TWO “
RETURN
مثال 2 : محاسبه مجموع ، تفاضل ،حاصل ضرب و یا تقسیم دو عدد دلخواه با انتخاب شماره یک گزینه توسط کاربر از منوی نمایش داده شده .
DO
CLS
INPUT A , B
INPUT “ SELECT No. ( 1 - 4 )” ; N
ON N GOSUB 100 , 200 , 300 , 400
IF (N = 5) THEN
END
END IF
LOOP
100 PRINT A ;” + ”; B; “=”; A + B
RETURN
200 PRINT A ;” - ”; B; “=”; A - B
RETURN
300 PRINT A ;” * ”; B; “=”; A * B
RETURN
400 PRINT A ;” / ”; B; “=”; A / B
RETURN