آموزش q-basic
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
کد:
Cls Input Ngr Let Kg = Ngr \ 1000 Let Gr = Ngr Mod 1000 Print Kg , Gr End
کد:
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
● فرایندهای تکراری ( حلقه تکرار )
اجرای تعدادی دستور به دفعات معین ؛ یا تا برقراری شرایطی جهت رسیدن به جواب مسئله است . دستوراتی که به دفعات تکرار می شود ؛ یک حلقه تکرار راتشکیل می دهند .
FOR - NEXT : در صورتی استفاده می شود که دفعات تکرار معین و یا بتوان فرایند تکرار را با متغییری کنترل کرد .
چاپ اعدا متوالی تا 20
کد:
Cls For I=1 To 20 Print I ; Next I End
چاپ نزولی از 20 تا 1
کد:
Cls For I = 20 to 1 Step - 1 Print I Next I End
چند نمونه برنامه
برنامه چاپ زوج یا فرد بودن عدد ورودی
کد:
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
کد:
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
کد:
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
کد:
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
کد:
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 برای برگشت به اولین داده است ویابهتر بگیم این دستور ؛دستور READ را مجبور می کند که داده ها را از اول شروع به خواندن کند.)
مثال : چاپ مجموع 5 عدد ورودی
روش حل متداول
کد:
CLS SUM = 0 FOR I=1 TO 5 INPUT a SUM = SUM + a NEXT I PRINT SUM END
کد:
CLS SUM = 0 DATA 210 , 20 , 70 , 50 , 150 FOR I=1 TO 5 READ a SUM = SUM + a NEXT I PRINT SUM END
کد:
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 از کلمه Random به معنی تصادفی گرفته شده . این تابع در بیسیک بدون متغییر است؛یک عدد تصادفی بزرگتر از صفر و کوچکتر از یک تولید می کند.هر بار که این تابع به کار رود کامپیوتر یک عدد تصادفی بین صفر ویک تولیدمی کند. با این تابع کارهای علمی و تفریحی زیادی می توان انجام داد . برنامه زیر را اجرا کنید
کد:
CLS FOR I = 1 TO 5 PRINT RND NEXT I END
نکته : در هر بار اجرای دستور 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
کد:
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
برنامه ای بنویسید که دو عدد طبیعی 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
دستور 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
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 --- 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
نوعی حلقه تکرار در برنامه نویسی معمولا به دو روش زیر استفاده می شود .
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
ریاضی
تابع 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 "
استفاده از دستور INPUT
برنامه ای بنویسید که بتواند 10 نمره یک دانشجو را از ورودی دریافت نمده سپس آنها را درون آرایه ه ای به نام SCORE قرار دهد.
کد:
CLS OPTION BASE 1 DIM score(10) For k = 1 To 10 INPUT score(k) NEXT K END
برنامه ای بنویسید که بتواند بکمک دستور 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
برنامه ای بنویسید که 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 رابه شکل متغیر 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 name$ ( MIDDLE )) THEN Low = MIDDLE – 1 ELSEIF (KEY$