Download presentation
Presentation is loading. Please wait.
Published byAde Hartono Modified over 6 years ago
1
مباني كامپيوتر و برنامه سازي Basics of Computer and Programming
_ دانشگاه آزاد دانشكدة مهندسي مباني كامپيوتر و برنامه سازي Basics of Computer and Programming Session 3 Algorithms آشنايي با الگوريتم BY: Ghasem Mohammadi
2
Algorithm الگوريتم ها هدفهاي كلي شناخت حل مسئله و ارائه الگوريتم
شناخت اجزاء لازم براي حل مسئله بررسي صحت الگوريتم
3
دانشجو پس از مطالعه اين فصل بايد بتواند:
هدفهاي رفتاري دانشجو پس از مطالعه اين فصل بايد بتواند: الگوريتمي را براي حل مسئله ارائه دهد. الگوريتم هاي مختلف براي يک مسئله را مقايسه کند. شرط ها و حلقه ها را در الگوريتم بکار ببرد .
4
مقدمه در زندگي روزمره، انسان با مسائل مختلفي روبروست و براي هر كدام از اين مسائل (حل مشكلات) راه حلي و روشي را بر ميگزيند. مسائلي از قبيل راه رفتن، غذا خوردن، خوابيدن و غيره كه بشر تقريباً هر روز آنها را پيش روي خود دارد. همه اين مسائل نياز به روشي براي حل كردن دارند مثلا راه رفتن بايد با ترتيب خاصي و مراحل معيني انجام شود. تا مسئله راه رفتن براي بشر حل شود. اصطلاحاً روش انجام كار يا حل مسئله را الگوريتم آن مسئله مينامند.
5
تعريف الگوريتم دقيق باشد جزئيات كامل حل مسئله را داشته باشد.
هر دستورالعملی که مراحل انجام کاری را با زبانی دقیق و با جزئیات کافی بیان نماید بطوریکه ترتیب مراحل و شرط خاتمه عملیات در آن کاملا“ مشخص شده باشد را الگوریتم گویند. به عبارتي ديگر: الگوريتم مجموعهاي از دستورالعمل ها، براي حل مسئله ميباشد كه شرايط زير را بايد دارا باشد: دقيق باشد جزئيات كامل حل مسئله را داشته باشد. پايانپذير باشد.
6
مراحل الگوريتم براي حل يك مسئله بايد الگوريتم آن مسئله را مشخص كنيم (يا بيابيم). كه اصطلاحاً طراحي الگوريتم براي آن مسئله ناميده ميشود. در طراحي الگوريتم معمولاً سه مرحله زير را از هم جدا ميكنند: خواندن دادهها انجام محاسبات خروجيها
7
مثال : الگوريتمي بنويسيد كه دو عدد از ورودي دريافت كرده مجموع
مثال : الگوريتمي بنويسيد كه دو عدد از ورودي دريافت كرده مجموع دو عدد را محاسبه و چاپ نمايد. خروجيها انجام محاسبات وروديها مجموع دو عدد جمع دو عدد a , b 0ـ شروع 1ـ b ,a را بخوان. 2ـ مجموع b , a را محاسبه و در sum قرار بده. 3ـ sum را در خروجي چاپ كن 4ـ پايان
8
مثال: الگوريتمي بنويسيد كه سه عدد از ورودي دريافت كرده مجموع و ميانگين
سه عدد را محاسبه و چاپ كند. خروجيها انجام محاسبات وروديها چاپ مجموع محاسبه مجموع a چاپ ميانگين محاسبه ميانگين b c 0ـ شروع 1ـ سه عدد از ورودي بخوان 2ـ مجموع سه عدد را محاسبه و در sum قرار بده. 3ـ sum را بر سه تقسيم كرده،در ave قرار بده. 4ـ ave , sum را در خروجي چاپ كن. 5ـ پايان.
9
معمولا درك يك الگوريتم با شكل راحتر از نوشتن آن بصورت متن
ميباشد. لذا الگوريتم را با فلوچارت( flowchart )نمايش ميدهند. فلوچارت از شكلهاي زير تشكيل ميشود. علامتهاي شروع و پايان: كه معمولا از يك بيضي استفاده ميكنند: Begin End علامتهاي ورودي و خروجي: كه معمولا از متوازيالاضلاع استفاده ميشود: خواندن يا Read چاپ کردن write
10
علامتهاي محاسباتي و جايگزيني: براي نمايش دستورات جايگزيني و محاسباتي از مستطيل استفاده ميكنند:
جايگزين يا محاسبات علامت شرط: براي نمايش شرط از لوزي استفاده ميشود. علامت اتصال: براي اتصال شكلهاي مختلف بهم از فلشهاي جهتدار استفاده ميكنند. شرط
11
فلوچارت مجموع سه عدد Begin Read(a,b,c) Sum a+b+c Ave sum/3
Write(sum,ave) End
12
مثال: فلوچارتي رسم نمائيد كه دو عدد از ورودي دريافت كرده سپس محتويات دو عدد را با هم جابجا نمايد.
براي حل اين مسئله b , a را دو متغير كه در آنها دو عدد خوانده شده، قرار ميگيرند در نظر ميگيريم. سپس با استفاده از يك متغير كمكي محتويات اين دو عدد را جابجا ميكنيم :
13
12 15 temp a b
14
Begin Read(a,b) temp a a b Write(a,b) End b temp
فلوچارت مسئله بالا بصورت زير خواهد بود: Begin Read(a,b) temp a a b Write(a,b) End b temp
15
تمرين 1ـ فلوچارتي رسم نمائيد كه طول و عرض مستطيل را از ورودي دريافت
كرده محيط و مساحت آنرا محاسبه و چاپ كند. 2ـ فلوچارتي رسم نمائيد كه شعاع دايرهاي را از ورودي دريافت كرده، محيط و مساحت آنرا محاسبه و چاپ نمايد. 3ـ فلوچارتي رسم كنيد كه سه عدد Third , second, first را از ورودي دريافت كرده، محتويات آنها را جابجا نموده، حاصل را در خروجي چاپ كند.
16
4ـ فلوچارتي رسم نمائيد كه دو عدد از ورودي دريافت كرده، سپس محتويات دو عدد را بدون استفاده از متغير كمكي جابجا كند. 5ـ فلوچارتي رسم نمائيد كه عددي (درجه حرارت برحسب سانتيگراد) را از ورودي دريافت كرده سپس آنرا به درجه فارنهايت تبديل كند.
17
دستورالعملهاي شرطي در حل بسياري از مسائل يا تقريباً تمام مسائل نياز به استفاده از شروط جزء، نيازهاي اساسي محسوب ميشود. همانطور كه ما خودمان در زندگي روزمره با اين شرطها سركار داريم. بطور مثال اگر هوا ابري باشد ممكن است چنين سخن بگوييم: اگر هوا باراني باشد سپس چتري برميدارم. در غير اينصورت چتر برنميدارم.
18
If شرط يا شروط then در حالت كلي شرط را بصورت زير نمايش ميدهند:
عمل يا اعمال yes NO عمل يا اعمال بعدي
19
Begin Read(a) R a mod 2 yes if R=0 then Write(‘even’) No Write(‘odd’)
مثال : فلوچارتي رسم نمائيد كه عددي را از ورودي دريافت كرده، فرد يا زوج بودن آن را تشخيص دهد. Begin Read(a) R a mod 2 yes if R=0 then Write(‘even’) No Write(‘odd’) End
20
Begin Read(a,b) max a Write(max) End if b>max max b
مثال : فلوچارتي رسم كنيد كه دو عدد از ورودي دريافت كرده بزرگترين عدد را پيدا كرده در خروجي چاپ نمايد. Begin Read(a,b) max a Write(max) End if b>max No yes max b
21
` مثال : فلوچارتي رسم نمائيد كه سه عدد از ورودي
دريافت كرده، كوچكترين عدد را يافته در خروجي چاپ نمايد: Begin Read(a,b,c) min a Write(min) End if b<min then No yes min b if c<min then min c `
22
نمونه اجراي فلوچارت بالا بصورت زير ميباشد:
خروج a b c Min 11 12 1 2 3 4 5
23
تمرين 1- فلوچارتي رسم كنيد که عددي را از ورودي دريافت كرده، قدر مطلق
عدد را در خروجي چاپ كند. 2- فلوچارتي رسم نمائيد كه عددي از ورودي دريافت كرده مثبت، منفي يا صفر بودن عدد را تشخيص داده، در خروجي با پيغام مناسب چاپ كند. 3- فلوچارتي رسم نمائيد كه عددي را از ورودي دريافت كرده، بخشپذيري آن بر 3 و 5 را بررسي نمايد. 4ـ فلوچارتي رسم نمائيد كه ضرايب يك معادله درجه دوم را از ورودي دريافت كرده، ريشههاي آن را محاسبه در خروجي چاپ كند.
24
حلقهها در حل بسياري از مسائل با عملياتي روبرو ميشويم ، كه نياز به تكرار دارند و عمل تكرار آنها به تعداد مشخصي انجام ميگيرد. فرض كنيد، بخواهيم ميانگين 100 عدد را محاسبه كنيم، در اينصورت منطقي بنظر نميرسد كه 100 متغير مختلف را از ورودي دريافت كنيم سپس آنها را جمع كنيم.
25
حلقه هاي با تکرار نا مشخص
انواع حلقه ها حلقه هاي با تکرار مشخص حلقه هاي با تکرار نا مشخص
26
حلقه هاي با تکرار مشخص در اين نوع حلقهها تعداد تكرار مشخص ميباشد اين حلقه از اجزاء زير تشكيل ميشود: 1ـ انديس حلقه 2ـ مقدار اوليه براي انديس حلقه 3- مقدار افزاينده براي انديس حلقه (معمولا يك واحد در هر مرحله) 4ـ مقدار نهايي (تعداد تكرا حلقه) 5ـ شرطي براي كنترل تعداد تكرار حلقه
27
i 1 No if i<=n اتمام كار حلقه yes مجموعه دستورات حلقه i i+1
اين حلقهها را غالباً با فلوچارت بصورت زير نمايش ميدهند: i if i<=n yes No مجموعه دستورات حلقه i i+1 اتمام كار حلقه
28
n مقدار نهايي i انديس حلقه
مثال : فلوچارتي رسم نمائيد كه عدد n را از ورودي دريافت كرده، مجموع اعداد از يك تا n را محاسبه كند. n مقدار نهايي i انديس حلقه
29
Begin Read(n) I sum if I<=n yes No Write(sum) End sum sum+I I I+1 حلقه
30
نمونه اجراي فلوچارت بالا بصورت زير است:
خروجي N I sum 15 1 2 3 4 5 6 7
31
انديس حلقه i مقدار نهايي n بزرگترين مقدارMax
مثال : فلوچارتي رسم كنيد كه n عدد از ورودي دريافت كرده، بزرگترين مقدار از بين n عدد را پيدا كرده در خروجي چاپ نمايد. انديس حلقه i مقدار نهايي n بزرگترين مقدارMax
32
Begin Read(n) I max a No if i<=n then write(max) yes End Read(a) حلقه if a > max yes max a No i i+1
33
انديس حلقه i مقدار نهايي n عدد به توان n pow
مثال : فلوچارتي رسم نمائيد كه n , x ، دو عدد صحيح مثبت را از ورودي دريافت كرده سپس x به توان n را محاسبه كند. انديس حلقه i مقدار نهايي n عدد به توان n pow
34
Begin i pow if i<=n then yes No write(pow) End pow pow*x حلقه Read(n,x) i i+1
35
حلقههايي كه تعداد تكرار آنها مشخص نيست (در C++ به حلقه while مشهورند
در اين حلقهها با توجه به ورودي، تعداد تكرار مشخص ميشود. و دقيقاً نميتوان تعداد تكرار حلقه را بدون ورودي معين كرد. اين حلقه ها فقط شامل شرطي هستند كه تا زمانيكه برقرار باشد حلقه اجرا ميشود.
36
محموعه دستورالعملها و جاگزينها
در حالت كلي اين نوع حلقهها بصورت زير نمايش داده ميشوند: If شرط يا شروط محموعه دستورالعملها و جاگزينها No yes
37
مثال: فلوچارتي رسم كنيد كه عددي را از ورودي دريافت كرده سپس تعداد ارقام آن را شمرده در خروجي چاپ نمايد. عدد خوانده شده N تعداد ارقام count
38
Begin count if N>0 then yes No write(count) End N N div 10 حلقه Read(N) count count+1
39
در حالت كلي جملات سري بصورت: fk=fk-1+fk-2
مثال : فلوچارتي رسم نمائيد كه عددي از ورودي دريافت كرده، سري فيبوناچي قبل از آنرا توليد نمايد. در حالت كلي جملات سري بصورت: fk=fk-1+fk-2 عدد خوانده شده N جمله اول سري f1 جمله دوم سري f2 جمله سوم سري f3
40
Begin F f if f3>N then yes No End حلقه Read(N) f f2 f f3 f f1+f2 f f1+f2 write(f3)
41
تمرين 1- فلوچارتي رسم نمائيد كه عددي از ورودي دريافت كرده، كامل بودن
آنرا بررسي نمايد. (عدد كامل، عددي است كه مجموع مقسومعليههاي آن با خودش برابر باشد.) 2- فلوچارتي رسم كنيد كه N را از ورودي دريافت كرده، N جمله سري فيبوناچي را توليد نمايد. 3ـ فلوچارتي رسم نمائيد كه دو عدد N , M را از ورودي خوانده، بزرگترين مقسومعليه مشترك دو عدد را محاسبه و چاپ كند.
42
حلقههاي تودرتو الگوريتمهايي كه تا حال بكار برديم، فقط شامل يك حلقه بودند. در صورتي كه در بسياري از مسائل ممكن است نياز به استفاده از چند حلقه در داخل هم باشيم. در اين نوع حلقهها بايد دقت بيشتري به خرج دهيم، تا مشكلي پيش نيايد. اگر از حلقههاي نوع اول بصورت تودرتو استفاده كنيم در اينصورت براي هر حلقه شرط نهايي و انديس اوليه جداگانه بايد تعريف كنيم .
43
در حلقههاي تودرتو به ازاي يكبار تكرار حلقه اوليه، حلقه داخلي به اندازه
مقدار نهايي خود تكرار ميشود. در كل اگر حلقه اوليه n بار تكرار شود و حلقه داخلي m بار، در اينصورت كل حلقه : بار تكرار خواهد شد.
44
مجموعه دستورات و جايگزيني ها
فلوچارت حلقههاي تودرتو را ميتوان بصورت زير نشان داد: i if j<=m then No حلقه j j+1 yes . if i<=n then j مجموعه دستورات و جايگزيني ها i i+1 A اتمام كار حلقه هاي تو در تو
45
مثال : فلوچارتي رسم نمائيد كه N را از ورودي دريافت كرده، مجموع سري زير را محاسبه نمايد:
انديس حلقه اول I ورودي N محاسبه فاكتوريل fact انديس حلقه داخلي j مجموع Sum
46
i sum A if j<=i No fact fact*j yes if i<=N fact j i i+1 Read(N) End sum sum+i/fact j j+1 Write(sum)
47
تمرينات آخر فصل 1- فلوچارتي رسم نمائيد كه N عدد از ورودي دريافت كرده تعداد اعداد اول و كامل را شمرده در خروجي چاپ نمايد. 2- فلوچارتي رسم نمائيد كه N , X را از ورودي خوانده مقدار سري زير را محاسبه كند:
48
3- فلوچارتي رسم نمائيد كه عددي را از ورودي دريافت كرده مقلوب عدد را محاسبه و در خروجي چاپ كند.
4ـ فلوچارتي رسم كنيد كه تاريخ تولد شخصي را از ورودي خوانده، سن شخص را با تاريخ روز، محاسبه نموده در خروجي چاپ كند. 5- فلوچارتي رسم نمائيد كه (m>n) N ,M را از ورودي دريافت كرده سري فيبوناچي بين N ,M را توليد كرده، در خروجي چاپ كند.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.