قرآن در کامپیوتر

دانلود نرم افزار های قرآنی یه صورت رایگان

قرآن در کامپیوتر

دانلود نرم افزار های قرآنی یه صورت رایگان

روشهای جستجو

در این پست به شما انواع روش های جستجو آموزش داده می شود. سپس طریقه نوشتن برنامه برای این روش ها کاملا شرح داده خواهد شود و در انتها با دادن نمونه تست ها مربوط به این بخش مطلب به پایان خواهد رسید . برای مطالعه این متن به ادامه مطلب مراجعه کنید .

ادامه مطلب ...

QBASIC آموزش

آموزش کامل بیسیک برای کسانی که می خواهند پایه برنامه نویسی شان را قوی کنند با ارایه مثال برای هر موضوع
برای مطالعه به ادامه مطلب مراجعه کنید ادامه مطلب ...

آموزش کامل بیسیک

 آموزش کامل بیسیک برای کسانی که می خواهند در المپیاد اول بشوند
برای کسانی که می خواهند در کلاس درس نمره خوبی بگیرند
 مخصوص رشته های کامپیوتر و سال سوم ریاضی و فیزیک
همچنین کسانی که تازه می خواهند برنامه نویس بشند
 و با لا خره برای همه

از این بهتر مطلب نخواهی یافت

 

 

 

ثابت ها :

ثابت ها در طول یک برنامه تغییر نمی کنند و به دو دسته ثابت های عددی و ثابت های نشانه ای تقسیم می شوند .ثابت عددی خو به ثابت عددی صحیح و اعشاری تقسیم می شود .نمونه هایی از

ثابت عددی صحیح :  -4 , 0 , +27 , -347 , 19000 , -7496 , -56

ثابت عددی اعشاری : 12.84 , -113.01 , 0.0024 , 0.000012

در صورتی که ثابت اعشاری بسیار بزرگ یا بسیار کوچک باشد ، به صورت توانی نمایش داده می شود مثلا   0.000000012 = 12E-9  ,  190000000 = 1.9E+8  ,  .0001 = .01E-2 عددبعد از E باید صحیح باشد. وظیفه ثابت ها ، دادن مقدار اولیه به متغیرها ویا در حین اجرای برنامه است .

تمرین : درعبارات زیر ثابت های عددی را مشخص کنید و علت ثابت نبودن بقیه را بیان کنید .

.200   ,  0.1  ,  -0.0  ,  +0  ,  1.98$  ,  12E3.4  ,  1+37  ,  1340.E-47  ,  1.2E30.  ,  1492.16E-04  ,  9.48m  ,  17E-38  ,  E+17

 ثابت های  نشانه ای :  معمولا در متن برنامه به کار می روند و کاربرد انها در گویا نمودن خروجی برنامه است . ثابت نشانه ای باید در داخل یک جفت علامت نقل قول   “   “  قرار داده می شود نمونه هایی

 “ ALI-REZA”  , “ YOU WON”  ,  “TELEPHONE No. 3339152”  , “HI, How are you”  , “ Try again”

طول ثابت نشانه ای نباید از 255   نشانه بیشتر باشد .

متغیرها :

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

برای انتخاب نام متغیر نکات زیر را مد نظر گرفت :

الف ) نام متغیر تنها از تعدادی حرف و رقم تشکیل می شود که اولین نشانه از سمت چپ باید حرف باشد ، نشانه بعد از متغیر  می تواند یک از علائم زیر باشد .

%   برای متغیرهای صحیح کوتاه ( از -32768  تا  32767  )

&   برای متغیرها یا ثابت های صحیح بلند ( از -2147483648   تا  2147483647  )

!  برای متغیرهای اعشاری معمولی

#  برای متغیرهای اعشاری با دقت مضاعف

$  برای متغیرهای نشانه ای ( رشته ای )

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

ب ) انتخاب نام مناسب برای یک متغیر  در خوانا بودن ، فهمیدن و سهولت مراجعات بعدی بسیار اهمیت دارد . نام متغیر تا حدودی معنای مفهومی آنرا داشته باشد .

ج ) نام متغیر نباید از کلمات کلیدی بیسیک انتخاب ( مثل از  دستورات ویا رابط های ریاضی )

مثال : NUMBER  ,  N$  ,  MAX  ,  AVREGE  ,  SIDE  ,  AREA  ,  SUM  , A$  ,  B20  , A1B2  , M

تمرین : متغیرهای عددی و نشانه ای و آنهایی که نمی توانند نام متغیر باشند را مشخص کنید .

ABCD   ,  ITEM  ,  VARIABLE  ,  NO.  ,  A**2  ,  DOLLAR  ,  A.B  ,  NAME$   ,  BLA$

نمادهای عملیاتی :

+ برای عمل جمع زدن

-  برای عمل تفریق

/  برای عمل تقسیم

*  برای عمل ضرب

^  برای توان رسانی

  برای تقسیم با خارج قسمت صحیح

MOD   برای تعیین باقی مانده تقسیم

 

اولویت انجام عملیات :

الف ) کلیه اعمال ریاضی را از چپ به راست انجام می دهیم

ب ) ابتدا داخل پرانتز ها حساب می شوند .

پ ) توان رسانی

ت ) قرینه سازی

ث ) ضرب و تقسیم هم اولویت هستند ( آنکه سمت چپ قرار دارد)

ج  ) تقسیم با خارج قسمت صحیح ( )

چ ) باقیمانده تقسیم ( MOD )

ح ) جمع و تنفریق هم ارزش هستند .

تمرین :  اولویت عبارات زیر را مشخص کرده معادل ریاضی آنرا نیز بنویسید .

 

عبارات ریاضی زیر را ابتدا به عبارات زبان بیسیک تبدیل سپس برای هر عبارت اولویت تعیین کنید .

 

توابع :

اغلب برنامه نویسان از توابع ریاضی استفاده می کنند . این توابع به صورت تعریف شده در نرم افزار زبان بیسیک موجود است( در بخش های قبلی معرفی شده است ). کاربرها می توانند با توجه به خصوصیات آنها  از توابع در برنامه خود استفاده نمایند .

مثال :

 

عدد پی ? را در زبان بیسیک این گونه معرفی می کنند . می دانیم که تانژانت پی چهارم برابر یک است بنابراین آرک تانژانت یک برابر با پی چهارم می شود . بنابراین پی برابراست با 4 * ATN ( 1 )  

تمرین :  عبارات زیر را به زبان بیسیک بتویسید .

 

خطوط مثلثاتی x درجه را چگون می توان توسط کامپیوتر حساب کرد ؟ توجه دارید که ? ( پی ) تقریبا 3.141593   است . برای اینکه خطوط مثلثاتی زوایای برحسب درجه را حساب کنید ؛ ابتدا اندازه  آن زاویه را به رادیان تبدیل کنید . مثلا  /3 ?  60o =   یعنی 1.47198 رادیان است .


 


زیر برنامه

زیر برنامه یا برنامه فرعی ، بخشی مستقل از برنامه اصلی را تشکیل می دهد . هر زیر برنامه مجموعه ای از دستورالعمل هاست که هدف خاصی را دنبال کرده و به دفعات در برنامه اصلی فراخوانده شده و اجرا گردد.به دلیل استقلال زیر برنامه در یک برنامه اصلی می تواند تعدادی زیر برنامه باشد .یکی از ویژگی های زیر برنامه این است که از مقادیر متغیرهای برنامه اصلی می توانند استفاده کنند .

با تقسیم یک برنامه به چند زیر برنامه می توان برنامه اصلی را قابل فهم و خوانتر نمود .

نکته : زیر برنامه بعد از دستور 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

 

 

 

 

آرایه :

مجموعه ای از متغییر های هم نوع است که با یک نام در حافظه نگهداری می شود . هرمتغیر درون آرایه با یک اندیس قابل دسترسی می باشد که این اندیس مکانی از آرایه را که آن متغیر اشغال کرده است مشخص می نماید . متغیرهای مجزا از هم نیز عناصر آرایه نامیده می شوند .

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

آرایه یک بعدی ID(0) , ID(1) , ID(2) , ID(3) , ID(4)  این آرایه یک جدول با یک سطر(ID) و پنج ستون(0 – 4)است

نکته : کلیه عناصر یک آرایه باید از یک نوع داده باشند . یک خانه آرایه نمی تواند از نوع عددی صحیح و خانه دیگر از نوع رشته ای باشند .

کاربرد آرایه ها :

فرض کنید می خواهیم ده عدد را به طور صعودی مرتب کنیم . برای ذخیره سازی این اعداد باید ده متغیر به نام های num1 , … , num10  تعریف نمائیم .نوشتن برنامه ای که بتواند این ده متغیر را مرتب کند مشکل است . درچنین مواردی ، زبان های برنامه نویسی راه حل ساده ای به نام آرایه در اختیار ما قرار می دهند . به کمک آرایه ها می توان ده عدد را در متغیری به نام num از نوع آرایه ای با یک سطر (num) و ده ستون (0 , … , 9) ذخیره کرد.

دستور  DIM

با استفاده از این دستور می توان یک آرایه تعریف کرد شکل کلی آن :

نوع داده       AS     (دامنه یا تعداد عناصر)  نام متغیر آرایه       DIM  

نام متغیر آرایه : همان نام اشتراکی است که توسط آن می توانید به عناصر آرایه دسترسی پیداکنید .

دامنه یا تعداد عناصر : حداکثر خانه های لازم (حد اکثر یک آرایه) جهت ذخیره سازی مقادیر را در آرایه تعیین می کند. تعداد می تواند  بصورت عدد یا دامنه ای به شکل حد پائین  به سمت حد بالا باشد.

نوع داه : نوع آرایه را مشخص می کند و می تواند INTEGER =% صحیح   LONG =& , صحیح بلند  SINGLE =! , اعشاری با دقت معمولی   DOUBLE =# , اعشاری با دقت مضاعف  STRING =$ , رشته ای    باشد .

DIM  B(20)   آرایه B از نوع اعشاری معمولی  با 21 عنصر ( از صفر تا 20 )

DIM  N(5  To  45)  آرایه N   اعشاری معمولی با 41 عنصر

DIM  A%(10)  آرایه A  از نوع عددی صحیح با  11 ( از صفر  تا  10) عنصر

DIM  C$(5)  آرایه C   از نوع رشته ای با 6 عنصر

DIM  num(1  To  5)  AS  SINGLE  آرایه num  اعشاری معمولی دارای 5 عنصر

DIM  N(10 , 10)  آرایه دو بعدی با نام N  اعشاری معمولی دارای 11 سطر ( صفر تا 10) و 11 ستون (از صفر تا 10) .

دستور OPTION BASE  برای تعریف کوچکترین اندیس آرایه برای شروع به شکل  OPTION BASE    m

M  عدد شروع  که می تواند صفر یا 1 باشد .

CLS

OPTION BASE 1

DIM  x(4)

DIM  name$(3)

X(1) = 10 : x(2) = 20 : x(3) = -70  : x(4) = 12.35

Name$(1) = " Ali"  : name$(2) = " Hamid "  : name$(3) = " Davood "

در مثال بالا ابتدا آرایه های X  و name$  تعریف شده سپس عناصر آنها مقدار دهی شده اند مثلا دستور X(2) = 20 باعث می شود عدد 20 در خانه دوم آرایه X   ذخیره گردد.

استفاده از دستور INPUT

برنامه ای بنویسید که بتواند  10 نمره یک دانشجو را از ورودی دریافت نمده سپس آنها را درون آرایه ه ای به نام SCORE قرار دهد.

CLS

OPTION BASE 1

DIM  score(10)

For  k = 1   To   10

      INPUT  score(k)

NEXT  K

END

استفاده از دستور  DATA     READ 

برنامه ای بنویسید که بتواند بکمک دستور DATA … READ  5 نمره یک دانشجو را درون آرایه score  قرار داهد .

CLS

OPTION  BASE 1

DATA   7 , 17 , 15 , 18 , 3

DIM  score(5)

For  I = 1   To   5

    Read  score(I)

NEXT  I

End

در برنامه اگر I=2  باشد READ  score(2)   باعث می شود داده دوم دستور DATA یعنی عدد17 در خانه دوم score  ذخیره می شود .

برنامه ای بنویسید که 10 نمره یک دانش آموز را از ورودی دریافت کرده و مجموع و میانگین نمرات آن ها را محاسبه و چاپ کند .

CLS

DIM   score( 1   To   10 )   AS  INTEGER

For  I = 1   To   10

     PRINT  " score("; I ; ") = ";

     INPUT  "" , score(I)

NEXT I

Sum = 0

For  I = 1   To   10

      Sum = sum + score(I)

NEXT I

AVERAGE = sum / 10

PRINT " sum = " ; sum

PRINT  " AVERAGE = " ; average !

END

مرتب کردن عناصر آرایه ها:

مرتب سازی از مهم ترین الگوهای برنامه نویسی است که به کمک آرایه ها انجام می گیرد . مرتب سازی می تواند به صورت صعودی ( از کوچک به بزرگ )  یا نزولی ( از بزرگ به کوچک ). الگوی مرتب سازی هم روی اعدا و هم روی حروف صورت می گیرد .

برنامه ای بنویسید که بتواند 5 عدد را از ورودی دریافت کرده سپس با استفاده از الگوریتم مرتب سازی آن ها را به صورت صعودی مرتب کرده نمایش دهد .

CLS

OPTION  BASE 1

DIM  array(5)   AS  SINGLE

FOR  I = 1   To   5

      PRINT  I ;

     INPUT  array( I )

NEXT  I

FOR  I = 1   To   4

      FOR  J = 1   To   5 –I

             IF  ( array( J ) >  Arraay( J + 1 ))    THEN

             SWAP array( J ) , array( J +1 )

             END IF

      NEXT  J

NEXT  I

FOR  I = 1    To   5

       PRINT  array( I )

Next  I

دستور SWAP 

برای جابجائی مقدار دو متغیر با هم دستور SWAP  رابه شکل متغیر 2   . متغیر 1   SWAP   استفاده می کنیم .

حال اگر در مثال بالا در شرط به جای علامت بزرگتر (> ) در عمل مقایسه از علامت (<) استفاده شود ، مرتب سازی نزولی خواهد بود .

برنامه ای بنویسید که 5 نام را از ورودی دریافت کرده درون یک آرایه ذخیره کند . آن گاه با دریافت یک نام از ورودی مشخص کند که نام ورودی در آرایه موجود است  یا خیر ؟

CLS

DIM  name$(5)

For  I = 1   To   5

    INPUT  name$(I)

NEXT  I

FOR  I = 1   To   4

    SORTED$ = “ Yes “

    FOR  J = 1   To   5 – I

         IF  name$(J) > name$(j – 1))  THEN

            SWAP  name$(J) , name$(J +1)

            SORTED$ = “ No “

         END IF

    NEXT  J

    IF  SORTED$ = “ Yes “  THEN

         I = 4

    END IF

NEXT  I

FOR  I = 1   To   5

Low = 1

High = 5

WHILE  ( Low < = High )

    MIDDLE = INT(( Low + High ) / 2)

    IF  ( KEY$ > name$ ( MIDDLE ))  THEN

        Low = MIDDLE – 1

    ELSEIF (KEY$ < name$ ( MIDDLE ))  THEN

        High = MIDDLE – 1

    ELSE

         PRINT  MIDDLE

         END

    END IF

WEND

PRINT  “ Not  Found “

END

 

 

دستور SELECT  CASE

دستور  IF  یک دستور  شرطی بود که بررسی شد . یکی دیگر از دستورات شرطی ، SELECT  CASE  است.

شکل کلی :

عبلرت SELECT  CASE

عبارت         CASE 1 

     مجموعه دستورات  1

عبارت          CASE 2

مجموعه دستورات 2

..........................

..........................

عبارت      CASE (n) 

مجموعه دستورات (n)

CASE  ELSE

مجموعه دستورات 

END  SELECT

توضیح :  ابتدا عبارت مقابل SELECT  CASE  ارزیابی می شود و عبارت مقابل اولین CASE 1 را بررسی می کند در صورتی که عبارت آن ، شرایط مقابل SELECT CASE   را داشته باشد ؛ دستورات آن CASE  را اجرا خواهد کرد . اگر عبارت مقابل CASE 1 آن را نداشته باشد به ترتیب به CASE  های بعدی نگاه می کند درصورت برقراری شرط ؛ دستورات آن CASE اجرا سپس کنترل اجرا به دستور بعد از END SELECT منتقل می گردد. درصورتی که عبارتی برابر شرط پیدا نشد ؛ دستورات بعد از CASE ELSE اجرا خواهد شد .

نکته :  تفاوت SELECT CASE   با   IF  دراین استه که در SELECT CASE فقط یک عبارت مورد ارزیابی قرار می گیرد ؛ اما در IF چندین شرط مورد ارزیابی قرار می گیرد .

 

مثال :

CLS

INPUT " From  1   to  6 : ", num

SELECT CASE   num

   CASE 1

                                                          PRINT  " Black "

   CASE 2

                      PRINT  " Red "

   CASE 3

          PRINT  " Green "

  CASE 4

          PRINT  " Blue "

   CASE 5

          PRINT  " Orange "

   CASE 6

          PRINT  " Brown "

    CASE ELSE

           PRINT  " Invalid  Number ! "

END SELECT

END

عبارت مقابل CASE  دارای حالت های زیر است

a)      شامل یک یا چند مقدار که با ویرگول از هم جدا می شوند .

ثابت عددی یا رشته ای   : "Davood" یا   2.5  

متغییر عددی  یا رشته ای   I  یا  Name$

b)      یک محدوده به شکل   X    to    Y  که در آن X,Y  ثابت ، متغییر یا عبارت مباشند

c)       عملگرهای رابطه ای که پیش از آن  IS   و پس از آن یک ثابت ، متغییر یا عبارت باشد .

 

برنامه ای بنویسید که یک عدد را از کاربر دریافت کرده و منفی یا مثبت بودن آن بررسی می نماید . شرط خروج وارد کردن عدد صفر است .

CLS

PRINt  " Type  0  To EXIT "

BEGIN :

INPUT  num

SELECT CASE   num

    CASE  IS = 0

             PRINT  " Program ha Finished "

    CASE  IS < 0

              PRINT  ' Negative "

              GOTO  BEGIN

    CASE  ELSE

               PRINT  " Positive "

END SELECT

END

برنامه ای بنویسید که بتواند نمره دانش آموز را از ورودی دریافت کرده ؛ سپس با توجه نمره پیام مناسب را نمایش دهد .

0   ---    9     è    Very Bad

10    ---   14   è    Not  Bad

15   ---   17   è         Good

18   ---   20   è  Very Good

شرط خروج  ورود عدد   -1  است .

CLS

PRINT  " Type  -1  to EXIT "

BEGIN

INPUT " 0   -  20 " ,num

SELECT  num

     CASE  0   to   9

           PRINT  " Very Bad "

           GOTO BEGIN

      CASE  10  to   14

           PRINT  " Not  Bad "

           GOTO  BEGIN

      CASE  15    to   17

           PRINT  " Good "

           GOTO  BEGIN

       CASE  18   to   20

           PRINT  " Very Good "

           GOTO BEGIN

       CASE  IS =  -1

            PRINT  " Program  has  Finished "

END SELECT

END

 

دستور    DO    ---   LOOP 

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

a)      

شرط      UTIL  یا   DO      WHILE

 

بلوک حلقه .. دستور العمل های حلقه

LOOP

b)       

DO

بلوک حلقه  ..  دستور العمل های حلقه

شرط   UNTIL    یا    LOOP     WHILE

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

فرق عبارت WHILE  , UNTIL   این است ؛ در WHILE   دستورات  بلوک حلقه با درستی شرط اجرا می گردد. بعد از عدم برقراری اجرای برنامه به دستور بعد از LOOP منتقل می شود . اما UNTIL  برعکس عمل می کند یعنی تا زمانی که شرط نادرست است دستورات بدنه حلقه اجرا و درستی شرط باعث انتقال اجرای برنامه به بعد از دستور LOOP می گردد .

نکته : به کار بردن عبارت WHILE ,  UNTIL  به همراه شرط در DO  ---  LOOP اختیاری است.

برنامه ای بنویسید  اعدادی که مجذور آن ها کوچک تر یا مساوی 25 است را به همراه مجذورشان نمایش داده شود .

CLS

Num = 1

DO   WHILE   Square < 25

        Square = num ^ 2

        PRINT num , Square

        Num = num + 1

LOOP

END

برنامه بالا به کمک UNTIL

CLS

Num = 1

DO   UNTIL    Square = 25

        Square = num ^ 2

        PRINT num , Square

        Num = num + 1

LOOP

END

توابع :

ریاضی

تابع ABS( … ) مقدار قدر مطلق عدد یا عبارت داخل پرانتز را باز می گرداند.

تابع SQR( … ) محاسبه ریشه دوم ععد یا عبارت داخل پرانتز

تابع INT( … ) جزء صحیح عدد یا عبارت داخل پرانتز.

تابع LOG( … ) محاسبه لگاریتم طبیعی عدد یا عبارت عددی داخل ...

 

مثلثاتی

تابع SIN( … ) مقدار سینوس یک زاویه را باز می گرداند . عدد داخل پرانتز برحسب رادیان است

تابع COS( … ) مقدار کسینوس  یک زاویه را باز می گرداند . عدد داخل پرانتز برحسب رادیان است

تابع TAN( … ) مقدار تانژانت  یک زاویه را باز می گرداند . عدد داخل پرانتز برحسب رادیان است

تابع ATN( … ) مقدار آرک تانژانت نسبت دو ضلع مثلث قائم الزاویه را برمی گرداند

 

رشته ای

تابع LEN( x$ ) طول یک رشته را مشخص کرده و باز می گرداند.

تابع LEFT$( x$ , n ) از سمت چپ یک عبارت رشته ای یا متغیر رشته ای . تعداد معینی(n) کاراکتر را جدا کرده و به صورت رشته باز می گرداند .

تابع RIGHT$( x$ , n ) از سمت راست یک عبارت رشته ای یا متغیر رشته ای . تعداد معینی(n) کاراکتر را جدا کرده و به صورت رشته باز می گرداند .

تابع MID$( x$ , m , n ) از درون یک عبارت رشته ای یا متغیر رشته ای ؛ تعداد معینی (n) از کاراکتر(m) جدا کرده و به صورت رشته باز می گرداند.

تابع STR$( n ) یک عدد یا متغیر عددی را به صورت رشته باز می گرداند .

تابع INPUT$ دریافت ورودی رشته ای

تابع RND تولید عدد تصادفی بین صفر و یک

تابع RANDOMIZE  همراه تابع RND جهت تولید سری های مختلف اعداد تصادفی بین صفر و یک به کار می رود .

 


دستور DATA , READ , RESTORE

گاهی اوقات بهتراست به جای گرفتن یکی،یکی داده ها از طریق صفحه کلید ؛ آنها را در دستوری معرفی کنیم.

حتما کار خسته کننده وارد کردن یکی،یکی اعداد در بعضی از برنامه ها کلافه تان کرده بخصوص هنگامی که گرفتن اعداد زیاد باشد . برای این منظور و همچنین پنهان کردن مطالبی از دید کاربر  ؛ می توان داده ها را در دستور DATA  قرار داده سپس به کمک دستور READ  آنها را یکی،یکی در موارد مورد لزوم فرا خواند.(دستور RESTORE برای برگشت به اولین داده است ویابهتر بگیم این دستور ؛دستور READ را مجبور می کند که داده ها را از اول شروع به خواندن کند.)

 مثال : چاپ مجموع  5 عدد  ورودی

روش حل متداول 

CLS

SUM = 0

FOR  I=1    TO    5

      INPUT a

      SUM = SUM + a

NEXT I

PRINT SUM

END

 

حل به کمک دستور DATA , READ

 

CLS

SUM = 0

DATA  210 , 20 , 70 , 50 , 150

FOR  I=1    TO    5

      READ  a

      SUM = SUM + a

NEXT I

PRINT SUM

END

برنامه بالا را به این شکل تغییر میدهیم علاوه بر چاپ مجموع اعداد ( 8 عدد ) ؛ تعدا عددهای بزرگتر از میانگین را هم بنویسد . ( NGMax تعداد عددهای بزرگتر ازمیانگین ؛ میانگین 100  خواهد شد )

CLS

SUM = 0

Aver = 0

NGMax = 0

DATA   210 , 20 , 70 , 50

FOR  I=1    TO    8

      READ  a

      SUM = SUM + a

NEXT I

PRINT SUM

Aver = SUM / 8

RESTORE

FOR  I=1    TO    8

      READ  a

      IF  a > Aver  THEN   NGMax = NGMax + 1

NEXT I

DATA  150 , 105 , 80 , 115

PRINT Aver

PRINT NGMax

END

نکته : همانطور که در مثال بالا مشاهده کردید . داده ها می تواند در یک و یا چند خط نوشته شود و همچنین محل آن می تواند در هرکجای برنامه باشد  ؛ اما موقع خواند اولویت با داده های از بالا به پائین برنامه است .

نکته : در برنامه بالا اجرای برنامه وقتی به خط RESTORE می رسد دستور READ  را وادار می کند داده ها را از اول بخواند .

برنامه ای بنویسید که عدد طبیعی بین 1 و 7 را بگیرد وبا فرض اینکه این عدد شماره روزی از هفته باشد ، نام روز را به لاتین چاپ کند ( چند شنبه است )

CLS

DATA  Satur , Sun , Mon , Tues

DATA  Wednes , Thurs , Fri

INPUT  n

FOR I = 1     TO     n

    READ  a$

NEXT I

PRINT  a$ + “Day “

END

تابع  RND  

RND از کلمه Random به معنی تصادفی گرفته شده . این تابع در بیسیک بدون متغییر است؛یک عدد تصادفی بزرگتر از صفر و کوچکتر از یک تولید می کند.هر بار که این تابع به کار رود کامپیوتر یک عدد تصادفی بین صفر ویک تولیدمی کند. با این تابع کارهای علمی و تفریحی زیادی می توان انجام داد . برنامه زیر را اجرا کنید

CLS

FOR  I = 1      TO     5

       PRINT  RND

NEXT  I

END

وقتی این برنامه را چند بار متوالی اجرا کردید متعجب شدید اینکه 5 عدد تصادفی در تمام اجراها کاملا شبیه هم است ؛ اینکه نمی شود .

نکته : در هر بار اجرای دستور RND زمان صفر در نظر گرفته می شود . برای بر طرف کردن این مشکل ما می توانیم دستور RANDOMIZE TIMER  را در ابتدای برنامه بنویسیم .

CLS

RANDOMIZE  TIMER

FOR  I=1      TO      5

      PRINT     RND

NEXT  I

END

حالا درست شد . چه اتفاقی افتاد ؛ با اضافه کردن دستور فوق به برنامه گفتیم به ساعت کامپیوتر نگاه کن . چون در هر لحظه ساعت کامپیوتر با لحظه قبل فرق دارد. (حتی چند میلیونیم ثانیه )

نکته : چطور می توان عدد صحیح تولید کرد .

بین 0 تا 9     اصلاح خط چاپ       10* PRINT  INT( RND )   کار تابع INT(x) حذف اعشار است (جزء صحیح ).

بین 1 تا 10      1 + 10 * PRINT  INT( RND ) 

بین 0  تا  99       100 *  PRINT  INT( RND )

فرض کنید N عددی طبیعی باشد    INT( N * RND ) + 1    یک عدد طبیعی بین  1  و N  است . 

مثال جالب

CLS

FOR  I=1     TO     9

     A= INT( RND * ( I + 1 ))

     B= INT( RND * ( I + 1 ))

     C= A * B

     PRINT  A ; “ * “ ; B ; “ = “

     INPUT D

    IF   D = C  THEN

        PRINT “ GOOD “

    CLSE   PRINT  “ WRONG “

    END IF

NEXT  I

END

جالب بود نه ؟

 

دستور   WHILE  -  WEND

هرگاه لازم باشد مجموعه ای از دستورات بیسیک تا برقراری شرط یا شرایطی اجرا شوند می توان از دستور WHILE – WEND  استفاده کرد . صورت کلی دستور :

شرطWHILE

-----------    

     ----------- 

دستورات بیسیک    

     -----------

WEND

مثال : برنامه چاپ اعداد زوج طبیعی کوچکتر از 20

CLS

I = 2

WHILE  I < 20

    PRINT  I ;

    I = I + 2

WEND

END

 

 برنامه ای بنویسید که عدد طبیعی N  را بگیرد و مجموع ارقام عدد ورودی را محاسبه و چاپ کند .( رقم = DIGIT )

CLS

SD = 0

INPUT  n

WHILE  n > 0

    M = INT( N / 10 )

    DIGIT = n – 10 * M

    SD = SD + DIGIT

    N = M

WEND

PRINT  SD

END

نکته : اجرای دستورات بین WHILE  و  WEND مادامی که شرط بعد از WHILE بر قرار ( درست ) باشد ادامه د ارد .

برنامه ای بنویسید که دو عدد طبیعی M   و  N  را گرفته و بزرگترین مقسوم علیه مشترک آنها را تعیین و چاپ کند .( بزرگترین مقسوم علیه مشترک = GCD ) . اعداد 27  و  15  دارای GCD=3   و اعداد  28 و 10 دارای GCD=2 است.

CLS

INPUT   n , m

WHILE   m > 0

    R = n – m * INT( n / m )

    n = m

    m = R

WEND

PRINT  “ GCD = “ ; n

END

 


Qbasic

BASIC  مخفف کلمات ( Beginner'S   All – Purpose Symbolic Instruction Code    به معنی کد حاوی دستورات نمادین همه منظوره مخصوص نوآموزان ) میباشد . این زبان درکالج Dartmouth بین سالهای 1963 و 1964 توسط پروقسور John Kemeny  و  Thomas Kurts به عنوان یک زبان آموزشی ایجادگشت .علت اصلی ایجاد این زبان را می توان در پیچیدگی های زبان های متداول از قبیل Fortran  و  Assembly  وغیره جستجو کرد .

 QBASIC  مفسر بیسیکی است که به همراه سیستم عامل MS-DOS نگارش 5 و بالاتر ارائه گردید. شرکت مایکروسافت تولید کننده QBASIC ، با تکمیل این محصول ، نگارش های دیگری از بیسیک را روانه بازار کرده است که نمونه دیگری از آنها Quick Basic می باشد .

Quick Basic : نرم افزاری است ک هفایل های بیسیک را به فایل های قابل اجرا در محیط سیستم عامل تبدیل می کند .

دستورات QBASIC  :

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

 

LET : برای انجام کارهای جایگزینی و محاسباتی

 

MOD : باقیمانده تقسیم   بصورت     10   mod  2   جواب  صفر است

 

( Back Slash ) علامت کسر وارونه :  تقسیم جزء صحیح  بصورت    10     3  که جواب 3 می شود

 

INPUT : برای ورودی  ( متغییر عددی  مانند x , a , b ,n , m   ,Max , Min , Sum,  و ... . متغییر نشانه ای( جلوی متغییر عددی علامت $ اضافه می شود مانند a$ , b$ , Name$ , City$  )

 

 GOTO n:برو به خط n در اول خطی که قرار است دستور از آنجا اجرا شود عدد دلخواه n را مینویسیم 

 

PRINT : دستور خروجی برای به نمایش در آوردن نتیجه برنامه ( همانند متغییر عددی با این تفاوت که در جلوی متغییر علامت $ باشد ).

 

برنامه مساحت مستطیل

Cls

Input  a , b

Let  S= a * b

Print  S

End

برنامه تبدیل Ngr  (وزن یک جسم ) به Kg  و Gr

Cls

Input  Ngr

Let  Kg = Ngr    1000

Let  Gr = Ngr  Mod  1000

Print  Kg  ,  Gr

End

برنامه مجموع ارقام عدد طبیعی دو رقمی N 

Cls

Input   N

Let  D2 = N 10

Let  D1 = N  Mod  10

Let  SD = D1 + D2

Print  SD

End

برنامه چاپ نام ورودی 

Cls

Input  Name$

Print  Name$

End

 

 

 

IF در بیسیک چند نوع  دستور شرطی از نوع IF داریم :

شرط : یک عبارت منطقی است که ارزش آن یا درست  یا نادرست باشد . اگر شرط برقرار باشد ( یعنی ارزش عبارت منطقی بعد از IF درست باشد ) ؛ دستور(ات) بعد از Then اجرا می شود  والا  دستور بعد از خط Then  …  Then  …  اجرا می شود .

عبارات منطقی : در دستور شرطی بعد از کلمه IF یک عبارت منطقی است .که دارای دو ارزش  درست  یا  نادرست است . عبارات منطقی دو گونه است  1- رابط های منطقی (  AND  -  OR  -  NOT )   2- عملگرهای رابطه ای  ( =   ,  <  ,  >  , <=  ,  >=  ,  < >  )  

 

IF  …  Then  …  ( در یک خط ): صورت کلی آن          دستور(ات )  Then  شرط IF  

برنامه Max  بین دو عدد

Cls

Input  a  ,  b

Let  Max =  a

If    b  >  Max    Then     Let  max = b

Print  Max

End

 

 

IF  بلوکی  ( بیش از یک خط ) : صورت کلی  آن                                       Then  شرط IF  

  دستور   (1) 

دستور   (2)

...   ....   ...

دستور  (...)

END IF

برنامه چاپ  زوج ( EVEN ) یا فرد ( ODD ) ؛ عدد ورودی N

Cls

Input  N

If     N / 2  =  Int ( N / 2 )     Then

    Print  N ;  “ Is EVEN “

    End

End IF

Print   N ; “ Is ODD “

End

 

 

IF  …   Then  …   ELSE  ( یک خط و بیش از یک خط ) در صورتی که شرط برقرار باشد دستور(ات) بعد از Then اجرا می شود . والا دستور(ات) بعد از Else  اجرا خواهد شد . اگر نتوان دستور فوق را دریک خط نوشت ؛ باید از IF بلوکی استفاده کرد.

     

   دستور(ات)  Else  دستور(ات)  Then  شرط IF

 

                                      Then  شرط IF  

  دستور   (1) 

دستور   (2)

...   ....   ...

دستور  (...)

ELSE

  دستور   (1) 

دستور   (2)

...   ....   ...

دستور  (...)

END IF

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

الف : تا 50000  ریال  معاف از مالیات

ب : از  50001    تا  70000  ریال چهار درصد مازاد  50000

ج : از  70001  به بالا   ده درصد

Cls

Input   W

If  W  < =  50000   Then

     Print  “ Tax = 0  Rial ‘

     End

End If

If   W =  70000  Then

      Let   Tax =  4  *  ( W – 50000 )  /  100

Else

      Let  Tax  =  800  +  10  * ( W  -  70000 )

End If

Print  “ Tax = “ ;  Tax  ;  “ Rials “

End

 

 

 

 

فرایندهای تکراری ( حلقه تکرار )

اجرای تعدادی دستور به دفعات معین ؛ یا تا برقراری شرایطی جهت رسیدن به جواب مسئله است . دستوراتی که به دفعات تکرار می شود ؛ یک حلقه تکرار  راتشکیل می دهند .

FOR   -   NEXT  : در صورتی استفاده می شود که دفعات تکرار معین و یا بتوان فرایند تکرار را با متغییری کنترل کرد .

 

چاپ اعدا متوالی تا 20

Cls

For  I=1   To   20

         Print  I ;

Next  I

End

 

STEP  : در حلقه For  - Next   قدمهای تکرار یکی ؛ یکی رو به جلو تعریف شده در بقیه حالت ها چه مثبت چه منفی باید در مقابل     For  -  To     Step  معلوم گردد .

چاپ نزولی از 20  تا  1 

Cls

For  I =  20    to   1  Step  - 1

        Print  I

Next  I

End

 

با توجه به دانسته های بالا برای مسئله های داده شده در بخش الگوریتم برنامه بنویسید . در صورتیکه نرم افزار QBASIC را در کامپیوترتان ندارید در بخش نظزات وبلاگ آدرس  E-Mail خودتان ار بنویسید تا برایتان نرم افزار را ارسال کنم . هرچند این نرم افزار برای محیط DOS تعریف شده اما بدون هیچگونه مشکلی در محیط ویندوز XP کار می کند . جهت اطلاع می گویم برای مشاهده تمام صفحه محیط QBASIC از کلید ترکیبی Alt  +  Enter  استفاده کنید . برای برگشت هم از همان کلید ترکیبی استفاده کنید .

چند نمونه برنامه

برنامه چاپ زوج  یا  فرد بودن عدد ورودی

Cls

Input  N

Let  r = N  Mod  2

If  r = 0  Then  Print  N ; " is Even " Else  Print  N ; " is Odd "

End

 

 

 

 

برنامه تبدیل ثانیه به ساعت ؛ دقیقه و ثانیه

Cls

Input  S

Let H = S 3600

Let  S = S Mod 3600

Let  M = S 60

Let  Se = S  Mod 60

Print  H , M , Se

End

 

 

 

 

چاپ مقسوم علیه های عدد 12

Cls

Let  I = 1

8 Let  r = 12  Mod  I

If  r = 0  Then  Print  I

Let I = I + 1

If  I  < = 12  Then  Goto 8

End

 

 

چاپ مقسوم علیه های عدد 12 بکمک دستور For – Next

Cls

For  I = 1    To   12

      R = 12  Mod  I

      If  r = 0  Then   Print  I

Next  I

End

 

 

چاپ تعداد مقسوم علیه های عدد 12

Cls

Let  K = 0

For  I = 1      To    12

      R = 12     Mod   I

      If  r = 0      Then     Let   K =  K = 1

Next  I

Print  K

End

 

چاپ مجموع مقسوم علیه های عدد 12

Cls

Let  S = 0

For  I = 1      To      12

      R = 12     Mod    I

       R = 0    Then    Let  S = S + I

Next  I

Print   S

End

 

 

 

چاپ مقسوم علیه های عدد ورودی

Cls

Input  N

For  I = 1       To      N

      R = N   Mod   I

      If  r = 0     Then     Print I

Next  I

End

 

 

چاپ عدد ورودی به شرط اول بودن عدد ( به کمک  تعداد مقسوم علیه )

Cls

Let  K = 0

Input  N

For  I = 1      To        N

      R = N     Mod    I

      If  r = 0      Then     Let  K = K + 1

Next  I

If  K = 2    Then    Print  N ; " is Aval "

End

 

 

 

چاپ عدد ورودی به شرط اول بودن عدد ( به کمک  مجموع مقسوم علیه )

Cls

Let  S =0

Input  N

For  I = 1       To      N

      R = N    Mod     I

      If   r = 0     Then     Let  S = S + I

Next  I

If  S = N + 1      Then    Print N ; " is Aval "

End

 

 

چاپ عدد ورودی به شرط  تام بودن عدد

Cls

Let  S = 0

Input  N

For  I = 1       To         N/2

       R =  N     Mod    I

       If  r = 0      Then    S = S + I

Next  I

If  S = N       Then     Print  N ; " is  TAM "

End

 

 

 

چاپ عددهای زوج  بین دو عدد  ورودی به شرط اینکه عدد اول از دوم کوچکتر باشد( معلوم نیست عدد اول زوج باشد )

Cls

Input  m , n

Let  r = m    Mod   2

If  r > 0     Then    Let  m = m + 1

7 Print  m

Let m = m + 2

If  m < = N    Then    Goto  7

End

 

 

 

 

Cls

Input  N

Let  r = N  Mod  7

For  I = 0      To     5

      If  r = I      Then    Print  I ; " Shanbe"  : End

Next  I

Print  " Joomae "

End

 

 

چاپ تعداد ارقام عدد ورودی

Cls

Let K = 0

Input  N

3 Let  M = N 10

If M > 0  Then    Let  K = K + 1

Let  N = M

If  N > 0  Then    Goto  3

Print K

End

 

 

 

چاپ مجموع  ارقام عدد ورودی

Cls

Let S = 0

Input  N

3 Let R = N  Mod   10

Let  M = N 10

If M > 0  Then    Let  S = S + r

Let  N = M

If  N > 0  Then    Goto  3

Print  S

End

 

 

 

تولید عددهای فرد  دو رقمی

Cls

For  I = 1      To    9     Step 2

      For K = 1       To     9     Step 2

             Sum = I * 10 + K

             Prin  Sum

       Next k

Next I

End

 

 

 

 

تعداد دفعات ممکن خرد  کردن  اسکناس  2000  ریالی  بکمک سکه های 50  ؛ 100  و 250  ریالی به شرط اینکه از هر سکه حداقل یکی باشد .

Cls

K = 0

For P = 1    To     33

    For  S = 1    To     17

            For D = 1    To    7

                  Let  sum = P * 50  +  S * 100  +  d * 250

                   If  Sum = 2000     Then    k = k + 1

            Next D

     Next S

Next P

Print K

End

 
دستور DATA , READ , RESTORE

گاهی اوقات بهتراست به جای گرفتن یکی،یکی داده ها از طریق صفحه کلید ؛ آنها را در دستوری معرفی کنیم.

حتما کار خسته کننده وارد کردن یکی،یکی اعداد در بعضی از برنامه ها کلافه تان کرده بخصوص هنگامی که گرفتن اعداد زیاد باشد . برای این منظور و همچنین پنهان کردن مطالبی از دید کاربر  ؛ می توان داده ها را در دستور DATA  قرار داده سپس به کمک دستور READ  آنها را یکی،یکی در موارد مورد لزوم فرا خواند.(دستور RESTORE برای برگشت به اولین داده است ویابهتر بگیم این دستور ؛دستور READ را مجبور می کند که داده ها را از اول شروع به خواندن کند.)

 مثال : چاپ مجموع  5 عدد  ورودی

روش حل متداول 

CLS

SUM = 0

FOR  I=1    TO    5

      INPUT a

      SUM = SUM + a

NEXT I

PRINT SUM

END

 

حل به کمک دستور DATA , READ

 

CLS

SUM = 0

DATA  210 , 20 , 70 , 50 , 150

FOR  I=1    TO    5

      READ  a

      SUM = SUM + a

NEXT I

PRINT SUM

END

برنامه بالا را به این شکل تغییر میدهیم علاوه بر چاپ مجموع اعداد ( 8 عدد ) ؛ تعدا عددهای بزرگتر از میانگین را هم بنویسد . ( NGMax تعداد عددهای بزرگتر ازمیانگین ؛ میانگین 100  خواهد شد )

CLS

SUM = 0

Aver = 0

NGMax = 0

DATA   210 , 20 , 70 , 50

FOR  I=1    TO    8

      READ  a

      SUM = SUM + a

NEXT I

PRINT SUM

Aver = SUM / 8

RESTORE

FOR  I=1    TO    8

      READ  a

      IF  a > Aver  THEN   NGMax = NGMax + 1

NEXT I

DATA  150 , 105 , 80 , 115

PRINT Aver

PRINT NGMax

END

نکته : همانطور که در مثال بالا مشاهده کردید . داده ها می تواند در یک و یا چند خط نوشته شود و همچنین محل آن می تواند در هرکجای برنامه باشد  ؛ اما موقع خواند اولویت با داده های از بالا به پائین برنامه است .

نکته : در برنامه بالا اجرای برنامه وقتی به خط RESTORE می رسد دستور READ  را وادار می کند داده ها را از اول بخواند .

برنامه ای بنویسید که عدد طبیعی بین 1 و 7 را بگیرد وبا فرض اینکه این عدد شماره روزی از هفته باشد ، نام روز را به لاتین چاپ کند ( چند شنبه است )

CLS

DATA  Satur , Sun , Mon , Tues

DATA  Wednes , Thurs , Fri

INPUT  n

FOR I = 1     TO     n

    READ  a$

NEXT I

PRINT  a$ + “Day “

END

تابع  RND  

RND از کلمه Random به معنی تصادفی گرفته شده . این تابع در بیسیک بدون متغییر است؛یک عدد تصادفی بزرگتر از صفر و کوچکتر از یک تولید می کند.هر بار که این تابع به کار رود کامپیوتر یک عدد تصادفی بین صفر ویک تولیدمی کند. با این تابع کارهای علمی و تفریحی زیادی می توان انجام داد . برنامه زیر را اجرا کنید

CLS

FOR  I = 1      TO     5

       PRINT  RND

NEXT  I

END

وقتی این برنامه را چند بار متوالی اجرا کردید متعجب شدید اینکه 5 عدد تصادفی در تمام اجراها کاملا شبیه هم است ؛ اینکه نمی شود .

نکته : در هر بار اجرای دستور RND زمان صفر در نظر گرفته می شود . برای بر طرف کردن این مشکل ما می توانیم دستور RANDOMIZE TIMER  را در ابتدای برنامه بنویسیم .

CLS

RANDOMIZE  TIMER

FOR  I=1      TO      5

      PRINT     RND

NEXT  I

END

حالا درست شد . چه اتفاقی افتاد ؛ با اضافه کردن دستور فوق به برنامه گفتیم به ساعت کامپیوتر نگاه کن . چون در هر لحظه ساعت کامپیوتر با لحظه قبل فرق دارد. (حتی چند میلیونیم ثانیه )

نکته : چطور می توان عدد صحیح تولید کرد .

بین 0 تا 9     اصلاح خط چاپ       10* PRINT  INT( RND )   کار تابع INT(x) حذف اعشار است (جزء صحیح ).

بین 1 تا 10      1 + 10 * PRINT  INT( RND ) 

بین 0  تا  99       100 *  PRINT  INT( RND )

فرض کنید N عددی طبیعی باشد    INT( N * RND ) + 1    یک عدد طبیعی بین  1  و N  است . 

مثال جالب

CLS

FOR  I=1     TO     9

     A= INT( RND * ( I + 1 ))

     B= INT( RND * ( I + 1 ))

     C= A * B

     PRINT  A ; “ * “ ; B ; “ = “

     INPUT D

    IF   D = C  THEN

        PRINT “ GOOD “

    CLSE   PRINT  “ WRONG “

    END IF

NEXT  I

END

جالب بود نه ؟

 

دستور   WHILE  -  WEND

هرگاه لازم باشد مجموعه ای از دستورات بیسیک تا برقراری شرط یا شرایطی اجرا شوند می توان از دستور WHILE – WEND  استفاده کرد . صورت کلی دستور :

شرطWHILE

-----------    

     ----------- 

دستورات بیسیک    

     -----------

WEND

مثال : برنامه چاپ اعداد زوج طبیعی کوچکتر از 20

CLS

I = 2

WHILE  I < 20

    PRINT  I ;

    I = I + 2

WEND

END

 

 برنامه ای بنویسید که عدد طبیعی N  را بگیرد و مجموع ارقام عدد ورودی را محاسبه و چاپ کند .( رقم = DIGIT )

CLS

SD = 0

INPUT  n

WHILE  n > 0

    M = INT( N / 10 )

    DIGIT = n – 10 * M

    SD = SD + DIGIT

    N = M

WEND

PRINT  SD

END

نکته : اجرای دستورات بین WHILE  و  WEND مادامی که شرط بعد از WHILE بر قرار ( درست ) باشد ادامه د ارد .

برنامه ای بنویسید که دو عدد طبیعی M   و  N  را گرفته و بزرگترین مقسوم علیه مشترک آنها را تعیین و چاپ کند .( بزرگترین مقسوم علیه مشترک = GCD ) . اعداد 27  و  15  دارای GCD=3   و اعداد  28 و 10 دارای GCD=2 است.

CLS

INPUT   n , m

WHILE   m > 0

    R = n – m * INT( n / m )

    n = m

    m = R

WEND

PRINT  “ GCD = “ ; n

END

 

 

دستور SELECT  CASE

دستور  IF  یک دستور  شرطی بود که بررسی شد . یکی دیگر از دستورات شرطی ، SELECT  CASE  است.

شکل کلی :

عبلرت SELECT  CASE

عبارت         CASE 1 

     مجموعه دستورات  1

عبارت          CASE 2

مجموعه دستورات 2

..........................

..........................

عبارت      CASE (n) 

مجموعه دستورات (n)

CASE  ELSE

مجموعه دستورات 

END  SELECT

توضیح :  ابتدا عبارت مقابل SELECT  CASE  ارزیابی می شود و عبارت مقابل اولین CASE 1 را بررسی می کند در صورتی که عبارت آن ، شرایط مقابل SELECT CASE   را داشته باشد ؛ دستورات آن CASE  را اجرا خواهد کرد . اگر عبارت مقابل CASE 1 آن را نداشته باشد به ترتیب به CASE  های بعدی نگاه می کند درصورت برقراری شرط ؛ دستورات آن CASE اجرا سپس کنترل اجرا به دستور بعد از END SELECT منتقل می گردد. درصورتی که عبارتی برابر شرط پیدا نشد ؛ دستورات بعد از CASE ELSE اجرا خواهد شد .

نکته :  تفاوت SELECT CASE   با   IF  دراین استه که در SELECT CASE فقط یک عبارت مورد ارزیابی قرار می گیرد ؛ اما در IF چندین شرط مورد ارزیابی قرار می گیرد .

 

مثال :

CLS

INPUT " From  1   to  6 : ", num

SELECT CASE   num

   CASE 1

                                                          PRINT  " Black "

   CASE 2

                      PRINT  " Red "

   CASE 3

          PRINT  " Green "

  CASE 4

          PRINT  " Blue "

   CASE 5

          PRINT  " Orange "

   CASE 6

          PRINT  " Brown "

    CASE ELSE

           PRINT  " Invalid  Number ! "

END SELECT

END

عبارت مقابل CASE  دارای حالت های زیر است

a)      شامل یک یا چند مقدار که با ویرگول از هم جدا می شوند .

ثابت عددی یا رشته ای   : "Davood" یا   2.5  

متغییر عددی  یا رشته ای   I  یا  Name$

b)      یک محدوده به شکل   X    to    Y  که در آن X,Y  ثابت ، متغییر یا عبارت مباشند

c)       عملگرهای رابطه ای که پیش از آن  IS   و پس از آن یک ثابت ، متغییر یا عبارت باشد .

 

برنامه ای بنویسید که یک عدد را از کاربر دریافت کرده و منفی یا مثبت بودن آن بررسی می نماید . شرط خروج وارد کردن عدد صفر است .

CLS

PRINt  " Type  0  To EXIT "

BEGIN :

INPUT  num

SELECT CASE   num

    CASE  IS = 0

             PRINT  " Program ha Finished "

    CASE  IS < 0

              PRINT  ' Negative "

              GOTO  BEGIN

    CASE  ELSE

               PRINT  " Positive "

END SELECT

END

برنامه ای بنویسید که بتواند نمره دانش آموز را از ورودی دریافت کرده ؛ سپس با توجه نمره پیام مناسب را نمایش دهد .

0   ---    9     è    Very Bad

10    ---   14   è    Not  Bad

15   ---   17   è         Good

18   ---   20   è  Very Good

شرط خروج  ورود عدد   -1  است .

CLS

PRINT  " Type  -1  to EXIT "

BEGIN

INPUT " 0   -  20 " ,num

SELECT  num

     CASE  0   to   9

           PRINT  " Very Bad "

           GOTO BEGIN

      CASE  10  to   14

           PRINT  " Not  Bad "

           GOTO  BEGIN

      CASE  15    to   17

           PRINT  " Good "

           GOTO  BEGIN

       CASE  18   to   20

           PRINT  " Very Good "

           GOTO BEGIN

       CASE  IS =  -1

            PRINT  " Program  has  Finished "

END SELECT

END

 

دستور    DO    ---   LOOP 

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

a)      

شرط      UTIL  یا   DO      WHILE

 

بلوک حلقه .. دستور العمل های حلقه

LOOP

b)       

DO

بلوک حلقه  ..  دستور العمل های حلقه

شرط   UNTIL    یا    LOOP     WHILE

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

فرق عبارت WHILE  , UNTIL   این است ؛ در WHILE   دستورات  بلوک حلقه با درستی شرط اجرا می گردد. بعد از عدم برقراری اجرای برنامه به دستور بعد از LOOP منتقل می شود . اما UNTIL  برعکس عمل می کند یعنی تا زمانی که شرط نادرست است دستورات بدنه حلقه اجرا و درستی شرط باعث انتقال اجرای برنامه به بعد از دستور LOOP می گردد .

نکته : به کار بردن عبارت WHILE ,  UNTIL  به همراه شرط در DO  ---  LOOP اختیاری است.

برنامه ای بنویسید  اعدادی که مجذور آن ها کوچک تر یا مساوی 25 است را به همراه مجذورشان نمایش داده شود .

CLS

Num = 1

DO   WHILE   Square < 25

        Square = num ^ 2

        PRINT num , Square

        Num = num + 1

LOOP

END

برنامه بالا به کمک UNTIL

CLS

Num = 1

DO   UNTIL    Square = 25

        Square = num ^ 2

        PRINT num , Square

        Num = num + 1

LOOP

END

توابع :

ریاضی

تابع ABS( … ) مقدار قدر مطلق عدد یا عبارت داخل پرانتز را باز می گرداند.

تابع SQR( … ) محاسبه ریشه دوم ععد یا عبارت داخل پرانتز

تابع INT( … ) جزء صحیح عدد یا عبارت داخل پرانتز.

تابع LOG( … ) محاسبه لگاریتم طبیعی عدد یا عبارت عددی داخل ...

 

مثلثاتی

تابع SIN( … ) مقدار سینوس یک زاویه را باز می گرداند . عدد داخل پرانتز برحسب رادیان است

تابع COS( … ) مقدار کسینوس  یک زاویه را باز می گرداند . عدد داخل پرانتز برحسب رادیان است

تابع TAN( … ) مقدار تانژانت  یک زاویه را باز می گرداند . عدد داخل پرانتز برحسب رادیان است

تابع ATN( … ) مقدار آرک تانژانت نسبت دو ضلع مثلث قائم الزاویه را برمی گرداند

 

رشته ای

تابع LEN( x$ ) طول یک رشته را مشخص کرده و باز می گرداند.

تابع LEFT$( x$ , n ) از سمت چپ یک عبارت رشته ای یا متغیر رشته ای . تعداد معینی(n) کاراکتر را جدا کرده و به صورت رشته باز می گرداند .

تابع RIGHT$( x$ , n ) از سمت راست یک عبارت رشته ای یا متغیر رشته ای . تعداد معینی(n) کاراکتر را جدا کرده و به صورت رشته باز می گرداند .

تابع MID$( x$ , m , n ) از درون یک عبارت رشته ای یا متغیر رشته ای ؛ تعداد معینی (n) از کاراکتر(m) جدا کرده و به صورت رشته باز می گرداند.

تابع STR$( n ) یک عدد یا متغیر عددی را به صورت رشته باز می گرداند .

تابع INPUT$ دریافت ورودی رشته ای

تابع RND تولید عدد تصادفی بین صفر و یک

تابع RANDOMIZE  همراه تابع RND جهت تولید سری های مختلف اعداد تصادفی بین صفر و یک به کار می رود .

 

 

آرایه :

مجموعه ای از متغییر های هم نوع است که با یک نام در حافظه نگهداری می شود . هرمتغیر درون آرایه با یک اندیس قابل دسترسی می باشد که این اندیس مکانی از آرایه را که آن متغیر اشغال کرده است مشخص می نماید . متغیرهای مجزا از هم نیز عناصر آرایه نامیده می شوند .

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

آرایه یک بعدی ID(0) , ID(1) , ID(2) , ID(3) , ID(4)  این آرایه یک جدول با یک سطر(ID) و پنج ستون(0 – 4)است

نکته : کلیه عناصر یک آرایه باید از یک نوع داده باشند . یک خانه آرایه نمی تواند از نوع عددی صحیح و خانه دیگر از نوع رشته ای باشند .

کاربرد آرایه ها :

فرض کنید می خواهیم ده عدد را به طور صعودی مرتب کنیم . برای ذخیره سازی این اعداد باید ده متغیر به نام های num1 , … , num10  تعریف نمائیم .نوشتن برنامه ای که بتواند این ده متغیر را مرتب کند مشکل است . درچنین مواردی ، زبان های برنامه نویسی راه حل ساده ای به نام آرایه در اختیار ما قرار می دهند . به کمک آرایه ها می توان ده عدد را در متغیری به نام num از نوع آرایه ای با یک سطر (num) و ده ستون (0 , … , 9) ذخیره کرد.

دستور  DIM

با استفاده از این دستور می توان یک آرایه تعریف کرد شکل کلی آن :

نوع داده       AS     (دامنه یا تعداد عناصر)  نام متغیر آرایه       DIM  

نام متغیر آرایه : همان نام اشتراکی است که توسط آن می توانید به عناصر آرایه دسترسی پیداکنید .

دامنه یا تعداد عناصر : حداکثر خانه های لازم (حد اکثر یک آرایه) جهت ذخیره سازی مقادیر را در آرایه تعیین می کند. تعداد می تواند  بصورت عدد یا دامنه ای به شکل حد پائین  به سمت حد بالا باشد.

نوع داه : نوع آرایه را مشخص می کند و می تواند INTEGER =% صحیح   LONG =& , صحیح بلند  SINGLE =! , اعشاری با دقت معمولی   DOUBLE =# , اعشاری با دقت مضاعف  STRING =$ , رشته ای    باشد .

DIM  B(20)   آرایه B از نوع اعشاری معمولی  با 21 عنصر ( از صفر تا 20 )

DIM  N(5  To  45)  آرایه N   اعشاری معمولی با 41 عنصر

DIM  A%(10)  آرایه A  از نوع عددی صحیح با  11 ( از صفر  تا  10) عنصر

DIM  C$(5)  آرایه C   از نوع رشته ای با 6 عنصر

DIM  num(1  To  5)  AS  SINGLE  آرایه num  اعشاری معمولی دارای 5 عنصر

DIM  N(10 , 10)  آرایه دو بعدی با نام N  اعشاری معمولی دارای 11 سطر ( صفر تا 10) و 11 ستون (از صفر تا 10) .

دستور OPTION BASE  برای تعریف کوچکترین اندیس آرایه برای شروع به شکل  OPTION BASE    m

M  عدد شروع  که می تواند صفر یا 1 باشد .

CLS

OPTION BASE 1

DIM  x(4)

DIM  name$(3)

X(1) = 10 : x(2) = 20 : x(3) = -70  : x(4) = 12.35

Name$(1) = " Ali"  : name$(2) = " Hamid "  : name$(3) = " Davood "

در مثال بالا ابتدا آرایه های X  و name$  تعریف شده سپس عناصر آنها مقدار دهی شده اند مثلا دستور X(2) = 20 باعث می شود عدد 20 در خانه دوم آرایه X   ذخیره گردد.

استفاده از دستور INPUT

برنامه ای بنویسید که بتواند  10 نمره یک دانشجو را از ورودی دریافت نمده سپس آنها را درون آرایه ه ای به نام SCORE قرار دهد.

CLS

OPTION BASE 1

DIM  score(10)

For  k = 1   To   10

      INPUT  score(k)

NEXT  K

END

استفاده از دستور  DATA     READ 

برنامه ای بنویسید که بتواند بکمک دستور DATA … READ  5 نمره یک دانشجو را درون آرایه score  قرار داهد .

CLS

OPTION  BASE 1

DATA   7 , 17 , 15 , 18 , 3

DIM  score(5)

For  I = 1   To   5

    Read  score(I)

NEXT  I

End

در برنامه اگر I=2  باشد READ  score(2)   باعث می شود داده دوم دستور DATA یعنی عدد17 در خانه دوم score  ذخیره می شود .

برنامه ای بنویسید که 10 نمره یک دانش آموز را از ورودی دریافت کرده و مجموع و میانگین نمرات آن ها را محاسبه و چاپ کند .

CLS

DIM   score( 1   To   10 )   AS  INTEGER

For  I = 1   To   10

     PRINT  " score("; I ; ") = ";

     INPUT  "" , score(I)

NEXT I

Sum = 0

For  I = 1   To   10

      Sum = sum + score(I)

NEXT I

AVERAGE = sum / 10

PRINT " sum = " ; sum

PRINT  " AVERAGE = " ; average !

END

مرتب کردن عناصر آرایه ها:

مرتب سازی از مهم ترین الگوهای برنامه نویسی است که به کمک آرایه ها انجام می گیرد . مرتب سازی می تواند به صورت صعودی ( از کوچک به بزرگ )  یا نزولی ( از بزرگ به کوچک ). الگوی مرتب سازی هم روی اعدا و هم روی حروف صورت می گیرد .

برنامه ای بنویسید که بتواند 5 عدد را از ورودی دریافت کرده سپس با استفاده از الگوریتم مرتب سازی آن ها را به صورت صعودی مرتب کرده نمایش دهد .

CLS

OPTION  BASE 1

DIM  array(5)   AS  SINGLE

FOR  I = 1   To   5

      PRINT  I ;

     INPUT  array( I )

NEXT  I

FOR  I = 1   To   4

      FOR  J = 1   To   5 –I

             IF  ( array( J ) >  Arraay( J + 1 ))    THEN

             SWAP array( J ) , array( J +1 )

             END IF

      NEXT  J

NEXT  I

FOR  I = 1    To   5

       PRINT  array( I )

Next  I

دستور SWAP 

برای جابجائی مقدار دو متغیر با هم دستور SWAP  رابه شکل متغیر 2   . متغیر 1   SWAP   استفاده می کنیم .

حال اگر در مثال بالا در شرط به جای علامت بزرگتر (> ) در عمل مقایسه از علامت (<) استفاده شود ، مرتب سازی نزولی خواهد بود .

برنامه ای بنویسید که 5 نام را از ورودی دریافت کرده درون یک آرایه ذخیره کند . آن گاه با دریافت یک نام از ورودی مشخص کند که نام ورودی در آرایه موجود است  یا خیر ؟

CLS

DIM  name$(5)

For  I = 1   To   5

    INPUT  name$(I)

NEXT  I

FOR  I = 1   To   4

    SORTED$ = “ Yes “

    FOR  J = 1   To   5 – I

         IF  name$(J) > name$(j – 1))  THEN

            SWAP  name$(J) , name$(J +1)

            SORTED$ = “ No “

         END IF

    NEXT  J

    IF  SORTED$ = “ Yes “  THEN

         I = 4

    END IF

NEXT  I

FOR  I = 1   To   5

Low = 1

High = 5

WHILE  ( Low < = High )

    MIDDLE = INT(( Low + High ) / 2)

    IF  ( KEY$ > name$ ( MIDDLE ))  THEN

        Low = MIDDLE – 1

    ELSEIF (KEY$ < name$ ( MIDDLE ))  THEN

        High = MIDDLE – 1

    ELSE

         PRINT  MIDDLE

         END

    END IF

WEND

PRINT  “ Not  Found “

END

 

 

زیر برنامه

زیر برنامه یا برنامه فرعی ، بخشی مستقل از برنامه اصلی را تشکیل می دهد . هر زیر برنامه مجموعه ای از دستورالعمل هاست که هدف خاصی را دنبال کرده و به دفعات در برنامه اصلی فراخوانده شده و اجرا گردد.به دلیل استقلال زیر برنامه در یک برنامه اصلی می تواند تعدادی زیر برنامه باشد .یکی از ویژگی های زیر برنامه این است که از مقادیر متغیرهای برنامه اصلی می توانند استفاده کنند .

با تقسیم یک برنامه به چند زیر برنامه می توان برنامه اصلی را قابل فهم و خوانتر نمود .

نکته : زیر برنامه بعد از دستور 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