حل تمرين پست قبل :

DIM bubble(10) AS SINGLE
FOR i=1 TO 10
(INPUT "Enter number ",bubble(i
NEXT i
FOR i=1 TO 9
FOR j=1 TO 10
(IF bubble(j)>bubble(i) THEN SWAP bubble( i ) , bubble( j
NEXT j
NEXT i
" : PRINT "Sorted List
FOR i=1 TO 10 : PRINT bubble(i) : NEXT i

براي مرتب سازي روش هاي گوناگوني به كار برده مي شود كه يكي از ساده ترين آنها روش حبابي (Bubble Sort) است و در حل تمرين بالا از آن استفاده شده است : فرض كنيد n عدد متمايز داريم . طبق اين روش ابتدا عدد اول را با عدد دوم مقايسه مي كنيم اگر اولي بزرگتر بود ، جاي دو عدد را عوض مي كنيم. در صورتي كه عدد دوم بزرگتر بود ، به همان ترتيب باقي خواهند ماند . همين مقايسه بين عدد دوم و سوم ، سوم و چهارم ، ... ، (n-1) ام و n ام صورت مي گيرد . پس از اينكه يك بار اين عمل انجام شد ، دوباره همين الگوريتم را روي ليست به دست آمده اعمال مي كنيم و اين كار را n-1 بار انجام مي دهيم . ممكن است شما اين مسئله را از راه ديگري حل كرده باشيد . همانطور كه گفتم اين مسئله راه هاي متفاوتي دارد .

نكته : به خط آخر برنامه توجه كنيد . گاهي اوقات براي كم حجم نشان دادن برنامه به جاي اينكه به سر خط برويم ، مي توانيم بين دستورات از علامت ( : ) استفاده كنيم . در اين مثال به جاي اينكه دستور FOR سه خط را اشغال كند ، در يك خط نوشته شده است .

ساختار شرطي SELECT CASE


شكل كلي دستور به صورت زير است :


عبارت SELECT CASE
حالت ۱ CASE
دستورالعمل هاي حالت 1
حالت ۲ CASE
دستورالعمل هاي حالت 2
.....
CASE ELSE
دستورالعمل هايي كه در صورت غلط بودن تمام شرطهاي بالا بايد انجام شوند .
END SELECT

عبارتي كه در مقابل SELECT CASE قرار مي گيرد ، معمولا يك متغير بوده كه مي خواهيم روي آن بحث كنيم . چنانچه ارزش اين متغير يا عبارت با هريك از مقاديري كه جلوي CASE ها قرار گرفته است ، برابر باشد ، دستورالعمل آن CASE انجام مي شود . اگر ارزش متغير با هيچ كدام از عبارت هاي مقابل CASE ها برابر نباشد ، دستورالعمل هاي درون CASE ELSE انجام خواهد شد . ( اين حالت اختياري است )


مثال 1 : برنامه اي بنويسيد كه با استفاده از SELECT CASE منفي يا مثبت بودن عدد را نشان دهد .

CLS
INPUT "Enter a number ",num
SELECT CASE num
CASE 0
"! PRINT "Zero
CASE IS >0
" PRINT "Positive
CASE IS <0
" PRINT "Negative
END SELECT

نكته : دستور CLS به منظور پاك كردن صفحه به كار مي رود . بعد از اجراي برنامه ، عبارات برنامه قبلي نيز روي صفحه باقي مي ماند و عبارات برنامه جديد در زير آنها نمايش داده مي شود . براي پاك كردن صفحه از دستور CLS استفاده مي كنيم تا فقط دستورات برنامه جاري نمايش داده شود .

مثال ۲ : برنامه اي بنويسيد كه سن كاربر را دريافت كند . اگر بين ۰ و ۱۲ بود ، پيغام "child" ، اگر بين ۱۳ و ۲۰ بود پيغام "teenager" و اگر بزرگتر از ۲۰ بود پيغام "adult" را چاپ كند .

INPUT "Enter your age ",age
SELECT CASE age
CASE 1 TO 12
"! PRINT "You are a child
CASE 13 TO 20
"! PRINT "You are a teenager
CASE IS >20
"! PRINT "You are an adult
CASE ELSE
PRINT "Invalid number
END SELECT

نكته : مشاهده مي كنيد كه اگر عبارت مقابل CASE يك بازه كران دار باشد ( يعني ابتدا و انتهاي آن مشخص باشد ) از عبارت TO بين اعداد ابتدايي و انتهايي بازه استفاده مي كنيم . اگر بازه از يك طرف بي كران باشد ، در مقابل عبارت CASE بايد از IS استفاده كنيم . اگر عبارت تنها يك رشته و يا يك عدد باشد ، آن رشته يا عدد را به تنهايي مقابل CASE مي نويسيم .

ترفند : برای تایپ سريع تر برنامه و صرفه جويی در وقت می توانيد از ترفندهای کيوبيسيک استفاده کنيد . مثلا به جای اينکه تایپ کنيد CASE IS > 20 می توانيد بنويسيد CASE > 20 . هنگامی كه بخواهيد به خطوط بالاتر يا پايين تر برويد ، كيوبيسيك به طور خودكار عبارتی دومی را به اولی تبديل می كند . همينطور می توانيد به جای دستور PRINT از يك علامت سوال استفاده كنيد . يعنی اگر در محيط برنامه بنويسيد "Hello " ? هنگام انتقال مكان نما به سطر ديگر ، اين عبارت به "PRINT "Hello تبديل می شود . در ادامه با اين موارد بيشتر روبه رو خواهيد شد .

تمرين :

1- فرض كنيد عدد متناظر با رنگ هاي سياه ، قرمز ، سبز ، آبي ، نارنجي و قهوه اي به ترتيب 1 ، 2 ، 3 ، 4 ، 5 و 6 باشد. برنامه اي بنويسيد كه يك عدد را از كاربر بگيرد و رنگ متناظر با آن را نمايش دهد . در صورتي كه عدد كاربر در محدوده اعداد بالا نباشد ، پيغام مناسب چاپ شود .
2- برنامه محاسبه !n را بنويسيد .
3- برنامه محاسبه توان دوم مجموع اعداد از 1 تا n را بنويسيد .
4- برنامه محاسبه مجموع مقسوم عليه هاي يك عدد را بنويسيد .