Иди на текст

Цикличне структуре

У програмском језику C#, поред наредби for, while и do-while, често се користи и наредба foreach која не постоји у програмском језику C.

Наредба бројачког циклуса

Наредба циклуса for користи се за петље са коначним, унапред одређеним бројем понављања и има следећи општи облик:

for (izraz1; izraz2; izraz3)
    naredba

izraz1 извршава се само једном по уласку у петљу. Користи се за иницијализацију или доделу почетних вредности. Ако их има више, почетне вредности се међусобно одвајају оператором ,. izraz2 представља управљачки израз, тј. услов изласка из петље, а његова тачност проверава се у свакој итерацији петље. Дотле се izraz3 извршава у свакој итерацији петље и служи за ажурирање вредности бројача. Вредност бројача утиче на тачност управљачког израза, а операција ажурирања бројача најчешће је инкрементација. naredba представља тело петље, које чини или једна наредба или блок наредби сачињен од појединачних наредби записаних између витичастих заграда. У следећем примеру...

for (int i = 0; i < 3; i++)
{
    Console.WriteLine(i);
}

...променљива i иницијализована је вредношћу 0. Пошто је 0 < 3, у конзоли се исписује 0. Ажурира се вредност i на 1. Пошто је 1 < 3, у конзоли се исписује 1. Ажурира се вредност i на 2. Пошто је 2 < 3, у конзоли се исписује 2. Ажурира се вредност i на 3. Пошто није 3 < 3, прекида се извршавање петље. Подсети се и да је променљива i у примеру изнад "видљива" само у петљи јер је декларисана у оквиру израза за иницијализацију.

Петље је могуће угнежђавати исто као и у програмском језику C.

Наредба циклуса за колекције

Наредба foreach користи се за итерације кроз колекције. Општи облик наредбе може се представити овако:

foreach (izraz in kolekcija)
    naredba

Обично се у изразу наводе тип и идентификатор, док колекција може да представља низ, стринг или другу колекцију података која може бити набројива. Наредба представља тело петље које чини или једна наредба или блок наредби сачињен од појединачних наредби записаних између витичастих заграда. У следећем примеру...

int[] arr = { 5, 1, 9, 7, 0, 3, 6, 8, 4, 2 };
for (int i = 0; i < arr.Length; i++)
{
    Console.WriteLine(arr[i]);
}

...колекција је низ arr сачињен од десет целих бројева. Да би се у конзоли исписали елементи датог низа, потребно је извршити n итерација кроз низ, где је n једнако броју елемената низа. У свакој итерацији потребно је проверавати и ажурирати стање бројача. У оваквој ситуацији много је једноставније, односно елегантније решење са foreach петљом.

int[] arr = { 5, 1, 9, 7, 0, 3, 6, 8, 4, 2 };
foreach (int i in arr)
{
    Console.WriteLine(arr[i]);
}

Наредба циклуса са предусловом

Наредба циклуса while користи се за циклусе са неодређеним бројем понављања и извршава се све док је израз у заглављу тачан. Општи облик наредбе је следећи:

while (izraz)
    naredba

Управљачки израз, односно услов за излазак из петље, налази се у заглављу петље, па се због тога ова петља назива "петља са предусловом". Тело петље може бити једна наредба или блок наредби које чине наредбе записане између витичастих заграда. Прво се проверава тачност управљачког израза, па ако је он тачан, извршава се тело петље и ток програма се враћа на проверу тачности управљачког израза. Поступак се понавља све док је управљачки израз тачан. Ако је управљачки израз нетачан, излази се из петље. У следећем примеру...

int i = 0;
while (i < 3)
{
    Console.WriteLine(i);
    i++;
}

...у петљу се улази након декларације и иницијализације целобројне променљиве i = 0. Израз 0 < 3 у заглављу петље је тачан, па се прелази на извршавање тела петље - у конзоли се исписује тренутна вредност променљиве i која износи 0, променљива i се инкрементира и добија вредност 1. Управљачки израз 1 < 3 је и даље тачан, па се у конзоли исписује 1, променљива i се инкрементира и добија вредност 2 и тако редом. Да у телу петље није обезбеђен механизам за промену вредности која утиче на вредност управљачког израза, израз i < 3 био би увек тачан и петља би постала бесконачна. Када променљива i добије вредност 3, управљачки израз 3 < 3 постаће нетачан и излази се из петље.

Наредба циклуса са постусловом

Наредба циклуса do-while користи се такође за циклусе са неодређеним бројем понављања. Општи облик наредбе је следећи:

do
    naredba
while (izraz)

За разлику од петље while, код петље do-while управљачки израз наводи се на крају петље, па се због тога назива петља са постусловом. Тело петље може бити једна наредба или блок наредби које чине наредбе записане између витичастих заграда. По уласку у петљу прво се извршава тело петље, па се онда проверава тачност управљачког израза. То значи да ће се тело петље извршити макар једном, без обзира на тачност управљачког израза. Ако управљачки израз јесте тачан, поново се извршава тело петље. Поступак се понавља све док је управљачки израз тачан. Ако је управљачки израз нетачан, излази се из петље. То значи да се у оквиру блока наредби мора обезбедити механизам за промену вредности које утичу на вредност управљачког израза, како се не би креирала бесконачна петља. У следећем примеру...

int i = 0;
do
{
    Console.WriteLine(i);
    i++;
} while (i < 3);

...у петљу се улази након декларације и иницијализације целобројне променљиве i = 0. Одмах се извршава тело петље и у конзоли се исписује вредност променљиве i која износи 0, па се променљива i инкрементира и добија вредност 1. Управљачки израз 1 < 3 је и даље тачан, па се у конзоли исписује 1, променљива i се инкрементира и добија вредност 2 и тако редом. Поступак се понавља све док је израз i < 3 тачан. Да у телу петље није обезбеђен механизам за промену вредности која утиче на вредност управљачког израза, израз i < 3 био би увек тачан и петља би постала бесконачна. Када променљива i добије вредност 3, управљачки израз 3 < 3 постаће нетачан и излази се из петље.