80
ل ص ف1 Algorithm ها م ت یر و گ ل ا ي كل هاي ف هد ت خ ا ن ش له$ ن س م ل ح راي) ب م ء لار ا ز) ج ا م ت ی ور گ ل ه ا$ له و ارائ$ ن س م ل ح ت خ ا ن ش م ت ی ور گ ل ا ت ح ص ي سر ر) ب

فصل 1 Algorithm الگوریتم ها

Embed Size (px)

DESCRIPTION

فصل 1 Algorithm الگوریتم ها. هدفهاي كلي. شناخت حل مسئله و ارائه الگوریتم. شناخت اجزاء لازم برای حل مسئله. بررسی صحت الگوریتم. هدفهاي رفتاري. دانشجو پس از مطالعه اين فصل بايد بتواند:. الگوریتمی را برای حل مسئله ارائه دهد. الگوریتم های مختلف برای یک مسئله را مقایسه کند. - PowerPoint PPT Presentation

Citation preview

Page 1: فصل 1 Algorithm   الگوریتم ها

1فصل Algorithm الگوریتم ها

هدفهاي كلي

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

شناخت حل مسئله و ارائه الگوریتم

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

Page 2: فصل 1 Algorithm   الگوریتم ها

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

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

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

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

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

Page 3: فصل 1 Algorithm   الگوریتم ها

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

روبروست و براي هر كدام مشكالت( راه حلي و حل از اين مسائل )از قبيل راه ی گزيند. مسائل روشي را بر مي

ا خوردن، خوابيدن و غيره كه بشر غذرفتن، ريباS هر روز آنها را پيش روي خود دارد.قت همه اين مسائل نياز به روشي براي حل كردن دارند مثال راه رفتن بايد

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

نامند مسئله مي

Page 4: فصل 1 Algorithm   الگوریتم ها

تعريف الگوريتم

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

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

Page 5: فصل 1 Algorithm   الگوریتم ها

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

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

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

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

Page 6: فصل 1 Algorithm   الگوریتم ها

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

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

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

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

ـ شروع 0 را بخوان.b ,aـ 1 قرار بده.sum را محاسبه و در b , aـ مجموع 2 را در خروجي چاپ كن sumـ 3ـ پايان4

Page 7: فصل 1 Algorithm   الگوریتم ها

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

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

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

c

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

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

Page 8: فصل 1 Algorithm   الگوریتم ها

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

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

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

Begin

End

خواندن یا Read

چاپ کردن

write

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

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

Page 9: فصل 1 Algorithm   الگوریتم ها

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

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

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

هاي عالمت اتصال: براي اتصال شكل•هاي مختلف بهم از فلش

كنند. دار استفاده مي جهت

Page 10: فصل 1 Algorithm   الگوریتم ها

Begin

Read(a,b,c)

Sum‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌a+b+c

Ave‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌sum/3

Write(sum,ave)

End

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

Page 11: فصل 1 Algorithm   الگوریتم ها

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

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

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

Page 12: فصل 1 Algorithm   الگوریتم ها

12 15

temp

temp

a b

12 15

12

a b

temp

15 15

12

a b

temp

15 12

12

a b

temp

Page 13: فصل 1 Algorithm   الگوریتم ها

Begin

Read(a,b)

temp a

a b

Write(a,b)

End

b temp

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

Page 14: فصل 1 Algorithm   الگوریتم ها

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

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

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

را از وروديThird , second, firstـ فلوچارتي رسم كنيد كه سه عدد 3 دريافت كرده، محتويات آنها را جابجا نموده، حاصل را در خروجي

چاپ كند.

Page 15: فصل 1 Algorithm   الگوریتم ها

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

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

Page 16: فصل 1 Algorithm   الگوریتم ها

هاي شرطي‌دستورالعمل

در حل بسياري از مسائل يا تقريباS تمام مسائل نياز به استفاده از شروطشود. همانطور كه ما خودمان در جزء، نيازهاي اساسي محسوب مي

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

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

Page 17: فصل 1 Algorithm   الگوریتم ها

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

If شرط یاthen شروط

yes عمل يا اعمال

NO

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

Page 18: فصل 1 Algorithm   الگوریتم ها

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

Read(a)

R‌‌‌‌‌‌‌‌‌‌‌‌a‌mod‌2

Write(‘odd’)

End

if‌R=0‌then

No

yesWrite(‘even’)

Page 19: فصل 1 Algorithm   الگوریتم ها

Begin

Read(a,b)

max a

Write(max)

End

if b>max

No

yes max b

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

Page 20: فصل 1 Algorithm   الگوریتم ها

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

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

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

Page 21: فصل 1 Algorithm   الگوریتم ها

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

a‌‌‌‌‌‌‌b‌‌‌‌‌‌‌c‌‌‌‌‌‌‌‌Min خروج

12345

12‌‌‌‌‌11‌‌‌‌‌17‌‌‌‌‌‌‌‌‌‌‌‌‌‌12111111

11

Page 22: فصل 1 Algorithm   الگوریتم ها

تمرين

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

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

چاپ كند.

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

ـ فلوچارتي رسم نمائيد كه ضرايب يك معادله درجه دوم را از ورودي4هاي آن را محاسبه در خروجي چاپ كند. دريافت كرده، ريشه

Page 23: فصل 1 Algorithm   الگوریتم ها

ها‌حلقه

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

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

عدد را محاسبه كنيم، در اينصورت منطقي بنظر100 بخواهيم ميانگين

متغير مختلف را از ورودي دريافت كنيم سپس آنها را100رسد كه نمي

جمع كنيم.

Page 24: فصل 1 Algorithm   الگوریتم ها

انواع حلقه ها•

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

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

Page 25: فصل 1 Algorithm   الگوریتم ها

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

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

ـ انديس حلقه 1ـ مقدار اوليه براي انديس حلقه 2- مقدار افزاينده براي انديس حلقه )معموال يك واحد در هر مرحله(3ـ مقدار نهايي )تعداد تكرا حلقه(4ـ شرطي براي كنترل تعداد تكرار حلقه5

Page 26: فصل 1 Algorithm   الگوریتم ها

i 1

if i<=n

yes

No

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

i i+1

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

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

Page 27: فصل 1 Algorithm   الگوریتم ها

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

i انديس حلقه

n مقدار نهايي

Page 28: فصل 1 Algorithm   الگوریتم ها

Begin

Read(n)

I 1

sum 0

if I<=n

yes

NoWrite(sum)

Endsum sum+I

I I+1

حلقه

Page 29: فصل 1 Algorithm   الگوریتم ها

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

N‌‌‌‌‌‌‌‌I‌‌‌‌‌‌‌‌‌‌‌‌‌‌sum‌‌‌‌‌ خروجي

1234567

5‌‌‌‌‌‌‌1‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌0‌‌‌‌‌‌‌‌‌2‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌13‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌34‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌6‌5‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌106‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌15

15

Page 30: فصل 1 Algorithm   الگوریتم ها

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

انديس حلقهi

مقدار نهايي n

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

Page 31: فصل 1 Algorithm   الگوریتم ها

Begin

I 2

max a

if i<=n then

yes

No

write(max)

End

i i+1

حلقه Read(a)

Read(n,a)

if a > max max a

No

yes

Page 32: فصل 1 Algorithm   الگوریتم ها

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

انديس حلقه•i

n مقدار نهايي•

nعدد به توان •pow

Page 33: فصل 1 Algorithm   الگوریتم ها

Begin

i‌‌‌‌‌‌‌‌‌‌‌‌1‌

pow‌‌‌‌‌‌‌‌‌‌‌‌1

‌‌‌‌‌‌

if‌‌i<=n‌then

yes

Nowrite(pow)

Endpow‌‌‌‌‌‌‌‌‌‌‌pow*xحلقه

Read(n,x)

i‌‌‌‌‌‌‌‌‌‌‌i+1

Page 34: فصل 1 Algorithm   الگوریتم ها

هايي كه تعداد تكرار آنها مشخص حلقهنيست

مشهورند.(while )در پاسكال به حلقه

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

توان تعداد تكرار حلقه را بدون ورودي معين كرد. اين حلقه ها فقط نمي

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

Page 35: فصل 1 Algorithm   الگوریتم ها

If شرط ياشروط

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

و جاگزينها

yes

No

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

Page 36: فصل 1 Algorithm   الگوریتم ها

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

را شمرده در خروجي چاپ نمايد.

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

countتعداد ارقام •

Page 37: فصل 1 Algorithm   الگوریتم ها

Begin

count 0

if N>0 then

yes

Nowrite(count)

EndN N div 10

حلقه

Read(N)

count count+1

Page 38: فصل 1 Algorithm   الگوریتم ها

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

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

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

f3جمله سوم سري

f2 جمله دوم سري

f1 جمله اول سري

Page 39: فصل 1 Algorithm   الگوریتم ها

Begin

F1 0

f2 1

if f3>N then

no

yes End

حلقه

Read(N)

f1 f2

f2 f3

f3 f1+f2

f3 f1+f2

write(f3)

Page 40: فصل 1 Algorithm   الگوریتم ها

تمرين

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

آن با خودش برابر باشد.(

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

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

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

Page 41: فصل 1 Algorithm   الگوریتم ها

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

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

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

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

Page 42: فصل 1 Algorithm   الگوریتم ها

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

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

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

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

Page 43: فصل 1 Algorithm   الگوریتم ها

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

if j<=m then No

حلقه

j j+1

yes

.

.

.

if i<=n then

j 1

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

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

i i+1

A

A

yes

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

Page 44: فصل 1 Algorithm   الگوریتم ها

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

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

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

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

!!! .... NNS 3

3221

Page 45: فصل 1 Algorithm   الگوریتم ها

i 2

sum 1

A

if j<=i No

fact fact*j

yes

if i<=N

fact 1

j 2

i i+1

yes

No

Read(N)

End

sum sum+i/fact

Aj j+1

Write(sum)

Page 46: فصل 1 Algorithm   الگوریتم ها

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

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

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

!!! .... Nxxx n

S 42

2 41

Page 47: فصل 1 Algorithm   الگوریتم ها

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

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

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

Page 48: فصل 1 Algorithm   الگوریتم ها

2فصل

كاربرد آرايه ها در الگوريتم ها

هدفهاي كلي

الگوریتم های الزم برای شناخت جستجو و مرتب سازی

آرایه ها و مفهوم آنشناخت

ام يپدانشگاه نور

دانشكده يفناور

اطالعات)گروه يمهندس

وتر(يکامپ

مقایسه انواع روش های جستجو با هم

Page 49: فصل 1 Algorithm   الگوریتم ها

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

. از آرایه ها در حل مسئله استفاده کند

. با استفاده از آرایه ها لیستی را مرتب نماید

. در صورت لزوم در لیستی جستجو انجام دهد

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

Page 50: فصل 1 Algorithm   الگوریتم ها

مقدمه

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

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

دهيم. آن قرار مي

Page 51: فصل 1 Algorithm   الگوریتم ها

تعريف آرايه

هاي پشت سر هم از حافظه، كه همنوع بوده و توسط يك اسم معرفي خانهشوند، آرايه نام دارد. مي

نحوه دسترسي به هر يك از اعضاء آرايه، از طريق انديس آرايه امكانپذيرهاي آن است . براي تعريف آرايه ابتدا طول آرايه كه در حقيقت تعداد خانه

ها بايد معين شوند. كنيم. سپس نوع خانه كند، معين مي را مشخص مي

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

Name[ 1 .. Length ]

طول آرايه اسم آرايه

Page 52: فصل 1 Algorithm   الگوریتم ها

كنيم. فلوچارت ها استفاده مي براي خواندن يك آرايه از ورودي از حلقهباشد: خواندن آرايه از ورودي بصورت زير مي

a[1..100]

if‌‌i<=100‌ No

yes

‌Read(a[i])

i‌‌‌‌‌‌‌‌‌‌‌i+1

i‌‌‌‌‌‌‌‌‌‌‌1

Page 53: فصل 1 Algorithm   الگوریتم ها

ام آرايه در حالت iبا توجه به فلوچارت باال براي دسترسي به عنصر : كلي بصورت

Nam [ index ]

انديس آرايه اسم آرايه

كنند. عمل مي

عنصري را از ورودي 100مثال: فلوچارتي رسم كنيد كه يك آرايه حداكثر

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

Page 54: فصل 1 Algorithm   الگوریتم ها

a[1..100]

i 1

if i<=N No

yes

Read(a[i])

i i+1

Begin

Read(N)

i 1

if i<=N

yes

write(a[i])

i i+1

No End

Page 55: فصل 1 Algorithm   الگوریتم ها

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

a[1..20]

i 1

if N>0 No

yes

N N div 2

Read(N)

i i-1

if i >0

yes

write(a[i])

i i-1

No End a[i] N mod 2

i i+1

Page 56: فصل 1 Algorithm   الگوریتم ها

a[1..100]

i‌‌‌‌‌‌‌‌‌‌1

k‌‌‌‌‌‌‌‌‌‌‌‌3

a[1]‌‌‌‌‌‌‌‌‌‌‌2

a[2]‌‌‌‌‌‌‌‌‌‌‌‌1

‌Read(N)

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

Page 57: فصل 1 Algorithm   الگوریتم ها

No

if j<=i div 2

yes

j j+1

if i<=N

j 2

k 0

i 1 if i<k End

write(a[i])

i i+1

if I mod j = 0

yes

Noif k=0

a[k] i

k k+1yes

i i+1

No

A

yesk 1

No

yes

No

A

Page 58: فصل 1 Algorithm   الگوریتم ها

جستجو و مرتب سازي (‌search‌and‌sort‌)

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

سازي اينست كه يك ليست را از يك ليست جستجو كنيم و منظور از مرتبها را توليد كنيم. مرتب از داده

هاي مختلفي وجود دارد در زير سازي الگوريتم براي جستجو و مرتبكنيم. سازي را بررسي مي های اوليه، براي جستجو و مرتب الگوريتم

Page 59: فصل 1 Algorithm   الگوریتم ها

الگوریتم های جستجو (search)

روند: دو الگوريتم زير غالباS براي جستجو بكار مي

‌linearجستجوي خطي •search

‌binaryجستجوي دودوئی •search

Page 60: فصل 1 Algorithm   الگوریتم ها

در جستجوي خطي عبارت مورد جستجو را به ترتيب با اولين، دومين

كنيم اگر عنصر مورد جستجو پيدا شد و … عنصرآرايه مقايسه مي

دهيم. اندیس آن را نمايش مي

linear‌searchجستجوي خطي •

Page 61: فصل 1 Algorithm   الگوریتم ها

فلوچارت جستجوي خطي بصورت زير است:

list[1..100]

i‌‌‌‌‌‌‌‌‌‌1

index‌‌‌‌‌‌‌‌‌‌‌0

falg‌‌‌‌‌‌‌‌‌‌‌0

‌Read(x)i‌‌‌‌‌‌‌‌‌‌‌‌1

if (i<=N) and (flag=0)

No

if list[i]=x

i‌‌‌‌‌‌‌‌‌‌‌i+1

index i

flag 1

write(index)

Endyes

yes

Page 62: فصل 1 Algorithm   الگوریتم ها

binary‌searchجستجوي دودوئی •

باشد. لذا براي در جستجوي دودوئی ، ليست مورد جستجو، مرتب ميشود: جستجو اعمال زير انجام مي

با عنصر وسط آرايه كه انديس آن برابر X- عنصر 1

middle‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌(low+high)/2‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌

شود.‌مقايسه مي

Page 63: فصل 1 Algorithm   الگوریتم ها

از عنصر وسط كوچكتر باشد، عنصر مورد نظر احتماالS درxـ اگر 2 قسمت باالی ليست قرار دارد. لذا آرايه با انديس، جديد در نظر گرفته

شود.‌شود و قسمت پايين ليست از فضاي جستجو حذف مي‌مي

از عنصر وسط آرايه بزرگتر باشد قسمت باالي ليست حذف xـ اگر 3شود و فضاي جستجو، قسمت پايين آرايه خواهد بود.‌ مي

پذيرد.‌ برابر عنصر وسط باشد عمل جستجو خاتمه مي x- اگر 4

Page 64: فصل 1 Algorithm   الگوریتم ها

باشد. براي ‌سازي بحث بعدي اين فصل مي‌مرتبها نيز‌مرتب كردن داده

هاي مختلفي وجود دارد، كه هر كدام ‌ الگوريتممزايا و معايب خاص خود

را دارد. بحث مفصل در اين مورد را به كنيم.‌هاي بعد واگذار مي‌فصل

مرتب سازي(sort)

Page 65: فصل 1 Algorithm   الگوریتم ها

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

قبل از خود را توليد و در يك آرايه قرار دهد.

عنصري از ورودي100فلوچارتي رسم نمائيد كه يك آرايه حداكثر • دريافت كرده، عناصري از آن كه اول هستند را با صفر كردن حذف نمايد.

اي‌ رقمي را توسط آرايه20فلوچارتي رسم نمائيد كه يك عدد حداكثر • از ورودي دريافت نمايد. سپس يك عدد تک رقمي را از ورودي خوانده

رقمي ضرب نموده، حاصل را در خروجي چاپ نمايد.20 در عدد

Page 66: فصل 1 Algorithm   الگوریتم ها

3فصل

كامپيوترباآشنايي

هدفهاي كلي

افزارهاي الزم براي شناخت سختكامپيوترهاي شخصي

شناخت كامپيوترهاي نسل قديم و امروزي

ام يپدانشگاه نور

دانشكده يفناور

اطالعات)گروه يمهندس

وتر(يکامپ

افزارها و انواع آن بررسي نرم

Page 67: فصل 1 Algorithm   الگوریتم ها

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

.كامپيوترهاي نسل جديد را با كامپيوترهاي نسل قديم مقايسه كند

افزارهاي ًالزم براي كامپيوترهاي شخصي را بشناسد. سخت

.انواع حافظه، مزايا و معايب آنها را شناخته و با هم مقايسه نمايد‌

.سيستم عامل و انواع آن را مقايسه نمايد‌

نويسي را تعريف كند. افزار و زبانهاي برنامه نرم

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

Page 68: فصل 1 Algorithm   الگوریتم ها

كامپيوترهاي قديمي

همه (Super Computer)اولين كامپيوتر بزرگ منظوره ديجيتال

1946 در سال ENIAC الكترونيك، تحت عنوان ميالدي در دانشگاه پنسيلوانيا ساخته شد. اين كامپيوتر با سرمايه ارتش آمريكا طراحي شد.

30×50 تن و ابعاد آن 30وزن اين كامپيوتر فوت بود. اين كامپيوتر براي محاسبه جدول

پرتابه ها، پيش گويي وضع آب و هوا و محاسبات انرژي اتمي بكار مي رفت.

Page 69: فصل 1 Algorithm   الگوریتم ها

در كامپيوترهاي اوليه از المپهاي خالء بعنوان عنصر الكترونيكي پايه استفاده مي كردند. در اين

المپ خالء استفاده شده بود و 19000ماشين ها براي انرژي مصرفي المپ ها و همچنين ‌kw دستگاههاي تهويه و خنك كننده ماشين حدودانرژي الكتريكي مصرف مي شد. اين ماشين ها ‌130داراي حجم زيادي بودند و سطحي را معادل

مترمربع اشغال مي كردند. اين كامپيوترها 9015‌.به كامپيوترهاي نسل اول معروف شدند

Page 70: فصل 1 Algorithm   الگوریتم ها

كامپيوترهاي امروزي با بكارگيري ريزپردازنده به كامپيوترهاي نسل چهارم

معروفند. البته نسل هاي جديد ديگر .كامپيوترها نيز به بازار ارائه مي شود

در كامپيوترهاي امروزي سرعت پردازش بسيار باال، حجم اجزاء سخت افزاري

بسيار كوچك، حجم حافظه باال و غيره آنها را از نسل هاي ديگر متمايز

.مي سازد

يامروزكامپيوترهاي

Page 71: فصل 1 Algorithm   الگوریتم ها

وتر عبارتند ازيل دهنده کامپياجزاء تشک :

سخت افزار

نرم افزار

Page 72: فصل 1 Algorithm   الگوریتم ها

سخت افزار

Input Out‌putprocess

پردازش

ورودي

خروجي

Page 73: فصل 1 Algorithm   الگوریتم ها

( از قطعات زير تشكيل كامپيوترهاي امروزي معموًال:مي شوند

دستگاههاي ورودي • حافظه هاي جانبي• حافظه هاي اصلي• واحد پردازشگر مركزي• دستگاههاي خروجي •

Page 74: فصل 1 Algorithm   الگوریتم ها

نرم افزار يكي از بخش هاي اساسي كامپيوتر به شمار مي آيد، كه در

واقع سخت افزار را بكار مي گيرد. بعبارت ديگر رابط بين كاربر و

سخت افزار را نرم افزار مي نامند. نرم افزار در حقيقت روح و جان يك

كامپيوتر است، كه به سخت افزار هويت مي بخشد.

نرم افزار

Page 75: فصل 1 Algorithm   الگوریتم ها

(OS:‌Operating‌System)سيستم عامل •مشهورترين نوع نرم افزارهاي سيستمي مي باشد.

كه مديريت منابع سيستمي را بر عهده دارد. سيستم عامل، همچنين ارتباط بين كاربر و اجزاء

سخت افزاري و نرم افزاري ديگر را برقرار مي كند.

سيستم نرم افزار عامل

Page 76: فصل 1 Algorithm   الگوریتم ها
Page 77: فصل 1 Algorithm   الگوریتم ها

زبانهاي برنامه نويسي

• توسط زبانهاي برنامه نويسي نوشته مي شوند. هانرم افزارزبانهاي برنامه نويسي، يك سيستم ارتباطي هستند كه توسط آنها مي توان دستورات ًالزم را به ماشين انتقال .داد

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

Page 78: فصل 1 Algorithm   الگوریتم ها

زبانهاي سطح باال•زبانهاي سطح پايين•زبانهاي سطح مياني•

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

Page 79: فصل 1 Algorithm   الگوریتم ها

Source‌program

Object‌program

Compiler

كامپايلر برنامه نوشته در يك زبان سطح باًال را به برنامه ‌.مقصد تبديل مي كند

Page 80: فصل 1 Algorithm   الگوریتم ها

Pascal زبان

در اين كتاب زبان پاسكال(Pascal)براي راآموزش و نوشتن برنامه ها انتخاب كرديم. اين

زبان كه به افتخار بلز پاسكال دانشمند فرانسوي قرن هفدهم ميالدي، پاسكال

و 1960نامگذاري شده است، در اواخر سال توسط پروفسور نيكالس ويژت 1970اوايل

ددر انستيتو فني فدرال سوئيس مطرح گردي