While petlja
Izvor: Wikipedija
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 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 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.
Sadržaj |
[uredi] Demonstracija while petlji
Ove će petlje izračunati faktorijelu broja 5:
[uredi] QBasic ili Visual Basic
'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.
[uredi] REALbasic
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.
[uredi] C ili C++
unsigned int brojac = 5; unsigned long faktorijela = 1; while (brojac > 0) { faktorijela *= brojac--; /* Množi pa dekrementiraj. */ } printf("%i", faktorijela);
[uredi] Perl
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;
[uredi] PHP
$brojac = 5; $faktorijela = 1; while($brojac > 0) { $faktorijela *= $brojac--; // Množi pa dekrementiraj. } echo $faktorijela;
[uredi] Tcl (Tool command language)
set brojac 5 set faktorijela 1 while {$brojac > 0} { set faktorijela [expr $faktorijela * $brojac] incr brojac -1 } puts $faktorijela
[uredi] Java, C#
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);
[uredi] JavaScript
var brojac = 5; var faktorijela = 1; while (brojac) { faktorijela *= brojac--; // Množi pa dekrementiraj. } document.body.appendChild(document.createTextNode(faktorijela));
[uredi] Pascal
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.
[uredi] Smalltalk
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) ]
[uredi] Python
brojac = 5 faktorijela = 1 while brojac>0: faktorijela *= brojac brojac -= 1 print faktorijela
[uredi] AutoIt
Dim $brojac = 5, $faktorijela = 1 While $brojac > 0 $faktorijela *= $brojac $brojac -= 1 WEnd MsgBox(0,"Faktorijela", $faktorijela)
[uredi] Vidjeti također
- Do while petlja
- For petlja
- Foreach