201311141855


Voo juhtimine
-------------

    Democracy -- Power. Demo version.

Reeglina operaatoreid täidetakse tavaliselt ülevalt alla sellises järjekorras, milles nad ilmuvad. Voo juhtimise operaatoreid võib jagada kolmeks liigiks (Java, [1]):

  - Otsuste langetamine (if-then, if-then-else, switch)
  - Tsüklid (for, foreach, while, do-while)
  - Tagastamine (break, continue, return)
  
Tutvuda selliste konstruktsioonidega on kõige parem sellise koodi abil, mis detailselt trükib välja järjekorda, milles instruktsioone täidetakse. Katsealuse koodi kontrollimiseks tuleb seda kirjutada // vvv ja // ^^^ ridade vahele (Greenfoot HelloWorld).

1 . foreach . [2]

  List<String> someList = new ArrayList<String>()
  // add "monkey", "cat", "snake" to someList

  for(String item : someList ){
     System.out.println(item);
  }

  int[] test = new int[]{1,4,5,7};
  for (int intValue : test) {
      // do some work here on intValue
  }

Programmeerides, me tihti kirjutame koodi, mis näeb välja selliselt:

  char[] grades = ....
  for(int i = 0; i < grades.length; i++)   // for i goes from 0 to grades.length
      System.out.print(grades[i]);         // print grades[i]

Foreach tsükkel võimaldab meil kirjutada seda mustrit ümber nii, et selle süntaks pole enam ülekoormatud.

  for(char grade : grades)      // foreach grade in grades
      System.out.print(grade);  // print that grade

Lisaks antud süntaks kehtib List (loetelu) tüüpi ning Set (hulk) tüüpi objektide suhtes, mis ei toeta massiivide indekseerimist, kuid kus realiseeritakse (Java Iterable) liidest.


2. For. mitme muutuja juhtum. [3]

  for ( int i = foo(1, 2), j = 0; i < this.board.length; i++, j+=foo())
      if ( j > 10)
          System.out.println();
      else
          System.out.print(this.board[i]);
          
Konstruktsioon for [4]: "käsku täidetakse nii kaua, kuni juhtiv loogiline väljend on "true" (tõde).

Tsükkel for on programmeerimises kõige levinum tsükli tüüp, seega tuleks teda põhjalikumalt uurida. Etapid on järgnevad:

  1. Käivitamine
  2. Loogiline väljend
  3. Keha
  4. Samm

  for (käivitamine; kontroll; samm )
      keha

Sulgudesse kirjutatud etapid (faasid) võib ära jätta. Näiteks

  int a=0; for(;;) if (a++>3) break;
  
Pidage meeles, et käivitamise faasi täidetakse ainult üks kord.

  käivitamine 
  kontroll 
  keha
  samm
  kontroll 
  keha
  samm
  ..
  kontroll
  järgmine operaator
  
Lihtsaim näide :

  for (int x = 0; x < 9; x = x + 1)
      textViewInfo.append("\nx: " + x);

Viited
------

[1]. http://docs.oracle.com/javase/tutorial/java/nutsandbolts/flow.html
[2]. http://stackoverflow.com/questions/85190/how-does-the-java-for-each-loop-work
[3]. http://stackoverflow.com/questions/14533871/initializing-multiple-variables-in-a-for-loop
[4]. http://developer.alexanderklimov.ru/android/java/for.php
