0% found this document useful (0 votes)
3 views

Chapter 3 Flowchart&algorithm

Uploaded by

aradmard513
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

Chapter 3 Flowchart&algorithm

Uploaded by

aradmard513
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 35

‫کارنما و الگوریتم‬ ‫‪1‬‬

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

‫راضیه قیاسی‬
‫‪[email protected]‬‬

‫دانشگاه پردیس فارابی دانشگاه تهران‬


‫نیمسال اول ‪1400-1399‬‬

‫‪2‬‬
‫فصل سوم‪ :‬کارنما و الگوریتم‬

‫کارنما و الگوریتم‬ ‫‪3‬‬


‫مقدمه‬
‫• تولید نرمافزار شامل ‪ 6‬گام است‪:‬‬

‫فرایند تولید نرمافزار‬

‫تعمیم و نگهداری‬ ‫مستند سازی‬ ‫کدنویسی روش‬ ‫طراحی روش حل‬


‫آزمایش برنامه‬ ‫تعریف مسئله‬
‫برنامه‬ ‫برنامه‬ ‫حل‬ ‫مسئله‬

‫کارنما و الگوریتم‬ ‫‪4‬‬


‫تعریف مسئله‬
‫• اولین وظیفه برنامهنویس شناخت صحیح مسئله است‪.‬‬

‫• در این مرحله‪ ،‬برنامهنویس باید هدف مسئله‪ ،‬خروجی مطلوب و ورودی مورد نیاز را مشخص نماید‪ .‬همچنین پردازش الزم را‬
‫تعیین کند‪.‬‬

‫• به عنوان مثال‪ :‬می خواهیم معدل دانش آموز را بدست آورده نمایش دهیم؟‬
‫❑ورودی‪ :‬نمرات دانش آموز‬
‫❑خروجی ‪ :‬معدل‬
‫❑پردازش‪ :‬جمع نمرات و تقسیم مجموع بر تعداد نمرات‬

‫کارنما و الگوریتم‬ ‫‪5‬‬


‫طراحی روش حل مسئله‬
‫• پس از تعریف مسئله‪ ،‬الزم است به بیان دقیق چگونگی حل مسئله یا طراحی یک روش برای حل مسئله بپردازیم‪.‬‬

‫• در این مرحله‪ ،‬برنامهنویس باید یک فرایند قدم به قدم برای رسیدن از ورودی مورد نیاز به خروجی مطلوب طراحی نماید‪.‬‬

‫• مجموعه مراحل و قدمهای مورد نیاز در فرایند رسیدن از دادههای موجود به خروجی مطلوب را الگوریتم نامند‪.‬‬

‫کارنما و الگوریتم‬ ‫‪6‬‬


‫تاریخچه الگوریتم‬
‫• الگوریتم در لغت به معنای روش حل مسائل میباشد و از نام دانشمند و ریاضیدان ایرانی‪ ،‬ابو جعفر بن محمد خوارزمی گرفته‬
‫شده است‪.‬‬
‫رسالهای که خوارمی در قرن ‪ 9‬با عنوان "سیستم اعداد هندی‪-‬عربی"نوشته بود‪ ،‬در قرن ‪ 12‬به التین با نام " ‪Algoritmi de‬‬ ‫•‬
‫"‪ numero Indorum‬ترجمه شد‪ .‬که مترجم نام خوارزمی را جلوی نام اصلی کتاب آورده بود‪.‬‬
‫در قرن ‪ 13‬میالدی واژه الگوریسموس (‪ )algorismus‬به معنای «سیستم شمارش عربی (دهدهی)» (یعنی اعداد ‪ 1‬تا ‪ 9‬به‬ ‫•‬
‫عالوه صفر‪ ،‬و نیز مفهوم اعشار) بود؛ که هنوز هم یکی از معانی واژه الگوریسم (‪ )algorism‬است‪.‬‬
‫معنای دیگر الگوریسم «حساب کردن با کمک اعداد عربی» است؛‬ ‫•‬
‫در قرن ‪ 19‬این کلمه در فرانسوی به ‪ algorithme‬تغییر شکل پیدا کرد‪ ،‬البته معنایش ثابت ماند‪.‬‬ ‫•‬
‫طولی نکشید که این کلمه به شکل ‪ algorithm‬وارد زبان انگلیسی شد‪.‬‬ ‫•‬
‫اواخر قرن ‪ 19‬میالدی بود که معنای عامتر امروزیاش را یافت‪« .‬هر مجموعه قواعدی که برای انجام یک رویه محاسباتی یا‬ ‫•‬
‫روال رایانهای به کار رود» الگوریتم گفته میشود‪.‬‬

‫کارنما و الگوریتم‬ ‫‪7‬‬


‫الگوریتم‬
‫• تعریف رسمی‪ :‬الگوریتم‪ ،‬مجموعهای از دستورالعملها برای حل مسئله است که باید دارای شرایط زیر باشد‪:‬‬
‫✓ ورودی داشته باشد‪.‬‬
‫✓ خروجی داشته باشد‪.‬‬
‫✓ ترتیب داشته باشد‪.‬‬
‫✓ دقیق باشد‪.‬‬
‫✓ صحیح باشد‪.‬‬
‫✓ پایانپذیر باشد‪.‬‬

‫• برای تهیه الگوریتم‪ ،‬روشهای مختلفی وجود دارد‪ .‬از جمله‪:‬‬


‫• شبه کد (‪)Pseudo code‬‬
‫• روندنما (‪)Flowchart‬‬

‫کارنما و الگوریتم‬ ‫‪8‬‬


‫شبه کد‬
‫شبه کد روشی برای بیان الگوریتم با استفاده از کلمات‪ ،‬عبارات و عالئم ریاضی که از قواعد کلی یک زبان برنامهنویسی و‬
‫زبانهای طبیعی انسان پیروی میکند‪.‬‬
‫قراردادها در شبه کد‪:‬‬
‫در ابتدای هر الگوریتم کلمه شروع و در انتهای آن کلمه پایان را قرار دهید‪.‬‬ ‫•‬
‫شمارهگذاری دستورالعملها‬ ‫•‬
‫برای دریافت اطالعات از کاربر از دستور بخوان استفاده گردد‪.‬‬ ‫•‬
‫برای نوشتن اطالعات در خروجی از دستور چاپ کن استفاده گردد‪.‬‬ ‫•‬
‫برای عملیات ریاضی و کار بر روی دادهها از مکانی در حافظه استفاده میکنیم و به هریک نامی را منتسب میکنیم‪ .‬به هر یک از‬ ‫•‬
‫این نامها یک متغیر گفته میشود‪.‬‬
‫استفاده می شود‪.‬‬ ‫برای انتساب یک مقدار به یک متغیر از عالمت‬ ‫•‬

‫کارنما و الگوریتم‬ ‫‪10‬‬


‫مثال‬
‫• الگوریتمی بنویسید که سه عدد را از کاربر دریافت کند و میانگین آن ها را محاسبه و چاپ نماید‪.‬‬

‫‪ -0‬شروع‬
‫‪ b ، a -1‬و ‪ c‬را بخوان‬
‫‪s ← a+b+c -2‬‬
‫‪average ← s/3 -3‬‬
‫‪ average -4‬را چاپ کن‬
‫‪ -5‬پایان‬

‫کارنما و الگوریتم‬ ‫‪11‬‬


‫تمرین‬
‫• الگوریتمی بنویسید که دو عدد را جابهجا کند‪.‬‬

‫‪ -0‬شروع‬
‫‪ a -1‬و ‪ b‬را بخوان‬
‫‪tempa -2‬‬
‫‪a b -3‬‬
‫‪btemp -4‬‬
‫‪ a -5‬و ‪ b‬را چاپ کن‬
‫‪ -6‬پایان‬

‫کارنما و الگوریتم‬ ‫‪12‬‬


‫کارنما (‪)Flowchart‬‬
‫• درک الگوریتمها به صورت شبهکد معموال پیچیده است‪ .‬به همین منظور کارنما معرفی شد‪.‬‬
‫• نمایش الگوریتمها به صورت شماتیک و گرافیکی را کارنما یا فلوچارت گویند‪.‬‬

‫کارنما و الگوریتم‬ ‫‪13‬‬


‫نمادها در کارنما‬
‫توضیح‬ ‫نماد‬
‫خط جریان‬

‫شروع و پایان‬

‫پردازش‬

‫ورودی و خروجی‬

‫شرط‬

‫اتصالدهنده در همان صفحه‬

‫اتصالدهنده در صفحه دیگر‬

‫کارنما و الگوریتم‬ ‫‪14‬‬


‫نکات روندنما‬
‫• تنها یک نقطه شروع وجود دارد‪.‬‬
‫• میتوان چند نقطه پایان داشت‪.‬‬
‫• از هر مرحله میتوان به هر یک از مراحل قبلی غیر از نقطه شروع رفت اما از نقطه پایان نمیتوان پیکانی خارج کرد‪.‬‬
‫• آزمایش الگوریتم یا اثبات درستی الگوریتم‪ :‬از نقطه شروع مرحله به مرحله پیش روید تا به یک نقطه پایان برسید در این‬
‫مرحله باید نتایج مورد نظر را بدست آورده باشید در غیر این صورت الگوریتم را بازبینی کنید‪.‬‬

‫کارنما و الگوریتم‬ ‫‪15‬‬


‫مثال‬
‫• فلوچارتی رسم کنید که سه عدد را از کاربر دریافت کند و میانگین آن ها را محاسبه و چاپ نماید‪.‬‬

‫شروع‬

‫‪ a,b,c‬را‬
‫دریافت کن‬

‫‪s ← a+b+c‬‬
‫‪average=s/3‬‬

‫‪ average‬را‬
‫چاپ کن‪.‬‬

‫پایان‬
‫کارنما و الگوریتم‬ ‫‪16‬‬
‫مثال‬
‫• فلوچارتی رسم کنید که دو عدد را جابهجا کند‪.‬‬
‫شروع‬

‫‪ a,b‬را‬ ‫‪a‬‬ ‫‪b‬‬ ‫‪temp‬‬


‫دریافت کن‬
‫‪2‬‬ ‫‪10‬‬ ‫‪2‬‬
‫‪temp ← a‬‬ ‫‪10‬‬ ‫‪2‬‬
‫‪ab‬‬
‫‪btemp‬‬

‫‪ a,b‬را چاپ‬
‫کن‪.‬‬
‫‪a=10 b=2‬‬

‫پایان‬

‫کارنما و الگوریتم‬ ‫‪17‬‬


‫تمرین‬
‫• فلوچارتی رسم کنید که عدد به درجه سانتیگراد دریافت کرده و معادل فارنهایت آن را بدست آورد‪.‬‬

‫شروع‬

‫‪c‬‬ ‫‪f‬‬
‫‪ c‬را‬
‫دریافت کن‬ ‫‪10‬‬ ‫‪50‬‬

‫‪fc*9/5+32‬‬

‫‪ f‬را چاپ‬
‫کن‪.‬‬

‫‪50‬‬
‫پایان‬

‫کارنما و الگوریتم‬ ‫‪18‬‬


‫دستورات شرطی‬
‫• در حل بسیاری از مسائل نیاز به استفاده از شرط‪ ،‬جز نیازهای اساسی است‪.‬‬
‫• غالبا دستورات شرطی دارای دو قسمت است‪:‬‬
‫• بخشی که شرط برقرار باشد و عملیاتهایی که در این صورت انجام میشود‪.‬‬
‫• بخشی که شرط برقرار نباشد و عملیاتهایی که در این صورت انجام میشود‪.‬‬

‫غلط‬
‫شرط‬ ‫عملیاتهایی که باید انجام شود‪.‬‬

‫درست‬

‫عملیاتهایی که باید انجام شود‪.‬‬

‫کارنما و الگوریتم‬ ‫‪19‬‬


‫مثال‬
‫• فلوچارتی رسم کنید که مثبت و منفی بودن عدد را بررسی نماید‪.‬‬
‫شروع‬

‫‪ a‬را‬
‫‪a‬‬
‫دریافت کن‬
‫‪38‬‬
‫خیر‬ ‫‪ a‬منفی‬
‫‪a>=0‬‬
‫است‪.‬‬
‫بله‬
‫‪ a‬مثبت‬
‫است‪.‬‬
‫‪ 38‬مثبت است‬

‫پایان‬

‫کارنما و الگوریتم‬ ‫‪20‬‬


‫تمرین‬
‫• فلوچارتی رسم کنید که بزرگترین بین سه عدد را محاسبه نماید‪.‬‬
‫شروع‬

‫‪ a,b,c‬را دریافت کن‬

‫‪maxa‬‬

‫بله‬ ‫بله‬ ‫‪ Max‬را‬


‫‪b>max‬‬ ‫‪maxb‬‬ ‫‪c>max‬‬ ‫‪maxc‬‬
‫چاپ کن‪.‬‬
‫خیر‬

‫پایان‬

‫کارنما و الگوریتم‬ ‫‪21‬‬


‫تمرین‬

‫‪a‬‬ ‫‪b‬‬ ‫‪c‬‬ ‫‪max‬‬

‫‪2‬‬ ‫‪10‬‬ ‫‪8‬‬ ‫‪2‬‬

‫‪10‬‬

‫‪max=10‬‬

‫کارنما و الگوریتم‬ ‫‪22‬‬


‫تمرین‬
‫شروع‬ ‫• فلوچارتی رسم کنید که ضرایب معادله درجه ‪ 2‬را دریافت و ریشههای آن را محاسبه نماید‪.‬‬

‫‪ a,b,c‬را دریافت کن‬

‫‪db*b-4*a*c‬‬

‫خیر‬ ‫معادله ریشه‬


‫‪d==0‬‬ ‫‪d>0‬‬ ‫ندارد‪.‬‬
‫خیر‬
‫بله‬ ‫بله‬ ‫پایان‬

‫)‪x1,x2-b/(2*a‬‬ ‫)‪x1(-b+sqrt(d))/(2*a‬‬ ‫‪ x1‬و ‪ x2‬را‬


‫)‪x2(-b-sqrt(d))/(2*a‬‬ ‫چاپ کن‪.‬‬

‫کارنما و الگوریتم‬ ‫‪23‬‬


‫حلقهها‬
‫• در بعضی مسائل الزم است که عمل یا عملیاتهایی تکرار شوند‪.‬‬
‫• در چنین مسائلی از حلقهها استفاده میشود‪.‬‬
‫• دو نوع حلقه داریم‪:‬‬
‫• حلقه با تعداد تکرار مشخص‪:‬‬
‫• شامل اندیس حلقه‪ ،‬مقداردهی اولیه اندیس حلقه‪ ،‬مقدار افزاینده برای اندیس حلقه‪ ،‬شرط پایان حلقه‬
‫• حلقه با تعداد تکرار نامشخص‬
‫غلط‬ ‫• شامل شرط پایان حلقه‬
‫شرط‬

‫درست‬

‫دستورات‬

‫کارنما و الگوریتم‬ ‫‪24‬‬


‫مثال‬
‫• فلوچارتی رسم کنید که مجموع اعداد ‪ 1‬تا ‪ 100‬را محاسبه نماید‪.‬‬

‫شروع‬ ‫‪i‬‬ ‫‪s‬‬

‫‪1‬‬ ‫‪0‬‬
‫‪i=1‬‬
‫‪S=0‬‬ ‫‪2‬‬ ‫‪1‬‬

‫‪ s‬را چاپ‬ ‫‪3‬‬ ‫‪3‬‬


‫‪i<=100‬‬ ‫پایان‬
‫کن‪.‬‬
‫بله‬ ‫‪4‬‬ ‫‪6‬‬

‫‪s=s+i‬‬ ‫‪5‬‬ ‫‪10‬‬


‫‪i=i+1‬‬
‫‪6‬‬ ‫‪15‬‬

‫‪s=15‬‬
‫کارنما و الگوریتم‬ ‫‪25‬‬
‫تمرین‬
‫• برنامه بنویسید که با دریافت ‪ ،n‬مقدار !‪ n‬را محاسبه نماید‪.‬‬
‫شروع‬
‫‪n‬‬ ‫‪i‬‬ ‫‪f‬‬
‫‪ n‬را دریافت‬
‫‪5‬‬ ‫‪1‬‬ ‫‪1‬‬
‫کن‬
‫‪2‬‬ ‫‪1‬‬
‫‪i=1‬‬
‫‪f=1‬‬ ‫‪3‬‬ ‫‪2‬‬

‫‪4‬‬ ‫‪6‬‬
‫‪ f‬را چاپ‬
‫‪i<=n‬‬ ‫پایان‬
‫کن‪.‬‬ ‫‪5‬‬ ‫‪24‬‬
‫بله‬
‫‪6‬‬ ‫‪120‬‬
‫‪f=f*i‬‬
‫‪i=i+1‬‬
‫‪f=120‬‬
‫کارنما و الگوریتم‬ ‫‪26‬‬
‫تمرین‬
‫• فلوچارتی رسم کنید که ‪ n‬عدد از کاربر دریافت کرده و میانگین آنها را محاسبه نماید‪.‬‬
‫شروع‬
‫‪n‬‬ ‫‪i‬‬ ‫‪a‬‬ ‫‪s‬‬ ‫‪avg‬‬
‫‪ n‬را دریافت کن‬
‫‪5‬‬ ‫‪1‬‬ ‫‪20‬‬ ‫‪0‬‬ ‫‪15‬‬

‫‪i=1‬‬ ‫‪2‬‬ ‫‪25‬‬ ‫‪20‬‬


‫‪s=0‬‬
‫‪3‬‬ ‫‪18‬‬ ‫‪45‬‬
‫‪ avg‬را چاپ‬
‫‪i<=n‬‬ ‫‪avg=s/n‬‬ ‫پایان‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪63‬‬
‫کن‪.‬‬
‫بله‬
‫‪5‬‬ ‫‪7‬‬ ‫‪68‬‬
‫‪ a‬را دریافت کن‬
‫‪6‬‬ ‫‪75‬‬

‫‪s=s+a‬‬
‫‪i=i+1‬‬
‫‪avg=15‬‬
‫کارنما و الگوریتم‬ ‫‪27‬‬
‫تمرین‬
‫شروع‬ ‫• فلوچارتی رسم کنید که با دریافت ‪ n‬عدد تعداد اعداد زوج و فرد را مشخص نماید‪.‬‬

‫‪ n‬را دریافت کن‬ ‫‪n‬‬ ‫‪i‬‬ ‫‪a‬‬ ‫‪even odd‬‬

‫‪5‬‬ ‫‪1‬‬ ‫‪20‬‬ ‫‪0‬‬ ‫‪0‬‬


‫‪i=1‬‬
‫‪even=0 odd=0‬‬ ‫‪2‬‬ ‫‪25‬‬ ‫‪1‬‬ ‫‪1‬‬

‫‪ even , odd‬را‬ ‫‪3‬‬ ‫‪18‬‬ ‫‪2‬‬ ‫‪2‬‬


‫‪i<=n‬‬ ‫پایان‬
‫چاپ کن‪.‬‬
‫بله‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪3‬‬
‫‪ a‬را دریافت کن‬
‫‪5‬‬ ‫‪7‬‬

‫‪a%2==0‬‬ ‫‪odd=odd+1‬‬ ‫‪6‬‬

‫‪even=even+1‬‬
‫‪even=2 odd=3‬‬
‫‪i++‬‬ ‫کارنما و الگوریتم‬ ‫‪28‬‬
‫تمرین‬
‫• فلوچارتی رسم کنید که یک عدد دریافت کرده مجموع ارقام آن را محاسبه نماید‪.‬‬
‫شروع‬
‫‪n‬‬ ‫‪s‬‬

‫‪ n‬را دریافت کن‬ ‫‪1399‬‬ ‫‪0‬‬

‫‪139‬‬ ‫‪9‬‬
‫‪s=0‬‬
‫‪13‬‬ ‫‪18‬‬
‫‪ s‬را چاپ‬ ‫‪1‬‬ ‫‪21‬‬
‫‪n>0‬‬ ‫پایان‬
‫کن‪.‬‬
‫بله‬
‫‪0‬‬ ‫‪22‬‬
‫‪s=s+n%10‬‬
‫‪n=n/10‬‬

‫‪s=22‬‬
‫کارنما و الگوریتم‬ ‫‪29‬‬
‫تمرین‬
‫• قلوچارتی رسم کنید که عددی دریافت کرده‪ ،‬مغلوب آن را محاسبه نماید‪.‬‬
‫شروع‬
‫‪n‬‬ ‫‪s‬‬

‫‪1399‬‬ ‫‪0‬‬
‫‪ n‬را دریافت کن‬
‫‪139‬‬ ‫‪9‬‬
‫‪s=0‬‬
‫‪13‬‬ ‫‪99‬‬

‫‪ s‬را چاپ‬ ‫‪1‬‬ ‫‪993‬‬


‫‪n>0‬‬ ‫پایان‬
‫کن‪.‬‬
‫بله‬ ‫‪0‬‬ ‫‪9931‬‬

‫‪s=s*10+n%10‬‬
‫‪n=n/10‬‬

‫‪s=9931‬‬
‫کارنما و الگوریتم‬ ‫‪30‬‬
‫تمرین‬
‫• قلوچارتی رسم کنید که عددی دریافت کرده‪ ،‬بررسی نماید متقارن هست یا نه‪.‬‬
‫شروع‬
‫‪n‬‬ ‫‪s‬‬ ‫‪a‬‬

‫‪1399‬‬ ‫‪0‬‬ ‫‪1399‬‬


‫‪ n‬را دریافت کن‬
‫‪139‬‬ ‫‪9‬‬
‫‪s=0‬‬
‫‪a=n‬‬ ‫‪13‬‬ ‫‪99‬‬

‫بله‬ ‫‪ a‬متقارن‬ ‫‪1‬‬ ‫‪993‬‬


‫‪n>0‬‬ ‫‪s==a‬‬ ‫پایان‬
‫است‪.‬‬
‫بله‬ ‫‪0‬‬ ‫‪9931‬‬

‫‪s=s*10+n%10‬‬ ‫‪ a‬متقارن‬
‫‪n=n/10‬‬ ‫نیست‪.‬‬

‫‪ a‬نامتقارن است‬

‫کارنما و الگوریتم‬ ‫‪31‬‬


‫تمرین‬
‫شروع‬ ‫• فلوچارتی رسم کنید که عددی دریافت کرده و اول بودن آن را بررسی نماید‪.‬‬
‫‪n‬‬ ‫‪flag‬‬ ‫‪i‬‬
‫‪ n‬را دریافت کن‬
‫‪7‬‬ ‫‪true‬‬ ‫‪2‬‬
‫‪flag=true‬‬
‫‪3‬‬
‫‪i=2‬‬

‫بله‬ ‫‪4‬‬
‫‪i<n‬‬ ‫‪flag==true‬‬ ‫اول است‬ ‫پایان‬
‫‪5‬‬
‫بله‬
‫‪6‬‬
‫‪n%i==0‬‬ ‫اول نیست‬
‫‪7‬‬
‫‪flag=false‬‬
‫اول است‬
‫‪i=i+1‬‬
‫کارنما و الگوریتم‬ ‫‪32‬‬
‫تمرین‬
‫• فلوچارتی رسم کنید که عددی دریافت کرده‪ ،‬بررسی نماید عدد کامل است یا نه‪( .‬عدد کامل با مجموع مقسوم علیههایش به‬
‫غیر از خودش برابر باشد‪).‬‬

‫}‪6={1,2,3,6‬‬
‫‪6=1+2+3‬‬

‫کارنما و الگوریتم‬ ‫‪33‬‬


‫تمرین‬
‫• فلوچارتی رسم نمایید که عددی دریافت کرده‪ ،‬آن را به مبنای ‪ 2‬ببرد‪ .‬به مبنای ‪ 8‬ببرد‪ .‬به مبنای ‪ 16‬ببرد‪.‬‬

‫کارنما و الگوریتم‬ ‫‪34‬‬


‫تمرین‬
‫• فلوچارتی رسم نمایید که ‪ n‬عدد دریافت کرده و بزرگترین آنها را بدست آورد‪.‬‬

‫کارنما و الگوریتم‬ ‫‪35‬‬


‫تمرین‬
‫• فلوچارتی رسم کنید که ‪ n‬عدد از کاربر دریافت کرده‪ ،‬تعداد اعداد اول را شناسایی نماید‪.‬‬

‫کارنما و الگوریتم‬ ‫‪36‬‬

You might also like