Histopathology image classification: Highlighting the gap between manual analysis and AI automation

U većini računalnih programskih jezika, while petlja je naredba upravljanja tokom koja dopušta opetovano izvršenje koda u ovisnosti o danom bulovskom uvjetu. While petlja se može shvatiti kao ponavljajuća if naredba.

While konstrukt se sastoji od bloka koda i uvjeta. Uvjet je prvo evaluiran - ako je uvjet logička istina, kod se unutar bloka izvršuje. Ovo se ponavlja sve dok uvjet ne postane lažan. S obzirom na to da while petlja provjeruje uvjet prije izvršenja bloka koda, upravljačka je struktura često poznata kao pred-test petlja. Valja je usporediti s do while petljom koja ispituje uvjet nakon izvršenja petlje.

Primjerice, u C-u (kao i u Javi i C++u, koji koriste istu sintaksu u ovom slučaju), odsječak koda

 x = 0;
 while (x < 3)
 {
    x++;
 }

prvo provjeruje je li x veći od 3, a s obzirom na to da nije, inkrementira ga za 1. Potom opet provjeruje dani uvjet, opet izvršuje, ponavljajući ovaj postupak sve dok varijabla x ne dosegne vrijednost 3.

Valja uočiti da je moguće, u nekim slučajevima čak i poželjno, da se uvjet uvijek evaluira u logičku istinu, stvarajući beskonačnu petlju. Kad se takva petlja hotimice stvori, obično postoji neka druga upravljačka struktura (poznata kao break naredba) koja upravlja terminacijom petlje.

Demonstracija while petlji

Ove će petlje izračunati faktorijelu broja 5:

  'Inicijaliziraj varijable
  Dim brojac as Integer : brojac = 5
  Dim faktorijela as Long : faktorijela = 1
  Do While brojac > 0
    faktorijela = faktorijela * brojac     'Množi
    brojac = brojac - 1                    'Dekrementiraj
  Loop
  Print faktorijela                        'Ispiši rezultat.
  Dim brojac as Integer = 5
  Dim faktorijela as Integer = 1
  While brojac > 0
    faktorijela = faktorijela * brojac     // Množi
    brojac = brojac - 1                    // Dekrementiraj
  Wend
  MsgBox Str( faktorijela )                // Ispiši rezultat.

C ili C++

  unsigned int brojac = 5;
  unsigned long faktorijela = 1;
  while (brojac > 0)
  {
    faktorijela *= brojac--;               /* Množi pa dekrementiraj. */
  } 
  printf("%i", faktorijela);
  my $brojac = 5;
  my $faktorijela = 1;
  while ( $brojac > 0 ) 
  {
      $faktorijela *= $brojac--;           # Množi pa dekrementiraj
  }
  print $faktorijela;

Vrlo slično C i C++ rješenju, s tim da se while petlja mogla također napisati jednom linijom koda:

  $faktorijela *= $brojac-- while $brojac > 0;

While petlje se često koriste za čitanje podataka liniju po liniju (kao što je definirano linijskim separatorom $/) iz otvorenih datotečnih ručica:

  open ULAZ, "<test.txt";
  while ( <ULAZ> )
  {
    print;
  }
  close ULAZ;
 $brojac = 5;
 $faktorijela = 1;
 while($brojac > 0) {
   $faktorijela *= $brojac--; 	          // Množi pa dekrementiraj.
 }
 echo $faktorijela;

Tcl (Tool command language)

  set brojac 5
  set faktorijela 1
  while {$brojac > 0} {
    set faktorijela [expr $faktorijela * $brojac] 
    incr brojac -1 
  }
  puts $faktorijela

Kod za petlju je isti kao i za Javu i C#:

  int brojac = 5;
  long faktorijela = 1;
  while (brojac > 0)
     faktorijela *= brojac--; 		 // Množi pa dekrementiraj.

Za Javu se rezultat ispisuje na sljedeći način:

  System.out.println(faktorijela);

Isto to u C#:

  System.Console.WriteLine(faktorijela);
var brojac = 5;
var faktorijela = 1;
while (brojac)
{
  faktorijela *= brojac--; 		// Množi pa dekrementiraj.
}
document.body.appendChild(document.createTextNode(faktorijela));
  program Faktorijela;
  var
    Brojac, Faktorijela: integer;
  begin
    Brojac := 5;
    Faktorijela := 1;
    while Brojac > 0 do begin
      Faktorijela := Faktorijela * Brojac;
      Brojac := Brojac - 1;
    end;
    Write(Faktorijela);
  end.

Suprotno drugim jezicima, u Smalltalku while petlja nije jezični konstrukt već je definirana u klasi BlockClosure kao jednoparametarska metoda, tijelom kao zatvorenošću, rabeći samu sebe kao uvjet.

 | brojac faktorijela |
 brojac := 5.
 faktorijela := 1.
 [ brojac > 0 ] whileTrue: 
     [ faktorijela := faktorijela * (brojac := brojac - 1) ]
  brojac = 5
  faktorijela = 1
  while(brojac>0):
        faktorijela *= brojac
        brojac -= 1
  print(faktorijela)
  Dim $brojac = 5, $faktorijela = 1
  While $brojac > 0
     $faktorijela *= $brojac
     $brojac -= 1
  WEnd
  MsgBox(0,"Faktorijela", $faktorijela)

Vidjeti također