PDA

توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : آموزش qbasic -جلسه پنجم >> ساختارهاي تكرار



TAHA
09-22-2009, 01:30 AM
حل تمرين جلسه قبل :
1- برنامه بسيار ساده و به صورت زير است :
sum=0
FOR i=100 TO 998 STEP 2
sum=sum+i
NEXT i
PRINT "Sum is :",sum
ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ــــــــــــــــــــ

2-
DO
$INPUT "Enter pass";pass
IF pass$<>"abc" THEN
"PRINT "Your password is not correct ! try again
END IF
"LOOP WHILE pass$<abc>max THEN max=a
NEXT i
END

*نكات : تا زماني كه كاربر رمز عبور را درست وارد نكرده ، حلقه تكرار مي شود و تنها زماني كه رمز به درستي وارد شود ، برنامه به خط بعد از LOOP مي رود و دستورات بعدي انجام مي شود . براي تعيين max دسته اي از اعداد ، ابتدا اولين عدد ورودي را در max قرار مي دهيم سپس بقيه اعداد را در يك حلقه از كاربر دريافت كرده ، بعد از دريافت هركدام ، آنها با max مقايسه مي شوند تا اگر بيشتر از max بودند ، در آن قرار گيرند . دقت کنيد چون يک عدد بيرون حلقه دريافت کرده ايم ۹ عدد ديگر باقيمانده است (شرط حلقه ) براي به دست آوردن min نيز از همين روش استفاده مي كنيم .
ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ــــــــــــــــــــ

3-
c=1
DO
$INPUT"Enter password",pass
c=c+1
LOOP WHILE pass$<>"123" AND c<=3
IF pass$="123" THEN
"!PRINT "your password is correct
ELSE
"PRINT "Sorry ! you can't continue
END
نكات : در شرط حلقه از عملگر منطقي AND استفاده شده زيرا استفاده از AND سبب مي شود اگر يكي از شرطها هم غلط باشد ، كل عبارت نادرست شود . (عينا مانند استفاده از "و" در منطق رياضي ) يعني در هريك از دو صورتي كه "pass$="abc (رمز درست وارد شود) يا c (شمارنده) بزرگتر از 3 شود ، برنامه از حلقه خارج مي شود و با توجه اين كه بر اثر درست وارد شدن رمز از حلقه خارج شده ايم يا بر اثر تمام شدن تعداد حدس ها ، پيغام مناسب چاپ مي شود .

و اما درس جديد :

در درس امروز ابتدا به معرفي آرايه مي پردازيم .
فرض كنيد مي خواهيم n عدد را به صورت صعودي مرتب كنيم . براي ذخيره سازي اين اعداد بايد n متغير به نام هاي a1,a2,a3,...,an تعريف كنيم . نوشتن برنامه اي كه بتواند اين n عدد را مرتب كند مخصوصا زماني كه مقدار n بزرگ باشد ، بسيار مشكل و تقريبا غير ممكن است . در چنين مواردي از آرايه ها يا ماتريس ها استفاده مي كنيم . به كمك آرايه ها مي توان تعداد مشخصي متغير همنوع را فقط با يك نام و مشخص كردن انديس آنها به كار برد . براي مثال مي توان ده عدد را در متغيري به نام N از نوع آرايه اي به طول 10 ذخيره كرد :
325
145
23
965
3
47
10
0
71
400
N


1 2 3 4 5 6 7 8 9 10

مثلا N(1)=325 و N(9)=71
براي تعريف آرايه از دستور DIM به شكل كلي زير استفاده مي شود :
[ نوع داده AS ] (دامنه يا تعداد عناصر ) نام متغير آرايه DIM
( عبارت داخل [ ] اختياري است )
به مثال هاي زير توجه كنيد :
ايجاد آرايه اي به نام B و داراي 20 عنصر : (DIM B(1 TO 20 يا (DIM B(20
ايجاد آرايه اي به نام M از نوع عدد صحيح و داراي 50 عنصر : (DIM M%(50
ايجاد آرايه اي به نام Grade از نوع اعشاري ساده داراي 35 عنصر : DIM Grade(35) AS SINGLE

مثال 1 : برنامه ای بنويسيد که ۱۴ نمره يک دانش آموز را در آرايه ذخيره کرده و مجموع و ميانگين نمرات را چاپ کند .

DIM Grade(1 TO 14 ) AS INTEGER
sum!=0
FOR i=1 TO 14
(%INPUT "Grade : "Grade(i
(%sum! = sum! + Grade(i
NEXT i
average!=sum!/14
!PRINT "sum = ";sum
!PRINT "average = ";average

اين برنامه را می توانستيد با دريافت نمرات در حلقه يا دريافت تک تک نمرات (۱۴ بار) نيز بنويسيد . اما فرض کنيد کاربر بخواهد نمره سوم يا ششم خود را مشاهده کند . در اين صورت بايد از آرايه ها استفاده کنيد زيرا در روش قبلی امکان دسترسی به تک تک اطلاعات وجود نداشت ولی حالا با افزودن قطعه کد زير به برنامه بالا می توان برنامه ای ساخت که نمره دلخواه کاربر را نمايش دهد :

INPUT "which grade do you want to see?",a
(PRINT "grade ";a;" is = ";Grade(a

آرايه های دوبعدی و چند بعدی :

در مواقعی نياز به آرايه هايی داريم که هر عنصر آن دارای دو بعد باشد . مثلا برای ذخيره مختصات چند نقطه نياز به يک آرايه دو بعدی داريم تا مختصات x و y نقطه را ذخيره کنيم . تعريف آرايه های n بعدی به طور کلی به شکل زير است : (A1,A2,A3,...,An و B1,B2 و ... همگي عدد هستند )

(DIM (A1 TO A2,B1 TO B2, ... , Z1 TO Z2 يا (DIM (A1,A2,A3,...,An

مثال ۲ : برنامه ای بنويسيد که جدول ضرب اعداد از يک تا ده را در يک آرايه دوبعدی ذخيره نمايد .

(DIM N(10,10
FOR I%=1 TO 10
FOR J%=1 TO 10
%N(I%,J%)=I%*J
%NEXT J
%NEXT I

مثلا N(3,5)=15 .

تمرين :

اين جلسه تنها يک تمرين نسبتا مشکل را عنوان می کنم تا در تعطيلات روی آن فکر کنيد ! : برنامه ای بنويسيد که ۱۰ عدد را دريافت کند و آنها را به ترتيب به صورت صعودی مرتب کند . برنامه را برای n عدد تعميم دهيد . ( راهنمايی : دستور SWAP a,b مقدار دو متغير را عوض می کند . يعنی اگر a=1,b=2 باشد بعد از اجرای اين دستور a=2,b=1 خواهد بود . از اين دستور می توانيد برای جابه جايی عناصر آرايه به منظور مرتب سازی استفاده کنيد . )