6-3 چند الگوریتم نمونه

Download Report

Transcript 6-3 چند الگوریتم نمونه

‫مبانی کامپیوتر و برنامه سازی‬
‫فصل سوم ‪:‬الگوریتم‬
‫مدرس ‪ :‬نگین معروفی‬
‫‪ 3‬الگوریتم‬
‫‪‬‬
‫الگوریتم‬
‫‪‬‬
‫‪‬‬
‫مجموعه محدودی از دستورالعملها است که اگر به ترتیب دنبال‬
‫شوند موجب انجام کار خاصی می گردند‪.‬‬
‫هر الگوریتم باید دارای شرایط زیر باشد‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫ورودی ‪ :‬یک الگوریتم می تواند صفر یا چند ورودی داشته باشد‬
‫که از محیط خارج تامین می گردد‪.‬‬
‫خروجی ‪ :‬الگوریتم باید یک یا چند کمیت خروجی داشته باشد‪.‬‬
‫قطعیت ‪ :‬هر دستورالعمل باید واضح و بدون ابهام باشد‪.‬‬
‫کارایی ‪ :‬هر دستورالعمل باید قابل اجرا باشد‪.‬‬
‫محدودیت ‪ :‬در تمام حاالت‪ ،‬الگوریتم باید پس از طی مراحل‬
‫محدودی خاتمه یابد‪.‬‬
‫‪ 3‬الگوریتم‬
‫‪‬‬
‫‪‬‬
‫در علم کامپیوتر‪ ،‬ما معموال با یک مسئله مواجهیم که باید آن را حل‬
‫کنیم‪ .‬این مسئله می تواند در زمینه های مختلفی همچون علمی‪،‬‬
‫اقتصادی‪ ،‬ریاضی‪ ،‬فنی و ‪ ...‬باشد‪.‬‬
‫معموال برای حل یک مسئله‪ ،‬مراحل زیر طی می گردد‬
‫‪ ‬تعریف مسئله بصورت جامع و دقیق (شامل تعریف ورودیها و خروجیها)‬
‫‪ ‬بررسی راه حلهای مختلف برای حل مسئله‬
‫‪ ‬انتخاب مناسبترین راه حل و تهیه یک الگوریتم برای آن‬
‫‪ ‬آزمایش الگوریتم با داده های ورودی و اشکالزدایی آن‬
‫‪ ‬تبدیل الگوریتم به یک زبان برنامه نویسی کامپیوتری (مانند ‪ C‬یا ‪)Pascal‬‬
‫‪ ‬وارد کردن برنامه به کامپیوتر و تست و اشکالزدایی آن‬
‫‪ ‬استفاده از برنامه‬
‫‪ 3-1‬نحوه بیان الگوریتمها‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫چگونه می توانیم الگوریتمها را بیان کنیم؟‬
‫الگوریتمها باید برای انسانها قابل فهم و درک باشند و همه بتوانند به‬
‫راحتی منظور نویسنده الگوریتم را درک کنند‬
‫معموال الگوریتمها به یک زبان طبیعی مانند فارسی یا انگلیسی نوشته‬
‫می شود‪.‬‬
‫این مسئله باعث می شود که بعضی ابهامات در درک الگوریتمها پیش‬
‫آید‪.‬‬
‫معموال یکسری از توافقات و تعریفها از قبل بین طراح و خواننده الگوریتم‬
‫برقرار می گردد‪.‬‬
‫از آنجا که زبانهای برنامه نویسی مانند ‪ C‬به زبان انگلیسی خیلی‬
‫نزدیک هستند‪ ،‬بعض از طراحان از ترکیب زبان ‪ C‬و انگلیسی (که به آن‬
‫کد شبه ‪ C‬می گویند) برای بیان الگوریتم استفاده می کنند‬
‫الزم بذکر است که در گذشته از نمودار گردشی )‪ (Flowchart‬نیز برای‬
‫بیان الگوریتمها با استفاده از شکلهای استاندارد استفاده می شد‪ ،‬که‬
‫تنها برای الگوریتمهای کوچک مناسب بود‪.‬‬
‫‪ 3-2‬شروع به کار با الگوریتمها‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫الگوریتمی بنویسید که ضرایب یک معادله درجه دوم بصورت زیر را دریافت و ریشه‬
‫های آن را محاسبه و چاپ کند‪.‬‬
‫‪ax2 + bx + c = 0‬‬
‫برای حل این مسئله ابتدا باید ضرائب ‪ b ، a‬و ‪ c‬از کاربر دریافت و در خانه های‬
‫حافظه ذخیره گردند‪.‬‬
‫برای اینکه بتوانیم بعدا به این خانه های حافظه مراجعه کنیم‪ ،‬به هریک از آنها یک‬
‫نام نسبت می دهیم‪ .‬به هریک از این نامها یک متغیر گفته می شود‪.‬‬
‫دلیل این نامگذاری آنستکه مقادیر ذخیره شده در هریک از این خانه های حافظه‬
‫می تواند تغییر کند‪.‬‬
‫گرچه انتخاب نام بعهده خودشماست و می تواند هر چیزی باشد‪ ،‬ولی توصیه می‬
‫گردد از اسامی بامعنی و متناسب استفاده گردد‪ .‬این کار سبب می شود که‬
‫خواندن و درک الگوریتم شما برای سایر افراد نیز ساده گردد‪.‬‬
‫اکنون به قراردادهای زیر توجه کنید ‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫برای دریافت اطالعات از کاربر از دستور بخوان استفاده می گردد‪.‬‬
‫برای نوشتن اطالعات در خروجی از دستور چاپ کن استفاده می گردد‪.‬‬
‫برای انتساب یک مقدار به یک متغیر از عالمت ← استفاده می شود‪.‬‬
‫‪ 3-2‬شروع به کار با الگوریتمها‬
‫‪(1‬‬
‫‪(2‬‬
‫‪(3‬‬
‫‪ a‬و ‪ b‬و ‪ c‬را بخوان‬
‫‪delta ← b2 – 4ac‬‬
‫‪ x1   b  delta‬و‬
‫‪(4‬‬
‫‪(5‬‬
‫‪ x1‬و ‪ x2‬را چاپ کن‬
‫توقف کن‬
‫‪2a‬‬
‫‪ b  delta‬‬
‫‪2a‬‬
‫‪x2 ‬‬
‫‪ 3-3‬مکانیزم شرط‬
‫‪‬‬
‫‪‬‬
‫مکانیزم شرط هنگامی استفاده می شود که قصد داریم درستی یا‬
‫نادرستی یک عبارت رابررسی کرده و متناسب با نتیجه بررسی شرط‪،‬‬
‫عملیات خاصی را انجام دهیم و یا از انجام بعضی عملیات صرفنظر کنیم‪.‬‬
‫شکل کلی این دستور به شکل زیر است‬
‫اگر (عبارت شرطی) آنگاه دستورات‬
‫‪‬‬
‫این دستور به شکل زیر نیز استفاده می شود‪:‬‬
‫اگر (عبارت شرطی) آنگاه دستورات‪1‬‬
‫درغیر اینصورت دستورات ‪2‬‬
‫‪ 3-3‬مکانیزم شرط‬
‫‪(1‬‬
‫‪(2‬‬
‫‪(3‬‬
‫‪(4‬‬
‫‪ a‬و ‪ b‬و ‪ c‬را بخوان‬
‫اگر ) ‪ ( a = 0‬آنگاه چاپ کن ”معادله درجه ‪ 2‬نیست“ و توقف کن‬
‫‪delta ← b2 – 4ac‬‬
‫اگر ) ‪ ( delta < 0‬آنگاه چاپ کن ”معادله جواب ندارد“‬
‫و ‪ b  delta‬‬
‫‪ b  delta‬‬
‫درغیراینصورت‬
‫‪x2 ‬‬
‫‪x1 ‬‬
‫‪2a‬‬
‫و ‪ x1‬و ‪ x2‬را چاپ کن‬
‫‪(5‬‬
‫توقف کن‬
‫‪2a‬‬
‫‪ 3-4‬مکانیزم حلقه تکرار‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫در بعضی الگوریتمها الزم است که عملیات مشخصی چندین بار تکرار‬
‫شوند‪ .‬بعنوان مثال فرض کنید قصد داریم میانگین معدلهای ‪ 100‬دانشجو را‬
‫محاسبه کنیم‪ .‬قطعا ‪ 100‬بار دستور خواندن و جمع کردن راه حل چندان‬
‫مناسبی نیست‪.‬‬
‫راه حل بهتر آنستکه بگونه ای به مجری الگوریتم بگوییم بنحوی عمل‬
‫خواندن معدل و جمع زدن آنها را ‪ 100‬بار تکرار کند‪.‬‬
‫حلقه تکرار مکانیزمی است که مجموعه ای از دستوزات را تا زمانیکه شرط‬
‫خاصی برقرار باشد تکرار می کند‪.‬‬
‫حلقه تکرار به دو شکل مورد استفاده قرار می گیرد‬
‫‪ 3-4‬مکانیزم حلقه تکرار‬
‫‪‬‬
‫‪‬‬
‫شرط در ابتدای حلقه که مکانیزم کلی آن به شکل زیر است ‪:‬‬
‫تا زمانیکه (شرط مورد نظر) دستورات ‪ a‬تا ‪ b‬را تکرارکن‬
‫‪… )a‬‬
‫‪.‬‬
‫‪.‬‬
‫‪.‬‬
‫‪… )b‬‬
‫در این حالت ابتدا شرط موردنظر بررسی می گردد؛ درصورتیکه شرط‬
‫برقرار نباشد به اولین دستور پس از ‪ b‬می رود‪ .‬اما در صورتیکه شرط‬
‫درست ارزیابی شود‪ ،‬دستورات شماره ‪ a‬تا ‪ b‬انجام می شوند و سپس‬
‫مجددا به ابتدای حلقه بازگشته و عملیات فوق را مجددا تکرار می کند‪.‬‬
‫‪ 3-4‬مکانیزم حلقه تکرار‬
‫‪‬‬
‫‪‬‬
‫شرط در انتهای حلقه که مکانیزم کلی آن به شکل زیر است ‪:‬‬
‫تکرار کن‬
‫‪…)a‬‬
‫‪.‬‬
‫‪.‬‬
‫‪.‬‬
‫‪… )b‬‬
‫تا زمانیکه (شرط مورد نظر)‬
‫در این روش ابتدا دستورات حلقه یکبار انجام می شوند و در پایان حلقه‬
‫شرط بررسی می گردد‪ .‬چنانچه شرط برقرار نبود به دستور بعدی می‬
‫رود و در صورت برقرار بودن شرط‪ ،‬مجددا به ابتدای حلقه باز می گردد‪.‬‬
‫‪ 3-4‬مکانیزم حلقه تکرار‬
‫‪‬‬
‫‪‬‬
‫‪(1‬‬
‫‪(2‬‬
‫‪(3‬‬
‫‪(4‬‬
‫‪(5‬‬
‫‪(6‬‬
‫‪(7‬‬
‫الگوریتمی بنویسید که یک عدد را دریافت و فاکتوریال آن را محاسبه و‬
‫چاپ کند‪.‬‬
‫‪N! = 1 × 2 × 3 × … × (N-1) × N‬‬
‫الگوریتم‬
‫‪ n‬را بخوان‬
‫‪ i ←1‬و ‪fact ←1‬‬
‫تا زمانیکه )‪ ) i ≤ n‬دستورات ‪ 4-5‬را تکرار کن‬
‫‪fact ← fact × i‬‬
‫‪i←i+1‬‬
‫‪ fact‬را چاپ کن‬
‫توقف کن‬
‫‪ 3-5‬آزمایش الگوریتم‬
‫‪(1‬‬
‫‪(2‬‬
‫‪(3‬‬
‫‪(4‬‬
‫‪(5‬‬
‫‪(6‬‬
‫‪(7‬‬
‫‪ n‬را بخوان‬
‫‪ i ← 1‬و ‪fact ← 1‬‬
‫تا زمانیکه (‪ ) i ≤ n‬دستورات ‪ 4-5‬را تکرار کن‬
‫‪fact ←fact × i‬‬
‫‪i ←i + 1‬‬
‫‪ fact‬را چاپ کن‬
‫‪n=4‬‬
‫توقف کن‬
‫اجرای الگوریتم ←‬
‫‪i= 4‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪5‬‬
‫‪fact = 1‬‬
‫‪2‬‬
‫‪6‬‬
‫‪24‬‬
‫‪ = 24‬خروجی‬
‫‪ 3-6‬چند الگوریتم نمونه‬
‫‪‬‬
‫الگوریتمی بنویسید که ‪ n‬عدد را دریافت و حداکثر و حداقل آنها را چاپ‬
‫کند‪.‬‬
‫‪ n (1‬را بخوان‬
‫‪ adad (2‬را بخوان‬
‫‪ min ← adad (3‬و ‪max ← adad‬‬
‫‪i ← 2 (4‬‬
‫‪ (5‬تا زمانیکه ( ‪ ) i ≤ n‬دستورات ‪ 6‬تا ‪ 8‬را تکرار کن‬
‫‪ adad (6‬را بخوان‬
‫‪ (7‬اگر )‪ ( adad > max‬آنگاه ‪max ← adad‬‬
‫در غیر اینصورت اگر ) ‪ ( adad < min‬آنگاه ‪min ← adad‬‬
‫‪i←i+1‬‬
‫‪(8‬‬
‫‪ max (9‬و ‪ min‬را چاپ کن‬
‫‪ (10‬توقف کن‬
‫‪ 3-6‬چند الگوریتم نمونه‬
‫‪ n (1‬را بخوان‬
‫‪ adad (2‬را بخوان‬
‫‪ min ← adad (3‬و ‪max ← adad‬‬
‫‪i ← 2 (4‬‬
‫‪ (5‬تا زمانیکه ( ‪ ) i ≤ n‬دستورات ‪ 6‬تا ‪ 8‬را تکرار کن‬
‫‪ adad (6‬را بخوان‬
‫‪ (7‬اگر )‪ ( adad > max‬آنگاه ‪max ← adad‬‬
‫در غیر اینصورت اگر ) ‪ ( adad < min‬آنگاه ‪min ← adad‬‬
‫‪i ← i + 1 (8‬‬
‫‪n= 5‬‬
‫‪2‬‬
‫‪4‬‬
‫‪3‬‬
‫‪ max (9‬و ‪ min‬را چاپ کن‬
‫‪i=6‬‬
‫‪5‬‬
‫‪39‬‬
‫‪27‬‬
‫‪21‬‬
‫‪6‬‬
‫‪ (10‬توقف کن‬
‫‪adad = 18‬‬
‫‪27‬‬
‫‪39‬‬
‫‪max = 18‬‬
‫اجرای الگوریتم ←‬
‫‪6‬‬
‫‪min = 18‬‬
‫‪ = 39 6‬خروجی‬
‫‪ 3-6‬چند الگوریتم نمونه‬
‫‪ ‬الگوریتمی بنویسید که مقدار ‪ x‬و تعداد جمالت را دریافت و سپس )‪sin(x‬‬
‫را با استفاده از فرمول زیر تخمین بزند‪:‬‬
‫‪3‬‬
‫‪5‬‬
‫‪7‬‬
‫‪x‬‬
‫‪x‬‬
‫‪x‬‬
‫‪sin(x)  x     ...‬‬
‫!‪3! 5! 7‬‬
‫‪ x (1‬و ‪ n‬را بخوان‬
‫‪ sin ← x (2‬و ‪ fact ← 1‬و ‪ xPower ← x‬و‪sign ← 1‬‬
‫‪i ← 1 (3‬‬
‫‪ (4‬تازمانیکه ) ‪ ( i < n‬دستورات ‪ 5‬تا ‪ 9‬را تکرار کن‬
‫‪fact ← fact × 2i × (2i+1) (5‬‬
‫‪xPower ← xPower × x2 (6‬‬
‫‪sign ← -1 × sign (7‬‬
‫‪sin ← sin + sign × (xPower / fact) (8‬‬
‫‪i ← i + 1 (9‬‬
‫‪ sin (10‬را چاپ کن‬
‫‪ (11‬توقف کن‬
‫‪ 3-6‬چند الگوریتم نمونه‬
‫‪‬‬
‫‪(1‬‬
‫‪(2‬‬
‫‪(3‬‬
‫‪(4‬‬
‫‪(5‬‬
‫‪(6‬‬
‫‪(7‬‬
‫‪(8‬‬
‫‪(9‬‬
‫‪(10‬‬
‫‪(11‬‬
‫‪(12‬‬
‫الگوریتمی بنویسید که برای تعدادی مشترک این اطالعات را بخواند ‪ :‬شماره حساب‪ ،‬موجودی اولیه‪،‬‬
‫تعداد برداشت یا واریز و سپس برای هر برداشت یا واریز این اطالعات را دریافت کند‪:‬‬
‫کد عمل (‪ = 1‬برداشت‪ = 2 ،‬واریز) و مبلغ‪.‬‬
‫در نهایت برای هرمشترک ‪ ،‬شماره حساب و موجودی نهایی را چاپ کند‪.‬‬
‫‪ n‬را بخوان‬
‫‪i←1‬‬
‫تا زمانیکه (‪ ) i ≤ n‬دستورات ‪ 4‬تا ‪ 11‬را تکرار کن‬
‫‪ shomare‬و ‪ mojodi‬و ‪ tedad‬را بخوان‬
‫‪j←1‬‬
‫تا زمانیکه (‪ ) j ≤ tedad‬دستورات ‪ 7‬تا ‪ 9‬را تکرار کن‬
‫‪ code‬و ‪ mablagh‬را بخوان‬
‫اگر )‪ ( code = 1‬آنگاه ‪mojodi ← mojodi – mablagh‬‬
‫درغیراینصورت اگر ) ‪ ( code = 2‬آنگاه ‪mojodi ← mojodi + mablagh‬‬
‫درغیراینصورت چاپ کن "کد اشتباه است"‬
‫‪j←j+1‬‬
‫‪ shomare‬و ‪ mojodi‬را چاپ کن‬
‫‪i←i+1‬‬
‫توقف کن‬
‫‪ 3-6‬چند الگوریتم نمونه‬
‫‪‬‬
‫‪(1‬‬
‫‪(2‬‬
‫‪(3‬‬
‫‪(4‬‬
‫‪(5‬‬
‫‪(6‬‬
‫‪(7‬‬
‫‪(8‬‬
‫‪(9‬‬
‫‪(10‬‬
‫‪(11‬‬
‫‪(12‬‬
‫الگوریتمی بنویسید که معدل و کد جنسیت دانشجویان (پسران=‪ m‬و دختران= ‪ )f‬یک کالس را‬
‫دریافت و در پایان میانگین معدل پسران و میانگین معدل دختران و میانگین معدل کل کالس را چاپ‬
‫کند‪.‬‬
‫‪ n‬را بخوان‬
‫‪ mSum ← 0‬و ‪ mCount ← 0‬و ‪ fSum ← 0‬و ‪fCount ← 0‬‬
‫‪i←1‬‬
‫تا زمانیکه ( ‪ ) i ≤ n‬دستورات ‪ 5‬تا ‪ 7‬را تکرار کن‬
‫‪code‬و ‪ average‬را بخوان‬
‫اگر ) ‪ ( code = m‬آنگاه‬
‫‪ fSum ← fSum + average‬و ‪fCount ← fCount + 1‬‬
‫در غیراینصورت اگر ) ‪ ( code = m‬آنگاه‬
‫‪ mSum ← mSum + average‬و ‪mCount ← mCount + 1‬‬
‫در غیراینصورت چاپ کن "کد اشتباه است" و ‪i ← i – 1‬‬
‫‪i←i+1‬‬
‫اگر ) ‪ ( fCount > 0‬آنگاه ‪fAve ← fSum / fCount‬‬
‫اگر ) ‪ ( mCount > 0‬آنگاه ‪mAve ← mSum / mCount‬‬
‫‪totalAverage ← (mSum + fSum) / n‬‬
‫‪ mAve‬و ‪ fAve‬و ‪ totalAverage‬را چاپ کن‬
‫توقف کن‬
‫‪ 3-6‬چند الگوریتم نمونه‬
‫‪‬‬
‫‪(1‬‬
‫‪(2‬‬
‫‪(3‬‬
‫‪(4‬‬
‫‪(5‬‬
‫‪(6‬‬
‫‪(7‬‬
‫‪(8‬‬
‫‪(9‬‬
‫‪(10‬‬
‫‪(11‬‬
‫‪(12‬‬
‫‪(13‬‬
‫‪(14‬‬
‫‪(15‬‬
‫‪(16‬‬
‫‪(17‬‬
‫الگوریتمی بنویسید که برای تعدادی دانشجو‪ ،‬نام و شماره دانشجویی و تعداد دروس را دریافت کند و سپس برای هر دانشجو نمره و تعداد واحد هر‬
‫درس وی را دریافت و معدل وی را محاسبه نماید‪ .‬در پایان شماره دانشجویی‪ ،‬نام و معدل دو دانشجوی برتر کالس را چاپ کند‪.‬‬
‫‪ n‬را بخوان‬
‫‪ maxAve1 ← -1‬و ‪maxAve2 ← -1‬‬
‫‪i←1‬‬
‫تازمانیکه (‪ ) i ≤ n‬دستورات ‪ 5‬تا ‪ 15‬را تکرار کن‬
‫‪ name‬و ‪id‬و ‪tedad‬را بخوان‬
‫‪ sum ← 0‬و ‪sumVahed ← 0‬‬
‫‪j←1‬‬
‫تازمانیکه (‪ ) j ≤ tedad‬دستورات ‪ 9‬تا ‪ 12‬را تکرار کن‬
‫‪ nomre‬و ‪ vahed‬را بخوان‬
‫‪sum ← sum + nomre × vahed‬‬
‫‪sumVahed ← sumVahed + vahed‬‬
‫‪j←j+1‬‬
‫‪average ← sum / sumVahed‬‬
‫اگر ) ‪ ( average > maxAve1‬آنگاه‬
‫‪ maxName2 ← maxName1‬و ‪maxId2 ← maxId1‬‬
‫‪ maxAve2 ← maxAve1‬و ‪maxName1 ← name‬‬
‫‪ maxId1 ← id‬و ‪maxAve1 ← average‬‬
‫درغیراینصورت اگر )‪ ( average > maxAve2‬آنگاه‬
‫‪ maxName2 ← name‬و ‪ maxId2 ← id‬و ‪maxAve2 ← average‬‬
‫‪i←i+1‬‬
‫‪ maxId1‬و ‪ maxName1‬و ‪ maxAve1‬و ‪ maxId2‬و ‪ maxName2‬و ‪ maxAve‬را چاپ کن‬
‫توقف کن‬
‫‪ 3-6‬چند الگوریتم نمونه‬
‫‪‬‬
‫‪(1‬‬
‫‪(2‬‬
‫‪(3‬‬
‫‪(4‬‬
‫‪(5‬‬
‫‪(6‬‬
‫‪(7‬‬
‫‪(8‬‬
‫‪(9‬‬
‫‪(10‬‬
‫‪(11‬‬
‫‪(12‬‬
‫‪(13‬‬
‫‪(14‬‬
‫‪(15‬‬
‫‪(16‬‬
‫‪(17‬‬
‫الگوریتمی بنویسید که برای تعدادی شهر ابتدا نام شهر را دریافت و سپس دمای هوا در ‪ 24‬ساعت گذشته دریافت نماید و میانگین دما‬
‫را برای هر شهر محاسبه و چاپ نماید‪ .‬درپایان موارد زیر را چاپ نماید ‪:‬‬
‫شهری که از همه سردتر بوده است‬
‫شهری که از همه گرمتر بوده است‬
‫تعداد شهرهای سرد (کمتر از ‪ ، )10‬معتدل (بین ‪ 10‬تا ‪ )30‬و گرم (بیشتر از ‪ )30‬به تفکیک‬
‫درضمن تعداد شهرها مشخص نیست و در پایان هر شهر سوال می شود که آیا ادامه بدهیم یا خیر؟‬
‫‪ warmDegree ← -100‬و ‪coldDegree ← 100‬‬
‫‪ coldCount ← 0‬و ‪ warmCount ← 0‬و ‪mediumCount ← 0‬‬
‫تکرار کن‬
‫‪ city‬را بخوان‬
‫‪sum ← 0‬و ‪hour ← 1‬‬
‫تازمانیکه ) ‪ ) hour ≤ 24‬دستورات ‪ 7‬تا ‪ 9‬را تکرار کن‬
‫‪ degree‬را بخوان‬
‫‪sum ← sum + degree‬‬
‫‪hour ← hour + 1‬‬
‫‪sum ← sum / 24‬‬
‫اگر )‪ ( sum > warmDegree‬آنگاه‬
‫‪ warmDegree ← sum‬و ‪warmCity ← city‬‬
‫درغیراینصورت اگر ) ‪ ( sum < coldDegree‬آنگاه‬
‫‪ coldDegree ← sum‬و ‪coldCity ← city‬‬
‫اگر ) ‪ ( sum < 10‬آنگاه ‪coldCount ← coldCount +1‬‬
‫در غیر اینصورت اگر ) ‪ ( sum < 30‬آنگاه‬
‫‪mediumCount ← mediumCount + 1‬‬
‫درغیراینصورت ‪warmCount ← warmCount + 1‬‬
‫چاپ کن "آیا مایل به ادامه هستید ؟"‬
‫‪ answer‬را بخوان‬
‫تا زمانیکه ( ’‪) answer = ‘yes‬‬
‫اطالعات الزم را چاپ کن‬
‫توقف کن‬
‫‪ 3-6‬چند الگوریتم نمونه‬
‫‪‬‬
‫الگوریتمی بنویسید که یک عدد را دریافت و وارون آن را محاسبه و بهمراه‬
‫خود عدد چاپ کند‪ .‬مثال وارون عدد ‪ 3872‬برابر ‪ 2783‬می باشد‪.‬‬
‫‪ adad (1‬را بخوان‬
‫‪ (2‬اگر ) ‪ ( adad < 0‬آنگاه ‪a ← -adad‬‬
‫در غیر اینصورت ‪a ← adad‬‬
‫‪varoon ← 0 (3‬‬
‫‪ (4‬تازمانیکه ) ‪ ( a > 0‬آنگاه دستورات ‪ 5‬تا ‪ 7‬را تکرار کن‬
‫‪remain ← a mod 10 (5‬‬
‫‪a ← a / 10 (6‬‬
‫‪varoon ← varoon × 10 + remain (7‬‬
‫‪ (8‬اگر ) ‪ ( adad < 0‬آنگاه ‪varoon ← -varoon‬‬
‫‪ adad (9‬و ‪ varoon‬را چاپ کن‬
‫‪ (10‬توقف کن‬
‫‪ 3-6‬چند الگوریتم نمونه‬
‫‪ adad (1‬را بخوان‬
‫‪ (2‬اگر ) ‪ ( adad < 0‬آنگاه ‪a ← -adad‬‬
‫در غیر اینصورت ‪a ← adad‬‬
‫‪varoon ← 0 (3‬‬
‫‪ (4‬تازمانیکه ) ‪ ( a > 0‬آنگاه دستورات ‪ 5‬تا ‪ 7‬را تکرار کن‬
‫‪remain ← a mod 10 (5‬‬
‫‪a ← a / 10 (6‬‬
‫‪varoon ← varoon × 10 + remain (7‬‬
‫‪ (8‬اگر ) ‪ ( adad < 0‬آنگاه ‪varoon ← -varoon‬‬
‫‪adad = -275‬‬
‫‪ adad (9‬و ‪ varoon‬را چاپ کن‬
‫‪275‬‬
‫‪27‬‬
‫‪0‬‬
‫‪a=2‬‬
‫‪ (10‬توقف کن‬
‫‪0‬‬
‫‪57‬‬
‫‪-572‬‬
‫‪5‬‬
‫‪varoon = 572‬‬
‫اجرای الگوریتم ←‬
‫‪remain = 2‬‬
‫‪5‬‬
‫‪7‬‬
‫‪ = -275 -572‬خروجی‬
‫‪ 3-6‬چند الگوریتم نمونه‬
‫‪‬‬
‫‪(1‬‬
‫‪(2‬‬
‫‪(3‬‬
‫‪(4‬‬
‫‪(5‬‬
‫‪(6‬‬
‫‪(7‬‬
‫‪(8‬‬
‫الگوریتمی بنویسید که یک عدد را دریافت و تعیین کند که آیا اول است یا‬
‫خیر؟‬
‫‪ adad‬رابخوان‬
‫‪‬‬
‫‪adad‬‬
‫‪‬‬
‫‪root ‬‬
‫‪ i ← 2‬و ‪primeSw ← 1‬‬
‫تازمانیکه ) ‪ ) i ≤ root and primeSw=1‬دستورات ‪ 5‬تا ‪ 6‬را تکرار کن‬
‫اگر ) ‪ ( adad mod i = 0‬آنگاه ‪primeSw ← 0‬‬
‫‪i←i+1‬‬
‫اگر )‪ ( primeSw = 1‬آنگاه چاپ کن "عدد اول است“‬
‫درغیراینصورت چاپ کن "عدد اول نیست"‬
‫توقف کن‬
‫‪ 3-6‬چند الگوریتم نمونه‬
‫‪‬‬
‫‪(1‬‬
‫‪(2‬‬
‫‪(3‬‬
‫‪(4‬‬
‫‪(5‬‬
‫‪(6‬‬
‫‪(7‬‬
‫‪(8‬‬
‫‪(9‬‬
‫الگوریتمی بنویسید که یک عدد صحیح مثبت در مبنای ‪ 10‬را دریافت و‬
‫سپس آن را به مبنای ‪ b‬ببرد‪ .‬مبنای ‪ b‬نیز از کاربر دریافت می گردد‪.‬‬
‫‪ adad‬و ‪ b‬را بخوان‬
‫‪ hasel ← 0‬و ‪i ← 0‬‬
‫تازمانیکه ) ‪ ( adad > 0‬دستورات ‪ 4‬تا ‪ 7‬را تکرار کن‬
‫‪remain ← adad mod b‬‬
‫‪hasel ← hasel + remain × 10 i‬‬
‫‪( adad ← adad / b‬تقسیم صحیح بر صحیح)‬
‫‪i←i+1‬‬
‫‪ hasel‬را چاپ کن‬
‫توقف کن‬