colobot-data/help/cbot/P/var.txt

68 lines
4.8 KiB
Plaintext

\b;Zmienne
Zmienna jest jak pudełko, do którego można wkładać różne informacje. Wartość zmiennej może się zmieniać podczas wykonywania programu.
Na przykład można użyć zmiennej do liczenia jednostek rudy tytanu zebranych i przeniesionych przez transporter do huty. Najpierw należy ustalić odpowiednią nazwę dla zmiennej: nie powinna być ona zbyt długa, ale powinna wyjaśniać do czego używana jest zmienna. Nazwijmy ją \c;liczTyt\n;. Zmienna ta będzie zawierała tylko liczby całkowite, dlatego odpowiednim dla niej typem będzie \c;int\n;. Na początku programu zmienną trzeba zadeklarować. Następnie można w niej umieścić wartość \c;0\n;, zwiększając ją o \c;1\n; za każdym razem, gdy robot podniesie rudę tytanu. Zmienna ta będzie zawierać liczbę porcji rudy tytanu zebranych do tej pory przez robota.
Aby zadeklarować zmienną, należy napisać:
\c;\s; int liczTyt;\n;
Aby przypisać jej wartość \c;0\n;, należy napisać:
\c;\s; liczTyt = 0;\n;
Po zebraniu każdej porcji rudy tytanu należy napisać:
\c;\s; liczTyt = liczTyt + 1\n;
W wyborze nazwy dla zmiennej jest dużo swobody, można ją nazwać dowolnie, np.: \c;odl\n;, \c;kierunek\n;, \c;p2\n;, \c;a\n;, \c;x\n;, \c;nic_do_zestrzelenia\n;, itd.
Nazwa zmiennej musi zaczynać się od litery, po której może następować dowolna kombinacja liter, cyfr i znaków podkreślenia \c;_\n;. Oczywiście nie można używać słów kluczowych języka CBOT takich jak \c;\l;for\u cbot\for;\n;, \c;\l;while\u cbot\while;\n;, \c;\l;break\u cbot\break;\n;, \c;\l;continue\u cbot\continue;\n;, \c;do\n;, itd.
Należy być ostrożnym w wyborze nazw przydzielanych zmiennym; pisanie programu może okazać się bardzo trudne jeśli zapomni się nazwy zmiennych lub nie pamięta do czego one służyły. Należy opracować własny system nazywania zmiennych i raczej nie używać nazw podobnych do \c;Bmo45\n;, \c;a\n; czy \c;tgBinX\n;.
W powyższym przykładzie, słowo \c;int\n; określa, że zmienna może zawierać tylko liczby całkowite, odpowiednie do liczenia obiektów. Do mierzenia odległości lepiej jest użyć zmiennej, która może również zawierać liczby rzeczywiste z częścią ułamkową (takie jak 3.45 lub 0.034): w tym przypadku odpowiedniejszy jest typ \c;float\n;.
Zmienna składa się z trzech części:
1) nazwy,
2) typu informacji przez nią przechowywanych,
3) zawartości, czyli samej informacji.
\t;nazwa
Jest niezbędna do rozróżniania zmiennych pomiędzy sobą.
\t;typ
\l;Typ\u cbot\type; warunkuje rodzaj informacji, jaką może zawierać zmienna. Zależnie od typu, zmienna może zawierać liczby całkowite, liczby rzeczywiste, łańcuchy, współrzędne punktu, informacje o obiekcie, itd.
Oto lista najczęściej występujących typów zmiennych:
o \c;\l;int\u cbot\int;\n; dla liczb całkowitych (12, -500, itd.)
o \c;\l;float\u cbot\float;\n; dla liczb rzeczywistych (3.14, 0.2, -99.98, itd.)
o \c;\l;string\u cbot\string;\n; dla łańcuchów znakowych ("Cześć!", "Nie znaleziono obiektu", itd.)
o \c;\l;point\u cbot\point;\n; dla współrzędnych x, y, z w przestrzeni
o \c;\l;object\u cbot\object;\n; dla informacji o obiekcie (robocie, budynku, itd.)
\t;zawartość
Zawartością zmiennej jest informacja, której rodzaj jest określony przez typ. Może się ona zmieniać w trakcie działania programu.
Po zadeklarowaniu zmiennej nie zawiera ona żadnej wartości. Zanim będzie można jej użyć, trzeba nadać jej wartość:
\c;\s; int i, j;
\s; j = 25; // j przyjmuje wartość 25
\s; j = i; // tak nie można napisać, gdyż i nie ma jeszcze żadnej wartości.
\n;
Możliwe jest zadeklarowanie zmiennej i przypisanie jej wartości w tym samym wierszu:
\c;\s; int liczTyt = 0;
\n;
Przy wykonywaniu przypisania wartości zmiennej przy użyciu znaku równości\c;=\n;, wartość z prawej strony jest kopiowana do wartości po lewej stronie. Rozważmy następujący przykład:
\c;\s; int i, j;
\s; i = 5+2; // i przyjmuje wartość 7
\s; j = i+6; // j przyjmuje wartość i plus 6, czyli 13
\s; i = j; // i przyjmuje wartość j, czyli 13
\n;
Na końcu tego przykładu obie zmienne \c;i\n; i \c;j\n; zawierają wartość \c;13\n;.
Następujące przypisanie jest niepoprawne, gdyż po lewej stronie znaku równości \c;=\n; może występować tylko nazwa zmiennej:
\c;\s; i+2 = j; // niemożliwe
\n;
Do zamiany zawartości dwóch zmiennych konieczne jest użycie trzeciej zmiennej. Oto przykład zamieniający zawartość zmiennych \c;a\n; i \c;b\n;:
\c;\s; int pom;
\s; pom = a; // pom przyjmuje wartość a
\s; a = b; // zawartość b jest kopiowana do a
\s; b = pom; // zawartość pom jest kopiowana do b
\n;
\t;Zobacz również
\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.