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 ریالی خرد کرد . ( لازم است که از تمام سکه ها استفاده شود ).
|+| نوشته شده در پنجشنبه یازدهم اسفند 1384ساعت 22:31 توسط داود بیگدلی | آرشیو نظرات
برنامه نویسی به زبان QBASIC
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
http://www.4shared.com/file/942998/fb41f2db/Qprog.html