O Unreal Script - [UE1] [UC] 6 Petle i instrukcja GoTo by Raven dnia: 02 Grudzien 2007, 19:53
Petle
     Petle sluza do wykonywania wielokrotnie danej czesci kodu. Podczas ich stosowania nalezy pamietac, zeby liczba powtórzen nie byla zbyt duza, gdyz spowoduje to blad krytyczny UT.

Kod:
Error: "Runaway loop detected (over 100000 iterations)"


Petla for
     Petla for ma postac:

Unreal Script:
  1. for(ustalenie_poczatku; warunek_petli; zwiekszenie_licznika;)
  2. {
  3.      blok instrukcji
  4. }


     i sluzy do wykonania N razy danego bloku instrukcji. Jest przydatna np. w momencie gdy chcemy odczytac wartosci z tablicy:

Unreal Script:
  1. local int i;
  2. for(i=0; i<20; i++;)
  3. {
  4.      BroadCastMessage("Petla for"$i);
  5. }


Petla while

     Petla while ma postac:

Unreal Script:
  1. while (warunek)
  2. {
  3.      blok instrukcji
  4. }


i w przeciwienstwie do petli for mozna ja wykonywac bez okreslenia liczby jej powtórzen - tzn., ze moze byc wykonywana dopóki nie otrzymamy zadanego przez nas wyniku (np. odpowiedniego obiektu).

Unreal Script:
  1. while (i<10)
  2. {
  3.      i++;
  4. }


Instrukcja GoTo
     Jest to jedna z tych uzytecznych instrukcji z którymi nalezy umiec sie obchodzic. Powoduje ona skok do okreslonego miejsca w funkcji. Sklada sie ona z etykiety np.:

Unreal Script:
  1. Etykieta1:


     Która rozpoczyna dany blok funkcji, oraz instrukcji skoku np.:

Unreal Script:
  1. GOTO Etykieta1;


     Nalezy pamietac, ze nie mozna wykonac skoku do etykiet w innej funkcji. Niezwykle wazne takze wlasciwe wykorzystanie. Nie mozna dopuscic aby instrukcja GOTO wpadala w nieskonczone petle:

Unreal Script:
  1. Etykieta1:
  2.   BroadCastMessage("Moja pierwsza instrukcja goto");
  3.   GOTO Etykieta1;


Cos takiego spowoduje nastepujacy blad:

Kod:
Error: "Runaway loop detected (over 100000 iterations)"


     Nalezy zatem wprowadzic jakies ograniczenie, pozwoli zapobiec temu bledowi, np.:

Unreal Script:
  1. Etykieta1:
  2.   BroadCastMessage("Moja pierwsza instrukcja goto");
  3.   if(i<10)
  4.   {
  5.      i++;
  6.      GOTO Etykieta1;
  7.   }


     W tej postaci instrukcja warunkowa pozwoli tylko na 10 kolejnych wywolan instrukcji GOTO. Lekko zmieniona wersja tej instrukcji zostanie omówiona przy okazji stanów.