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

Heltal är den första taltypen i GEL. Heltal skrivs som vanligt.

    1234

Hexadecimala och oktala tal kan skrivas med C-notation. Till exempel:

    0x123ABC
    01234

Eller så kan du skriva tal i en godtycklig bas med `<bas>\<tal>`. Siffror större än 10 använder bokstäver liknande för hexadecimala tal. Till exempel kan ett tal i bas 23 skrivas:

    23\1234ABCD

Den andra typen av GEL-tal är rationella tal. Rationella tal fås helt enkelt genom att dividera två heltal. Man skulle kunna skriva:

    3/4

för att få tre fjärdedelar. Rationella tal accepterar också notationen för bråk på blandad form, så för att få ett och tre tiondelar skulle du kunna skriva:

    1 3/10

Nästa taltyp är flyttal. Dessa matas in på liknande sätt som C-notation. Du kan använda `E`, `e` eller `@` som exponentavskiljare. Observera att använda exponentavskiljaren ger ett flyttal även om det inte är något decimaltecken i talet. Exempel:

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

När Genius skriver ut ett flyttal kommer det alltid att lägga till ett `.0` även om talet är ett heltal. Detta är för att indikera att flyttal tas som inexakta kvantiteter. Då ett tal är skrivet i vetenskaplig notation är det alltid ett flyttal och Genius skriver därför inte ut `.0`.

Den sista taltypen i GEL är de komplexa talen. Du kan mata in ett komplext tal som en summa av reella och imaginära delar. För att lägga till en imaginärdel, lägg till ett `i`. Här är några exempel då komplexa tal matas in:

    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` i stä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`.

Utöver detta kan du göra aritmetik med booleska värden. Till exempel är

    ( (1 + true) - false ) * true

detsamma som:

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

Endast addition, subtraktion och multiplikation stöds. Om du blandar tal med booleska värden i ett uttryck så konverteras talen till booleska värden som beskrivits ovan. Detta betyder att till exempel:

    1 == true

alltid evaluerar till `true` eftersom 1 kommer konverteras till `true` innan det jämförs med `true`.

### Strängar

Som tal och booleska värden kan även strängar i GEL lagras som värden i variabler och skickas till funktioner. Du kan också konkatenera en sträng med ett annat värde med plus-operatorn. Till exempel:

    a=2+3;"Resultatet är: "+a

kommer skapa strängen:

    Resultatet är: 5

Du kan också använda C-liknande kontrollsekvenser som `\n`,`\t`,`\b`,`\a` och `\r`. För att få ett `\` eller `"` i strängen kan du citera det med ett `\`. Till exempel:

    "Omvänt snedstreck: \\ Citattecken: \" Tabbar: \t1\t2\t3"

kommer skapa en sträng:

    Omvänt snedstreck: \ Citattecken: " Tabbar: 	1	2	3

Observera dock att när en sträng returneras från en funktion är kontrollsekvenser citerade så att utdata kan användas som indata. Om du vill skriva ut strängen som den är (utan citerade kontrollsekvenser), använd funktionerna `print` eller `printn`.

Dessutom kan du använda biblioteksfunktionen `string` för att konvertera vad som helst till en sträng. Till exempel:

    string(22)

kommer returnera

    "22"

Strängar kan också jämföras med operatorerna `==` (lika med), `!=` (inte lika med) och `<=>` (jämförelse)

### 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`.

Exempel:

    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