Codeblock Onlinehilfe

Codeblock Syntax

Basisinformationen zur Syntax der Codeblock Programmiersprache

Variablen-Typen

Diagramm
worddavd1fe4d4d11070542a3de989950a56230.png

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
worddav99cbab30de56b9beb9683a6fbdcbb4f5.png

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
worddav66a547557e198bfbb4a4b0c6da64ef8f.png

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
worddav9060ed96a07a2d6bdca15211fb222042.png

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
worddav82ae8e19f6b15d5a772df22384ca516f.png

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
worddav31ffecd472b68f6fcdc26b9efe4ab5f2.png

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 einem Exit Befehl landet. Nach dem Befehl Exit 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
worddavf4af201f1bd7d0ac3cb238ca4991dd40.png

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
worddavf68005e838aea126a754a423a6b0f01e.png

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
worddave435dd73cb57b7f0386e3bba85b4dae0.png

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
worddav745f402d0b5bf90b0a4c1a01afdff220.png
Restriktionen
  • Vergleiche werden innerhalb Bedingungen und logischen Zuweisungen verwendet

  • Operator „$" kann nur mit „String" Werten und Variablen verwendet werden


if-Anweisungen

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

for-Schleife

Diagramm
worddav481aaff3306a7708ab2f9036d0ef5db0.png

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
worddav02b904fc95453289242fa5d0a58a3591.png

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
worddav57f9ec7fee03fbf8690ff362e1fe585e.png

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
worddavb29700357e7c6d221a4f3924a708c633.png

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
worddavfe57a535a7cf0fa5c5ed8f627bec7dcb.png

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
worddav02b4b2b07b447b52d0553c9d1aeb49a5.png

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
worddav655a10add8f48a5fbe67117d9f18317d.png

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'),