توانایی حل مسائل و الگوریتم و فلوچارت

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

انسان از اغاز افرینش تا کنون همواره در مسیر زندگی خود با مشکلات و مسائل مختلفی روبه رو بوده و برای حل مشکلات خود، همواره راه حل های متفاوتی را تجربه کرده است. از مشکلاتی نظیر خوراک، پوشاک، محل زندگی تا حل مسائل علمی، فلسفی، ریاضی و نظایر انها؛ بنابر این با توجه به نوع مسائل و تجربیات و پیشرفت های علمی، سعی در ارائه راه حل های جدید کرده است. پیدا کردن راه حل برای یک مساله به نوع ان بستگی داردع بعضی از مساله ها به سادگی قابل حل بوده اما بعضی دیگر هنوز هم به سادگی قابل حل نیستند.

برای حل هرگونه مساله جدا از نوع ان می توان موارد زیر را در نظر گرفت:

1.      شناخت دقیق مساله

2.      تجزیه و تحلیل مساله

3.      طراحی راه حل

شناخت مساله

برای شناخت بهتر مساله باید سه عامل مهم را در نظر بگیرید: مقادیر معلوم، خواسته های مساله(مجهولات) و عملیات محاسباتی.

مقادیر معلوم داده ها: مقادیری که در اختیار مساله قرار می گیرند و برای رسیدن به هدف مورد نظر در مساله مورد نیاز هستند.

ارتباط بین داده ها و مجهول ها(محاسبات): برای رسیدن به نتایج مورد نظر معمولا لازم است تا عملیاتی را روی مقادیر معلوم انجام دهید؛ بخش عمده ای از این عملیات با استفاده از فورمول های مختلف انجام می شود؛ البته محاسبات می توانند با توجه به روابط منطقی که بین مقادیر معلوم و خواسته های مساله وجود دارند، انجام گیرد.

خواسته های مساله(مجهولات): مقادیری هستند که معمولا در اثر انجام عملیات روی مقادیر معلوم حاصل می شوند، البته مجهولات می توانند از روابط منطقی که در حل مساله دخالت می کنند نیز به وجود امده و مورد استفاده قرار گیرند.

به عنوان مثال فرض کنید می خواهیم محیط یک دایره به شعاع دلخواه را محاسبه کنیم. برای حل این مساله با روش ارایه شده، ابتدا مقادیر معلوم  را مورد توجه  قرار می دهیم؛ همانطور که می دانید برای محاسبه هر محیط دایره باید شعاع ان را در اختیار داشته باشیم، بنابر این شعاع دایره(R) به عنوان تنها داده مورد نیاز برای حل مساله کافی است.

محاسباتی که برای رسیدن به محیط دایره لازم است، در واقع فورمول زیر خواهد بود:

P=2*3.14*R

با استفاده از این فورمول ها روابط بین داده های ورودی و نتایج مورد نظر به خوبی تعیین می شود و بالاخره به عنوان مرحله آخر، خواسته مساله(مجهول)که همان محیط (P) دایره است به دست می اید.

تمرین: مقادی معلوم، محاسبات و خواسته های مساله را در محاسبات محیط و مساحت یک مستطیل دلخواه مشخص کنید؟

تجزیه و تحلیل مساله

معمولا جستجوی راه حل برای یک مساله، به سادگی امکان پذیر نیست. گاهی اوقات راه حل مساله به سادگی قابل تشخیص است، مانند محاسبه مجموع دو  عدد یا محاسبه مساحت یک دایره اما در برخی مواقع به دلیل پیچیده بودن مساله، لازم است مساله اصلی به چند مساله کوچکتر تقسیم شود که به انها زیر مساله می گویند. سپس هر زیر مساله، مجددا برسی می شمود تا در صورت دشوارید مجددا به زیر مساله های کوچکتر تقسیم شوند و این عمل آن قدر ادامه می یابد تا زیر مساله ها به ساده ترین شکل حل شوند. در این حالت می توان هر زیر مساله را جدا گانه حل کرد و با کنار هم قرار دادن آنها، به حل مساله اصلی دسترسی پیدا کرد. به عنوان مثال اگر مساله ساخت یک اتومبیل باشد پیدا کردن راه حل برای ساخت ان در مرحله اول، کار دشواری است اما اگر اتومبیل را به بخش های مختلف مثل موتور، جعبه دنده و اتاق و بدنه تقسیم کنیم و هر یک از این اجزا را مجددا به کوچکترین جزء، انگاه با طراحی و ساخت اجزای کوچکتر می توان اجزاء بزرگتر را ایجاد کرد و در نهایت به ترکیب اجزای اصلی، طراحی و ساخت یک اتومبیل امکان پذیر خواهد شد.

طراحی راه حل

پس از تحلیل مساله، برای ارائه یک راه حل می توان به دو روش عمل کرد:

1.      استفاده از تجربیات و راه حل های موجود که در حل مسائل دیگر به کار گرفته شده اند.

2.      استفاده از روش های تفکر منطقی و الگوریتمی که حل مساله بر اساس آن صورت گرفته و به صورت مرحله به مرحله انجام می شود. به عنوان مثال فرض کنید می خواهیم تعداد اعداد زوج بین اعداد 1 تا 20 را محاسبه کنیم، یک روش ساده این است که اعداد 1 تا 20 را نوشته و تعداد اعداد زوج  را بشمارید، اما با استفاده از روش تفکر منطقی می توان به این نتیجه رسید که با توجه به این که اعداد زوج یکی در میان قرار می گیرند با تقسیم عدد 20 بر 2 به تعداد 10 عدد دست می یابید که از روش اول هم به همین نتیجه خواهید رسید.

الگوریتم

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

به مجموعه ای از دستورالعمل ها که با زبان دقیق و قابل فهم به همراه جزئیات لازم به صورت مرحله به مرحله به گونه ای اجرا شده که هدف خاصی(حل مساله) را دنبال کنند و شروع و پایان انها نیز مشخص باشد الگوریتم می گویند.

می توان الگوریتم را به یک ماشین تشبیه کرد که مقادیر معلوم را دریافت کرده، روی انها محاسباتی را انجام می دهد و در پایان خواسته های مساله(وجهولات) را ارائه می دهد. در واقع رابطه نزدیکی بین مفهوم الگوریتم و نحوه کار کامپیوتر در حل مسائل وجود داردع بنابر این با استفاده از روش الگوریتم می توانید حل مسائل را به گونه ای طراحی کنید که برای تبدیل به زبان کامپیوتر قابل فهم   باشد. به طور معمول با مفهوم الگوریتم اشنا هستید و از ان استفاده  می کنید، به عنوان مثال وقتی هر روز برای  کسب علم و دانش به دانشگاه می روید، اعمالی را به ترتیب و به صورت دقیق و کامل انجام می دهید یعنی ابتدا از خواب بیدار  می شوید، دست و صورت خود را می شویید، صبحانه می خورید و سپس لباس مناسب به تن کرده و بعد از برداشتن وسایل و کتاب های مورد نیاز از خانه خارج می شویدع مسافتی را طی کرده و به دانشگاه و کلاس خود می روید. اگر هر یک از این اعمال را قبل و بعد از عمل دیگر انجام دهید، هدف مورد نظر که شکل درست به دانشگاه رفتن است، انجام نمی شود. می توان این مراحل را به شکل خلاصه و قابل فهم تری بیان کرد.

·        بیدار شدن از خواب

·        شستن دست و صورت

·        خوردن صبحانه

·        پوشیدن لباس

·        برداشتن کتاب های درسی و دفتر و قلم

·        خروج از خانه

·        رفتن به دانشگاه و ورود به کلاس درس

همه ما روزانه اموری را انجام می دهیم که از نظام خاصی پیروی می کنند، مانند روش مصرف دارو ها تا از بین رفتن کامل علائم بیماری، روش تهیه یک نوع غذای معین، چگونگی رفتن به محل کار، مطالعه موضوعی خاص و تهیه لوازم مورد نیاز روزانه. هر کدام از این امور با روش خاصی انجام می شوند. به نمونه ای از روش مصرف دارو توجه کنید:

تا از بین رفتن کامل علائم روزی سه بار، هر بار یک قاشق چایخوری از این دارو را در یک لیوان آب سرد حل کرده، قبل از غذا میل کنید.

این گونه روش انجام کار را الگوریتم گویند.الگوریتم که به معنی تشریح دقیق مراحل مختلف و نحوه انجام دادن کار بخصوصی است، از نام ابو جعفر محمد بن موسی الخوارزمی ریاضی دان و منجم ایرانی در قرن دوم هجری گرفته شده است.

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

تمرین: مراحل تهیه نان در نانوایی را به صورت مرحله به مرحله بنویسید.

شرایط الگوریتم

پس از اشنایی با مفهوم الگوریتم لازم است که ویژگی های یک الگوریتم را بشناسید.

أ‌.         استفاده از زبان ساده، دقیق و قابل فهم: این ویژگی سبب می شود تا در انجام دستورالعمل ها همواره یک برداشت یکسان حاصل شود، در غیر این صورت برداشت های متفاوت سبب خواهد شد تا دستورالعمل ها نتایج متفاوتی را به وجود اورند. زبان الگوریتم نیز می تواند یکی از زبان های گفتاری و نوشتاری مانند فارسی، انگلیسی و ... باشد.

ب‌.    استفاده از جزئیات کافی: این ویژگی سبب می شود تا دستورالعمل ها به طور کامل اجرا شوند. وجود موارد نا مشخص یا ارایه دستورالعمل ها به صورت کلی و مبهم سبب مخدوش شدن نتایج خواهد شد.

ت‌.    شروع و پایان الگوریتم: در یک الگوریتم باید شروع دستورالعمل ها مشخص باشد. هر الگوریتم یک نقطه شروع دارد که به عنوان ذاولین دستورالعمل از آن استفاده می شود، به علاوه پایان الگوریتم نیز باید تعیین شود. یک الگوریتم می تواند بیش از یک نقطه پایان داشته باشد.

ث‌.    ترتیب انجام دستورالعمل ها: یکی از ویژگی های مهم یک الگوریتم ترتیب اجرای دستورالعمل ها است؛ اگر این کار به درستی انجام نشود، پیش بینی نتیجه کار مشخص نخواهد بود. در یک الگوریتم ترتیب انجام عملیات با استفاده از شماره گذاری دستورالعمل ها از بالا به پایین انجام می شود که البته در صورت نیاز می توان ترتیب اجرای دستورالعمل ها را نیز تغییر داد.

نکته: اگر در حل مسائل سه عامل اصلی را به دقت مشخص کنید، طراحی  یک الگوریتم کار زیاد دشواری نخواهد بود. اگر مقادیر معلوم، خواسته های مساله، فورمولها و روابط ریاضی و منطقی بین انها را به درستی تعیین کنید، نوشتن الگوریتم های مختلف اسانتر خواهد شد.

ج‌.      جامع بودن: الگوریتم باید به شکلی طراحی شود که با توجه به صورت مساله و مفروضات آن در تمام حالت ها، نتایج مناسب و صحیحی را ارائه کرده و در حالت های خاص یا داده های ورودی متفاوتع نتایج درستی را ایجاد کند

نکته:بهتر است در یک الگوریتم از دستورات اضافه که سبب افزایش حجم الگوریتم می شود خودداری نمایید چرا که این کار الگوریتم را شلوغ کرده و باعث سر در گمی می شود.

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

الگوریتم  ها برای حل مساله نوشته می شوند. مشکل ترین بخش حل مساله، طراحی الگوریتم برای ان است. در طراحی الگوریتم، ابتدا مراحل کلی انجام کار را مشخص کنید و با حل هر مرحله اصلی، کل مساله حل می شود.اغلب الگوریتم ها مراحل زیر را دارند:

1.      خواندن داده ها

2.      انجام محاسبات

3.      چاپ نتایج

هر مرحله از الگوریتم،با برسی دقیق، ممکن است به بخش های کوچکتر ی ذتقسیم شود. به عنوان مثال، مرحله انجام محاسبات، یک مرحله کلی است که با پرداختن به مساله، به روابط ریاضی تبدیل می شود که مساله را حل می کند.

اصولا برای حل یک مساله و طراحی الگوریتم برای ان، موارد زیر باید مشخص شوند:

•        تعریف دقیقی از مساله، جهت مشخص کردن نیاز مندی های آن

•        ورودی های مساله

•        خروجی  های مساله

•        بررسی راه حل های مختلف مساله

•        رابطه بین ورودیها و خروجی های مساله

•        انتخاب یک راه حل مناسب و تهیه الگوریتم برای آن راه حل

•        اشکال زدای الگوریتم

برای آشنایی با حل یک مساله و طراحی الگوریتم برای ان مثالی را در نظر می گیریم:

دانشگاهی، در هر ترم، شهریه ثابتی که در طول تحصیل یک دانشجو ثابت است، دریافت می کند. اگر میزان شهریه ثابت مشخص باشد، در مدت 8 ترم، چه مبلغی باید پرداخت کند.

ورودی های مساله

•        میزان شهریهثابت هر ترم

خروجی های مساله

•        مبلغ شهریه ثابت پرداختی به ازای 8 ترم(مبلغ کل)

رابطه بین ورودی ها و خروجی های مساله

  8 × شهریه ثابت ترم = مبلغ کل

در این مساله، تشخیص ورودی، خروجی و رابطه بین انها ساده   است، ولی ممکن است در همهموارد به این سادگی  نباشد و نیاز به فرض ها و تسهیلات خاصی باشد.

مجری الگوریتم

الگوریتم های نوشته شده می توانند توسط افراد یا ماشین اجرا شوند و منظور از اجرای الگوریتم دنبال کردن کلیه دستورات الگوریتم و  اخذ نتیجه مطلوب است. اگر مجری الگوریتم ماشین باشد آن را کامپیوتر  می گویند. مجری الگوریتم بعضی از اعمال را از قبل می داند و بعضی دیگر را نمی داند. به   عنوان مثال، ممکن است مجری الگوریتم مفهوم جمع و تفریق را بداند و مفهوم باقیمانده یک تقسیم را نداند. لذا نویسنده الگوریتم باید از چیز هایی که مجری الگوریتم می داند آگاه باشد و هیچگونه فرضی را در مورد مجری الگوریتم منظور نکند.

روش های بیان الگوریتم

الگوریتم ها را می توان به صورت های مختلفی بیان  کرد که سه نمونه از ان عبارتند از:

1.      بیان الگوریتم با جملات فارسی یا انگلیسی

2.      بیان ریاضی الگوریتم

3.      بیان الگوریتم توسط شکل ها

بیان الگوریتم با جملات فارسی

در این روش، الگوریتم ها بدون استفاده از نماد های خاصی ذکر می شوند. نمونه هایی از این الگوریتم ها را در ادامه مشاهده می کنید.

مثال 1 :  الگوریتمی که مجموعه دو عدد را محاسبه می  کند.

1.      اولین عدد را انتخاب کرده، بر روی کاغذ بنویسید

2.      دومین عدد را گرفته، آن را زیر عددی که بر روی کاغذ نوشتید بنویسید

3.      دو عدد راوی کاغذ را با هم جمع کنید، زیر آن دو عدد را بنویسید

4.      سومین عددی که بر روی کاغذ نوشته شد، مجموع دو عدد است.

5.      پایان

مثال 2 : الگوریتمی که از بین سه عدد، بزرگترین عدد را پیدا می کند.

1.      اولین عدد را به عنوان بزرگترین عدد انتخاب کن و روی کاغذ بنویس

2.      عدد دوم را با عدد روی کاغذ مقایسه کن، اگر از عدد روی کاغذ بزرگتر بود، آن را به عنوان بزرگترین عدد یاداشت کن

3.      اگر عدد سوم، از عددی که به عنوان بزرگترین عدد انتخاب شد، بزرگتر باشد، آن را به عنوان بزرگترین عدد یاداشت کن

4.      عدد روی کاغذ بزرگترین عدد است

5.      پایان

بیان ریاضی الگوریتم

الگوریتم هایی که تاکنون مطرح شدند، به زبان فارسی بیان گردیدند. نوشتن الگوریتم ها به زبان فارسی دارای دو اشکال عمده است:

1.      الگوریتم ها طولانی می شوند

2.      از دستورات الگوریتم تفسیر های گونا گونی می شود

در این قسمت سعی می کنیم مقدماتی را فراهم کنیم که الگوریتم را به جملات ریاضی بیان کنیم. زبان ریاضی زبان دقیق تری نسبت به زبان فارسی یا انگلیسی است. البته بیان ریاضی الگوریتم، تنها را بیان دقیق مراحل الگوریتم نیست و روش های دقیق تری وجود دارند که در ادامه بررسی می شوند. در بیان ریاضی الگوریتم ها با نماد هایی سرو کار داریم.این نماد ها، محل های زخیره ورودی ها و خروجی های الگوریتم هستند. این نماد ها را متغیر می نامیم. به عبارت دیگر می توان متغیر را این گونه تعریف کرد: متغیر نامی است که به کمیتی داده می شود و مقدار ان ممکن است در طول اجرای الگوریتم تغییر کند. به عنوان مثال، در الگوریتم مربوط به پیدا کردن بزرگترین عدد، عدد بزرگتر یک عامل مهم است و باید نامی برای ان انتخاب شود. نامگذاری برای متغیر با ترکیبی از حروف A تا Z و ارقام 0  تا 9 انجام می شود. نام متغیر باید با یکی از حروف شروع شود. نمونه های از اسامی متغیر ها عبارتند از: SUM,X1,Y,M,money,AVERAGE و FIND . 

مثال 3 : الگوریتمی که سه مقدار را از ورودی خوانده، میانگین انها را محاسبه می کند. در این الگوریتم باید برای سه مقداری که از ورودی خوانده می شوند، نامی انتخاب کنیم. نامگذاری برای مجموعه اعداد و  میانگین نیز لازم است.


1.      A و B و C را از ورودی بخوان

2.      A + B + C      SUM

3.      SUM / 3        AVE

4.      AVE را چاپ کن

5.      پایان

متغیر های مورد نیاز

 

 


آنچه از این الگوریتم می آموزیم:

1.      مجری الگوریتم "مفهوم خواندن" را می داند.

2.      علامت + به معنی جمع است و مجری الگوریتم مفهوم جمع را می داند.

3.      علامت       به معنی حکم انتساب است و مقدار سمت راست را در متغیر سمت چپ قرار می دهد.

4.      علامت / به معنی تقسیم اس.

5.      مجری الگوریتم مفهوم چاپ کردن را می داند.

6.       مجری الگوریتم مفهوم پایان را می داند.

7.      مجری الگوریتم مفهوم میانگین را نمی داند، بلکه راه حل محاسبه میانگین را نویسنده باید مشخص کند.


بیان الگوریتم توسط شکل ها


 همانطور که دیدید، در بیان ریاضی الگوریتم، مراحل الگوریتم به صورت دستورالعمل های متوالی تنظیم می شوند.وقتی الگوریتم طولانی باشد و پیچیدگی الگوریتم بیشتر شود، دنبال کردن مراحل الگوریتم دشوار می شود.

بیان الگوریتم توسط شکل ها، به روش های متفاوتی امکان پذیر است. یکی از این روش ها فلو چارت(flowchart)  نام دارد که به ان نمودار گردشی نیز می گویند. این روش را در این فصل مورد بررسی قرار می دهیم.

فلوچارت

در بیان الگوریتم توسط فلوچارت، از تعدادی شکل خواس استفاده می شود که به شرح انها می پردازیم.


مطالب مشابه :


الگوریتم - شبه کد 2

و در خط ۷ هم حلقه کامل می شود. برای بررسی بهتر الگوریتم یک عدد فرضی را در نظر می گیریم و تمام




جواب سوالات تمرینات شماره یک سری دوم

عدد طبیعی n را تام یا کامل گویند هرگاه زیر بدست آورید.الگوریتم را تا سه جمله




آموزش الگوریتم و فلوچارت

در خط ۲ الگوریتم ۲ عدد دلخواه a و b را می گیرد و در آن ها قرار می و در خط ۷ هم حلقه کامل می شود.




سوالات الگوریتم فلوچارت

سوالات الگوریتم که آنقدر عدد از ورودی بگیرد را گرفته تعیین کند که آیا کامل




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

رفتن به محل کار.مثلا روش مصرف دارو تا از بین رفتن کامل عدد بزرگترین الگوریتم های که




الگوریتم

عدد بعدی را به هر حال، چون چارلز بابیج هرگز موتور تحلیلی خود را کامل نکرد، این الگوریتم بر




Algorithm

چاپ عدد ورودي به شرط اول بودن عدد ( به کمک مجموع مقسوم عليه ) Cls. Let S =0. Input N. آموزش کامل




توانایی حل مسائل و الگوریتم و فلوچارت

:: تکنولوژی آموزشی :: - توانایی حل مسائل و الگوریتم و فلوچارت - وبلاگ سعید لطیفی - :: تکنولوژی




برچسب :