0
logo

آموزش ++C | بخش ششم – حلقه ها در C++

++C, برنامه‌نویسی

۱۳۹۷/۰۸/۱۴

توسط : محمد نصر

62 بازدید

ساختار تکرار و حلقه در ++C

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

حلقه چیست؟

برنامه زیر را در نظر بگیرید که عبارت Hello را چاپ می کند.

فرض کنید بخوایم به تعداد 15 بار این عبارت روی کنسول چاپ شود. دقیقا کاربرد حلقه ها همین است. وظیفه حلقه ها تکرار مجموعه ای از دستورات به تعداد متناهی یا نامتناهی است. حلقه های انواع مختلفی دارد که در ادامه بیان می شود.

حلقه while

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

اگر به برنامه فوق دقت کنید، متوجه می شوید که مقدار اولیه n صفر است و چون عبارت شرطی n <= 5 همواره درست است، حلقه بی نهایت بار اجرا می شود تا زمانی که خطای سرریز حافظه رم باعث توقف برنامه شود. مگر اینکه در انتهای بلاک while یک واحد به n افزوده شود.

بعد از 6 بار اجرا شدن حلقه مقدار n مساوی 6 می شود و شرط n <= 5 نادرست شده و حلقه پایان می یابد.

حلقه while نامتناهی

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

چون عبارت شرطی داخل while همواره برابر 1 یعنی صحیح است پس حلقه همیشه اجرا می شود.

حلقه do-while

فرم کلی این حلقه بصورت زیر است:

حلقه do-while شبیه به حلقه while است با این تفاوت که چه شرط درست باشد و چه غلط، حداقل یکبار اجرا می شود و همیشه در انتهای حلقه عبارت شرطی چک خواهد شد. به مثال زیر توجه کنید:

در کد فوق یکبار عبارت Hello چاپ می شود و چون شرط n == 5 همواره غلط است، حلقه تمام می شود.

نکته : درصورتی که بخواهیم از حلقه با تعداد تکرار معین استفاده کنیم بهتر است از حلقه for استفاده شود.

حلقه for

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

مقداردهی اولیه” فقط و فقط یکبار و در ابتدای ورود به حلقه اجرا می شود. “شرط حلقه” که یک عملگر مقایسه ای است و قبل از شروع هر تکرار چک می شود. “گام حلقه” می تواند هر عمل انتسابی (جمع، تفریق، ضرب، تقسیم) و یا دستورات افزایش و کاهش یک واحدی باشد و همواره پس از پایان یافتن هر تکرار اجرا می شود. به کد زیر توجه کنید:

ابتدا متغیر n با مقدار اولیه 5 تعریف می شود اما در آغاز حلقه for مقدار 0 به آن داده می شود. پس مقداردهی اولیه n تاثیری در عملکرد for ندارد. در ادامه هر بار که حلقه اتمام می شود یک واحد به n اضافه می شود تا اینکه شرط n < 5 نادرست شده و حلقه پایان یابد. نتیجه کد بصورت زیر می شود:

بیاید یک مثال دیگر بزنیم. فرض کنید به برنامه بالا تنها یک خط در انتهای for اضافه کنیم که 2 واحد به n اضافه کند. بصورت زیر:

در مرحله اول n = 0 است و در انتهای حلقه 2 واحد به آن اضافه می شود یعنی n = 2 خواهد شد. سپس گام حلقه اجرا می شود و یک واحد به n اضافه می شود ( در این مرحله n = 3 است). حال شرط حلقه چک می شود و چون n < 5 صحیح است، حلقه برای بار دوم اجرا می شود. پس از پایان حلقه و اضافه شدن 2 واحد (n = 5)  گام حلقه هم اجرا می شود (n = 6). حال شرط حلقه چک می شود و شرط n < 5 نادرست است و حلقه تمام می شود. در نتیجه خروجی برنامه با توجه به 2 بار تکرار به شکل زیر خواهد شد:

حلقه for نامتناهی

عملکرد این حلقه مانند حلقه while با عبارت شرطی 1 است. طرز نوشتن آن بصورت زیر است:

به عنوان مثال:

در این عبارت Hello بی نهایت بار چاپ می شود تا جایی که حافظه رم پر شده و برنامه پایان یابد.

دستور break

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

در این برنامه یک حلقه while با تعداد تکرار بی نهایت داریم که هر بار عددی را از ورودی می خواند و درون متغیر input ذخیره می کند. تنها زمانی حلقه پایان می پذیرد که عدد وارد شده برابر 36 شود. در این صورت شرط if صحیح شده و break اجرا می شود. با خارج شدن از حلقه عبارت Loop is ended چاپ خواهد شد که بیانگر اتمام حلقه است.

دستور continue

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

مقدار اولیه n صفر است و در هر بار اجرای حلقه عبارت Hello چاپ می شود، به غیر از یک حالت. اگر n == 3 شود، دستور continue اجرا شده و اینبار حلقه از ابتدا اجرا خواهد شد. بنابراین با احتساب مقادیر 0 تا 4 برای n (بجز مقدار 3)، به تعداد چهار بار رشته Hello روی کنسول نوشته می شود.

حلقه های تودرتو

گاهی لازم است که از دو حلقه درون هم استفاده شود. بیشترین استفاده از حلقه های تودرتو در آرایه هاست که در جلسات آینده در مورد آن بحث می شود. به عنوان مثال:

نکته : می توان در قسمت مقداردهی اولیه دستور for، متغیر را تعریف و سپس مقدار اولیه داد. در این حالت آن متغیر فقط و فقط درون بلاک حلقه for در دسترس است و بعد و قبل آن شناخته شده نیست.

در برنامه بالا حلقه درونی پس از 4 بار تکرار شدن تمام شده و دستور بعد از آن عبارت خط ممتد را چاپ می کند. این مرحله تنها یکبار تکرار حلقه بیرونی است. پس با سه بار اجرا شدن حلقه بیرونی نتیجه برنامه به شکل زیر خواهد شد:

این جلسه از آموزش هم به اتمام رسید. امیدوارم مفید بوده باشد.

با رزدینو در جلسه هفتم آموزش ++C همراه باشید😛

محمد نصر

تاریخ عضویت : ۰۳ خرداد ۱۳۹۸

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

راه آسان‌تری برای ارتباط با کاربران‌مان پیدا کرده‌ایم :) عضویت در کانال

چنانچه دیدگاهی توهین آمیز باشد و متوجه اشخاص مدیر، نویسندگان و سایر کاربران باشد تایید نخواهد شد.

چنانچه دیدگاه شما جنبه ی تبلیغاتی داشته باشد تایید نخواهد شد.

چنانچه از لینک سایر وبسایت ها و یا وبسایت خود در دیدگاه استفاده کرده باشید تایید نخواهد شد.

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

چنانچه دیدگاهی بی ارتباط با موضوع آموزش مطرح شود تایید نخواهد شد.