Chapter 5. Grunderna i GEL
Prev |  | Next

# Chapter 5. Grunderna i GEL

GEL står för Genius Extension Language. Det är språket som du använder för att skriva program i Genius. Ett program i GEL är helt enkelt ett uttryck som evalueras till ett tal, en matris eller ett annat objekt i GEL. Genius matematikverktyg kan användas som en enkel miniräknare eller som ett kraftfullt verktyg för teoretisk forskning. Syntaxen är tänkt att ha en så låg inlärningskurva som möjligt, särskilt då det används som en miniräknare.

## Värden

Värden i GEL kan vara tal, booleska värden eller strängar. GEL behandlar också matriser som värden. Värden kan bland annat användas i beräkningar, tilldelas till variabler och returneras från funktioner.

### Tal

Integers are the first type of number in GEL. Integers are written in the normal way.

    1234

Hexadecimal and octal numbers can be written using C notation. For example:

    0x123ABC
    01234

Or you can type numbers in an arbitrary base using `<base>\<number>`. Digits higher than 10 use letters in a similar way to hexadecimal. For example, a number in base 23 could be written:

    23\1234ABCD

The second type of GEL number is rationals. Rationals are simply achieved by dividing two integers. So one could write:

    3/4

to get three quarters. Rationals also accept mixed fraction notation. So in order to get one and three tenths you could write:

    1 3/10

The next type of number is floating point. These are entered in a similar fashion to C notation. You can use `E`, `e` or `@` as the exponent delimiter. Note that using the exponent delimiter gives a float even if there is no decimal point in the number. Examples:

    1.315
    7.887e77
    7.887e-77
    .3
    0.3
    77e5

When Genius prints a floating point number it will always append a `.0` even if the number is whole. This is to indicate that floating point numbers are taken as imprecise quantities. When a number is written in the scientific notation, it is always a floating point number and thus Genius does not print the `.0`.

The final type of number in GEL is the complex numbers. You can enter a complex number as a sum of real and imaginary parts. To add an imaginary part, append an `i`. Here are examples of entering complex numbers:

    1+2i
    8.01i
    77*e^(1.3i)

### Important

Då imaginära tal matas in måste det finnas ett tal före `i`. Om du använder `i` för sig själv kommer Genius att tolka det som att det handlar om variabeln `i`. Om du behöver hänvisa till ett ensamt `i`, använd `1i` istället.

För att använda blandad bråk-notation med imaginära tal måste du ha det blandade bråket inom parenteser. (d.v.s., `(1 2/5)i`)

### Booleska värden

Genius har också stöd för inbyggda booleska värden. De två booleska konstanterna är definierade som `true` och `false`; dessa identifierare kan användas som vilken annan variabel som helst. Du kan också använda identifierarna `True`, `TRUE`, `False` och `FALSE` som alias för de ovannämnda.

På alla ställen där ett booleskt uttryck förväntas kan du använda ett booleskt värde eller valfritt uttryck som producerar antingen ett tal eller ett booleskt värde. Om Genius behöver evaluera ett tal som ett booleskt värde kommer det tolka 0 som `false` och alla andra tal som `true`.

In addition, you can do arithmetic with Boolean values. For example:

    ( (1 + true) - false ) * true

is the same as:

    ( (true or true) or not false ) and true

Only addition, subtraction and multiplication are supported. If you mix numbers with Booleans in an expression then the numbers are converted to Booleans as described above. This means that, for example:

    1 == true

always evaluates to `true` since 1 will be converted to `true` before being compared to `true`.

### Strängar

Like numbers and Booleans, strings in GEL can be stored as values inside variables and passed to functions. You can also concatenate a string with another value using the plus operator. For example:

    a=2+3;"The result is: "+a

will create the string:

    The result is: 5

You can also use C-like escape sequences such as `\n`,`\t`,`\b`,`\a` and `\r`. To get a `\` or `"` into the string you can quote it with a `\`. For example:

    "Slash: \\ Quotes: \" Tabs: \t1\t2\t3"

will make a string:

    Slash: \ Quotes: " Tabs: 	1	2	3

Do note however that when a string is returned from a function, escapes are quoted, so that the output can be used as input. If you wish to print the string as it is (without escapes), use the `print` or `printn` functions.

In addition, you can use the library function `string` to convert anything to a string. For example:

    string(22)

will return

    "22"

Strings can also be compared with `==` (equal), `!=` (not equal) and `<=>` (comparison) operators

### Null

Det finns ett speciellt värde som kallas `null`. Inga operationer kan be utföras på det, och inget skrivs ut då det returneras. Därför är `null` användbart då du inte vill ha utdata från ett uttryck. Värdet `null` kan erhållas som ett uttryck då du skriver `.`, konstanten `null` eller ingenting. Med ingenting menar vi att om du avslutar ett uttryck med en avskiljare `;` är det ekvivalent med att avsluta det med en avskiljare följt av ett `null`.

Example:

    x=5;.
    x=5;

Vissa funktioner returnerar `null` då inget värde kan returneras eller då ett fel uppstått. `null` används också som en tom vektor eller matris, eller en tom referens.

Prev |  | Next
Ytgrafer | Home | Använda variabler