بخشی از پاورپوینت
اسلاید 1 :
مبانی کامپیوتر و برنامه نویسی
اسلاید 2 :
2- الگوریتم و فلوچارت
شناخت مسئله
بررسی داده ها و یا معلومات(ورودیها)، مجهولات (خروجیها) و یافتن ارتباط منطقی بین داده ها و مجهولات
مثال : یافتن مساحت یک مثلث با داشتن اندازه قاعده و ارتفاع آن
داده ها (ورودی) – اندازه ارتفاع و قاعده مثلث
مجهولات (خروجی) – مساحت مثلث
رابطه منطقی : روش محاسبه مساحت مثلث (ارتفاع x قاعده x2/1)
اغلب، مسائل دارای راه حلهای گوناگونی می باشند، یافتن بهترین راه حل به ابتکار، تمرین و از همه مهمتر تجربه بستگی دارد.
اسلاید 3 :
تعریف الگوریتم
مجموعه دستورالعملهایی که مراحل حل یک مسئله مشخص کند با ویژگیهای :
با یک زبان واضح، روشن و بدون ابهام و پیچیدگی
با جزئیات کافی(از دید اجرا کننده الگوریتم)
شروع عملیات
ترتیب اجرای دستورات
پایان عملیات
اسلاید 4 :
کاربرد الگوریتم
همه ما در طی روز برای انجام کارهای روزمره از روش الگوریتمی( و یا منطقی) استفاده می کنیم.
مانند مطالعه کتاب
تعویض چرخ پنجر شده
پختن غذا و ..
در واقع برای انجام هر یک از این کارها، لازم است تعدادی دستورالعملهای ساده تر را به ترتیب مناسب اجراء کرده تا به نتیجه مطلوب برسیم.
اسلاید 5 :
اجزای اصلی الگوریتم
نقطه شروع: حل مساله از کجا آغاز می گردد
فقط یک نقطه شروع در الگوریتم وحود دارد
نقطه پایان: جایی که مراحل حل مساله پایان می پذیرد.
به هر حال الگوریتم بایستی در یک نقطه خاتمه یابد.
می توان چندین نقطه پایان برای الگوریتم داشت.
دستورالعملها و یا جملات اجرایی
هر مساله راه حل و الگوریتم خاص خود را دارد.
می توان برای حل یک مساله روشهای گوناگونی را ارائه داد.
اما تمام الگوریتم ها دارای این اجزاء هستند:
اسلاید 6 :
متغیر(Variable)
به خانه ای از حافظه که داده ها و اطلاعات ورودی یا خروجی و یا اطلاعات موقت را در خود نگه می دارد متغیر گفته می شود.
مقدار متغیر می تواند در طول اجرای الگوریتم تغییر داشته باشد.
اسلاید 7 :
مثالی از یک الگوریتم
الگوریتم محاسبه و چاپ مجموع دو عدد 10 و 20
شروع
عدد 10 را در خانه (متغیر) A قرار بده
عدد 20 را در خانه B قرار بده
محتویات خانه های A , B را با هم جمع کن و در خانه C قرار بده
مقدار خانه C را بعنوان نتیجه چاپ کن
پایان
اسلاید 8 :
استفاده از بیان ریاضی
بیان الگوریتم در قالب جملات نوشتاری طولانی و فهم الگوریتم را دشوار می سازد.
الگوریتم محاسبه و چاپ مجموع دو عدد 10 و 20
شروع
A10
B20
C A+B
چاپ مقدار C
پایان
اسلاید 9 :
انواع جملات مورد استفاده در الگوریتم ها
جملات شرطی
جملات عملیاتی ( یا محاسباتی)
جملات ورودی / خروجی
جملات توضیحی
اسلاید 10 :
مثال
الگوریتمی بنویسید که اعداد زوج دو رقمی را چاپ کند.
(می دانیم که کوچکترین عدد زوج دو رقمی 10 و اعداد زوج به اندازه 2 واحد از هم فاصله دارند)
شروع
J 10
J را چاپ کن
J J + 2
اگر J <=98 است آنگاه به مرحله 3 برو
پایان
اسلاید 11 :
مثال
الگوریتمی بنویسید که اعداد زوج از 1000 تا 2000 را تولید کرده و مجموع آنها را هم محاسبه کند.
شروع
J 1000 ، S 0
J را چاپ کن و S S + J
J J + 2
اگر J <= 2000 است آنگاه به مرحله 3 برو در غیر اینصورت مقدار S را چاپ کن
پایان
اسلاید 12 :
نکته
اگر بخواهیم مقدار حاصل جمعی را محاسبه کنیم (مانند مثال قبل که مجموع اعداد زوج از 1000 تا 2000)
ابتدا متغیری ( مانند S) در نظر می گیریم و مقدار اولیه آن را صفر می گداریم (یعنی اینکه هنوز هیچ مجموعی را حساب نکرده ایم) ، S 0
سپس تک تک جملاتی را که قرار است با هم جمع کنیم را تولید کرده ( با کمک یک متغیر دیگر، مثلا J در مثال قبلی) و با متغیر S جمع نموده و حاصل را در S قرار می دهیم ( در واقع مقدار جدید را به حاصل قبلی می افزاییم – مانند انباره) ، S S + J
در نهایت حاصل مجموع در این متغیر S قرار می گیرد.
اسلاید 13 :
ویژگیهای یک الگوریتم خوب
اگر چه یک مساله راه حلهای مختلفی دارد، مهـم یافتن بهترین راه حل است
سادگی
حتی الامکان ساده و عاری از ابهام و پیچیدگی باشد.
در نظر گرفتن تمام حالات خاص
الگوریتم بتواند در برابر حالات و شرایط مختلف پاسخ و جواب مناسبی ارائه دهد.
بطور مثال هنگام حل معادله درجه دوم حالتهای منفی زیر رادیکال را در نظر بگیرد.
روان بودن متـن الگوریتم
دستورالعملها گویا بوده و منظور آنها بسادگی درک شود.
حداقل بودن تعداد دستورات و جملات
اسلاید 14 :
ایجاد حلقه های تکرار(Loops)
گاهی اوقات برای حل مساله باید یک یا چند مرحله از دستورات را تکرار نمود.
به مراحلی از الگوریتم که اجرای آنها چندین بار تکرار می شود حلقه (Loop) و یا حلقه تکرار گفته می شود
بطور کلی حلقه های تکرار از اجزای زیر تشکیل شده است:
شمارنده حلقه (Counter)
یک متغیر کمکی که پیش از شروع حلقه به آن مقدار اولیه داده می شود
از طریق آن می توان تعداد دفعات تکرار حلقه را نشان داد.
گام افزایش (Step)
مقداری که پس از هر بار مراحل حلقه به شمارنده اضافه می شود.
شرط پایانی
مقدار و یا متغیری است که پس از اجرای دستورات حلقه با شمارنده حلقه مقایسه می گردد و زمان پایان اجرای دستورات حلقه را مشخص می سازد.
بدنه حلقه
دستورالعملها و جملاتی که عملیات اصلی حلقه را تشکیل می دهند.
اسلاید 15 :
استفاده از الگوریتم های فرعی
با بزرگتر و پیچیده تر شدن مساله، الگوریتم آن نیز پیچیده و بزرگتر خواهد شد.
پیچیده شدن الگوریتم چندین مشکل بوجود می آورد:
از وضوح و روانی الگوریتم می کاهد
منطق الگوریتم را دشوارتر می سازد.
اشکال زدایی (Debug) و پیدا کردن نقاط ضعف الگوریتم را سخت تر می سازد.
برای رفع این مشکلات از الگوریتم های فرعی استفاده می شود
به این معنی که ابتدا مساله را به تعدادی بخش های مختلف و مستقل تقسیم نمود
و برای هر کدام الگوریتم جداگانه ای نوشت
اسلاید 16 :
استفاده از الگوریتم های فرعی
مثال : الگوریتمی بنویسید که با دریافت دو عدد طبیعی m,n مقدار را محاسبه کند.
بهترین راه حل این مساله این است که:
الگوریتم فرعی برای محاسبه فاکتوریل نوشت مثلا با نام Fact(z) که با دریافت z بعنوان ورودی، فاکتوریل آنرا محاسبه کرده و بر می گرداند.
و در برنامه اصلی از این الگوریتم اصلی استفاده نمود.
A=Fact(m), B=Fact(n), C=Fact(m-n)
=A/(BxC)
اسلاید 17 :
فلوچارت (Flowchart) یا نمودار گردشی
فلوچارت، بیان تصویری الگوریتم با کمک مجموعه ای استاندارد از اشکال ساده می باشد
فلوچارت یکی از روشهای برقراری ارتباط منطقی بین مراحل مختلف حل مساله است.
اشکال استاندارد موجود:
دستورات مقدار دهی و محاسباتی
خیر
بله
اسلاید 18 :
شروع
Read(a,b,c)
Sum a+b+c
Ave sum/3
پایان
فلوچارت محاسبه مجموع و میانگین سه عدد
اسلاید 19 :
مثال: فلوچارتی رسم نمائيد كه دو عدد از ورودي دريافت كرده سپس محتويات دو عدد را با هم جابجا نمايد.
براي حل اين مسئله b , a را دو متغير كه در آنها دو عدد خوانده شده، قرار ميگيرند در نظر ميگيريم. سپس با استفاده از يك متغير كمكي محتويات اين دو عدد را جابجا ميكنيم :