Netlogo Rescue Übung 3 - Netlogo Programmiersprache

Die Netlogo Programmiersprache

Netlogo ist eine textbasierte Programmiersprache. Wenn du bisher nur graphische Programmiersprachen verwendet hast (EV3, Scratch usw.), kannst du vorher den Tinkercad-Kurs durcharbeiten, um eine textbasierte Programmiersprache (C++) kennen zu lernen.

Um das Roboter-Modell in Netlogo programmieren zu können, solltest du folgende Programmstrukturen kennen:
Diese Seite soll als dein Netlogo Cheat-Sheet fungieren:


Kommentare

In C++:

// einzeiliges Kommentar

In Netlogo:

; einzeiliges Kommentar

In Netlogo gibt es keine Mehrzeiligen Kommentare.


Variablen

In C++:

int zahl = 12; // zahl hat jetzt den Wert 12
zahl = 50;     // zahl hat jetzt den Wert 50

In Netlogo:

let zahl 12    ; zahl hat jetzt den Wert 12
set zahl 50    ; zahl hat jetzt den Wert 50

In Netlogo gibt es keinen Zuweisungsoperator (=). let deklariert eine Variable und set speichert einen Wert in ihr ab. Netlogo erkennt den Datentyp der Variablen automatisch. Unabhängig vom Datentyp (Zahl, logischer Wert, Text) wird immer let verwendet.


Artithmetik

In C++:

int a = 2;                     // a hat jetzt den Wert 2
int b = 6;                     // b hat jetzt den Wert 6
int c = ((a * b) + a - b) / 4// c hat jetzt den Wert 2

In Netlogo:

let a 2                        ; a hat jetzt den Wert 2
let b 6                        ; b hat jetzt den Wert 6
let c ((a * b) + a - b) / 4    ; c hat jetzt den Wert 2

Artithmetik funktioniert in Netlogo genauso wie in C++.
Es existieren wie gewohnt die artithmetischen Operatoren:
  • + Addition
  • - Subtraktion
  • * Multiplikation
  • / Division

Vergleiche

In C++:

int a = 2;         // a hat jetzt den Wert 2
int b = 6;         // b hat jetzt den Wert 6
bool wahr = b > a; // 6 ist größer 2

In Netlogo:

let a 2            ; a hat jetzt den Wert 2
let b 6            ; b hat jetzt den Wert 6
let wahr b > a     ; 6 ist größer 2

Vergleiche funktionieren in Netlogo ähnlich wie in C++.
Es existieren wie gewohnt die Vergleichs-Operatoren:
  •  ist gleich (Achtung! Das ist bei C++ ==, da = ja schon der Zuweisungsoperator ist, den es in Netlogo nicht gibt!)
  •  ist kleiner
  • <= ist kleiner gleich
  •  ist größer
  • >= ist größer als
  • != ist ungleich

Logische (Boolsche) Ausdrücke

In C++:

int a = true;          // a hat jetzt den Wert true
int b = false;         // b hat jetzt den Wert false
bool wahr = a && !b;   // wahr und (nicht unwahr) ist wahr

In Netlogo:

let a true             ; a hat jetzt den Wert true
let b false            ; b hat jetzt den Wert false
let wahr a and not b   wahr und (nicht unwahr) ist wahr

Vergleiche funktionieren in Netlogo ähnlich wie in C++, nur werden die logischen Operatoren nicht durch kryptische Zeichen, sondern englische Worte geschrieben:
  • and logisches Und
  • or  logisches Oder
  • not nicht (Negation)

Verzweigungen

In C++:

int a = true;          // a hat jetzt den Wert true
int b = false;         // b hat jetzt den Wert false
if (a && !b) {
  // das hier wird ausgeführt, weil a und (nicht b) ist wahr
} else {
  // das hier wird nicht ausgeführt
}

In Netlogo:

let a true             ; a hat jetzt den Wert true
let b false            ; b hat jetzt den Wert false
ifelse a and not b [
  ; das hier wird ausgeführt, weil a und (nicht b) ist wahr
] [
  ; das hier wird nicht ausgeführt
]

In Netlogo wird die Bedingung nicht in Klammern geschrieben. Die eigentlichen Verzweigungsblöcke werden in Eckige Klammern [ ] geschrieben. Diese befinden sich mit auf der 8 und 9 Taste auf der Tastatur.

Will man auch einen else-Zweig haben, muss man dies in Netlogo schon oben bei der Bedingung ankündigen. Dann darf man auch 2 Verzweigungsblöcke benutzen. Natürlich darf man auf das else auch verzichten. Das sieht dann so aus:

In Netlogo:

let a true             ; a hat jetzt den Wert true
let b false            ; b hat jetzt den Wert false
if a and not b [
  ; das hier wird ausgeführt, weil a und (nicht b) ist wahr
]


Schleifen

Zählschleife:

In C++:

for (int zaehler = 0; zaehler < 10; zaehler++) {
  // zaehler wird von 0 bis 9 hochgezählt.
  // Wird also 10 mal ausgeführt.
}

In Netlogo:

repeat 10 [
  ; Wird 10 mal ausgeführt.
]

while-Schleife:

In C++:

while (true) {
  // true ist immer wahr.
  // Endlosschleife
}

In Netlogo:

while [true] [
  ; true ist immer wahr.
  ; Endlosschleife
]

In Netlogo wird die Bedingung in eckige Klammern [ ] geschrieben. Auch der Schleifenkörper steht in eckigen Klammern.


Prozeduren

In C++:

void etwas_machen({
  // etwas machen
}

In Netlogo:

to etwas-machen
  ; etwas machen
end

In Netlogo wird eine Prozedur mit to definiert. Danach folgt der Name der Prozedur und der Inhalt. Der Inhalt der Prozedur ended mit end.

Man kann der Prozedur auch Parameter mitgeben:

In C++:

void etwas_machen(int parameter_zahl) {
  // etwas mit parameter_zahl machen
}

In Netlogo:

to etwas-machen [parameter_zahl]
  ; etwas mit parameter_zahl machen
end

In Netlogo stehen die Parameter in eckigen Klammern [ ]. Man muss ihnen weder einen Datentyp verpassen noch let benutzen.


Funktionen

In C++:

int addieren(int a, int b) {
  return a + b;
}

In Netlogo:

to-report addieren [a b]
  report a + b
end

In Netlogo wird eine Funktion mit to-report definiert. Der Datentyp des Rückgabewertes wird automatisch erkannt (genau wie auch bei let). Danach folgt der Name der Funktion. Die Parameter stehen in eckigen Klammern [ ]. Man muss ihnen weder einen Datentyp verpassen noch let benutzen. Das Ergebnis (der Rückgabewert) wird mit report zurückgegeben.

Kommentare

Beliebte Posts aus diesem Blog

Tinkercad Übung 6 - LED mit Taster ansteuern

Tinkercad Übung 11 - LED dimmen

Tinkercad Übung 15 - Ultraschallsensor auslesen