2. MQL4 dla początkujących. Część II.

2.12. Operator przerywania return

Operator return przerywa działanie funkcji od miejsca, gdzie program napotka się na ten operator. W przypadku funkcji void OnStart(), która jest główną funkcją skryptu, return zakończy działanie całego skryptu. W przypadku innych typów funkcji return "zwraca” wartość jaką ta funkcja obliczy, o czym można poczytać w lekcjach o funkcjach własnych. Tutaj chciałbym zademonstrować działanie return w głównej funkcji skryptu, tj. wewnątrz OnStart().

Niżej przedstawiam skrypt, który szuka takiego elementu tablicy, wartość którego była by większa niż 100. Jeśli taki się znajdzie, wtedy skrypt wyświetli jego indeks i zaprzestanie dalsze poszukiwania.

Kod 1
#property strict

void OnStart()
  {
//---
   int Array[] =      // deklaracja i inicjalizacja tablicy Array
     {
      1, 2, 4, 8, 16, 32, 64, 128
     };
   int Limit = 100;   // deklaracja i inicjalizacja zmiennej Limit

//--- pętla 'for'
   for(int i = 0; i < 8; i++)
     {
      //---
      if(Array[i] > Limit) // jeśli element tablicy jest większy niż Limit
        {
         // wtedy informujemy o tym użytkownika
         Print("Element tablicy z indeksem " , i ,
               " jest większy niż " , Limit ,
               ". Koniec działania skryptu.");

         /* a następnie przerywamy działanie funkcji OnStart(),
            tj. całego skryptu */

         return;
        }
     }
//---
   Print("Tablica nie zawiera elementów większych niż " , Limit , ".");
//---
  }

W tym kodzie w ciele głównej funkcji skryptu OnStart() najpierw deklarujemy tablicę Array i od razu wypełniamy ją 8 elementami. Tworzymy zmienną Limit, do której będziemy porównywać każdy element tablicy. Następnie, w nagłówku operatora pętli for tworzymy licznik i, przypisując mu od razu wartość 0 (int i = 0). Ilość iteracji ograniczamy do ilości elementów tablicy, tj. do 8 (i < 8) i po każdej iteracji zwiększamy licznik o 1 (i++). Dalej w środku pętli widzimy operator warunkowy if, który sprawdza czy i - ty element tablicy jest większy niż Limit (Array[i] > Limit ).

Jeśli ten warunek będzie fałszywy, wtedy żadne działania zapisane w ciele if nie zostaną zrealizowane. Zaś kiedy wynik porównania stanie się prawdziwy (128 > 100) skrypt przejdzie do realizacji działań zapisanych w ciele if. Tam najpierw funkcja Print() w dzienniku logów terminala poinformuje, że element tablicy z indeksem 7 (cyfra 128) jest większy niż 100. Potem zostanie uruchomiony operator return, który przerwie działanie głównej funkcji skryptu, tj. OnStart(). Wszystko co się znajduje po return zostanie zignorowane.


Przy Limit = 10 skrypt wskaże nam indeks 4 (cyfra 16). Pamiętamy, że w tablicach MQL4 indeksacja elementów zaczyna się od 0, a nie od 1. Operator return w tym przypadku zadziała na 5-ej iteracji (i = 4) i wszystkie kolejne instrukcje zostaną zignorowane.

Przy Limit = 1000 żaden z elementów tablicy nie będzie większy niż 1000 i nie dojdzie do uruchomienia return. Po zakończeniu działania pętli skrypt uruchomi ostatnią funkcję Print(), znajdującą się zaraz po pętli for. W dzienniku logów zobaczymy wpis "Tablica nie zawiera elementów większych niż 1000.".


Operator break przerywa działanie całej funkcji od miejsca, gdzie zostanie on uruchomiony.

Ta strona używa ciasteczek (cookies), dzięki którym serwis może działać lepiej. Dowiedz się więcejZgadzam się