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