Циклус for

Циклус for је најједноставнија наредба циклуса. У овом цикулсу постоји променљива која у свакој итерацији, тј. приликом сваког проласка кроз петљу, узима по једну вредност из неког унапред задатог скупа. Ова променљива се назива "бројач". Тако да се тело петље извршава по једном за сваку вредност бројача из датог скупа вредности.

*** Пример из свакодневног живота којим можемо илустровати for петљу: Наставник крене редом из дневника да прозива ученике и да их пита ко је урадио домаћи. (Овде је задати скуп управо списак редних бројева ученика у дневнику)

Синтакса наредбе for је следећа:


for (izraz1; izraz2; izraz3)
{
    naredba (ili grupa naredbi);
}

Све наредбе које се налазе између знакова { и } називају се тело петље.

Сваки од израза izraz1, izraz2 и izraz3 може бити изостављен, али оба симбола ; и у том случају морају бити присутна. Наредба у телу петље може бити проста или сложена. Izraz1 се израчунава само једном и његова улога је најчешће иницијализација бројача. Izraz2 је логички израз који се представља као услов који се проверава пре сваког извршења наредбе. Након сваке итерације (понављања), односно након сваке наредбе у телу петље израчунава се izraz3. Уколико је изостављен izraz2, сматра се да је његова истинитосна вредност ТАЧНО.

For петља се ивршава на следећи начин:

  1. Израчунава се izraz1.
  2. Израчунава се izraz2 који се тумачи као услов и ако је тај услов испуњен, тада се извршава наредба.
  3. Израчунава се izraz3 који се још назива и корак.
  4. Понавља се други корак и ако је поново услов испуњен, извршава се наредба и понавља трећи корак.
  5. Поново се проверава услов у izrazu 2 и тако редом. Када услов, који је представљен у izrazu 2 више није испуњен, тада се напушта петља.

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


for ( ; ; )
. . .

Циклус for можемо представити и блок дијаграмом.(Слика 8.1)

Слика 8.1. Приказ for петље

*** Пример из свакодневног живота: Сада ћемо видети како ради for петља на примеру са наставником и домаћим задатком.
Прво наставник отвори дневник и зна да у одељењу има нпр. 30 ученика. Он креће од ученика који је под редним бројем 1 у дневнику. То што креће од ученика који је први у дневнику јесте иницијализација бројача бројем 1.

Затим постави себи један услов, а то је питање да ли je дошао до краја прозивника.

Ако је редни број ученика мањи или једнак од 30, тј. ако је услов испуњен наставник погледа да ли је ученик на часу и ако јесте пита ученика да ли је урадио домаћи и прибележи у својој свесци оно што ученик каже. Уколико ученик није ту наставник прелази на следећег ученика. Управо ово проверавање да ли је ученик присутан на часу, а потом питање да ли је урадио домаћи задатак и бележење учениковог одговора одговара телу петље. Односно, овде имамо групу наредби, а то је:

  1. проверити да ли је ученик на часу,
  2. питати ученика да ли је урадио домаћи и
  3. прибележити његов одговор.


Затим наставник прелази на следећег ученика и понавља исти поступак. Овај прелазак на следећег ученика одговара увећавању нашег бројача, тј. представља један корак. У овом случају то је повећање редног броја ученика за један, односно прозивка ученика који је следећи у дневнику. Тада наставник опет проверава да ли је ученик на часу, ако јесте пита да ли је урадио домаћи и бележи одговор, а ако није прелази на следећег ученика.

Када наставник заврши са проверавањем домаћег задатка код последњег ученика у дневнику, он прекида овај циклус зато што је стигао и проверио домаћи задатак код ученика који је под редним бројем 30. Односно, дошао је до последњег ученика у прозивнику и више нема кога да проверава. Сада када је наставник дошао до краја овог циклуса, он прелази на следећу наредбу, односно наставник наставља даље са својим часом (предаје ново градиво или вежба задатке са ученицима).

Пример 1. Написати програм који притиском на командно дугме ODREDI узима природан број n који је корисник унео, израчунава збир првих n природних бројева и исписује резултат на екрану.

Решење:

  1. label1 - у овој лабели ћемо написати Broj n:
  2. textBox1 - у ово поље ће наш корисник да уноси одговарајући податак, тј. унеће природан број n
  3. button1 - ово је наше контролно дугме и на њему ћемо написати ODREDI
  4. label2 - у овој лабели ћемо исписивати резултат нашег задатка
Слика 8.2. Изглед форме у Примеру 1

int n = int.Parse(textBox1.Text);
int zbir = 0;

if (n > 0)
{
    label2.Text =  "Zbir prvih " + n +  " prirodnih brojeva je ";
    for (int i = 1; i <= n; i++)
        //Na prethodnu vrednost promenljive zbir mi dodajemo tekucu vrednost naseg brojaca i.
        //Ovaj postupak se ponavlje dokle god je ispunjen uslov, tj. dok vazi i<=n .
        zbir = zbir + i;     
         
    label2.Text = label2.Text + zbir;
}

else 
{
    MessageBox.Show( "Unesite prirodan broj n!");
    textBox1.Text =  "";
}
Слика 8.3. Изглед форме у Примеру 1 ако је унос исправан Слика 8.4. Изглед форме у Примеру 1 ако унос није исправан