Structurile repetitve executa de un anumit numar de ori acelasi cod. Exista 3 structuri repetitive:
while for do while
1. While
Sintaxa: while ( conditie )
new i = 0 while ( i < 3 ) { client_print(0, print_chat, "i e mai mic decat 3") i++ }
- se evalueaza conditia: 0 < 3 - adevarat. Atunci executa codul trine { }
- printeaza mesajul
- i este incrementat cu 1, devine 0+1 =1
- se evalueaza conditia: 1< 3 - adevarat. Atunci executa codul dintre { }
- printeaza mesajul
- i este incrementat cu 1, devine 1+1=2
- se evalueaza conditia: 2 < 3 - adevarat. Atunci executa codul dintre { }
- printeaza mesajul
- i este incrementat cu1, devine 2+1=3
- se evalueaza conditia: 3 < 3- fals. Structura se opreste
2. For
Sintaxa: for( [variabila]; [conditie]; [incrementare] )
for(new i; i < 4; i++ ) { client_print(id, print_chat, "Test") }
- creeaza variabila
- verifica conditia. Daca este adevarata executa codul, daca nu iese din loop
- executa codul
- incrementeaza variabila
- verifica conditia
- -----------------------
Forul se va executa pentru:
i = 0 ( i e 0 in momentul initializarii )
i = 1
i = 2
i = 3
i = 4 STOP
3. Do While
do { S1 } while( conditie );
- executa blocul de cod S1
- verifica conditia "conditie".
- Daca e adevarata, executa din nou codul S1. Altfel, iese din loop.
Break & continue:
Un loop poate sa fie fortat sa se opreasca intr-un anumit moment, sau sa sara un anumit element. O sa va dau un exemplu pentru for.
Codul de mai jos o sa adune toate numerele de la 0 la 99.
new iNum for( new i; i < 100; i ++ ) { if( i == 3 || i == 34 ) { continue } iNum += i }
- forul o sa ia toate numerele de la 0 la 99
- iful o sa verifice daca numarul este 3 sau 34.
- in cazul in care i este 3 sau 34 va sari peste ele si nu le va aduna
- iNum +=i aduna in iNum numerele de la 0 la 99, cu exceptia numerelor 3 si 34
- continue face loopul sa treaca la iul urmator
for( new i; i < 5; i++ ) { if( i == 3 ) { break } i++ }
- forul o sa ia toate numerele de la 0 la 4
- daca i este 3 o sa iasa fortat din loop
- functia break se foloseste pentru a termina fortat un loop
- i++ incrementeaza variabila i
In orice structura care foloseste { }, daca avem doar 1 singura linie de cod, nu suntem obligati sa folosim { }.
if( ceva ) //cod if( ceva ) { //cod }
Structurile sunt echivalente, insa este mai ordonat daca folosim { }.