ورود / ثبت نام
0
0

اموزش c++ خلاصه ای بر عبارات کنترلی (قسمت شانزدهم)

249 بازدید

آموزش c++ خلاصه ای بر عبارات کنترلی (قسمت شانزدهم) را برای همراهان ام اس پی سافت آماده دانلود کردیم. امیدوارم برای همراهان عزیز مفید باشد.

عبارات کنترلی

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

در این فصل به معرفی عبارات if، if..else و while در زبان C++ خواهیم پرداخت. سه بلوک سازنده که به برنامه‌نویسان امکان میدهند تا منطق مورد نیاز توابع عضو را برای انجام وظایف مشخص کنند. بخشی از این فصل و فصل‌های ۵ و ۷ را برای توسعه دادن کلاس GradeBook معرفی شده در فصل سوم اختصاص داده‌ایم. در واقع، یک تابع عضو به کلاس GradeBook اضافه می کنیم که از عبارات کنترلی برای محاسبه میانگین نمرات دانشجویان استفاده میکند. مثال دیگر به معرفی روش‌های ترکیب عبارات کنترلی برای حل مسئله مشابه است. همچنین به معرفی عملگرهای تخصیص‌دهنده و عملگرهای افزاینده و کاهنده در C++ خواهیم پرداخت. این عملگرها سبب کوتاه شدن عبارات و گاهاً سادگی کار می شوند.

 

۲-۴ الگوریتم

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

۱- فعالیت‌ها از نوع اجرای هستند و

۲- فعالیت‌ها به ترتیب اجرا می شوند،

تعریف الگوریتم می باشند. با ذکر مثالی که در زیر آمده می توانید ترتیب اجرا و فعالیت‌ها را ببینید و متوجه شوید که ترتیب اجرا چقدر مهم است. الگوریتم “rise – and – shine” در ارتباط با مراحلی است که یک شخص از هنگام برخواستن از خواب تا رفتن به سرکار انجام می دهد، مراحل: (۱) برخواستن از تختخواب، (۲) پوشیدن لباس راحتی، (۳) دوش گرفتن، (۴) پوشیدن لباس، (۵) خوردن صبحانه، (۶) رفتن به محل کار. این روتین در مورد نحوه انجام کار و ضوابط تصمیم‌گیری می تواند موثر باشد حال اگر ترتیب اجرا به صورت زیر جابجا شود:

(۱) برخواستن از تختخواب، (۲) پوشیدن لباس راحتی، (۳) پوشیدن لباس، (۴) دوش گرفتن، (۵) خوردن صبحانه، (۶) رفتن به محل کار. در این حالت شخص مورد نظر، بایستی به محل کار با لباس خیس برود.

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

۳-۴ شبه‌کد

شبه‌کد (pseudocode) یک زبان مصنوعی و فرمال است که به برنامه‌نویس کمک می کند تا الگوریتم خود را توسعه دهد. شبه‌کد مخصوصاً برای ایجاد الگوریتم‌های مفید است که میخواهیم آنها را تبدیل به برنامه‌های ساخت یافته کنیم شبه‌کد، همانند زبان روزمره انگلیسی است و مزیت آن درک آسان توسط کاربر است، اگر چه جزء زبان‌های برنامه‌نویسی اجرائی نیست. برنامه‌های شبه‌کد توسط کامپیوتر قابل اجرا نیستند. با این همه، شبه‌کدها، می توانند قبل از نوشتن یک برنامه به زبان اجرای مانند C++، برنامه‌نویس را در راه صحیح قرار دهند.

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

int i;

فقط به کامپایلر نوع متغیر i را نشان داده و کامپایلر مکانی در حافظه به این متغیر اختصاص میدهد. اما این اعلان‌ها هیچ عمل اجرائی نظیر ورودی، خروجی یا یک عمل محاسباتی را در زمانی که برنامه اجرا میشود، از خود نشان نمیدهند. تعدادی از برنامه‌نویسان لیستی از متغیرها تهیه کرده و منظور از کاربرد هر متغیر را در ابتدای شبه‌کد قرار میدهند.

اکنون به مثالی از شبه کد نگاه میکنیم که میتواند برای کمک به برنامه‌نویس در ایجاد یک برنامه جمع معرفی شده در شکل ۵-۲ (فصل دوم) نوشته شده باشد. این شبه کد (شکل ۱-۴) متناظر با الگوریتمی است که دو عدد صحیح از کاربر دریافت، آنها را با هم جمع و مجموع آنها را به نمایش در می آورد. با اینکه لیست کامل شبه کد را به نمایش درآورده‌ایم، اما شما را با نحوه ایجاد یک شبه کد از صورت مسئله آشنا خواهیم کرد.

۱ Prompt the user to enter the first integer

۲ Input the first integer

۳

۴ Prompt the user to enter the second integer

۵ Input the second integer

۶

۷ Add first integer and second integer

۸ Display result

شکل ۱-۴ | شبه کد برنامه جمع شکل ۵-۲.

خطوط ۱-۲ متناظر با عبارات موجود در خطوط ۱۳-۱۴ از شکل ۵-۲ هستند. دقت کنید که عبارات شبه کد، عبارات ساده انگلیسی هستند که هر وظیفه در C++ را بیان میکنند. به همین ترتیب، خطوط ۴-۵ متناظر با عبارات موجود در خطوط ۱۶-۱۷ و خطوط ۷-۸ متناظر با عبارات موجود در خطوط ۱۹ و ۲۱ از شکل ۵-۲ هستند.

چندین نکته مهم در شبه کد شکل ۱-۴ وجود دارد. دقت کنید که شبه کد فقط متناظر با کد موجود در تابع main است، به این دلیل که معمولاً از شبه کد برای الگوریتم‌ها استفاده میشود، نه برای کل برنامه. در این مورد، از شبه کد برای عرضه الگوریتم استفاده شده است. تابع موجود در این کد به اندازه خود الگوریتم مهم نیست. به همین دلیل، خط ۲۳ از شکل ۵-۲ (عبارت return) در شبه کد وارد نشده است. عبارت return در انتهای هر تابع main قرار دارد و در الگوریتم اهمیتی ندارد. سرانجام، خطوط ۹-۱۱ از شکل ۵-۲ در شبه کد وجود ندارد چرا که اعلان متغیرها جزء عبارات اجرایی نیستند.

۴-۴  عبارات کنترل

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

در دهه ۱۹۶۰، به دلیل وجود مشکلات فراوان در ایجاد نرم‌افزارهای کاربردی، استفاده از روش‌های کنترل انتقال به عنوان یک زمینه بکار گرفته شد و نشانه آن عبارت goto بود. این عبارت به برنامه‌نویس  اجازه می دهد تا کنترل را به یک مکان ویژه در کل برنامه انتقال دهد. عقیده‌ای که برنامه‌نویسی ساخت یافته نام گرفته بود، تقریباً با برنامه‌نویسی حذف goto یا کاهش آن (goto-less) مترادف شده است.

با تحقیقات Jacopini و Bohm که نشان داد که برنامه‌ها بایستی بدون goto نوشته شوند، دعوت از برنامه‌نویسان به طرف برنامه‌نویسی کاهش استفاده از goto آغاز گردید. اما تا سال ۱۹۷۰ برنامه‌نویسی ساخت یافته جدی گرفته نشد. در نتیجه بکار بردن این روش، توسعه نرم‌افزار و کاهش بودجه‌های ساخت آن مشخص شد. کلید تمام این موفقیت‌ها برنامه‌های ساخت‌یافته‌ای بودند که هم وضوح بالاتر و خطاگیری آسانتری داشتند.

Bohm و Jacopini نشان دادند که تمام برنامه‌ها در سه عبارت کنترلی می توانند نوشته شوند:

  • · عبارت توالی (sequence structure)
  • · عبارت انتخاب (selection structure)
  • · عبارت تکرار (repetition structure)

ساختار توالی در C++

ساختار توالی بصورت توکار درC++ وجود دارد. مگر اینکه آن را به نحوه دیگری هدایت کنید. کامپیوتر مبادرت به اجرای عبارات C++ یکی پس از دیگری و به ترتیبی که نوشته شده‌اند می کند، که این حالت اجرای ترتیبی یا متوالی است. دیاگرام فعالیت UML (Unified Modeling language) به نمایش درآمده در شکل ۲-۴ نشاندهنده یک ساختار توالی است که در آن دو محاسبه به ترتیب انجام می شود. زبان C++ اجازه می دهد تا به هر اندازه که لازم داریم از ساختار توالی استفاده کنیم. همانطوری که بزودی مشاهده خواهید کرد، در هر کجا که یک عمل می تواند موجود باشد، می توانیم چندین عمل را به صورت توالی جایگزین کنیم.

در این شکل، دو عبارت مبادرت به افزودن یک نمره به متغیر مجموع (total) و مقدار ۱ به متغیر counter می کنند. چنین عباراتی را می توان در یک برنامه محاسبه میانگین نمره چند دانشجو مشاهده کرد. برای محاسبه میانگین، مجموع نمرات به تعداد نمرات تقسیم می شود. از متغیر شمارنده (counter) برای نگهداری تعداد نمرات وارد شده استفاده می شود. در بخش ۸-۴ با عبارات مشابهی مواجه خواهید شد.

دیاگرام‌های فعالیت بخشی از UML هستند. یک دیاگرام فعالیت مبادرت به مدل‌سازی روندکار (فعالیت) یک بخش از سیستم نرم‌افزاری میکند. چنین روندهایی میتوانند در برگیرنده بخشی از یک الگوریتم، همانند یک ساختار توالی در شکل۲-۴ باشند.دیاگرام‌های فعالیت‌ مرکب از نمادهای معنی دار، همانند نمادهای وضعیت عمل (یک مستطیل که گوشه‌های چپ و راست آن به سمت بیرون انحناء داده شده‌اند)، لوزی ها و دایره‌های کوچک است. این نمادها توسط فلش‌های انتقال به یکدیگر متصل می شوند که نشاندهنده روند فعالیت می باشند.

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

به دیاگرام فعالیت ساختار متوالی در شکل ۲-۴ توجه کنید. این دیاگرام حاوی دو نماد وضعیت عمل است که نشاندهنده اعمالی هستند که اجرا می شوند. هر وضعیت عمل حاوی یک بیان‌کننده عمل است، “add grade to total” و “add 1 to counter” که مشخص‌کننده عملی هستند که انجام خواهند شد. سایر اعمال می‌توانند محاسباتی یا ورودی/ خروجی باشند.

شکل ۲-۴ | دیاگرام فعالیت یک ساختار توالی.

فلش‌‌ها در دیاگرام فعالیت، بنام فلش‌های انتقال‌ شناخته می شوند. این فلش‌ها نشاندهنده انتقال هستند و بر این نکته دلالت دارند که ترتیب اجرای اعمال به چه صورتی است. برای مثال در شکل ۲-۴ ابتدا grade با total جمع شده و سپس۱ به counter افزوده می شود.

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

همچنین شکل ۲-۴ شامل مستطیل‌های با گوشه‌های خم شده به داخل (سمت راست-بالا) است. این مستطیل‌ها، در UML، نکته (note) نامیده می شوند. نکته‌ها توضیحات اضافی در ارتباط با هدف نمادها در دیاگرام ارائه می کنند. از نکته‌ها می توان در هر دیاگرام UML و نه تنها در دیاگرام‌های فعالیت استفاده کرد. در شکل ۲-۴ از نکته‌های UML برای نمایش کد C++ مرتبط با هر وضعیت عمل در دیاگرام فعالیت استفاده شده است. خط نقطه ‌چین مبادرت به متصل نمودن هر نکته با عنصری می کند که در ارتباط با آن توضیح ارائه می نماید. معمولاً دیاگرام‌های فعالیت، کدC++ پیاده‌سازی کننده فعالیت را عرضه نمی کنند. اما از این نکته‌ها به این منظور در اینجا استفاده کرده‌ایم تا رابطه دیاگرام با کد C++ مربوطه را بهتر نشان دهیم. برای کسب اطلاعات بیشتر در مورد UML به بخش مبحث آموزشی مهندسی نرم‌افزار که در انتهای فصل ۱ الی ۷، ۹، ۱۰، ۱۲ و ۱۳ قرار دارند مراجعه کرده یا از وب سایت www.uml.org بازدید نمایید.

 

عبارات انتخاب در C++

زبان C++ سه نوع عبارت انتخاب تدارک دیده است که در مورد آنها در این فصل و فصل بعدی توضیح خواهیم داد. در عبارت انتخاب if اگر شرط برقرار باشد عبارت یا عبارات داخل بدنه اجرا شده و در صورتیکه شرط برقرار نباشد از روی آن عبارات بدون اجرای آنها عبور خواهد شد. عبارت if..else در صورتیکه شرط برقرار باشد، عبارت (یا دنباله‌ای از عبارات) را انجام داده و در صورتیکه شرط برقرار نباشد، عمل اجرای متفاوتی را به انجام می رساند (یا اجرای توالی از عبارات). عبارت switch که در فصل ۵ به بررسی آن خواهیم پرداخت با توجه به ارزش یک عبارت، یکی از چندین عمل اجرائی را به اجرا در می آورد.

عبارت if را عبارت تک انتخابی (single-selection) می نامند، چرا که یک عمل را انتخاب و اجرا یا آنرا رد می کند. عبارت if..else را عبارت دو انتخابی (double-selection) می نامند، چرا که انتخابی مابین دو حالت متفاوت انجام میدهد. عبارت switch، عبارت چند انتخابی (multiple-selection) نامیده میشود، چرا که از میان موارد متفاوت انتخاب خود را انجام میدهد.

عبارات تکرار در C++

C++ سه نوع عبارت تکرار بنام‌های زیر تدارک دیده است:

  • while
  • do..while
  • for

عبارت تکرار while، در این فصل معرفی خواهد شد و عبارات do..while، و for در فصل ۵ توضیح داده خواهند شد. کلمات if، else، switch، while، do و for همگی جزء کلمات کلیدی C++ هستند (جدول شکل ۳-۴). با بسیاری از این کلمات کلیدی در این کتاب آشنا خواهید شد.

 

C++ Keywords
auto break case char const
continue default do double else
enum extern float for goto
if int long register return
short signed sizeof static struct
switch typedef union unsigned void
volatile while
C++ only keywords
asm bool catch class const_cast
delete dynamic_cast explicit false friend
inline mutable namespace new operator
private protected public reinterpret_cast and
static_cast template this throw true
try typeid typename using virtual
wchar_t and_eq bitand bitor export
not not_eq or or_eq xor_eq

شکل ۳-۴ | کلمات کلیدی C++

خلاصه‌ای بر عبارات کنترلی در C++

C++ دارای سه عبارت کنترلی است، که از این به بعد از آنها بعنوان عبارات کنترلی یاد خواهیم کرد: عبارت توالی، عبارات انتخابی (سه نوع- if, if..else و switch) و عبارات تکرار(سه نوع- while, for و do..while). هر برنامه C++ از ترکیب این عبارات کنترلی ایجاد میشود. همانند عبارت توالی در شکل ۲-۴، می توانیم هر عبارت کنترلی را بصورت یک دیاگرام فعالیت مدل‌سازی کنیم. هر دیاگرام حاوی یک حالت اولیه و یک حالت پایانی است، که به ترتیب نشاندهنده نقطه ورودی (entry point) به عبارت کنترلی و نقطه خروجی (exit point) آن می باشند. عبارات کنترلی تک‌ورودی/تک‌خروجی ایجاد آسانتر برنامه‌ها را ممکن می سازند. نقطه خروجی یک عبارت کنترلی را می توان به نقطه ورودی عبارت کنترلی دیگری متصل کرد و به همین ترتیب ادامه داد. این فرآیند همانند قرار دادن بلوک‌های بر روی هم است، از اینرو این روش، عبارت کنترلی پشته (control structure stacking) نام دارد. این روش یکی از روش‌های موجود برای متصل کردن عبارات کنترلی به یکدیگر است. یک روش دیگر عبارت کنترلی تودرتو یا آشیانه‌ای (control structure nesting) می باشد که در آن یک عبارت کنترلی می تواند در درون عبارت دیگری قرار گیرد. بنابر این الگوریتم‌ها در برنامه‌های C++ فقط متشکل از سه نوع عبارت کنترلی ترکیب شده با این دو روش هستند.

 

  • پسورد: www.mspsoft.com
آیا این مطلب را می پسندید؟
https://www.mspsoft.com/?p=2020
اشتراک گذاری:
واتساپتوییترفیسبوکپینترستلینکدین
مسعود شریفی پور
از سال 88 که با برنامه نویسی آشنا شدم خیلی علاقه مند بودم یک بستر آموزشی بسازم در فضای وب و به انتشار آموزش های در این زمینه بپردازم.حالا یک تیم داریم و با قدرت رو به جلو حرکت میکنیم.
مطالب بیشتر
برچسب ها:

نظرات

0 نظر در مورد اموزش c++ خلاصه ای بر عبارات کنترلی (قسمت شانزدهم)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

هیچ دیدگاهی نوشته نشده است.