تبليغاتX
کامپیوتر - آموزش کامل بيسيک
آزاد
 

ثابت ها :

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

ثابت عددي صحيح :  -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

 

 

+ نوشته شده در  پنجشنبه هفدهم خرداد 1386ساعت 12:17  توسط رسول فضلی  |