Jump to content

- Advertisement -
Photo

[CS16-Scripting] Structuri repetitve


  • Please log in to reply
2 replies to this topic

#1
Andrei;

Andrei;

    Administrator

  • Administrator
  • 3201 posts
  • 398 topics
  • Joined 16-December 12
  • Country: Country Flag

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 { }.


  • SeBi @ CS16 likes this

#2
Razvan-

Razvan-

    Banned

  • Banned
  • 858 posts
  • 95 topics
  • Joined 09-June 13
  • Country: Country Flag
Nu am inteles cum adica iese din loop ?

#3
Andrei;

Andrei;

    Administrator

  • Topic Starter

  • Administrator
  • 3201 posts
  • 398 topics
  • Joined 16-December 12
  • Country: Country Flag

Adica, poti sa opresti structura. Cand folosesti break, loopul se opreste, chiar daca mai are cazuri de verificat.

new iNum = 10

while( iNum > 0 )
{
    iNum+=10
    if(iNum == 30)
    {
        break;
    }
}

Cand iNum ajunge la valoarea 30, structura de mai sus se opreste si nu va mai aduna 10 in iNum.






1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users