Wyrażenia i funkcje

Informacje podstawowe

  • W wyrażeniach można używać dowolnie wielu poziomów nawiasowania.
  • Dopuszczalne są wyłacznie nawiasy okrągłe (, ).
  • Odstepy w wyrażeniach nie mogą wystepować w środku identyfikatorów kolumn, funkcji ani operatorów.
  • Odstep nie może też oddzielać nazwy funkcji od nawiasu otwierającego listę argumentów.
  • Wyrażeń nie poprzedza się znakiem =.
  • Argumenty funkcji oddziela się średnikami ;.
  • Część dziesiętną liczb oddziela się kropką . lub przecinkiem ,.
W starych tabelach separatorem argumentów był przecinek i wówczas separatorem części dziesiętnej mogła być tylko kropka.

Operacje arytmetyczne

W wyrażeniach można używać operatorów arytmetycznych: +, -, /, *, %, które ralizują odpowiednio dodawanie, odejmowanie, dzielenie, mnożenie i resztę z dzielenia.

Operacje porównania

W wyrażeniach można używać operatorów porównań: <, <=, >, >=, które dają w wyniku wartość 1 lub 0 w zależności od wyniku porównania.

Funkcje elementarne

W wyrażeniach można też używać następujących funkcji: round, int, min, max, avg, sum, bestM, worstM które obliczają odpowiednio: zaokraglenie, część całkowitą liczby, minimum, maksimum, średnią, sumę, średnią M największych argumentów, średnią M najmniejszych argumentów. Funkcje: min, max, avg, sum, bestM, worstM mogą mieć dowolną ilość argumentów. W funkcjach tych jak i w działaniach arytmetycznych puste pola traktowane są jak gdyby zawierały liczbę 0.

Istnieją też odpowiedniki niektórych funkcji pomijające puste pola. Są to funkcje: Min, Max, Avg, Cnt, które podają odpowiednio: minimum, maksimum, średnią, liczbę niepustych argumentów. Funkcje: Min, Max, Avg, Cnt, mogą mieć dowolną ilość argumentów. W funkcjach tych puste pola są pomijane. W szczególności gdy wszystkie argumenty funkcji są puste wartością funkcji też jest pole puste.

Przykłady:

Funkcja Wartość Argumenty
min 0 2   3 7
Min 2 2   3 7
avg 3 2   3 7
Avg 4 2   3 7
Cnt 3 2   3 7

Funkcje obliczające średnią

Oprócz wspomnianych powyżej funkcji avg i Avg istnieją również funkcje bestM i worstM obliczające średnią M największych (bestM) lub M najmniejszych (worstM) argumentów. Pierwszy argument wyznacza M czyli liczbę pozostałych argumentów liczonych do średniej (sam do niej nie jest wliczany). Istnieją też ich odpowiedniki BestM i WorstM zliczające wyłacznie argumenty niepuste.

Przykłady (M=2):

Funkcja Wartość Argumenty
bestM 5 2 1   3 7
BestM 5 2 1   3 7
worstM 0.5 2 1   3 7
WorstM 4 2 1   3 7

Funkcja znaku liczby

Dostępna jest też funkcja: sign która daje w wyniku odpowiednio: -1, 0, 1 w zależności od znaku argumentu.

Funkcja wyboru

Trzyargumentowa funkcja if pozwala wybrać jedną z dwu wartości (argumenty 2 i 3) w zależności od wartości pierwszego argumentu. Jeśli pierwszy argument ma wartość różną od 0 to wartością funkcji if jest wartość drugiego argumentu, jeśli zaś pierwszy argument ma wartość 0 to wartością funkcji if jest wartość trzeciego argumentu.

Funkcja wyboru wielokrotnego

Wieloargumentowa funkcja select pozwala wybrać jedną z wielu wartości (argumenty 3, 4, ...) w zależności od wartości pierwszego argumentu. Jeśli pierwszy argument ma wartość mniejszą od 0 lub większą od liczby argumentów do wyboru to wybierany jest argument 2.

Funkcja zaokraglenia

Dostępna jest dwuargumentowa funkcja zaokraglenia round realizująca zakraglenie zgodnie z regułą: "round half away from zero" lub "round half towards infinity". Oznacza to, ze przedziały stałej wartości funkcji są domkniete od strony zera tak jak to przedstawiają poniższe rysunki.

Funkcje obliczające ocenę

Dostępne są cztery funkcje obliczające ocenę w przyjętej na wydziale skali ocen: 0, 2, 3, 3.5, 4, 4.5, 5 - są to skalal, skalap, skalalk, skalapk. We wszystkich czterech przypadkach lista argumentów powinna zawierać siedem wartości: liczbę punktów uzyskanych przez studenta i progi odpowiadające ocenom: 2, 3, 3.5, 4, 4.5, 5. Funkcje skalal i skalalk obliczają funkcję schodkową lewostronnie domkniętą, natomiast funkcje: skalap i skalapk prawostronnie domkniętą tak jak to przedstawiają poniższe rysunki.

Funkcje skalalk i skalapk dodatkowo zmieniają kolor którym wyświetlana jest wartość oceny: 5.0 4.5 4.0 3.5 3.0 2.0 0.0 .

Operacje tekstowe

W wyrażeniach można używać operatora konkatenacji czyli połączenia tekstów: #. Zalecane jest aby wyrażenia których wartością jest tekst były rozpoczynane tym operatorem #. Dzięki temu rezultaty będa sortowane poprawnie.

Porównania tekstowe

W wyrażeniach można też używać operatorów porównań tekstów: lt, le, gt, ge, eq, ne, które odpowiadają kolejno operatorom numerycznym: <, <=, >, >=, =, !=. W przypadku tekstów mniejszość wynika z kolejności słownikowej.

Funkcje bitowe

Na wartościach pól bitowych można operować przy pomocy funkcji: Bisset, Btext, Bint, Bsum, Funkcja Bisset pozwala stwierdzić czy bit został ustawiony czy nie np.: Bisset(bity,"B3") sprawdza czy w kolumnie bity ustawiony jest bit nazwany B3. Funkcja Btext łączy nazwy ustawionych bitów stosując jako separator wartość drugiego agrumentu. Jeśli zdefiniowany jest trzeci prarametr to jego wartość jest wstawiana w miejsce nie ustawionych bitów. Funkcja Bint podaje wartość całkowitoliczbową. Funkcja Bsum zlicza ilość ustawionych bitów.

Funkcje list wyboru

W wyrażeniach można też używać następujących funkcji: label, title, seq, które zwracają odpowiednio: etykietę wybranej pozycji, tytuł wybranej pozycji, numer kolejny wybranej pozycji listy wyboru.

Funkcje tekstowe

W wyrażeniach można też używać następujących funkcji: lc, uc, length, które powodują odpowiednio: zamiane liter na małe, zamiane liter na duże, obliczenie długości tekstu.

Funkcje kalendarzowe

W wyrażeniach można też używać następujących funkcji: WUTdate, która na podstawie numeru tygodnia zajęć i numeru dnia tygodnia podaje datę w formacie ISO.

Składnia wyrażeń

wyrażenie	= ( wyrażenie )
		| wyrażenie operator wyrażenie
		| funkcja( lista_wyrażeń )
		| nazwa_kolumny
		| liczba
lista_wyrażeń	= wyrażenie
		| wyrażenie ; lista_wyrażeń
operator	= * | / | % | + | - | < | <= | > | >= | == | != 
funkcja		= min | max | avg | sum
		| Min | Max | Avg | Cnt
		| int | round | sign | if
		| skalal | skalap | skalalk | skalapk |
liczba		= [+|-] liczba_bez_znaku [ [.|,] liczba_bez_znaku ] [ E [+|-] liczba_bez_znaku ]
W starych tabelach gdzie separatorem argumentów był przecinek było tak:
lista_wyrażeń	= wyrażenie
		| wyrażenie , lista_wyrażeń
liczba		= [+|-] liczba_bez_znaku [ . liczba_bez_znaku ] [ E [+|-] liczba_bez_znaku ]
Serwer STUDIA3 WEiTI
2024.05.03 05:02.26