C# Takrorlash operatori (While, Do While)

C# tilidagi yana bir sikl ifodasi while ifodasidir. Quyida ushbu operatorning umumiy shakli keltirilgan:

while (shart) operator;

bu yerda operator bitta operator yoki operatorlar bloki bo'lib, shart siklni boshqarish uchun maxsus shartni bildiradi va har qanday mantiqiy ifoda bo'lishi mumkin. Bu siklda, shart rost bo'lsa, operator bajariladi. Shart yolg’on bo'lishi bilan dasturni boshqarish sikldan keyin darhol kod qatoriga o'tkaziladi.

For siklida bo'lgani kabi, while sikli ham sikl boshida ko'rsatilgan shartli ifodani tekshiradi. Bu shuni anglatadiki, siklning tanasidagi kod umuman bajarilmasligi mumkin, shuningdek, siklning o'zidan oldin alohida tekshirishni amalga oshirish zaruriyatini yo'q qiladi.

C# tilidagi uchinchi sikl operatori do-while operatoridir. Shart sikl boshida tekshirilgan for va while operatorlaridan farqli o'laroq, do-while operatorida siklning bajarilishi sharti eng oxirida tekshiriladi. Bu shuni anglatadiki, do-while sikli har doim kamida bir marta bajariladi. Quyida do-while sikl operatorining umumiy shakli keltirilgan.

          do {
               operatorlar;
	      } while (shart);

Agar faqat bitta operator bo'lsa, bu belgida sistemali qavslar ixtiyoriy. Biroq, ular ko'pincha do-while konstruktsiyasini while sikli konstruktsiyasi bilan adashtirmaslik qavslarni qo’yib ishlatiladi. Do-while sikli shartli ifoda yolg’on boʻlguncha ishlaydi.

C# dagi goto operatori shartsiz o'tish operatoridir. Dasturda goto operatoriga duch kelganda, bajarilish to'g'ridan-to'g'ri ushbu operator ko'rsatgan nuqtaga o'tadi. Goto operatorining dasturlash nuqtai nazaridan asosiy kamchiligi shundaki, u dasturni chigallashtiradi va uni deyarli o'qib bo'lmaydi. Ammo ba'zida goto iborasidan foydalanish dastur oqimini chalkashtirib yuborishdan ko'ra aniqlashtirishi mumkin.

Goto operatori nishonni talab qiladi ya’ni ikki nuqta bilan yozilgan C# identifikatori. Nishon goto iborasi bilan bir xil usulda va bir xil doirada bo'lishi kerak. Quyidagi misol dasturida 1 dan 100 gacha raqamlarni qo'shish sikli goto operatori va mos keladigan nishon yordamida tashkil etilgan.

int х = 1;
 nishon1:
 х++;
if (x < 100) goto nishon1;

Bundan tashqari, goto operatori switch operatoridagi case yoki default bo‘limga shartsiz o‘tish uchun ishlatilishi mumkin. case yoki default bo’limlar switch operatorida teg rolini bajaradi. Shuning uchun ular goto operatorining manzillari bo'lib xizmat qilishi mumkin. Biroq, goto operatori switch operatori ichida bajarilishi kerak. Bu shuni anglatadiki, uni switch operatoriga shartsiz o'tish uchun tashqi vosita sifatida ishlatib bo'lmaydi.

Quyida dasturning joylashtirilgan qismidan chiqish uchun goto operatoridan foydalanishning foydali misollaridan biri keltirilgan.

namespace UzbekDevs
{
   internal class Program 
   { 
       static void Main(string[] args)
       {
           int i = 0, j = 0, k = 0;
           for (i = 0; i < 10; i++)
           {
               for (j = 0; j < 10; j++)
               {
                   for (k = 0; k < 10; k++)
                   {
                       Console.WriteLine("i, j, k: " + i + " " + j +" " + k);
                       if (k == 3) goto stop;
                   }
               }
           }
       stop:
           Console.WriteLine("To'xtatish! i, j, k: " + i + " , " + j + " " + k);
           Console.ReadKey();

       }
   }
}

Dastur natijasi:

i, j, k: 0 0 0 i, j, k: 0 0 1 i, j, k: 0 0 2 i, j, k: 0 0 3

To'xtatish! i, j, k: 0 , 0, 3;

Agar goto operatori bo'lmaganida, dasturning ichki joylashtirilgan qismidan chiqish uchun yuqoridagi dasturda uchta if va break ko'rsatmalariga murojaat qilishi kerak edi. Bunday holda, goto iborasi kodni haqiqatan ham soddalashtiradi. Yuqoridagi misol faqat goto operatoridan foydalanishni ko'rsatish uchun bo'lsa-da, goto operatori aslida foydali bo'lishi mumkin bo'lgan holatlar mavjud.