برنامه نویسان معمولاً با مشکلات ، الگوریتم ها و برنامه های رایانه ای سر و کار دارند. این سه مفهوم مجزا است. همانطور که شهود شما نشان می دهد ، یک مشکل کاری است که باید انجام شود. از نظر ورودی و خروجی های تطبیق بهتر است. یک تعریف مشکل نباید محدودیت هایی در مورد چگونگی حل مشکل داشته باشد. روش راه حل فقط باید پس از آنکه مشکل دقیقاً تعریف شده و کاملاً درک شده است ، توسعه یابد. با این حال ، یک تعریف مشکل باید شامل محدودیت هایی در منابعی باشد که ممکن است توسط هر راه حل قابل قبول مصرف شود. برای حل هر مشکلی که توسط یک کامپیوتر حل شود ، همیشه چنین محدودیت هایی وجود دارد ، چه بیان شده و چه ضمنی. به عنوان مثال ، هر برنامه رایانه ای ممکن است فقط از حافظه اصلی و فضای دیسک موجود استفاده کند و باید در زمان "معقول" کار کند. مشکلات را می توان به عنوان عملکرد به معنای ریاضی مشاهده کرد. یک تابع تطبیق بین ورودی ها (دامنه) و خروجی ها (دامنه) است. ورودی به یک تابع ممکن است یک مقدار واحد یا مجموعه ای از اطلاعات باشد. مقادیر تشکیل دهنده ورودی پارامترهای عملکرد نامیده می شوند. انتخاب خاصی از مقادیر برای پارامترها نمونه ای از مشکل نامیده می شود. به عنوان مثال ، پارامتر ورودی به یک عملکرد مرتب سازی ممکن است مجموعه ای از اعداد صحیح باشد. مجموعه خاصی از اعداد صحیح ، با اندازه معین و مقادیر خاص برای هر موقعیت در آرایه ، نمونه ای از مشکل مرتب سازی است. نمونه های مختلف ممکن است تولید یکسانی را ایجاد کند. با این حال ، هر نمونه مشکل همیشه باید هر بار که عملکرد با استفاده از آن ورودی خاص محاسبه شود ، در همان خروجی باشد. این مفهوم از تمام مشکلات رفتار مانند عملکردهای ریاضی ممکن است با شهود شما برای رفتار برنامه های رایانه ای مطابقت نداشته باشد. شما ممکن است از برنامه هایی که می توانید در دو نوبت جداگانه همان مقدار ورودی را ارائه دهید ، بدانید و دو خروجی مختلف نتیجه می گیرند. به عنوان مثال ، اگر تاریخ را به یک خط فرمان معمولی لینوکس تایپ کنید ، تاریخ فعلی را دریافت خواهید کرد. طبیعتاً تاریخ در روزهای مختلف متفاوت خواهد بود ، حتی اگر همان فرمان داده شود. با این حال ، بدیهی است که برای برنامه تاریخ برای ورودی بیشتر از دستور که برای اجرای برنامه تایپ می کنید وجود دارد. برنامه تاریخ یک تابع را محاسبه می کند. به عبارت دیگر ، در هر روز خاص فقط می توان یک پاسخ واحد را با یک برنامه تاریخ به درستی در حال اجرا بر روی یک ورودی کاملاً مشخص انجام داد. برای کلیه برنامه های رایانه ای ، خروجی با مجموعه کامل ورودی برنامه کاملاً تعیین می شود.
حتی "ژنراتور شماره تصادفی" با توجه به ورودی های آن کاملاً مشخص می شود (اگرچه به نظر می رسد برخی از سیستم های تولید کننده شماره تصادفی با پذیرش یک ورودی تصادفی از یک فرآیند فیزیکی فراتر از کنترل کاربر ، این مسئله را بدست می آورند). محدودیت هایی که می توان توابع را توسط برنامه ها اجرا کرد ، بخشی از دامنه محاسبه است.
- 8. 2. 1. 2. الگوریتم ها
- باید درست باشدبه عبارت دیگر ، باید عملکرد مورد نظر را محاسبه کند و هر ورودی را به خروجی صحیح تبدیل کند. توجه داشته باشید که هر الگوریتم برخی از عملکردها را پیاده سازی می کند ، زیرا هر الگوریتم هر ورودی را به برخی از خروجی ها می رساند (حتی اگر این خروجی یک خراب برنامه باشد). مسئله در اینجا آورده شده است که آیا یک الگوریتم داده شده عملکرد مورد نظر را پیاده سازی می کند.
- این مجموعه از یک سری مراحل بتونی تشکیل شده است. بتن به این معنی است که عمل توصیف شده توسط آن مرحله توسط شخص یا دستگاهی که باید الگوریتم را انجام دهد کاملاً قابل درک و قابل انجام است. هر مرحله نیز باید در مدت زمان محدود قابل انجام باشد. بنابراین ، این الگوریتم با انجام یک سری مراحل ، "دستور" را برای حل مشکل به ما می دهد ، جایی که هر مرحله از این مرحله در ظرفیت ما است. توانایی انجام یک مرحله می تواند به این بستگی داشته باشد که چه کسی یا چه چیزی برای اجرای دستور العمل در نظر گرفته شده است. به عنوان مثال ، مراحل دستور العمل کوکی در یک کتاب آشپزی ممکن است به اندازه کافی بتونی برای آموزش آشپز انسان در نظر گرفته شود ، اما نه برای برنامه نویسی یک کارخانه ساخت کوکی خودکار.
- هیچ ابهام در مورد کدام مرحله در مرحله بعدی انجام خواهد شد. غالباً مرحله بعدی توضیحات الگوریتم است. انتخاب (به عنوان مثال ، بیانیه IF) معمولاً بخشی از هر زبانی برای توصیف الگوریتم ها است. انتخاب اجازه می دهد تا انتخابی انجام شود که مرحله بعدی انجام شود ، اما روند انتخاب در زمانی که انتخاب انجام می شود ، مبهم است.
- این باید از تعداد محدودی از مراحل تشکیل شود. اگر توضیحات مربوط به این الگوریتم از تعداد نامحدودی از مراحل تشکیل شده بود ، ما هرگز نمی توانیم امیدوار باشیم که آن را بنویسیم و آن را به عنوان یک برنامه رایانه ای پیاده سازی کنیم. بیشتر زبانها برای توصیف الگوریتم ها (از جمله انگلیسی و "شبه کد") راهی برای انجام اقدامات مکرر ، معروف به تکرار ارائه می دهند. نمونه هایی از تکرار در زبانهای برنامه نویسی شامل سازه های مدتی و برای حلقه است. تکرار امکان توضیحات کوتاه را فراهم می کند ، با تعداد مراحل انجام شده توسط ورودی.
باید خاتمه یابد. به عبارت دیگر ، ممکن است به یک حلقه بی نهایت نرود.
8. 2. 1. 3. برنامه ها¶
ما اغلب به یک برنامه رایانه ای به عنوان نمونه یا بازنمایی مشخص از الگوریتم در برخی از زبان برنامه نویسی فکر می کنیم. الگوریتم ها معمولاً از نظر برنامه ها یا بخش هایی از برنامه ها ارائه می شوند. به طور طبیعی ، برنامه های بسیاری وجود دارد که نمونه های یک الگوریتم مشابه هستند ، زیرا می توان از هر زبان برنامه نویسی رایانه ای مدرن برای اجرای همان مجموعه الگوریتم ها استفاده کرد (اگرچه برخی از زبانهای برنامه نویسی می توانند زندگی را برای برنامه نویس آسانتر کنند). برای ساده کردن ارائه ، مردم غالباً با وجود این واقعیت که واقعاً مفاهیم جداگانه ای هستند ، از اصطلاحات "الگوریتم" و "برنامه" به طور متناوب استفاده می کنند. طبق تعریف ، یک الگوریتم باید جزئیات کافی را ارائه دهد که در صورت لزوم می تواند به یک برنامه تبدیل شود.
الزامی که یک الگوریتم باید خاتمه یابد به این معنی است که همه برنامه های رایانه ای تعریف فنی یک الگوریتم را برآورده نمی کنند. سیستم عامل شما یکی از این برنامه ها است. با این حال ، شما می توانید به کارهای مختلف برای یک سیستم عامل (هر یک از ورودی ها و خروجی های مرتبط) به عنوان مشکلات فردی فکر کنید ، هر یک توسط الگوریتم های خاص که توسط بخشی از برنامه سیستم عامل اجرا شده اند ، حل می شود و هر یک از آنها پس از خروجی آن خاتمه می یابدتولید شده.
8. 2. 1. 4. خلاصه¶
Saving.
Server Error Resubmit
استراتژی ترید...
ما را در سایت استراتژی ترید دنبال می کنید
برچسب :
نویسنده : مرجان شیرمحمدی
بازدید : 41
تاريخ : سه
شنبه
26 ارديبهشت
1402 ساعت: 14:27