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

