Κατάλογος τελεστών GEL
Προηγ | Κεφάλαιο 5. Βασικά της GEL | Επόμενο

## Κατάλογος τελεστών GEL

Everything in GEL is really just an expression. Expressions are stringed together with different operators. As we have seen, even the separator is simply a binary operator in GEL. Here is a list of the operators in GEL.

`a;b`

  Το διαχωριστικό, δίνει και την `a` και την `b`, αλλά επιστρέφει μόνο το αποτέλεσμα της `b`.

`a=b`

  Ο τελεστής ανάθεσης. Αυτός αναθέτει τη `b` στη `a` (η `a` πρέπει να είναι μια έγκυρη lvalue) (σημειώστε όμως ότι αυτός ο τελεστής μπορεί να μεταφραστεί σε `==` αν χρησιμοποιηθεί σε μια θέση όπου αναμένεται παράσταση λογικής τιμής)

`a:=b`

  Ο τελεστής ανάθεσης. Εκχωρεί την `b` στην `a` (η `a` πρέπει να είναι μια έγκυρη lvalue). Αυτός είναι διαφορετικός από τον `=`, επειδή δεν μεταφράζεται ποτέ σε μια `==`.

`|a|`

  Absolute value. In case the expression is a complex number the result will be the modulus (distance from the origin). For example: `|3 * e^(1i*pi)|` returns 3.

  Δείτε Mathworld για περισσότερες πληροφορίες.

`a^b`

  Εκθετοποίηση, ανυψώνει μια `a` στη δύναμη `b`.

`a.^b`

  Εκθετοποίηση στοιχείου κατά στοιχείο. Ανυψώνει κάθε στοιχείο ενός πίνακα `a` στη δύναμη `b`. Ή αν η `b` είναι ένας πίνακας του ίδιου μεγέθους όπως η `a`, τότε κάνει την πράξη στοιχείο κατά στοιχείο. Αν η `a` είναι ένας αριθμός και η `b` είναι ένας πίνακας, τότε δημιουργεί έναν πίνακα του ίδιου μεγέθους όπως η `b` με τη `a` υψωμένη σε όλες τις διαφορετικές δυνάμεις στην `b`.

`a+b`

  Πρόσθεση. Προσθέτει δύο αριθμούς, πίνακες, συναρτήσεις ή συμβολοσειρές. Αν προσθέτετε μια συμβολοσειρά σε ο,τιδήποτε το αποτέλεσμα θα είναι απλά μια συμβολοσειρά. Αν ο ένας είναι ένας τετραγωνικός πίνακας και ο άλλος ένας αριθμός, τότε ο αριθμός πολλαπλασιάζεται με τον ταυτοτικό πίνακα.

`a-b`

  Αφαίρεση. Αφαιρεί δύο αριθμούς, πίνακες ή συναρτήσεις.

`a*b`

  Πολλαπλασιασμός. Αυτός είναι ο κανονικός πίνακας πολλαπλασιασμού.

`a.*b`

  Πολλαπλασιασμός στοιχείο με στοιχείο αν οι `a` και `b` είναι πίνακες.

`a/b`

  Διαίρεση. Όταν οι `a` και `b` είναι μόνο αριθμοί, αυτή είναι η κανονική διαίρεση. Όταν είναι πίνακες, τότε αυτή είναι ισοδύναμη με `a*b^-1`.

`a./b`

  Element by element division. Same as `a/b` for numbers, but operates element by element on matrices.

`a\b`

  Οπίσθια διαίρεση. Είναι η ίδια με `b/a`.

`a.\b`

  Οπίσθια διαίρεση στοιχείου με στοιχείο.

`a%b`

  The mod operator. This does not turn on the modular mode, but just returns the remainder of integer division `a/b`.

`a.%b`

  Element by element mod operator. Returns the remainder after element by element integer division `a./b`.

`a mod b`

  Τελεστής υπολογισμού υπολοίπων. Η παράσταση `a` υπολογίζει το modulo `b`. Δείτε «Μετρικός υπολογισμός». Κάποιες συναρτήσεις και κάποιοι τελεστές συμπεριφέρονται διαφορετικά με το ισοϋπόλοιπο ενός ακεραίου.

`a!`

  Παραγοντικός τελεστής. Αυτό είναι παρόμοιο με `1*...*(n-2)*(n-1)*n`.

`a!!`

  Διπλός παραγοντικός τελεστής. Αυτός είναι παρόμοιος με `1*...*(n-4)*(n-2)*n`.

`a==b`

  Τελεστής ισότητας. Επιστρέφει `αληθές` ή `ψευδές` ανάλογα με το αν οι `a` και `b` είναι ίσες ή όχι.

`a!=b`

  Τελεστής ανισότητας, επιστρέφει `αληθές` αν η `a` δεν είναι ίση με την `b`, αλλιώς επιστρέφει `ψευδές`.

`a<>b`

  Εναλλακτικός τελεστής ανισότητας, επιστρέφει `αληθές` αν η `a` δεν είναι ίση με την `b`, αλλιώς επιστρέφει `ψευδές`.

`a<=b`

  Τελεστής μικρότερος από ή ίσος, επιστρέφει `αληθές` αν `a` είναι μικρότερο από ή ίσο με `b`, αλλιώς επιστρέφει `ψευδές`. Αυτοί μπορούν να συνδεθούν όπως στο `a <= b <= c` (μπορούν επίσης να συνδυαστούν με τον τελεστή λιγότερο από).

`a>=b`

  Greater than or equal operator, returns `true` if `a` is greater than or equal to `b` else returns `false`. These can be chained as in `a >= b >= c` (and they can also be combined with the greater than operator).

`a<b`

  Less than operator, returns `true` if `a` is less than `b` else returns `false`. These can be chained as in `a < b < c` (they can also be combined with the less than or equal to operator).

`a>b`

  Greater than operator, returns `true` if `a` is greater than `b` else returns `false`. These can be chained as in `a > b > c` (they can also be combined with the greater than or equal to operator).

`a<=>b`

  Τελεστής σύγκρισης. Αν `a` είναι ίσο με `b` επιστρέφει 0, αν `a` είναι μικρότερο από `b` επιστρέφει -1 και αν `a` είναι μεγαλύτερο από `b` επιστρέφει 1.

`a και b`

  Λογικό και. Επιστρέφει αληθές αν αμφότερα τα `a` και `b` είναι αληθή, αλλιώς επιστρέφει ψευδές. Αν είναι δοσμένοι οι αριθμοί, οι μη μηδενικοί αριθμοί αντιμετωπίζονται ως αληθείς.

`a ή b`

  Logical or. Returns true if either `a` or `b` is true, else returns false. If given numbers, nonzero numbers are treated as true.

`a xor b`

  Logical xor. Returns true if exactly one of `a` or `b` is true, else returns false. If given numbers, nonzero numbers are treated as true.

`όχι a`

  Logical not. Returns the logical negation of `a`.

`-a`

  Negation operator. Returns the negative of a number or a matrix (works element-wise on a matrix).

`&a`

  Αναφορά μεταβλητής (για το πέρασμα μιας αναφοράς σε μια μεταβλητή). Δείτε «Αναφορές».

`*a`

  Αποαναφορά μεταβλητής (για πρόσβαση σε μια αναφερθείσα μεταβλητή). Δείτε «Αναφορές».

`a'`

  Αναστροφή συζυγούς πίνακα. Δηλαδή, οι γραμμές και οι στήλες εναλλάσσονται και παίρνουμε τον συζυγή μιγαδικό όλων των καταχωρίσεων. Δηλαδή αν τα στοιχεία i,j της `a` είναι x+iy, τότε τα στοιχεία j,i του `a'` είναι x-iy.

`a.'`

  Η αναστροφή πίνακα, δεν παίρνει τον συζυγή μιγαδικό των καταχωρίσεων. Δηλαδή, τα στοιχεία i,j της `a` γίνονται τα στοιχεία του `a.'`.

`a@(b,c)`

  Get element of a matrix in row `b` and column `c`. If `b`, `c` are vectors, then this gets the corresponding rows, columns or submatrices.

`a@(b,)`

  Λήψη γραμμής ενός πίνακα (ή πολλαπλών γραμμών αν το `b` είναι ένα διάνυσμα).

`a@(b,:)`

  Ίδιο με το παραπάνω.

`a@(,c)`

  Λήψη στήλης ενός πίνακα (ή στηλών αν το `c` είναι ένα διάνυσμα).

`a@(:,c)`

  Ίδιο με το παραπάνω.

`a@(b)`

  Λήψη ενός στοιχείου από έναν πίνακα αντιμετωπίζοντας τον ως διάνυσμα. Αυτό θα διατρέξει τον πίνακα κατά τη γραμμή.

`a:b`

  Δόμηση ενός διανύσματος από το `a` στο `b` (ή ορίστε γραμμή, περιοχή στήλης για τον τελεστή `@`). Για παράδειγμα για να πάρετε τις γραμμές 2 μέχρι 4 του πίνακα `Α` μπορούμε να κάνουμε

      A@(2:4,)

  ως `2:4` που θα επιστρέψει ένα διάνυσμα `[2,3,4]`.

`a:b:c`

  Δόμηση ενός διανύσματος από `a` σε `c` με `b` ως ένα βήμα. Δηλαδή για παράδειγμα

      genius> 1:2:9
      =
      `[1, 3, 5, 7, 9]

  When the numbers involved are floating point numbers, for example `1.0:0.4:3.0`, the output is what is expected even though adding 0.4 to 1.0 five times is actually just slightly more than 3.0 due to the way that floating point numbers are stored in base 2 (there is no 0.4, the actual number stored is just ever so slightly bigger). The way this is handled is the same as in the for, sum, and prod loops. If the end is within `2^-20` times the step size of the endpoint, the endpoint is used and we assume there were roundoff errors. This is not perfect, but it handles the majority of the cases. This check is done only from version 1.0.18 onwards, so execution of your code may differ on older versions. If you want to avoid dealing with this issue, use actual rational numbers, possibly using the `float` if you wish to get floating point numbers in the end. For example `1:2/5:3` does the right thing and `float(1:2/5:3)` even gives you floating point numbers and is ever so slightly more precise than `1.0:0.4:3.0`.

`(a)i`

  Make `a` into an imaginary number (multiply `a` by the imaginary). Normally the imaginary number `i` is written as `1i`. So the above is equal to

      (a)*1i

``a`

  Βάλτε ` σε ένα αναγνωριστικό έτσι ώστε να μην υπολογιστεί. Ή βάλτε ` σε έναν πίνακα, έτσι ώστε να μην επεκταθεί.

`a swapwith b`

  Εναλλαγή τιμής του `a` με την τιμή του `b`. Πρός το παρόν δεν λειτουργεί σε περιοχές στοιχείων πίνακα. Επιστρέφει `null`. Διαθέσιμο από την έκδοση 1.0.13.

`increment a`

  Αύξηση της μεταβλητής `a` κατά 1. Αν η `a` είναι ένας πίνακας, τότε αυξάνεται κάθε στοιχείο. Αυτό είναι ισοδύναμο με το `a=a+1`, αλλά είναι κάπως γρηγορότερο. Επιστρέφει `null`. Διαθέσιμο από την έκδοση 1.0.13.

`increment a by b`

  Αυξάνει τη μεταβλητή `a` κατά `b`. Αν η `a` είναι ένας πίνακας, τότε αυξάνεται κάθε στοιχείο. Αυτό είναι ισοδύναμο με το `a=a+b`, αλλά είναι κάπως γρηγορότερο. Επιστρέφει `null`. Διαθέσιμο από την έκδοση 1.0.13.

### Σημείωση

Ο τελεστής @() καθιστά τον: τελεστή πιο χρήσιμο. Με αυτό μπορείτε να ορίσετε περιοχές ενός πίνακα. Έτσι ώστε a@(2:4,6) είναι οι γραμμές 2,3,4 της στήλης 6. Ή a@(,1:2) θα σας πάρει τις πρώτες δύο στήλες ενός πίνακα. Μπορείτε επίσης να αναθέσετε στον τελεστή @(), όσο η δεξιά τιμή είναι ο πίνακας που ταιριάζει στην περιοχή σε μέγεθος, ή αν είναι οποιουδήποτε άλλου τύπου τιμής.

### Σημείωση

Οι τελεστές σύγκρισης (εκτός από τον τελεστή <=> που συμπεριφέρεται κανονικά), δεν είναι αυστηρά δυαδικοί τελεστές, μπορούν στην πραγματικότητα να ομαδοποιηθούν με τον κανονικό μαθηματικό τρόπο, π.χ.: (1<x<=y<5) είναι μια επιτρεπτή παράσταση λογικών τιμών και σημαίνει απλά αυτό που πρέπει, δηλαδή (1<x and x≤y and y<5)

### Σημείωση

Ο μοναδιαίος τελεστής μείον λειτουργεί με διαφορετικό τρόπο ανάλογα με το πού εμφανίζεται. Αν εμφανίζεται πριν από ένα αριθμό έχει στενή προτεραιότητα, αν εμφανίζεται μπροστά από μια παράσταση έχει μικρότερη προτεραιότητα από τη δύναμη και τους παραγοντικούς τελεστές. Έτσι για παράδειγμα `-1^k` είναι στην πραγματικότητα `(-1)^k`, αλλά `-foo(1)^k` είναι στην πραγματικότητα `-(foo(1)^k)`. Γιαυτό να προσέχετε τη χρήση του και αν αμφιβάλετε, προσθέστε παρενθέσεις.

Προηγ | Πάνω | Επόμενο
Μετρικός υπολογισμός | Αρχή | Κεφάλαιο 6. Προγραμματισμός με GEL