SAIL - Operacje na tablicach

Wszelkie pytania na temat SAIL'a i modowania OW.
Post Reply
User avatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Posts: 4175
Joined: Tue Jul 07, 2009 9:13 pm
Location: Polska - EuroStan ZSRE
Contact:

SAIL - Operacje na tablicach

Post by Serpent »

Temat zbiorczy dotyczący operacji na tablicach w SAILu.

1. Co to jest tablica?
  • Jest to zbiór uporządkowanych danych, w którym poszczególne elementy mają przyporządkowany numer (indeks).
  • W SAILu indeksami są liczby naturalne.
  • Pierwszy element w tablicy zawsze przyjmuje wartość 1.
  • Zawartość tablicy zawiera się w nawiasach kwadratowych [ ].
  • Tablice mogą przechowywać różne typy danych.
  • Możliwe jest tworzenie tablic wielowymiarowych.
  • Przypisanie w stylu tablica[indeks] = wartosc; jest niedozwolona.
2. Tworzenie tablicy
Aby utworzyć tablicę wystarczy użyć operatora przypisania.

Code: Select all

tablica := [];
Możliwe jest też stworzenie tablicy z konkretną zawartością.

Code: Select all

tablica := [1, 2, 3]; // tablica jednowymiarowa
tablica := [ [1, 2], [3, 4]. [1, 4] ]; // tablica dwuwymiarowa
tablica := [ [ [1, 2], [1] ], [ [2], [4, 3] ] ]; // tablica trójwymiarowa
3. Pobranie elementu z tablicy
Aby dostać się do konkretnego elementu w tablicy, wystarczy wskazać na jego indeks.

Code: Select all

moja_wartosc := tablica[2]; // gdzie 2 oznacza drugi element
moja_wartosc := tablica[1][3]; // odwołanie się do 3 elementu w pierwszym podzbiorze w tablicy dwuwymiarowej
4. Operatory tablicowe
  • ^ - "dokleja" wartości do końca tablicy.

    Code: Select all

    Przykład: tablica := [3, 4] ^ 5; // => tablica =  [3,4,5]
    Przykład: tablica := [1, 2, 3] ^ [4, 5]; // => tablica = [1, 2, 3, 4, 5]
    
  • union - "dokleja" dwie tablice z pominięciem identycznych wartości.

    Code: Select all

    Przykład: tablica := [1, 2] union [3,4]; // => tablica = [1,2,3,4]
    Przykład: tablica := [1, 2] union [2, 3]; // => tablica = [1,2,3]
    
  • isect - zwraca część wspólną obu tablic.

    Code: Select all

    Przykład: tablica := [1, 2, 3, 4] isect [3, 4, 5]; // => tablica = [3,4]
    
  • diff - usuwane podaną wartość z tablicy.

    Code: Select all

    Przykład: tablica := [11, 21, 31] diff 31; // => tablica = [11, 21]
    Przykład: tablica := [10, 15, 20, 10, 25] diff [10, 20]; // => tablica = [15, 25]
    
5. Podstawowe funkcje do operacji na tablicach
  • Insert(tablica, indeks, wartość) - dodaje 'wartość' na konkretnej pozycji w tablicy. Powoduje przesunięcie wartości które znajdują się na pozycjach za 'indeksem'.

    Code: Select all

    tablica := [1];
    tablica := Insert(tablica, 2, 30); // => tablica = [1, 30]
    tablica := Insert(tablica, 2, 15); // => tablica = [1, 15, 30]
    
  • Replace(tablica, indeks, wartość) - podmienia 'wartość' na konkretnej pozycji.

    Code: Select all

    tablica := [1, 2, 3];
    tablica := Replace(tablica, 2, 4); // => tablica = [1, 4, 3]
    tablica := Replace(tablica, 4, 10); // => tablica = [1, 4, 3, 10]
    
  • Delete(tablica, indeks) - usuwa element na podanej pozycji.

    Code: Select all

    tablica := [3, 4, 2, 5];
    tablica := Delete(tablica, 1); // => tablica = [4, 2, 5]
    tablica := Delete(tablica, 3); // => tablica = [4, 2]
    
6. Funkcje dodatkowe - spis funkcji dodatkowych.
  • ReplaceIn - funkcja umożliwiająca podmianę wartości w dowolnym miejscu w tablicy o dowolnym wymiarze.
  • CompareArray - funkcja porównująca obie tablice.
  • Remove - funkcja usuwająca podaną wartość z tablicy jedno- lub dwu- wymiarowej.
  • SortList - funkcja sortująca tablicę.

W miarę możliwości czasowych będę aktualizować ten temat o dodatkowe informacje :)
Epickie teksty:
Marek1906: jak zrobic aby sail był zielony?
Kvantovy: Wszystko normalne, wszystko w koło było dziwne
Kvantovy:: To jest fajne, że to nie jest takie głupie
Kvantovy:: remove sos from kanapeczka
Kvantovy:: zdarzają się rzezy które sie filozofom nie śniły
Cenwen: problemem jest gejostwo
"Taki z niego fizyk jak ze mnie baletnica" - Profesor Scholtze o Kvantovym.
JAKBYŁ BYM CZECHEM TO BYM ROZŁOŻYŁ NAMIOT ~Kvanciak
Post Reply