حلقه ها چه هستند؟

در حلقه، برنامه یک ترتیب اظهارات را چند بار اجرا می کند تا شرایط مشخص شده اشتباه باشد. حلقه متشکل از دو بخش است، یک حلقه و یک دستور کنترل. بیانیه دستور ترکیبی از برخی از شرایط است که بدن حلقه را اجرا می کند تا زمانی که شرایط مشخص شده اشتباه باشد.

در این آموزش، شما یاد خواهید گرفت –

انواع حلقه ها

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

1. حلقه کنترل ورود

2. خروج از حلقه کنترل

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

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

حلقه نمونه

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

1. هیچ شرایط خاتمه مشخص نشده است.

2. شرایط مشخص شده هرگز مطابقت ندارد.

وضعیت مشخص شده تعیین می کند که آیا حلقه را اجرا کند یا نه.

زبان برنامه نویسی “C” ما را با سه نوع ساختار حلقه ارائه می دهد:

1. حلقه در حالی که

2. حلقه انجام در حالی که

3. برای حلقه

در حالی که حلقه

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

  در حالی که (شرایط) {
              بیانیه؛
 }

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

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

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

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

 #include <stdio.h>
 #include <conio.h>
 int اصلی ()
 {
	 int num = 1؛  // مقداردهی اولیه متغیر
	 در حالی که (num <= 10) / / در حالی که حلقه با شرط
	 {
		 printf ("٪ d \ n"، num)؛
		 شماره ++  // افزایش عمل
	 }
	 بازگشت 0؛
 }

خروجی:

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10

برنامه بالا نشان می دهد استفاده از حلقه در حال اجرا است. در برنامه فوق، ما یک سری از اعداد را از 1 تا 10 با استفاده از یک حلقه مدون چاپ کردیم.

  1. ما متغیری با نام num را با مقدار 1 تعیین کرده ایم. ما از 1 تا 10 چاپ می کنیم، از این رو متغیر مقدار 1 را مقدار دهی می کند. اگر می خواهید از 0 چاپ کنید، سپس مقدار 0 را در حین مقدار دهی اول تعیین کنید.
  2. در یک حلقه زمانی که ما یک شرط (num <= 10) را فراهم کردیم، یعنی حلقه بدن را اجرا می کند تا مقدار num به 10 برسد. بعد از آن حلقه قطع خواهد شد و کنترل خارج از حلقه سقوط خواهد کرد.
  3. در بدن یک حلقه، ما یک تابع print را برای چاپ کردن تعداد ما و عملیات increment برای افزایش ارزش در هر اجرا از حلقه چاپ می کنیم. مقدار اولیه num برابر 1 است، پس از اجرای آن تبدیل خواهد شد 2، و در طی اجرای بعدی، تبدیل خواهد شد 3. این روند ادامه خواهد یافت تا زمانی که مقدار 10 شود و سپس این سری را در کنسول چاپ و حلقه را خاتمه .

\ n برای اهداف قالب بندی استفاده می شود که به این معنی است که مقدار در یک خط جدید چاپ می شود.

آیا در حالی که حلقه

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

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

  انجام دادن {
   بیانیه
 } در حالی که (بیان)؛

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

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

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

تفاوت بحرانی بین حلقه در حالی که و در حالی که در حالی که حلقه در حالی که در ابتدا نوشته شده است. در حلقه do-while، شرط شرطی در انتهای نوشته می شود و با نیم کولون (؛)

برنامه زیر نشان دهنده کار یک حلقه انجام در حالی است که:

ما قصد داریم یک جدول شماره 2 با استفاده از انجام در حالی که حلقه را چاپ کنید.

 #include <stdio.h>
 #include <conio.h>
 int اصلی ()
 {
	 int num = 1؛  // مقداردهی اولیه متغیر
	 // انجام دهید در حالی که حلقه 
	 {
		 printf ("٪ d \ n"، 2 * num)؛
		 شماره ++  // افزایش عمل
	 } در حالی که (num <= 10)؛
	 بازگشت 0؛
 }

خروجی:

  2
 4
 6
 8
 10
 12
 14
 16
 18
 20

در مثال بالا، ما یک جدول ضرب 2 را با استفاده از یک حلقه do-while انجام داده ایم. بیایید ببینیم چگونه برنامه توانست سری را چاپ کند.

  1. ابتدا یک متغیر ‘num’ با مقدار 1 را اولویت بندی کرده ایم. سپس یک حلقه انجام در حالی که نوشته شده است نوشته ایم.
  2. در یک حلقه، ما یک تابع چاپ داریم که مجموعه را با ضرب مقدار num با 2 چاپ می کند.
  3. بعد از هر افزایش، مقدار num به 1 افزایش می یابد و بر روی صفحه نمایش داده می شود.
  4. در ابتدا مقدار num برابر است با 1. در یک حلقه، تابع چاپ به این صورت اجرا می شود: 2 * num که در آن num = 1، و سپس 2 * 1 = 2 از این رو مقدار دو چاپ می شود. این کار تا زمانی ادامه خواهد یافت که مقدار num به 10 برسد. پس از آن حلقه متوقف خواهد شد و بیانیه ای که بلافاصله پس از اجرای حلقه اجرا می شود. در این مورد برگشت 0.

برای حلقه

A برای حلقه یک ساختار حلقه کارآمد در برنامه نویسی C است. ساختار کلی حلقه به شرح زیر است:

 برای (مقدار اولیه؛ وضعیت؛ افزایش یا کاهش) 
 {
   بیانیه؛
 }
  • مقدار اولیه حلقه فقط یک بار انجام می شود.
  • شرط یک عبارت بولین است که بعد از هر تکرار مقادیر ثابت را مقایسه می کند و در صورت بازگشت غلط، حلقه را متوقف می کند.
  • افزایش / کاهش مقدار counter افزایش یا کاهش می یابد.

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

 #include <stdio.h>
 int اصلی ()
 {
	 شماره آی تی؛
	 برای (شماره = 1؛ تعداد <10؛ تعداد ++) // برای حلقه برای چاپ 1-10 عدد
	 {
		 printf ("٪ d \ n"، شماره)؛  // برای چاپ شماره
	 }
	 بازگشت 0؛
 }

خروجی:

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10

برنامه فوق از سری 1 تا 10 برای حلقه استفاده می کند.

  1. ما یک متغیر از نوع داده ای int را برای ذخیره مقادیر اعلام کردیم.
  2. در حلقه، در بخش مقداردهی اولیه، مقدار 1 را به متغیر شماره اختصاص داده ایم. در شرایط شرطی، وضعیت ما و سپس بخش افزایش را مشخص کردیم.
  3. در بدن یک حلقه، ما یک تابع چاپ برای چاپ اعداد در یک خط جدید در کنسول داریم. ما یک مقدار را که در تعداد ذخیره شده است، پس از تکرار اول مقدار افزایش می یابد و تبدیل خواهد شد 2. در حال حاضر متغیر شماره دارای مقدار 2. شرایط دوباره بررسی خواهد شد و از آنجا که شرط حلقه درست اجرا خواهد شد، و دو صفحه روی آن چاپ می شود. این حلقه تا زمانی که مقدار متغیر به 10 برسد، اجرای آن را ادامه می دهد. پس از آن حلقه قطع خواهد شد و یک سری از 1 تا 10 روی صفحه نمایش چاپ می شود.

در C، برای حلقه می تواند عبارات متعدد جدا شده با کاما در هر بخش داشته باشد.

مثلا:

 برای (x = 0، y = num؛ x <y؛ i ++، y--) { 
   بیانیه؛ 
 }

همچنین، با اضافه کردن یک نقطه به نقطه، می توانیم عبارت ارزش اولیه، شرط و / یا افزایش را از بین ببریم.

مثلا:

 int i = 0؛
 int max = 10؛
 برای (؛ i <max؛ i ++) {
   printf ("٪ d \ n"، i)؛
 }

توجه داشته باشید که حلقه ها نیز می توانند در یک حلقه بیرونی و یک حلقه درونی وجود داشته باشند. برای هر تکرار حلقه بیرونی، حلقه درونی تمام چرخه خود را تکرار می کند.

مثال زیر را در نظر بگیرید که با استفاده از nested برای حلقه خروجی یک جدول ضرب:

 #include <stdio.h>
 int main () {
 int i، j؛
 جدول int = 2؛
 int max = 5؛
 برای (i = 1؛ i <= table؛ i ++) {// حلقه بیرونی
   برای (j = 0؛ j <= max؛ j ++) {// حلقه داخلی
     printf ("٪ dx٪ d =٪ d \ n"، i، j، i * j)؛
   }
   printf ("\ n")؛  / * خط خالی بین جداول * /
 }}

خروجی:

 1 x 0 = 0
 1 × 1 = 1
 1 x 2 = 2
 1 × 3 = 3
 1 × 4 = 4
 1 × 5 = 5

 2 x 0 = 0
 2 x 1 = 2
 2 x 2 = 4
 2 x 3 = 6
 2 x 4 = 8
 2 × 5 = 10

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

حلقه های توپی در اغلب موارد در برنامه های کاربردی آرایه استفاده می شود که در آموزش های بیشتر مشاهده خواهیم کرد.

تقسیم بیان

بیانیه جملگی به طور عمده در بیانیه سوئیچ استفاده می شود. همچنین برای فورا متوقف کردن یک حلقه مفید است.

ما برنامه زیر را در نظر می گیریم که یک توقف برای خروج از یک حلقه در نظر می گیرد:

 #include <stdio.h>
 int main () {
 int num = 5؛
 در حالی که (num> 0) {
   اگر (num == 3)
     زنگ تفريح؛
   printf ("٪ d \ n"، num)؛
   num--؛
 }}

خروجی:

 5
 4

بیانیه ای ادامه دهید

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

مثلا:

 #include <stdio.h>
 int main () {
 int nb = 7؛
 در حالی که (nb> 0) {
   nb--؛
   اگر (nb == 5)
     ادامه هید؛
  printf ("٪ d \ n"، nb)؛
 }}

خروجی:

 6
 4
 3
 2
 1
 0

بنابراین، مقدار 5 از بین رفته است.

کدام حلقه برای انتخاب؟

انتخاب یک حلقه همیشه یک کار سخت برای یک برنامه نویس است، برای انتخاب یک حلقه مراحل زیر را انجام دهید:

  • مشکل را بررسی کنید و بررسی کنید که آیا نیاز به یک تست پیش آزمون یا یک حلقه پس آزمون است.
  • اگر قبل از آزمون مورد نیاز است، از مدتی یا برای یک حلقه استفاده کنید.
  • اگر پس از آزمون مورد نیاز است، از یک حلقه انجام در زمان استفاده کنید.

خلاصه