دانشگاه كردستان دانشكدة فني و مهندسي گروه كامپيوتر

Post on 15-Mar-2016

77 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

_. دانشگاه كردستان دانشكدة فني و مهندسي گروه كامپيوتر. مباني كامپيوتر و برنامه سازي Basics of Computer and Programming. Session 3 Algorithms آشنايي با الگوريتم. Algorithm الگوريتم ها. هدفهاي كلي. شناخت حل مسئله و ارائه الگوريتم. شناخت اجزاء لازم براي حل مسئله. بررسي صحت الگوريتم. - PowerPoint PPT Presentation

TRANSCRIPT

BY: Ghasem Mohammadi

_دانشگاه كردستاندانشكدة فني و

مهندسيگروه كامپيوتر

مباني كامپيوتر و برنامه سازي Basics of Computer and Programming

Session 3Algorithms

آشنايي با الگوريتم

Algorithm الگوريتم ها

هدفهاي كلي

اجزاء الزم براي حل مسئلهشناخت شناخت حل مسئله و ارائه الگوريتم

بررسي صحت الگوريتم

هدفهاي رفتاري

.الگوريتمي را براي حل مسئله ارائه دهد

.الگوريتم هاي مختلف براي يک مسئله را مقايسه کند

. شرط ها و حلقه ها را در الگوريتم بکار ببرد

:دانشجو پس از مطالعه اين فصل بايد بتواند

انسGان بGا مسGائل مختلفGي روبروسGت ،در زندگGي روزمره مقدمه مشكالت( راه حلGي و حGل از ايGن مسGائل ) و براي هGر كدام

ا غذاز قبيGGل راه رفتGGن، ي گزيند. مسGGائل روشGGي را بر ميريباً هGGر روز آنهGGا را قخوردن، خوابيدن و غيره كGGه بشGGر ت

پيش روي خود دارد.

همGه ايGن مسGائل نياز بGه روشGي براي حGل كردن دارند مثال انجام معيني مراحGل و خاصGي ترتيGب بGا بايGد رفتGن راه شود. تGا مسGئله راه رفتGن براي بشGر حGل شود. اصطالحاً مسئله آGن الگوريتGم را مسGئله حGل يGا كار انجام روش

نامند. مي

تعريف الگوريتمهGر دسGتورالعملی کGه مراحGل انجام کاری را بGا زبانGی دقیGق و با جزئیات کافGی بیان نمایGد بطوریکGه ترتیGب مراحGل و شرط خاتمGه عملیات در آن کامال“ مشخGص شده باشGد را الگوریتGم گویند. بGه عبارتGي ديگGر: الگوريتم

باشGد كGه شرايGط زير اي از دسGتورالعمل هGا، براي حGل مسGئله مي مجموعهرا بايد دارا باشد:

دقيق باشد .جزئيات كامل حل مسئله را داشته باشد پذير باشد.‌پايان

مراحل الگوريتم

كه بيابي�م(. )ي�ا كني�م را مشخ�ص آ�ن مس�ئله الگوريت�م باي�د ي�ك مس�ئله ح�ل براي ناميده مي آ�ن مس�ئله براي الگوريت�م الگوريتم اص�طالحاً طراح�ي شود. در طراح�ي

كنند: معموالً سه مرحله زير را از هم جدا مي

ها‌خواندن دادهانجام محاسباتها‌خروجي

: الگوريتمGي بنويسGيد كGه دو عدد از ورودي دريافت مثال كرده مجموع

دو عدد را محاسبه و چاپ نمايد. انجام محاسبات خروجي ها

وروديها

مجموع دو عدد جمع دو عدد a , b

G شروع 0 1 Gb ,a.را بخوان قرار بده.sum را محاسبه و در Gb , a مجموع 23 Gsum را در خروجي چاپ كن G پايان4

انجام محاسبات ها خروجي وروديها

چاپ مجموع محاسبه مجموع a

چاپ ميانگين محاسبه ميانگين b

مثال: الگوريتمي بنويسيد كه سه عدد از ورودي دريافت كرده مجموع و ميانگين سه عدد را محاسبه و چاپ كند.

G شروع0G سه عدد از ورودي بخوان1 قرار بده.Gsum مجموع سه عدد را محاسبه و در 23 Gsum را بر سه تقسيم كرده،در ave.قرار بده 4 Gave , sum.را در خروجي چاپ كن G پايان.5

c

معموال درك يك الگوريتم با شكل راحتGر از نوشتن آن بصورت متن

با مي را الگوريتGGGGGGم لذا باشد. دهند. (نمايش ميflowchartفلوچارت)

شود. هاي زير تشكيل مي فلوچارت از شكل

Begin End

خواندن يا Read

چاپ کردن write

كنند: هاي شروع و پايان: كه معموال از يك بيضي استفاده مي عالمت

شود: االضالع استفاده مي عالمتهاي ورودي و خروجي: كه معموال از متوازي

عالمتهاي محاسباتي و جايگزيني: براي نمايش دستورات جايگزيني و محاسباتياز مستطيل استفاده مي كنند:

جايگزين يا محاسبات

.شود عالمت شرط: براي نمايش شرط از لوزي استفاده مي

دار هاي جهت هاي مختلف بهم از فلش عالمت اتصال: براي اتصال شكلكنند. استفاده مي

شرط

Begin

cin<<a<<b<<c;

Sum a+b+c

Ave sum/3

cout>>sum>>ave;

End

فلوچارت مجموع سه عدد

نمايد. مثال: فلوچارتي رسم نمائيد كه دو عدد از ورودي دريافت كرده سپس محتويات دو عدد را با هم جابجا

را دو متغيGر كGه در آنها دو عدد خوانده شده، قرار b , aبراي حGل ايGن مسGئله گيريم. سGپس بGا اسGتفاده از يGك متغيGر كمكGي محتويات اين گيرنGد در نظGر مي مي

كنيم : دو عدد را جابجا مي

12 15

temp

temp

a b

12 15

12

a b

temp

15 15

12

a b

temp

15 12

12

a b

temp

Begin

Read(a,b)

temp a

a b

Write(a,b)

End

b temp

:فلوچارت مسئله باال بصورت زير خواهد بود

تمرينG فلوچارتي رسم نمائيد كه طول و عرض مستطيل را از ورودي دريافت1

كرده محيط و مساحت آنرا محاسبه و چاپ كند.

اي را از ورودي دريافت كرده، G فلوچارتي رسم نمائيد كه شعاع دايره2محيط و مساحت آنرا محاسبه و چاپ نمايد.

عدد 3 سه كGه كنيGد رسGم فلوچارتGي GGThird , second, first ،كرده دريافت ورودي از را

در را حاصل نموده، جابجGا را آنهGا محتويات خروجي چاپ كند.

G فلوچارتي رسGم نمائيGد كه دو عدد از ورودي دريافت كرده، سپس 4محتويات دو عدد را بدون استفاده از متغير كمكي جابجا كند.

از 5 را سانتيگراد( برحسGب حرارت )درجGه عددي كGه نمائيGد رسGم فلوچارتGي GGورودي دريافت كرده سپس آنرا به درجه فارنهايت تبديل كند.

دستورالعمل هاي شرطي در حGل بسGياري از مسGائل يGا تقريباً تمام مسGائل نياز بGه استفاده از شروط جزء،

شود. همانطور كGه مGا خودمان در زندگGي روزمره با نيازهاي اسGاسي محسGوب ميها سركار داريم. بطور مثال اگر هوا ابري باشد ممكن است چنين سخن اين شرط

بگوييم:

دارم. در غير اگر هوا باراني باشد سپس چتري برمي دارم اينصورت چتر برنمي .

دهند در حالت كلي شرط را بصورت زير نمايش مي :

If شرط ياthen شروط

yes عمل يا اعمال

NOعمل يا اعمال بعدي

: فلوچارتي رسم نمائيد كه عددي را از ورودي دريافت كرده، فرد يا زوج بودن آن را مثال تشخيص دهد.

Begin

Read(a)

R a mod 2

Write(‘odd’)

End

if R=0 then

No

yesWrite(‘even’)

Begin

Read(a,b)

max a

Write(max)

End

if b>max

No

yes max b

را مثال : فلوچارتي رسم كنيد كه دو عدد از ورودي دريافت كرده بزرگترين عددپيدا كرده در خروجي چاپ نمايد.

Begin

Read(a,b,c)

min a

Write(min)

End

if b<min then

No

yes min b

if c<min then yes min c

No

مثال : فلوچارتي رسم نمائيد كه سه عدد از ورودي دريافت كرده، كوچكترين عدد را يافته

:در خروجي چاپ نمايد

باشد نمونه اجراي فلوچارت باال بصورت زير مي :

خروج a b c Min

11 12 11 17 12111111

12345

تمرين- فلوچارتي رسم كنيد که عددي را از ورودي دريافت كرده، قدر مطلق1

عدد را در خروجي چاپ كند.

- فلوچارتي رسم نمائيد كه عددي از ورودي دريافت كرده مثبت، منفي2 يا صفر بودن عدد را تشخيص داده، در خروجي با پيغام مناسب

چاپ كند.- فلوچارتي رسم نمائيد كه عددي را از ورودي دريافت كرده، بخشپذيري3

را بررسي نمايد.5 و 3 آن بر G فلوچارتي رسم نمائيد كه ضرايب يك معادله درجه دوم را از ورودي4

هاي آن را محاسبه در خروجي چاپ كند. دريافت كرده، ريشه

حلقه ها بGا عملياتGي روبرو مي شويGم ، كه در حGل بسGياري از مسGائل

نياز بGه تكرار دارنGد و عمGل تكرار آنهGا بGه تعداد مشخصي انجام عدد را محاسبه 100گيرد. فرض كنيGد، بخواهيGم ميانگيGن مي

نمي بنظGر منطقGي اينصGورت در كGه كنيGم، متغير 100رسGد مختلف را از ورودي دريافت كنيم سپس آنها را جمع كنيم.

انواع حلقه ها

حلقه هاي با تکرار مشخص

حلقه هاي با تکرار نا مشخص

حلقه هاي با تکرار مشخص

باشد اين حلقه از اجزاء زير ها تعداد تكرار مشخص مي در اين نوع حلقهشود تشكيل مي :

G انديس حلقه1 G مقدار اوليه براي انديس حلقه2

مقدار افزاينده براي انديس حلقه )معموال يك واحد در هر مرحله( -3G مقدار نهايي )تعداد تكرا حلقه(4

G شرطي براي كنترل تعداد تكرار حلقه5

i 1

if i<=n

yes

No

مجموعه دستورات حلقه

i i+1

اتمام كار حلقه

دهند: ها را غالباً با فلوچارت بصورت زير نمايش مي اين حلقه

را از ورودي دريافت كرده، مجموع nمثال : فلوچارتGي رسGم نمائيGد كGه عدد را محاسبه كند.nاعداد از يك تا

i انديس حلقه

n مقدار نهايي

Begin

Read(n)

I 1 sum 0

if I<=n

yes

No Write(sum)

Endsum sum+I

I I+1

حلقه

:نمونه اجراي فلوچارت باال بصورت زير است

خروجي

N I sum

15 5 1 0 2 13 34 6 5 106 15

1234567

كGه كنيGد فلوچارتGي رسGم : بزرگترين nمثال كرده، دريافGت ورودي از عدد عدد را پيدا كرده در خروجي چاپ نمايد.nمقدار از بين

i انديس حلقه

مقدار نهايي n

بزرگترين Maxمقدار

Begin

I 2 max a

if i<=n then

yes

Nowrite(max)

End

i i+1

حلقه Read(a)

Read(n)

if a > max max a

No

yes

، دو عدد صGحيح مثبت را از ورودي n , xمثال : فلوچارتGي رسGم نمائيGد كGه را محاسبه كند.n به توان xدريافت كرده سپس

انديس حلقه i

n مقدار نهايي nعدد به توان

pow

Begin

i 1 pow 1

if i<=n then

yes

Nowrite(pow)

Endpow pow*xحلقه

Read(n,x)

i i+1

هايي كه تعداد تكرار آنها مشخص نيست )در حلقهC ++ به حلقهwhile مشهورند.(

حلقه ايGن مي در مشخص تكرار تعداد ورودي، بGه توجGه بGا دقيقاً هGا و شود. توان تعداد تكرار حلقGه را بدون ورودي معيGن كرد. ايGن حلقGه هGا فقGط شامل نمي

شود. شرطي هستند كه تا زمانيكه برقرار باشد حلقه اجرا مي

If شرط ياشروط

محموعه دستورالعملها

و جاگزينها

yes

No

شوند ها بصورت زير نمايش داده مي در حالت كلي اين نوع حلقه :

مثال: فلوچارتGي رسGم كنيGد كGه عددي را از ورودي دريافGت كرده سپس تعداد .ارقام آن را شمرده در خروجي چاپ نمايد

N عدد خوانده شده

countتعداد ارقام

Begin

count 0

if N>0 then

yes

Nowrite(count)

EndN N div 10

حلقه

Read(N)

count count+1

مثال : فلوچارتGي رسGم نمائيGد كGه عددي از ورودي دريافGت كرده، سGري فيبوناچي قبل از آنرا توليد نمايد.

در حالت كلي جمالت سري بصورت:fk=fk-1+fk-2

Nعدد خوانده شده

f3جمله سوم سري

f2 جمله دوم سري

f1 جمله اول سري

Begin

F1 0f2 1

if f3>N then

yes

No End

حلقه

Read(N)

f1 f2f2 f3

f3 f1+f2

f3 f1+f2

write(f3)

تمرين- فلوچارتي رسم نمائيد كه عددي از ورودي دريافت كرده، كامل بودن1

هاي عليه آنرا بررسي نمايد. )عدد كامل، عددي است كه مجموع مقسوم آن با خودش برابر باشد.(

جمله سريN را از ورودي دريافت كرده، N- فلوچارتي رسم كنيد كه 2 فيبوناچي را توليد نمايد.

عدد 3 دو كه نمائيGد رسGم فلوچارتGي GGN , M از را مقسوم بزرگتريGن خوانده، دو ورودي مشترك عليه

عدد را محاسبه و چاپ كند.

حلقه هاي تودرتو

در هايي كه تا حال بكار برديم، فقط شامل يك حلقه بودند. الگوريتمصورتي كه در بسياري از مسائل ممكن است نياز به استفاده از چند حلقه

ها بايد دقت بيشتري به خرج دهيم، تا در داخل هم باشيم. در اين نوع حلقههاي نوع اول بصورت تودرتو استفاده كنيم مشكلي پيش نيايد. اگر از حلقه

در اينصورت براي هر حلقه شرط نهايي و انديس اوليه جداگانه بايد تعريف كنيم .

هاي تودرتو به ازاي يكبار تكرار حلقه اوليه، حلقه داخلي به اندازه در حلقه

بار تكرار شود وnشود. در كل اگر حلقه اوليه مقدار نهايي خود تكرار مي

بار، در اينصورت كل حلقه : m حلقه داخلي mn

بار تكرار خواهد شد.

توان بصورت زير نشان داد: هاي تودرتو را مي فلوچارت حلقهi 1

if j<=m then No

حلقه

j j+1

yes

.

.

.

if i<=n then

j 1

مجموعه دستورات و جايگزيني ها

مجموعه دستورات و جايگزيني ها

i i+1

A

A

yes

No اتمام كار حلقه هاي تو در تو

I انديس حلقه اول Nورودي

factمحاسبه فاكتوريل

j انديس حلقه داخلي Sumمجموع

را از ورودي دريافGت كرده، مجموع سري Nمثال : فلوچارتGي رسGم نمائيGد كGه زير را محاسبه نمايد:

!!! .... NNS 3

3221

i 2sum 1

A

if j<=i No

fact fact*jyes

if i<=N

fact 1j 2

i i+1

yes

No

Read(N)

End

sum sum+i/fact

Aj j+1

Write(sum)

تمرينات آخر فصل

عدد از ورودي دريافت كرده تعداد اعداد اول N- فلوچارتي رسم نمائيد كه 1و كامل را شمرده در خروجي چاپ نمايد.

را از ورودي خوانده مقدار سري زير را N , X- فلوچارتي رسم نمائيد كه 2محاسبه كند:

!!! .... Nxxx nS 42

2 41

- فلوچارتGي رسGم نمائيGد كGه عددي را از ورودي دريافت كرده مقلوب عدد را 3محاسبه و در خروجي چاپ كند.

GG فلوچارتGي رسGم كنيGد كGه تاريGخ تولGد شخصGي را از ورودي خوانده، سGن شخص 4را با تاريخ روز، محاسبه نموده در خروجي چاپ كند.

كGه 5 نمائيGد رسGم فلوچارتGي -(m>n )N ,M سري كرده دريافGت ورودي از را را توليد كرده، در خروجي چاپ كند.N ,Mفيبوناچي بين

top related