ApCoCoA-1:Examples Tutorial De Loops
Schleifen und Irrwege
Ein nicht wegzudenkendes Programmiermittel sind Schleifen und If-Abfragen. Deshalb wollen wir uns dieser hier kurz annehmen.
For-Schleife
For I:=1 To 10 Do
Befehle
EndFor;
Hier werden die Anweisungen, welche sich in Befehle verbergen 10 Mal ausgeführt. Der For-Befehl besteht aus den Teilen For, To, Do und EndFor;, es bedarf also nur eines Semikolons am Ende von EndFor um den Befehl zu beenden. Die Erhöhung des Zählers I wird automatisch mit jedem durchlauf durchgeführt.
ForEach-Schleife
Sei L:=1..10; eine Liste.
ForEach T In L Do
Befehle
EndForEach;
Für jedes Element der Liste L wird also ein Schleifendurchlauf ausgeführt, in dem die in Befehle enthaltenen Anweisungen abgearbeitet werden. Diese Variante der For-Schleife besteht aus den Teilen ForEach, In, Do und EndForEach;.
While-Schleife
While logische Bedingung Do
Befehle
EndWhile;
Solange die logische Beingung den Wert TRUE liefert, wird diese Schleife durchlaufen. Die Schleife wird gestoppt, wenn die logische Beingung FALSE ergibt. Die üblichen Bedingungen sind N=5 (gleich --- Vorsicht: hier kein : verwenden), <= (kleiner gleich), < (kleiner), <> (ungleich), >= (größer gleich) und > (größer).
I:=1;
While I<11 Do
Befehle
I:=I+1;
EndFor;
ist das Pendant zu obiger For-Schleife.
Warnung: Achten Sie darauf, dass Ihre While-Schleife irgendwann terminiert!
If-Abfrage
If logische Bedingung Then
Befehle
EndIf;}
Die in Befehle enthaltenen Anweisungen werden genau dann ein Mal ausgeführt, wenn die logische Bedingung TRUE liefert.
If-Verzweigung
If logische Bedingung Then
Befehle1
Else;
Befehle2
EndIf;
Die Anweisungen in Befehle1 werden nur dann ausgeführt, wenn die logische Bedingung TRUE liefert, ansonsten werden die in Befehle2 enthaltenen Anweisungen ausgeführt.
Beispiel: Absolutbetrag
Auch wenn eine Funktion wie der Absolutbetrag in CoCoA schon längst implementiert ist (Abs(N)), so wollen wir diese doch noch ein Mal selbst bauen, um erste Erfahrungen mit Verzweigungsbefehlen zu sammeln:
Define AbsValue(Num)
If Num<0 Then
Return -Num;
Else
Return Num;
EndIf;
EndDefine;
Weiter geht's im Kapitel Lineare Gleichungssysteme.