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.
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.
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:
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.
| Satz | Wirkung |
|---|---|
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
undeindeutig 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.
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.
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.
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.
Merke 5 als Guthaben. Stelle sicher, dass Guthaben größer als 0 ist. Zeige "Das Guthaben ist in Ordnung.".
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
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".
| Einstellung | Wirkung |
|---|---|
| ohne Angabe | nur der Arbeitsordner und alles darunter — kein .., keine absoluten Pfade, kein Ausbruch über Verknüpfungen |
--dateien-ordner ORDNER | beschränkt auf diesen Ordner |
--ohne-dateien | jeder Dateizugriff gesperrt |
--dateien-ueberall | hebt den Schutz auf — nur für eigene Programme |
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.