Struktury danych

jakubkrol

<font size="4">UWAGA! To jest bardziej zaawansowany artykuł dotyczący sense script!
Aby poznać podstawy sense script zapraszam do przeczytania artykułu sense script - Pierwsze kroki
</span>

Struktury danych

W sense script nie ma żadnych tablic, czy rekordów...

Jednak wciąż możesz ich używać!

Oto tutorial, który pokaże Ci jak używać tablic, czy rekordów w sense script!

1. Dlaczego mogę używać Struktur danych?

Możesz używać struktur danych, gdyż możesz załączać znaki takie jak ".", "/", "[" itp w nazwach zmiennych! sense script w tym zakresie jest bardzo elastyczny i pozwala na na prawdę wiele.

2. Rekordy

Stwórzmy nowy rekord! Nazwijmy go rec

Nasz rekord będzie zawierał imię, mail i płeć
Jak go utworzyć?

Jeżeli chcielibyśmy go tylko zadeklarować, to możemy napisać:

var(rec.name);
var(rec.mail);
var(rec.sex);

Lub jeżeli wolelibyśmy go od razu użyć, napiszemy:

set(rec.name, 'Jakub');
set(rec.mail, '[email protected]');
set(rec.sex, 'M');

Teraz w bardzo prosty sposób możesz użyć ten rekord, np:
out('*[rec.name] ma e-mail *[rec.mail]');

I to wszystko o rekordach w sense script!

Tablice

Jedną z najważniejszych rzeczy w programowaniu są tablice.

Jak użyć ich w sense script? To tak jak z rekordami - po prostu używaj "[...}", lub "(...)". Przejdźmy do praktyki.

W naszym przykładzie stworzymy tablicę 1..2x1..2, wypełnimy ją i wyświetlimy.

Na początku ręcznie (można to również zrobić automatycznie) stwórz i wypełnij tablicę:

set(arr[1][1], '1');
set(arr[1][2], '2');
set(arr[2][1], '3');
set(arr[2][2], '4');

Teraz nasza tablica jest gotowa do użytku
Potrzebujemy ją tylko wyświetlić:

Najpierw spróbuj pokazać tylko wartość 1x2 używając zmiennej l:

set(arr[1][1], '1');
set(arr[1][2], '2');
set(arr[2][1], '3');
set(arr[2][2], '4');

set(l, 2);

out('*[arr[1][*[l]]]');

Błąd! Oto output:

Script start at time: 2009-05-05 0908
*[arr[1][2]]
Script finish at time: 2009-05-05 0908. Done in 15 ms.

Dlaczego tak się stało? Ponieważ sense script na początku szukał arr[1][2] - tego nie było w kodzie... Następnie kompilator szukał zmiennej l - ona w kodzie była

Dlatego też zmienna l musi być przez tablicą! Zmodyfikuj kod:

set(l, 2);

set(arr[1][1], '1');
set(arr[1][2], '2');
set(arr[2][1], '3');
set(arr[2][2], '4');

out('*[arr[1][*[l]]]');

lub jeszcze lepiej:

var(l);

set(arr[1][1], '1');
set(arr[1][2], '2');
set(arr[2][1], '3');
set(arr[2][2], '4');

set(l, 2);

out('*[arr[1][*[l]]]');

Zadanie Domowe:

Teraz spróbuj wykonać następujące ćwiczenie:

  1. Twórz nową tablicę 1..5 wypleniając ją ręcznie

  2. Używając funkcji math oraz repeat...until automatycznie pokaż wszystkie liczby 1-5 z tej tablicy

Zrób to sam!

Twók kod powinien być zbliżony do tego:

set(i, 1);

set(arr[1], '1');
set(arr[2], '2');
set(arr[3], '3');
set(arr[4], '4');
set(arr[5], '5');

repeat();             
out('*[arr[*[i]]];');
math(i, '*[i]+1');
until(*[i], 6);

A output taki:

Script start at time: 2009-05-05 0944
1;
2;
3;
4;
5;
Script finish at time: 2009-05-05 0944. Done in 31 ms.

Jeżeli Twój output jest podobny to umiesz już używać tablic.

Tablica połączona z rekordem?

Tak!
Możesz używać tablic rekordów (czyli tablic połączonych z rekordami)! Na przykład:

set(people[1].name, 'Jakub');
set(people[1].sex, 'M');
set(people[2].name, 'Martua');
set(people[2].sex, 'K');

Jest tablicą dwóch rekordów. To także możesz użyć w dowolny sposób.

Nowe Struktury danych

Ponieważ sense script jest bardzo elastyczny i nazwy zmiennych mogą być dowolnie "udziwniane" możesz używać swoich własnych Struktur danych.

Po prostu postępuj podobnie jak w przykładach z rekordami i tablicami, używając ich wg własnego upodobania - na przykład:
var(newstruct.name_:$fnd[x]:);
lub jakkolwiek inaczej - używaj ich wg własnych zapotrzebowań.

2 komentarzy

Zamiast nazywac artykuły [kategoria]_Nazwa, skorzystaj z gotowego mechanizmu - /Kategoria/Subkategoria/Jeszcze_jedna_subkategoria/Artykuł. Wtedy nazwa tego artykułu brzmiałaby na przykład "/SenseScript/Struktury_Danych"