Czym jest zmienna? Spróbuj sam odpowiedzieć na to pytanie, a ja ci pomogę. Ile masz lat? Ile będziesz miał po pięciu latach? Twój wiek to właśnie zmienna. Inaczej mówiąc jej pierwszą cechą charakterystyczną jest zmienność. Inny przykład, jaki miałeś wzrost w wieku dwóch lat? Najprawdopodobniej o wiele mniejszy, niż teraz . Wzrost to jeszcze jeden przykład zmiennej. Ale jest ważna różnica. Wiek zwykle mierzymy używając liczby całkowitej. Wzrost o wiele łatwiej mierzyć liczbami dziesiętnymi. Na przykład, wiek - 20 lub 25 lat, wzrost - 1.80 lub 1.95 m.
Nauczymy się teraz prawidłowo tworzyć zmienne w MQL4. Popatrz na poniższy kod.
#property strict
int age = 25;
void OnStart()
{
//---
}
Tutaj przed główną funkcją skryptu OnStart() zapisano:
int age = 25;
Co zrobi komputer kiedy to zobaczy? Najpierw w pamięci operacyjnej RAM zarezerwuje miejsce, gdzie będzie przechowywana liczba. int - to słowo kluczowe języka MQL4, określające liczbę całkowitą (ang. integer). age – to nazwa zmiennej czyli słowo, za pomocą którego komputer będzie docierać do tej liczby. Potem dla age w RAM zostanie zapisana liczba 25, używając symbolu równania = , a cała tę konstrukcję zamyka symbol średnika ; . W MQL4 schemat tworzenia zmiennej, określenia jej typu oraz przypisania wartości wygląda w następujący sposób:
Jeśli zapisać tylko typ oraz nazwę zmiennej, czyli tylko ją utworzymy w pamięci RAM, to taka czynność będzie się nazywać deklaracją zmiennej. W tym przypadku domyślnie zostanie jej przypisana zerowa wartość. Jeśli zaś programista od razu przypisze jej określoną wartość, np. jak w powyższym przykładzie liczbę 25, to już będzie się nazywać inicjalizacją zmiennej.
W omówionym przykładzie widzimy 3 czynności:
To wszystko razem nazywa się instrukcja. Tu w jednej instrukcji zrealizowano 3 działania, a symbol średnika oznacza koniec tej instrukcji.
Kod nr 1 można też zapisać inaczej, umieszczając instrukcję tworzenia zmiennej w ciele funkcji głównej, tj. między klamrami { i } (kod 3). Na temat działania funkcji można poczytać w rozdziale 1.6. Funkcje. Abyś nie musiał teraz przeskakiwać do tego tematu, nie mając jeszcze podstawowej wiedzy o MQL4, powiem że słowo void określa typ funkcji i jest to typ pusty. OnStart to nazwa funkcji. W nawiasach funkcji ( ) zapisuje się określone wartości na bazie których realizuje ona działania (w tej funkcji nic nie jest zapisane). Klamry określają obszar działania funkcji (tzw. ciało funkcji) i to co zostanie w nich zapisane zostanie zrealizowane przez OnStart().
#property strict
void OnStart()
{
//---
int age = 25;
}
Kody 1 i 3 będą działać identyczne. Tworzenie zmiennej przed funkcją lub w jej ciele, tj. między { } ma wpływ na dostępność zmiennej w programie. W pierwszym przykładzie będzie ona dostępna dla całego programu, a nie tylko w OnStart(). W drugim będzie ona widoczna tylko wewnątrz tej funkcji. Może to teraz być dla ciebie jeszcze ciężko strawną informacją dlatego na razie przyjmiemy zasadę, że w skryptach zmienne tworzymy przeważnie przed OnStart(), a różnego typu działania będziemy już opisywać w ciele tej funkcji.
Następny przykład.
double height = 1.95;
Tu utworzyliśmy zmienną typu double (ułamek dziesiętny, liczba zmiennoprzecinkowa, ang. floating-point number), nadaliśmy jej imię height, której od razu przypisaliśmy wartość 1.95 stosując operator równania =. A co jest na samym końcu? Tak, tam stoi średnik.
Jakie jeszcze typy zmiennych istnieją w MQL4? Jest typ tekstowy. Jak wskazuje sama nazwa służy ona do przechowywania tekstu.
string name = "Puszek Okruszek";
Tutaj string - typ zmiennej, name - nazwa zmiennej, a Puszek okruszek - wartość tej zmiennej. Zwróć uwagę, że tekst powinien być zapisany pomiędzy dwoma cudzysłowami " ".
Przedstawiam jeszcze jeden często używany w programowaniu typ - bool. Jest to tak zwany typ logiczny i zmienne tego typu mogą przyjmować tylko dwie wartości: prawda (true) albo fałsz (false).
bool trend = false;
Oprócz tych czterech typów zmiennych istnieje wiele innych typów. Ponieważ dopiero uczysz się programowania, proponuję na razie ograniczyć się do znajomości tych czterech podstawowych typów.
W MQL4 bardzo ważne jest czy piszesz WIELKIMI czy małymi literami. Na przykład, jeśli deklarujesz kilka zmiennym o jednakowych nazwach, ale używasz liter o różnej wielkości, to będą to zupełnie różne zmienne. Niżej przedstawiony kod stworzy cztery zmienne typu double.
double height;
double HEIGHT;
double Height;
double HeighT;
Kolejny przykład.
DOUBLE height;
Double height;
doublE height;
Ten kod nie będzie działać, ponieważ słowa DOUBLE, Double i doublE nie zostaną potraktowane przez kompilator MQL4 jako słowa kluczowe.
Nazwy zmiennych nie mogą zaczynać się od cyfry. Nie mogą zawierać znaków specjalnych (@, &, %, $, ...), kropki, znaków minusa, plusa, mnożenia i dzielenia. Poniższy kod zawiera błędne nazwy zmiennych.
double 1price; // pierwszym symbolem nie może być cyfra
double %price; // nie można używać znaku specjalnego %
int Star-Wars; // nie można używać znaku minusa
bool Mario@2; // nie można używać znaku specjalnego @
string bla.bla; // nie można używać kropki
Kilka przykładów prawidłowo zapisanych nazw zmiennych (kod 10).
double p1rice;
double price;
int Star_Wars;
bool Mario255Hydraulik;
string blabla;
Warto też zaznaczyć, że MQL4 jest językiem o tak zwanym wolnym formacie, tj. można stosować dowolną ilość spacji, tabulacji lub pustych linijek. Na przykład, w jednej linijce kodu można utworzyć kilka zmiennych, a kolejną po kilku pustych linijkach. Najważniejsze to wskazać kompilatorowi koniec instrukcji, a jej koniec jak już wiemy jest określany przez wstawienie średnika.
int age; double height =1.95;
string name
=
"Puszek Okruszek"
;
A teraz zapiszmy ten kod jak prawdziwi zawodowcy.
int age;
double height = 1.95;
string name = "Puszek Okruszek";
Jeśli chcemy utworzyć (zadeklarować) więcej niż 1 zmienną tego samego typu, to możemy to zrobić w jednej instrukcji. Niektórym z nich można od razu przypisać określone wartości (zainicjalizować) przy tym te wszystkie zmienne nie muszą znajdować się w jednej linijce. Ich nazwy muszą być oddzielone przecinkiem, a na końcu należy wstawić średnik jako symbol końca instrukcji. W poniższym przykładzie (kod 13) komputer w pamięci RAM zarezerwuje miejsca dla 7 zmiennych typu int i 2 zmiennych typu double. Przy tym zmiennym age i tables od razu przypisze wartości 25 i 3.
int age = 25, number, tables = 3,
Houses, houses, HOUses,
result;
double height, weight;