SAIL - Operacje na tablicach

Gotowe kody SAIL'a, informacje na temat moddingu, itd.

Moderator: zoNE

Post Reply
User avatar

Topic author
zoNE
The Great Uniter & Site Administrator
The Great Uniter & Site Administrator
Posts: 1309
Joined: Fri Feb 17, 2006 3:44 pm
Location: Poland
Contact:

SAIL - Operacje na tablicach

#1

Post by zoNE » Thu Dec 06, 2018 10:00 am

Serpent wrote:
Thu Dec 06, 2018 9:41 am
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 :)
Author: Serpent
Topic: viewtopic.php?f=42&t=5887
PC MB: MSI Z97-G43 | CPU: Intel Xeon E3-1231v3 3.4GHz + Raijintek EreBoss | RAM: HyperX 2x8GB 1866MHz DDR3 CL9 | GPU: MSI GeForce GTX 970 100ME 4GB GDDR5 (256bit) | SSD: Crucial BX100 250GB | HDD: 4TB | LCD: EIZO FlexScan 22" S2243W Black | AUDIO: Asus Xonar D2 + KODA DRA-660 + KODA AV-701 + SW-550 v2 + Sennheiser HD 595 | OS: Windows 10 Pro
Laptop DELL Precision M6500 CPU: i5-520M RAM: 8GB DDR3 SSD: 128GB HDD: 500GB GPU: ATI FirePro M7740 1GB DDR5 OS: Windows 7 Ultimate 64-bit

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest