Toppnivåsyntax
Föregående | Kapitel 7. Avancerad programmering med GEL | Nästa

## Toppnivåsyntax

Syntaxen skiljer sig något beroende på om du matar in satser på toppnivån gentemot då de används inom parenteser eller i funktioner. På toppnivån uppför sig retur just som om du tryckte retur på kommandoraden. Tänk därför på program som bara en följd av rader som matats in på kommandoraden. I synnerhet behöver du inte ange avskiljaren i slutet på raden (om den förstås inte är del av flera satser inom parenteser). Då en sats inte avslutas med en avskiljare på toppnivån skrivs resultatet ut efter körning.

Till exempel kommer

    function f(x)=x^2
    f(3)

att först skriva ut resultatet av att ställa in en funktion (en representation av funktionen, i det här fallet `(`(x)=(x^2))`) och sedan det förväntade 9. För att undvika detta, ange en avskiljare efter funktionsdefinitionen.

    function f(x)=x^2;
    f(3)

Om du behöver stoppa en avskiljare i din funktion måste den omges av parenteser. Till exempel:

    function f(x)=(
      y=1;
      for j=1 to x do
        y = y+j;
      y^2
    );

Följande kod producerar ett fel då den matas in i toppnivån för ett program, medan den kommer fungera fint i en funktion.

    if Ngt() then
      ExekveraNgt()
    else
      ExekveraNgtAnnat()

Problemet är att efter Genius matematikverktyg ser slutet på raden efter den andra raden kommer det att avgöra att vi har hela uttrycket och exekvera det. Efter exekveringen är klar kommer Genius matematikverktyg att gå till nästa rad och se `else`, och det kommer att producera ett tolkfel. För att fixa detta, använd parenteser. Genius matematikverktyg kommer inte låta sig nöja förrän det har sett att alla parenteser stängts.

    if Ngt() then (
      ExekveraNgt()
    ) else (
      ExekveraNgtAnnat()
    )

Föregående | Upp | Nästa
Kapitel 7. Avancerad programmering med GEL | Hem | Returnera funktioner