سال نو مبارک
.
آشنائي با مفاهيم مباني كامپيوتر
.
نوروزعید باستانی
Algorithm
الگوريتم : به مجموعه اي از دستورالعمل ها يي كه با ترتيب معين و مشخص اجراشده و موجب حل مسآله اي گردند را الگوريتم گويند . ويا
الگوريتم به مجموعه دستورالعملهايي گفته مي شود كه مراحل حل يك مسئله و يا مرحل مختلف انجام كاري را با يك زبان واضح ، روشن و بدون ابهام وپيچيدگي با جزئيات كافي بيان كرده و در آن شروع و پايان عمليات و همچنين ، ترتيب اجراي دستورالعمل ها كاملا مشخص شده باشد . مثال ( الگوريتم محاسبه مجموع 2 عدد 10 و 20 )
1. شروع
2. 10------> A
3. 20------> B
4. A + B ------< C
5. محتويات C را چاپ كن
6. پايان
اجزاي اصلي الگوريتم :
نقطه شروع
دستورالعمل ها ( جملات اجرائي )
جملات معمولي و محاوره اي
گزاره ها و روابط رياضي
اشكال هندسي استاندارد
نقطه پايان
متغيير : خانه اي از حافظه كه داده هاي ورودي ، محاسباتي و خروجي را درخود نگه مي دارد .
انواع جملات :
شرطي : گاهي اوقات نياز به تصميم گيرهاي خاصي است . ( اگر )
محاسباتي : محاسبات رياضي و ...
ثابت ها
عملگرها
توضيحي : جهت افزايش آگاهي اجراي الگوريتم .
ورودي و خروجي : داه هاي ورودي و يا نتيجه محاسبات ( خروجي ) .
حلقه هاي تكرار ( Loop ) :
اجزاء حلقه هاي تكرار :
شمارنده حلقه : جهت كنترل تعداد دفعات تكرار .
بدنه حلقه : جملات و دستورالعمل هايي كه با توجه به صورت مسئله انجام شود .
گام افزايش : پس از اجراي هرمرحله يكي به شمارنده اضافه ميكند .
شرط پاياني : جهت توقف پس از انجام مراحل تكرار .
مثال : الگوريتم چاپ عددهاي متوالي تا 20
1. شروع
2. 1------> I
3. I را چاپ كن
4. I + 1 ------I <
5. اگر I<= 20 آنگاه برگرد به خط 3
6. پايان
الگوريتمي بنويسيد كه شعاع دايره را خوانده سپس محيط و مساحت دايره را محاسبه و چاپ كند . ( ח= 14/3 )
1. شروع
2. R را دريافت كن
3. R*R*3.14 ------< S
4. 2*R*3.14 ------< P
5. S و P را چاپ كن
6. پايان
مسئله هاي زير را حل كنيد :
1- مقسوم عليه هاي عدد ورودي N رامحاسبه وچاپ كند .
2- مجموع مقسوم عليه هاي عدد ورودي N رامحاسبه وچاپ كند .
3- تعداد مقسوم عليه هاي عدد ورودي N رامحاسبه وچاپ كند .
4- عدد هاي اول ك.چكتر از 100 را چاپ كند .
5- عددي را از ورودي گرفته در صورتي كه عدد ورودي اول باشد آنرا چاپ كند .
6- عددي را از ورودي گرفته در صورتي كه عدد ورودي تام باشد آنرا چاپ كند . ( عددي كه مجموع مقسوم عليه هاي بجز خودش با خودش برابر باشد تام گويند مثل عدد 3+2+1=6 )
7- حقوق كارمندي W ريال است . هرماه 5/8 درصد حقوق او بابت بازنشستگي و 5 درصد آن بابت ماليات كسر مي شود . الگوريتمي بنويسيد كه پس ار كسورت دريافتي ماهانه اين كارمند را چاپ كند.
8- الگوريتمي بنويسيد كه ميانگين هندسي دو عدد مثبت ورودي را چاپ كند . ( ميانگين هندسي دو عدد مثبت جذر حاصلضرب آنهاست )
9- الگوريتم ميانگين هندسي سه عدد را بنويسيد .
10- الگوريتمي بنويسيد كه Max 10 عدد را همراه با شماره رديف عدد را چاپ كند .( Max چندمين عدد است )
11- الگوريتمي بنويسيد كه معدل كل 13 درس دانش آموزي را محاسبه و چاپ كند. ( هر درس داراي سه نمرات ثلث اول و دوم باضريب يك ثلث سوم با ضريب دو )
12- عددهاي تام كوچكتر از 5000 را چاپ كند .
13- عددهاي اول بين 100 تا 350 را چاپ كند .
14- فرض كنيد در N امين روز سال هستيم ، الگوريتمي بنويسيد كه تاريخ روز را معين كند . ( مثلا ، اگر در روز 64 سال باشيم ، تاريخ دوم خردادماه است يا 2/3 ، هدف تعيين شمارة روز و ماه مربوطه است )
15- روز اول سال ، چهارشبه است . الگوريتمي بنويسيد كه معين كند روز N ام سال چه روزي از هفته است . ( مثلا روز چهاردهم سه شنبه و روز صدوچهل و سوم جمعه است ).
16- عدد دو رقمي N مفروض است . الگوريتمي بنويسيد كه مجموع ارقام عدد N را بدست آورد .
17- الگوريتمي بنويسيد كه عدد دورقمي N را گرفته سپس مقلوب آنرا چاپ كند .( عدد 27؛ مقلوب 72)
18- عدد طبيعي N مفروض است معين كنيد N چند رقم دارد.
19- الگوريتم فاكتوريل عدد ورودي N . ( N! )
20- الگوريتمي بنويسيد كه ميانگين 8 عدد داده شده 4/8 ، 9 ، 4 ، 1 ، 9/3 ، 6/7 ، 4/3 ،2 را حساب كرده معين كند چندتا از اين اعداد از ميانگين بشتر است .
21- الگوريتمي بنويسيد كه اعداد دو رقمي را كه ارقام آن فرد باشد را چاپ كند .
22- الگوريتمي بنويسيد كه تعيين كند يك سكه 100 ريالي را به چند طريق مي توان با سكه هاي 20 ، 10 و 5 ريالي خرد كرد . ( لازم است كه از تمام سكه ها استفاده شود ).
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
دریافت نرم افزار QBASIC