Dokumentation · Version 0.2 · Kapitel 06

Aufgaben und Fehler

Aufgaben sind das, was anderswo Funktionen heißt: ein Stück Programm mit Namen, das sich aufrufen lässt — als Befehl oder als Wert. Dazu kommt in diesem Kapitel, was passiert, wenn etwas schiefgeht.

Aufgaben definieren

Definiere Aufgabe … Ende.

Mit und ohne Rückgabe
Anmerkung: Eine Aufgabe, die etwas tut.
Definiere Aufgabe Begrüße mit Name:
    Zeige "Hallo, " und Name und "!".
Ende.

Anmerkung: Eine Aufgabe, die etwas liefert.
Definiere Aufgabe Summe von a und b:
    Gib a plus b zurück.
Ende.

Führe Begrüße mit "Wolfgang" aus.
Zeige Summe von 3 und 4.

von und mit sind austauschbar — man nimmt, was sich besser liest. Mehrere Argumente werden mit und aneinandergereiht.

Der Name ist ein einziges Wort

Definiere Aufgabe Zeige Preisliste: geht nicht — Klarsatz liest das als Aufgabe Zeige mit einem Parameter Preisliste. Setz die Wörter zusammen: Definiere Aufgabe PreislisteAnzeigen: oder Definiere Aufgabe ZeigePreisliste:

Zwei Arten, eine Aufgabe zu rufen

Als Befehl, wenn sie etwas tut: Führe Begrüße mit "Anna" aus. — ein eigener Satz.

Als Wert, wenn sie etwas zurückgibt: Zeige Summe von 3 und 4. — mitten in einem Satz, dort wo sonst eine Zahl stünde.

Eine Aufgabe ohne Gib … zurück lässt sich nicht als Wert benutzen; eine mit Rückgabe darf man mit Führe … aus trotzdem aufrufen und das Ergebnis verfallen lassen.

SatzWirkung
Definiere Aufgabe N mit a:beginnt die Definition
Gib Wert zurück.beendet die Aufgabe mit einem Ergebnis
Führe N mit x aus.Aufruf als Befehl
Zeige N von x.Aufruf als Wert

Sichtbarkeit und Reihenfolge

Was drinnen bleibt, was draußen gilt

  • Namen, die in einer Aufgabe angelegt werden, sind außen unsichtbar.
  • Globale Namen sind innen lesbar.
  • Aufgaben dürfen vor ihrer Definition benutzt werden — die Anzahl der Parameter wird vorab gelesen, damit und eindeutig bleibt.
  • Aufgaben dürfen sich selbst aufrufen, bis zu 150 Ebenen tief.
  • Eine Variable darf nicht heißen wie eine Aufgabe — das meldet Klarsatz schon beim Lesen.
Rekursion
Definiere Aufgabe Fakultät von n:
    Wenn n höchstens 1 ist, gib 1 zurück.
    Merke Fakultät von (n minus 1) als Rest.
    Gib n mal Rest zurück.
Ende.

Zähle von 1 bis 10 mit i:
    Zeige i und "! = " und Fakultät von i.
Ende.
Klammern bei zusammengesetzten Argumenten

Ein Argument ist ein einfacher Wert. Steht dort eine Rechnung, gehört sie in Klammern: Fakultät von (n minus 1). Ohne Klammern wäre nicht zu erkennen, wo das Argument aufhört.

Fehler abfangen

Versuche … Bei Fehler … Ende.

Tritt im Versuche-Block ein Fehler auf, springt der Ablauf in den Bei Fehler-Block. Der Name Fehlermeldung ist dort automatisch gefüllt — man muss ihn nicht anlegen.

Fehlerbehandlung
Versuche:
    Merke 10 geteilt durch 0 als x.
    Zeige x.
Bei Fehler:
    Zeige "Problem: " und Fehlermeldung.
Ende.

Erstelle eine Liste namens Zahlen mit 3 und 1 und 2.
Versuche:
    Zeige Element 9 von Zahlen.
Bei Fehler:
    Zeige "Es gibt keinen 9. Eintrag: " und Fehlermeldung.
Ende.

Zeige "Das Programm läuft weiter.".

Zusicherungen

Stelle sicher, dass … prüft eine Bedingung und bricht das Programm ab, wenn sie nicht stimmt. Gedacht für Annahmen, die gelten müssen — nicht für erwartbare Fehleingaben.

Zusicherung
Merke 5 als Guthaben.
Stelle sicher, dass Guthaben größer als 0 ist.
Zeige "Das Guthaben ist in Ordnung.".
Das Schrittlimit ist kein Fehler

Bricht der Interpreter wegen des Schrittlimits ab, lässt sich das nicht mit Versuche abfangen. Sonst könnte ein Programm seine eigene Notbremse überstimmen.

Dateien

Lies und Schreibe — im Spielplatz gesperrt

Dateizugriff
Lies die Datei "daten.txt" als Inhalt.
Teile Inhalt bei "\n" zu Zeilen.
Zeige "Die Datei hat " und die Länge von Zeilen und " Zeilen.".

Schreibe "Fertig." in die Datei "out.txt".
EinstellungWirkung
ohne Angabenur der Arbeitsordner und alles darunter — kein .., keine absoluten Pfade, kein Ausbruch über Verknüpfungen
--dateien-ordner ORDNERbeschränkt auf diesen Ordner
--ohne-dateienjeder Dateizugriff gesperrt
--dateien-ueberallhebt den Schutz auf — nur für eigene Programme
Im Spielplatz gibt es keine Festplatte

Der Spielplatz arbeitet mit einem Dateisystem im Arbeitsspeicher: Schreibe legt dort etwas ab, das mit dem Lauf wieder verschwindet. Auf eine echte Festplatte wird nichts geschrieben — weder auf deine noch auf den Server. Am eigenen Rechner gilt stattdessen die Tabelle oben.