Codeblock Syntax
Basisinformationen zur Syntax der Codeblock Programmiersprache
Variablen-Typen
Diagramm
Beschreibung
C | Character/String |
---|---|
D | Date |
L | Logical/Boolean |
N | Numeric |
U | Kann verschiedene werte annehmen (Default) |
R | Referenzvariable |
DT | DateTime |
DR | Duration |
Variablendeklaration
Diagramm
Restriktionen
Eine Variablendeklaration darf pro Programm und Funktion nur ein Mal am Anfang definiert werden.
Wird eine Zuweisung direkt bei der Deklaration getroffen muss der Typ angegeben werden. Siehe Beispiel a).
Beispiele
a)
m_cString:C:="Text", m_nZahl:N:=10
b)Sonderfall Datum
m_dDatum:D:=Date()
c)
m_dDatum, m_cText, m_nNummer
Arraydeklaration
Diagramm
Beispiel
a)
| m_aAr |
m_aAr := {"1", "2", "3"},
WriteLn(m_aAr[1])
Ergebnis der Ausgabe: "1"
b)
| m_aAr |
m_aAr := {{1, 2}, {3, 4}},
WriteLn(m_aAr[2, 1]),
Ergebnis der Ausgabe: 3
Anweisungen
Diagramme
Restriktionen
Sonderanweisungen sind nur innerhalb bestimmter Anweisungen möglich:
EXIT nur in einer Funktion
BREAK nur in einer Schleife
Ein Block besteht aus 1 bis n Anweisungen und endet ohne Komma. Mehrere Anweisungen werden durch Komma getrennt.
Zuweisung
Diagramm
Beispiele
a)
| m_nResultat:N:=0 |
m_nResultat := 10
Wert von m_nResultat = 10
b)
| m_nResultat:N:= 0 |
function Addition(add1, add2)
result := add1 + add2
end
m_nResultat := Addition(10,5)
Ergebnis: m_nResultat = Rückgabewert der Funktion Addition (hier: 15)
Rekursive Zuweisung
Restriktionen
Es können ganze Ausdrücke zugewiesen werden, sofern die rechte Seite einen eindeutigen Wert ergibt.
Beispiele
| m_nTest |
m_nTest := 10,
m_nTest := (m_nTest += (m_nTest + 1)),
WriteLn(Str(m_nTest))
Ergebnis: Ausgabe des Strings „21"
Funktionsdefinition
Diagramm
Beispiele
a)
| nResultat:N:=0 |
function Testfunktion()
result := 10
end
nResultat := Testfunktion()
Ergebnis: nResultat = 10
b)
| nResultat:N:=0 |
function Testfunktion(param1, param2)
| nErgebnis |
nErgebnis := param1 + param2,
result := nErgebnis
end
nResultat := Testfunktion(5, 5)
Ergebnis: nResultat = 10
c)
| nResultat:N:=0 |
function Testfunktion(param1, param2)
function Multiplikation(p1, p2)
result := p1 * p2
end,
nResult := Multiplikation(param1, param2)
end
nResultat := Testfunktion(5, 5)
Ergebnis: nResultat = 25
d)
| nResultat:N:=0 |
function Testfunktion_A() ... end,
function Testfunktion_B() ... end,
function Testfunktion_A()
result := Testfunktion_B(),
end
function Testfunktion_B()
result := 10,
end
nResultat := Testfunktion_A()
Ergebnis: nResultat = 10
e)
| nResultat:N:=0 |
function Testfunktion(param1:=10)
result := param1,
end
nResultat := Testfunktion()
Funktionsrückgabewert
Restriktionen
Der Rückgabewert einer Funktion wird in der Spezialvariable „result" gespeichert, welche immer automatisch vorhanden ist und nicht extra deklariert werden muss.
Beispiele
function Testfunktion()
result := 10
end,
WriteLn(Str(Testfunktion()))
Ergebnis: Ausgabe des Strings „10"
Funktionsende
Die Ausführung einer Funktion endet mit die letzte Zeile der Funktion vor
end,
oder wenn die Ausführung auf einemExit
Befehl landet. Nach dem BefehlExit
keine andere Zeile der Funktion in der aktuellen Ausführung ausgewertet wird.
Beispiele
function Testfunktion()
Meld("hello"),
Exit,
Meld("world"),
end,
Testfunktion()
Ergebnis: Die Meldung “world” wird nie angezeigt
Call by Reference für Übergabeparameter
Restriktionen
Parametertyp R markiert einen Übergabeparameter für referenzierte Funktionsaufrufe.
Beispiele
| nTest |
function Test(nCount:R)
WriteLn(str(nCount)),
nCount++
end,
nTest := 10,
test(nTest),
WriteLn(str(nTest))
Ergebnis: Ausgabe der Strings „10" und „11"
Exit mit Zuweisung des Results
Restriktionen
Exit mit Parameterangabe bewirkt eine implizite Zuweisung des Parameters an das Funktionsergebnis Result.
Beispiel
function ExitResult()
Exit(10),
WriteLn('Dieser Text wird nie geschrieben'),
end,
ExitResult()
Ergebnis: 10
Funktionsaufruf
Diagramm
Beispiele
a)
| m_nResultat:N:=0 |
function Testfunktion()
result := 10
end,
m_nResultat := Testfunktion()
Ergebnis: m_nResultat = 10
b)
| m_nResultat:N:=0 |
function Sum(nP1, nP2)
result := nP1 + nP2
end,
m_nResultat := Sum(10, 15)
Ergebnis: m_nResultat = 25
Einfache Arithmetik
Diagramm
Restriktionen
Nur mit numerischen Werten und Variablen
Ausnahme: beim "+" Operator können auch Strings verwendet werden.
Innerhalb einer Operation müssen alle Typen gleich sein.
Beispiele
a)
| m_nResultat:N:=0 |
m_nResultat := 10 + 10
Ergebnis: m_nResultat = 20
b)
| m_nResultat:N:=0 |
m_nResultat := 2 ^ 5
Ergebnis: m_nResultat = 32
c)
| m_cString, m_nZahl |
m_cString := "Die Zahl: ",
m_nZahl := 10,
m_cString := m_cString + str(m_nZahl)
Ergebnis: m_cString = "Die Zahl: 10"
Automatische Arithmetik
Diagramm
Restriktionen
Nur mit numerischen Werten und Variablen
Ausnahme: beim "+=" Operator können auch Strings verwendet werden.
Bei einer Operation müssen alle Typen gleich sein.
Beispiele
a)
| m_nResultat:N:=5 |
m_nResultat += 1
Ergebnis: m_nResultat = 6
b)
| m_nResultat:N:=0 |
m_nResultat++
Ergebnis: m_nResultat = 1
Bedingungen und Vergleiche
Allgemein
Diagramm
Restriktionen
Vergleiche werden innerhalb Bedingungen und logischen Zuweisungen verwendet
Operator „$" kann nur mit „String" Werten und Variablen verwendet werden
if-Anweisungen
Diagramm
Beispiele
a)
| m_nResultat:N:=0 |
if (10 >= 5) and (m_nResultat = 0) then
m_nResultat := 10,
else
m_nResultat := 5
endif
Ergebnis: m_nResultat = 10
b)
| m_cTest |
m_cTest := "bc",
if m_cTest $ "abcdefg" then
WriteLn("true")
else
WriteLn("false")
endif
Ergebnis: Ausgabe des Strings „true", da „bc" in „abcdefg" enthalten ist.
c)
| m_bTrue, m_bFalse, m_bRes |
m_bTrue := true,
m_bFalse := false,
m_bRes := m_bTrue and m_bFalse,
if m_bRes then
WriteLn("Wahr"),
else
WriteLn("Falsch"),
endif
Ergebnis: Ausgabe des Strings „Falsch"
case-Anweisungen
Diagramm
Restriktionen
Bei Vergleichen in der of Anweisung wird statt einer Variable nach dem case der boolsche Wert true gesetzt.
Beispiele
a)
| m_nCount |
m_nCount := 1,
case m_nCount
of 0 :: WriteLn("A"),
of 1 :: WriteLn("B"),
otherwise WriteLn("C"),
endcase
Ergebnis: Ausgabe des Strings „B"
b)
| m_nCount |
m_nCount := 1,
case m_nCount
of {0, 1} :: WriteLn("A"),
of {2, 3} :: WriteLn("B"),
otherwise WriteLn("C"),
endcase
Ergebnis: Ausgabe des Strings „A"
c)
| m_nCount |
m_nCount := 10,
case true
of m_nCount < 0 :: WriteLn("A"),
of m_nCount < 5 :: WriteLn("B"),
otherwise WriteLn("C"),
endcase
Ergebnis: Ausgabe des Strings „C"
Schleifen Allgemein
Schleifen ausführen ihre Befehle wiederholend
Eine Schleife kann auf einer beliebigen Zeile mit dem Befehl
Break
beendet werden. Der BefehlBreak
beendet nur die nächste Schleife, die gerade ausgeführt wird.
for-Schleife
Diagramm
Restriktionen
Berechnung der Schleifenwiederholungen erfolgt einmal zu Beginn
Beispiele
a)
| m_nCount:N:=0 |
for m_nCount := 0 to 10 do
WriteLn(m_nCount),
next
Ergebnis: Ausgabe der Zahlen 0 bis 10
b)
| m_nCount:N:=0 |
for m_nCount := 10 downto 0 do
WriteLn(m_nCount),
next
Ergebnis: Ausgabe der Zahlen 10 bis 0
foreach-Schleife
Diagramm
Restriktionen
Berechnung der Schleifenwiederholungen erfolgt einmal zu Beginn
Beispiele
| m_nRec, m_aArr |
m_aArr := {1, 2, 3, 4, 5},
foreach m_nRec in m_aArr do
WriteLn(Str(m_nRec)),
end
Ergebnis: Ausgabe der Zahlen 1 bis 5
while-Schleife
Diagramm
Restriktionen
Berechnung der Schleifenwiederholung erfolgt je Durchlauf
Beispiele
| m_nCount:N:=0 |
while m_nCount <= 10 do
WriteLn(m_nCount),
m_nCount++,
end
Ergebnis: Ausgabe der Zahlen 0 bis 10
repeat-Schleife
Diagramm
Restriktionen
Berechnung der Schleifenwiederholung erfolgt je Durchlauf
Beispiele
| m_nCount:N:=0 |
repeat
writeln(m_nCount),
m_nCount++,
until m_nCount > 10 end
Ergebnis: Ausgabe der Zahlen 0 bis 10
Loop-Schleife
Diagramm
Informationen
Dieser Schleifen-Typ ersetzt Konstruktionen wie z.B.: while True do ...
Loop wird immer mit End abgeschlossen. Die Schleife kann nur in Verbindung mit Break oder Exit (innerhalb von Funktionen) verlassen werden.
Beispiel
| i |
i := 1,
loop // Schleifenbeginn
i++,
if i = 10 then
WriteLn(i),
Break
endif
end // Schleifenende
Include von Programmdateien
Diagramm
Restriktionen
Die zu „includierende" Programmdatei muss freigegeben sein! („Version freigeben")
Beispiele
a) Programmdateipfad: Includeprogramm
Dateiinhalt:
function Ausgabe(cStr)
writeln(cStr)
end
b)
//#P Includeprogramm
Ausgabe("Hallo Welt"),
Ergebnis: Ausgabe des Strings „Hallo Welt"
Exception-Handling / Schutzblöcke
Diagramm
Beispiele
a)
| m_nCount:N:=10 |
startseq
case m_nCount
of 0 :: WriteLn("A"),
of 1 :: WriteLn("B"),
otherwise WriteLn("C"),
endcase
onerror
WriteLn("Fehler")
stopseq
b)
| m_nCount:N:=0 |
startseq
while m_nCount < 10 do
WriteLn(nCount),
end
always
WriteLn("Ende der Sequenz")
stopseq
Kommentare
Beschreibung
Kommentare sorgen für einen verständlicheren Code, indem sie es ermöglichen, zusätzliche Beschreibungen einzuführen, die beim Ausführen des Codes jedoch ignoriert werden.
Beispiele
a) Einzeilige Kommentare:
// Diese Zeile wird nicht ausgeführt.
WriteLn('Hello World'),
b) Mehrzeilige Kommentare:
/*
Diese Zeile wird nicht ausgeführt.
Auch diese Zeile wird nicht ausgeführt.
*/
WriteLn('Hello World'),
c)
Writeln('Hello ' + /* Dieser Bereich wird nicht ausgeführt / komplett ignoriert */ 'World'),