24
ی ه ساز م ا رن ب ر و ب و ی پ م ی کا ن ا ب م م ت ی وز گ لا$: وم س ل ص ف ی ف رو مع1 ن گی ن مدزس :

مبانی کامپیوتر و برنامه سازی

Embed Size (px)

DESCRIPTION

مبانی کامپیوتر و برنامه سازی. فصل سوم :الگوریتم مدرس : نگین معروفی. 3 الگوریتم. الگوریتم مجموعه محدودی از دستورالعملها است که اگر به ترتیب دنبال شوند موجب انجام کار خاصی می گردند. هر الگوریتم باید دارای شرایط زیر باشد - PowerPoint PPT Presentation

Citation preview

Page 1: مبانی کامپیوتر و برنامه سازی

مبانی کامپیوتر و برنامه سازی

فصل سوم :الگوریتم

مدرس : نگین معروفی

Page 2: مبانی کامپیوتر و برنامه سازی

الگوریتم3

الگوریتم مجموعه محدودی از دستورالعملها است که اگر به ترتیب دنبال

شوند موجب انجام کار خاصی می گردند. هر الگوریتم باید دارای شرایط زیر باشد

ورودی : یک الگوریتم می تواند صفر یا چند ورودی داشته باشدکه از محیط خارج تامین می گردد.

.خروجی : الگوریتم باید یک یا چند کمیت خروجی داشته باشد.قطعیت : هر دستورالعمل باید واضح و بدون ابهام باشد.کارایی : هر دستورالعمل باید قابل اجرا باشد محدودیت : در تمام حاالت، الگوریتم باید پس از طی مراحل

محدودی خاتمه یابد.

Page 3: مبانی کامپیوتر و برنامه سازی

الگوریتم3 حل مواجهیم که باید آن را مسئلهدر علم کامپیوتر، ما معموال با یک

کنیم. این مسئله می تواند در زمینه های مختلفی همچون علمی، اقتصادی، ریاضی، فنی و ... باشد.

معموال برای حل یک مسئله، مراحل زیر طی می گردد )تعریف مسئله بصورت جامع و دقیق )شامل تعریف ورودیها و خروجیهابررسی راه حلهای مختلف برای حل مسئلهانتخاب مناسبترین راه حل و تهیه یک الگوریتم برای آنآزمایش الگوریتم با داده های ورودی و اشکالزدایی آن تبدیل الگوریتم به یک زبان برنامه نویسی کامپیوتری )مانندC یا

Pascal)وارد کردن برنامه به کامپیوتر و تست و اشکالزدایی آناستفاده از برنامه

Page 4: مبانی کامپیوتر و برنامه سازی

نحوه بیان الگوریتمها 1-3چگونه می توانیم الگوریتمها را بیان کنیم؟لگوریتمها باید برای انسانها قابل فهم و درک باشند و همه بتوانند به ا

راحتی منظور نویسنده الگوریتم را درک کنند معموال الگوریتمها به یک زبان طبیعی مانند فارسی یا انگلیسی نوشته

می شود. ین مسئله باعث می شود که بعضی ابهامات در درک الگوریتمها پیش ا

آید. معموال یکسری از توافقات و تعریفها از قبل بین طراح و خواننده

الگوریتم برقرار می گردد. از آنجا که زبانهای برنامه نویسی مانند C به زبان انگلیسی خیلی

و انگلیسی )که به آن Cنزدیک هستند، بعض از طراحان از ترکیب زبان می گویند( برای بیان الگوریتم استفاده می کنندCکد شبه

( الزم بذکر است که در گذشته از نمودار گردشیFlowchart نیز )برای بیان الگوریتمها با استفاده از شکلهای استاندارد استفاده می شد،

که تنها برای الگوریتمهای کوچک مناسب بود.

Page 5: مبانی کامپیوتر و برنامه سازی

شروع به کار با 2-3الگوریتمها

الگوریتمی بنویسید که ضرایب یک معادله درجه دوم بصورت زیر را دریافت و ریشههای آن را محاسبه و چاپ کند.

ax2 + bx + c = 0 برای حل این مسئله ابتدا باید ضرائبa ، b و c از کاربر دریافت و در خانه های

حافظه ذخیره گردند. برای اینکه بتوانیم بعدا به این خانه های حافظه مراجعه کنیم، به هریک از آنها یک

گفته می شود. متغیرنام نسبت می دهیم. به هریک از این نامها یک دلیل این نامگذاری آنستکه مقادیر ذخیره شده در هریک از این خانه های حافظه

می تواند تغییر کند. گرچه انتخاب نام بعهده خودشماست و می تواند هر چیزی باشد، ولی توصیه می

گردد از اسامی بامعنی و متناسب استفاده گردد. این کار سبب می شود که خواندن و درک الگوریتم شما برای سایر افراد نیز ساده گردد.

: اکنون به قراردادهای زیر توجه کنید استفاده می گردد.بخوانبرای دریافت اطالعات از کاربر از دستور استفاده می گردد.چاپ کن برای نوشتن اطالعات در خروجی از دستور استفاده می شود.← برای انتساب یک مقدار به یک متغیر از عالمت

Page 6: مبانی کامپیوتر و برنامه سازی

شروع به کار با 2-3الگوریتمها

)1a و b و cرا بخوان )2delta ← b2 – 4ac و3(

a

deltabx

21

)4 x1 وx2 کن چاپ را

کن 5( توقف

a

deltabx

22

Page 7: مبانی کامپیوتر و برنامه سازی

مکانیزم شرط 3-3 مکانیزم شرط هنگامی استفاده می شود که قصد داریم درستی یا

نادرستی یک عبارت رابررسی کرده و متناسب با نتیجه بررسی شرط، عملیات خاصی را انجام دهیم و یا از انجام بعضی عملیات صرفنظر

کنیم. شکل کلی این دستور به شکل زیر است

دستورات آنگاه( عبارت شرطی )اگر

:این دستور به شکل زیر نیز استفاده می شود

1دستورات آنگاه( عبارت شرطی )اگر2دستورات درغیر اینصورت

Page 8: مبانی کامپیوتر و برنامه سازی

مکانیزم شرط 3-3)1a و b و cرا بخوان نیست“ و توقف کن2 ( آنگاه چاپ کن ”معادله درجه a = 0اگر ) 2()3delta ← b2 – 4ac ( آنگاه چاپ کن ”معادله جواب ندارد“delta < 0اگر ) 4(

درغیراینصورت و

را چاپ کنx2 و x1 و

a

deltabx

21

کن ت5( وقف

a

deltabx

22

Page 9: مبانی کامپیوتر و برنامه سازی

مکانیزم حلقه تکرار4-3الزم است که عملیات مشخصی چندین بار تکرار الگوریتمها بعضی در

دانشجو 100شوند. بعنوان مثال فرض کنید قصد داریم میانگین معدلهای بار دستور خواندن و جمع کردن راه حل چندان 100را محاسبه کنیم. قطعا

مناسبی نیست. راه حل بهتر آنستکه بگونه ای به مجری الگوریتم بگوییم بنحوی عمل

بار تکرار کند.100خواندن معدل و جمع زدن آنها را حلقه تکرار مکانیزمی است که مجموعه ای از دستوزات را تا زمانیکه

شرط خاصی برقرار باشد تکرار می کند.حلقه تکرار به دو شکل مورد استفاده قرار می گیرد

Page 10: مبانی کامپیوتر و برنامه سازی

مکانیزم حلقه تکرار4-3که مکانیزم کلی آن به شکل زیر است :شرط در ابتدای حلقه

را تکرارکن b تا a دستورات( شرط مورد نظر )تا زمانیکه ( …a

. .

. ( … b

در این حالت ابتدا شرط موردنظر بررسی می گردد؛ درصورتیکه شرط می رود. اما در صورتیکه شرط bبرقرار نباشد به اولین دستور پس از

انجام می شوند و سپس b تا aدرست ارزیابی شود، دستورات شماره مجددا به ابتدای حلقه بازگشته و عملیات فوق را مجددا تکرار می کند.

Page 11: مبانی کامپیوتر و برنامه سازی

مکانیزم حلقه تکرار4-3که مکانیزم کلی آن به شکل زیر است :شرط در انتهای حلقه

تکرار کن (…a

. .

. ( …b

(شرط مورد نظر )تا زمانیکه

در این روش ابتدا دستورات حلقه یکبار انجام می شوند و در پایانحلقه شرط بررسی می گردد. چنانچه شرط برقرار نبود به دستور

بعدی می رود و در صورت برقرار بودن شرط، مجددا به ابتدای حلقه باز می گردد.

Page 12: مبانی کامپیوتر و برنامه سازی

مکانیزم حلقه تکرار4-3 الگوریتمی بنویسید که یک عدد را دریافت و فاکتوریال آن را محاسبه و

چاپ کند.N! = 1 × 2 × 3 × … × )N-1( × N

الگوریتم

)1nرا بخوان )21 ←i 1 و ←fact را تکرار کن4-5 دستورات ≥n( ) iتا زمانیکه3()4fact × i ← fact)5i + 1 ← i)6factرا چاپ کن توقف کن7(

Page 13: مبانی کامپیوتر و برنامه سازی

آزمایش الگوریتم 5-3)1n بخوان را)2 1 ←i 1و ←fact)3 ( زمانیکه تکرار 4-5دستورات( i ≤ nتا را

کن)4fact × i ← fact)5i + 1 ← i)6fact کن چاپ راکن 7( توقف

n =i = fact = خروجی=

41

12

23

64

245

24

← الگوریتم اجرای

Page 14: مبانی کامپیوتر و برنامه سازی

چند الگوریتم نمونه 6-3 الگوریتمی بنویسید کهn عدد را دریافت و حداکثر و حداقل آنها را چاپ

کند.

)1nرا بخوان )2adad را بخوان )3min ← adad و max ← adad )4i ← 2 را تکرار کن8 تا 6 ( دستورات i ≤ nتا زمانیکه ) 5()6adadرا بخوان max ← adadآنگاه ( adad > maxاگر ) 7(

min ← adad ( آنگاه adad < minدر غیر اینصورت اگر ) )8i ← i + 1 )9max و minرا چاپ کن

توقف کن10(

Page 15: مبانی کامپیوتر و برنامه سازی

چند الگوریتم نمونه 6-3)1n بخوان را)2adad بخوان را)3 min ← adad وmax ← adad )4i ← 2زمانیکه ) 5( کن 8تا 6دستورات ( i ≤ nتا تکرار را)6adad بخوان راmax ← adadآنگاه( adad > maxاگر ) 7(

اگر ) اینصورت غیر min ← adadآنگاه ( adad < minدر)8i ← i + 1 )9max وmin کن چاپ را

کن توقف 10(

n = i = adad =max =min =

= خروجی← الگوریتم اجرای

5

181818

22727

321

46

6

53939

6

39 6

Page 16: مبانی کامپیوتر و برنامه سازی

چند الگوریتم نمونه 6-3 الگوریتمی بنویسید که مقدار x و تعداد جمالت را دریافت و سپس sin)x(

را با استفاده از فرمول زیر تخمین بزند:

)1x وn بخوان را)2 sin ← x وfact ← 1 وxPower ← x وsign ← 1)3i ← 1کن 9تا 5دستورات ( i < nتازمانیکه ) 4( تکرار را)5fact ← fact × 2i × )2i+1()6xPower ← xPower × x2

)7sign ← -1 × sign)8sin ← sin + sign × )xPower / fact()9i ← i + 1

)10sin کن چاپ راکن 11( توقف

...!7!5!3

)sin(753

xxx

xx

Page 17: مبانی کامپیوتر و برنامه سازی

چند الگوریتم نمونه 6-3 الگوریتمی بنویسید که برای تعدادی مشترک این اطالعات را بخواند : شماره حساب، موجودی

اولیه، تعداد برداشت یا واریز و سپس برای هر برداشت یا واریز این اطالعات را دریافت کند: = واریز( و مبلغ. 2 = برداشت، 1کد عمل )

در نهایت برای هرمشترک ، شماره حساب و موجودی نهایی را چاپ کند.

)1nرا بخوان )2i ← 1 را تکرار کن11 تا 4( دستورات i ≤ nتا زمانیکه ) 3()4shomare و mojodi و tedadرا بخوان )5j ← 1 را تکرار کن9 تا 7( دستورات j ≤ tedadتا زمانیکه ) 6()7code و mablaghرا بخوان mojodi ← mojodi – mablagh( آنگاه code = 1اگر ) 8(

mojodi ← mojodi + mablagh ( آنگاه code = 2درغیراینصورت اگر ) درغیراینصورت چاپ کن "کد اشتباه است"

)9j ← j + 1)10shomare و mojodiرا چاپ کن )11 i ← i + 1توقف کن12(

Page 18: مبانی کامپیوتر و برنامه سازی

چند الگوریتم نمونه 6-3=پسران( الگوریتمی بنویسید که معدل و کد جنسیت دانشجویانm =و دختران f یک کالس را )

دریافت و در پایان میانگین معدل پسران و میانگین معدل دختران و میانگین معدل کل کالس را چاپ کند.

)1nرا بخوان )2mSum ← 0 و mCount ← 0 و fSum ← 0 و fCount ← 0 )3i ← 1 را تکرار کن7 تا 5 ( دستورات i ≤ nتا زمانیکه ) 4()5code و averageرا بخوان ( آنگاهcode = mاگر ) 6(

fSum ← fSum + average و fCount ← fCount + 1 ( آنگاهcode = mدر غیراینصورت اگر )

mSum ← mSum + average و mCount ← mCount + 1 i ← i – 1 در غیراینصورت چاپ کن "کد اشتباه است" و

)7i ← i + 1fAve ← fSum / fCount ( آنگاه fCount > 0اگر ) 8(mAve ← mSum / mCount ( آنگاه mCount > 0اگر ) 9(

)10totalAverage ← )mSum + fSum( / n )11mAve و fAve و totalAverageرا چاپ کن توقف کن 12(

Page 19: مبانی کامپیوتر و برنامه سازی

چند الگوریتم نمونه 6-3 هر برای سپس و کند دریافت را دروس تعداد و دانشجویی شماره و نام دانشجو، تعدادی برای که بنویسید الگوریتمی

. و نام دانشجویی، شماره پایان در نماید محاسبه را وی معدل و دریافت را وی درس هر واحد تعداد و نمره دانشجو. کند چاپ را کالس برتر دانشجوی دو معدل

)1n بخوان را)2maxAve1 ← -1 وmaxAve2 ← -1)3i ← 1کن 15تا 5دستورات( i ≤ nتازمانیکه ) 4( تکرار را)5name وid وtedad بخوان را)6sum ← 0 وsumVahed ← 0)7j ← 1کن 12تا 9دستورات( j ≤ tedadتازمانیکه ) 8( تکرار را)9nomre وvahed بخوان را

)10sum ← sum + nomre × vahed)11sumVahed ← sumVahed + vahed)12j ← j + 1)13average ← sum / sumVahedآنگاه ( average > maxAve1اگر ) 14(

maxName2 ← maxName1 و maxId2 ← maxId1 maxAve2 ← maxAve1 وmaxName1 ← name

maxId1 ← id و maxAve1 ← average( آنگاه average > maxAve2درغیراینصورت اگر )

maxName2 ← name و maxId2 ← id و maxAve2 ← average)15i ← i + 1)16maxId1 و maxName1 و maxAve1 و maxId2 و maxName2 و maxAveرا چاپ کن توقف کن17(

Page 20: مبانی کامپیوتر و برنامه سازی

چند الگوریتم نمونه 6-3 ساعت گذشته دریافت نماید و میانگین دما 24الگوریتمی بنویسید که برای تعدادی شهر ابتدا نام شهر را دریافت و سپس دمای هوا در

را برای هر شهر محاسبه و چاپ نماید. درپایان موارد زیر را چاپ نماید :شهری که از همه سردتر بوده استشهری که از همه گرمتر بوده است

( به تفکیک30( و گرم )بیشتر از 30 تا 10( ، معتدل )بین 10تعداد شهرهای سرد )کمتر از درضمن تعداد شهرها مشخص نیست و در پایان هر شهر سوال می شود که آیا ادامه بدهیم یا خیر؟

)1warmDegree ← -100 و coldDegree ← 100)2coldCount ← 0 و warmCount ← 0 و mediumCount ← 0تکرار کن3()4cityرا بخوان )5sum ← 0 و hour ← 1 را تکرار کن9 تا 7 ( دستورات hour ≤ 24تازمانیکه ) 6()7degreeرا بخوان )8sum ← sum + degree)9hour ← hour + 1

)10sum ← sum / 24 ( آنگاه sum > warmDegreeاگر ) 11(

warmDegree ← sum و warmCity ← city ( آنگاهsum < coldDegreeدرغیراینصورت اگر )

coldDegree ← sum و coldCity ← citycoldCount ← coldCount +1 ( آنگاه sum < 10اگر ) 12(

( آنگاهsum < 30در غیر اینصورت اگر ) mediumCount ← mediumCount + 1

warmCount ← warmCount + 1 درغیراینصورت چاپ کن "آیا مایل به ادامه هستید ؟"13()14answerرا بخوان ’ (answer = ‘yesتا زمانیکه ) 15(اطالعات الزم را چاپ کن16(توقف کن17(

Page 21: مبانی کامپیوتر و برنامه سازی

چند الگوریتم نمونه 6-3 الگوریتمی بنویسید که یک عدد را دریافت و وارون آن را محاسبه و

می باشد.2783 برابر 3872بهمراه خود عدد چاپ کند. مثال وارون عدد

)1adadرا بخوان a ← -adad ( آنگاه adad < 0اگر ) 2(

a ← adadدر غیر اینصورت )3varoon ← 0 را تکرار کن7 تا 5 ( آنگاه دستورات a > 0تازمانیکه ) 4()5remain ← a mod 10)6a ← a / 10)7varoon ← varoon × 10 + remainvaroon ← -varoon ( آنگاه adad < 0اگر ) 8()9adad و varoon را چاپ کن

توقف کن10(

Page 22: مبانی کامپیوتر و برنامه سازی

چند الگوریتم نمونه 6-3)1adad بخوان را a ← -adadآنگاه ( adad < 0اگر ) 2(

اینصورت غیر a ← adadدر)3varoon ← 0دستورات ( a > 0تازمانیکه ) 4( کن 7تا 5آنگاه تکرار را)5remain ← a mod 10)6a ← a / 10)7varoon ← varoon × 10 + remainvaroon ← -varoonآنگاه ( adad < 0اگر ) 8()9adad وvaroon کن چاپ را

کن توقف10(adad =a = varoon =remain =

= خروجی

← الگوریتم اجرای

-275275

05

2757

2572

0572-572

-275 -572

Page 23: مبانی کامپیوتر و برنامه سازی

چند الگوریتم نمونه 6-3 الگوریتمی بنویسید که یک عدد را دریافت و تعیین کند که آیا اول است یا

خیر؟

)1adadرابخوان )2

)3i ← 2 وprimeSw ← 1کن 6تا 5دستورات ( i ≤ root and primeSw=1تازمانیکه ) 4( تکرار راprimeSw ← 0آنگاه ( adad mod i = 0اگر ) 5()6i ← i + 1“primeSw = 1اگر ) 7( است( " اول عدد کن چاپ آنگاه

درغیراینصورت چاپ کن "عدد اول نیست"توقف کن8(

adadroot

Page 24: مبانی کامپیوتر و برنامه سازی

چند الگوریتم نمونه 6-3 را دریافت و 10الگوریتمی بنویسید که یک عدد صحیح مثبت در مبنای

نیز از کاربر دریافت می گردد.b ببرد. مبنای bسپس آن را به مبنای

)1adad وbرا بخوان )2hasel ← 0 و i ← 0 را تکرار کن7 تا 4 ( دستورات adad > 0تازمانیکه ) 3()4remain ← adad mod b)5hasel ← hasel + remain × 10 i

)6adad ← adad / b)تقسیم صحیح بر صحیح( )7i ← i + 1)8haselرا چاپ کن توقف کن9(