Skip to main content
Skip table of contents

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

CODE
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)

CODE
| m_aAr | 
m_aAr := {"1", "2", "3"}, 
WriteLn(m_aAr[1])

Ergebnis der Ausgabe: "1"

b)

CODE
| 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)

CODE
| m_nResultat:N:=0 | 
m_nResultat := 10 

Wert von m_nResultat = 10

b)

CODE
| 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

CODE
| 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)

CODE
| nResultat:N:=0 | 
function Testfunktion() 
   result := 10 
end 
nResultat := Testfunktion() 

Ergebnis: nResultat = 10

b)

CODE
| nResultat:N:=0 | 
function Testfunktion(param1, param2) 
   | nErgebnis | 
   nErgebnis := param1 + param2, 
   result := nErgebnis 
end 
nResultat := Testfunktion(5, 5) 

Ergebnis: nResultat = 10

c)

CODE
| 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)

CODE
| 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)

CODE
| 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

CODE
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 einem Exit Befehl landet. Nach dem Befehl Exit keine andere Zeile der Funktion in der aktuellen Ausführung ausgewertet wird.

Beispiele

CODE
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

CODE
| 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

CODE
function ExitResult() 
Exit(10), 
WriteLn('Dieser Text wird nie geschrieben'), 
end, 
ExitResult() 

Ergebnis: 10

Funktionsaufruf

Diagramm

Beispiele

a)

CODE
| m_nResultat:N:=0 | 
function Testfunktion() 
   result := 10 
end, 
m_nResultat := Testfunktion() 

Ergebnis: m_nResultat = 10

b)

CODE
| 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)

CODE
| m_nResultat:N:=0 | 
m_nResultat := 10 + 10 

Ergebnis: m_nResultat = 20

b)

CODE
| m_nResultat:N:=0 | 
m_nResultat := 2 ^ 5 

Ergebnis: m_nResultat = 32

c)

CODE
| 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)

CODE
| m_nResultat:N:=5 | 
m_nResultat += 1 

Ergebnis: m_nResultat = 6

b)

CODE
| 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)

CODE
| 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)

CODE
| 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)

CODE
| 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)

CODE
| 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)

CODE
| 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)

CODE
| 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 Befehl Break beendet nur die nächste Schleife, die gerade ausgeführt wird.

for-Schleife

Diagramm

Restriktionen

  • Berechnung der Schleifenwiederholungen erfolgt einmal zu Beginn

Beispiele

a)

CODE
| m_nCount:N:=0 | 
for m_nCount := 0 to 10 do 
   WriteLn(m_nCount), 
next 

Ergebnis: Ausgabe der Zahlen 0 bis 10

b)

CODE
| 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

CODE
| 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

CODE
| 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

CODE
| 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

CODE
| 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:

CODE
function Ausgabe(cStr) 
   writeln(cStr) 
end 

b)

CODE
//#P Includeprogramm 
Ausgabe("Hallo Welt"), 

Ergebnis: Ausgabe des Strings „Hallo Welt"

Exception-Handling / Schutzblöcke

Diagramm

Beispiele

a)

CODE
| 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)

CODE
| 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:

CODE
// Diese Zeile wird nicht ausgeführt. 
WriteLn('Hello World'), 


b) Mehrzeilige Kommentare:

CODE
/* 
Diese Zeile wird nicht ausgeführt. 
Auch diese Zeile wird nicht ausgeführt.
*/ 
WriteLn('Hello World'), 

c)

CODE
Writeln('Hello ' + /* Dieser Bereich wird nicht ausgeführt / komplett ignoriert */ 'World'), 

 

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.