Skip to content
This repository was archived by the owner on Nov 7, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ The format is loosely inspired by Keep a Changelog.

### Changed

- **Web 0.15.2, checklist and quiz always in their own steps:** every lesson in both worlds now ends with its own „Checkliste“ step followed by its own „Wissenstest“ step, after at least one game (Holger: VisuBot lesson 1 step 5 had both in one step before 0.14.33). Three robot lessons still lacked a final quiz step: L2 „Der mBot2“ (game „Sensor oder Aktor?“ moves into its own step before the checklist, the quiz from „Sensoren und Aktoren“ moves to the new „Wissenstest“ and gets six more questions, one per checklist item), L3 „Das Quadrat“ and L27 „Eigene Methoden“ (new „Wissenstest“ with five questions each; the small quizzes inside the steps stay). de/en. A new test (`web/test/lessonEnd.ts`, used by lessons.test.ts and visubotLessons.test.ts) fails if the checklist shares a step with anything else, if the quiz is not alone in the last step, or if no game comes before the checklist. Saved self-assessments in L2 start fresh because steps moved.
- **Web 0.15.1, third hint and robot game moved:** eight harder exercises get a third hint that gives the outline of the solution box by box (L9 Schaltjahr, L10 Taschenrechner, L12 Summe bis 0, L14 Rechteck, L15 Summe und Maximum, L17 Rückwärts and Wörter zählen, L19 Absteigend sortieren; de/en/pt, with the variable names of each language). Students working alone are no longer stuck after two hints; the sample solution stays teacher-only. VisuBot: the game „Wo landet der mBot2?“ moves from lesson 1 „Struktogramm und Editor“ (where the commands with numbers in brackets were not explained yet) to lesson 2 „Der mBot2“, right after „Befehle für den mBot2“ and „Erste Fahrt“ (de/en). Saved step positions in these two lessons may shift by one.
- **Web 0.15.0, release:** version number only, no further changes. 0.15.0 bundles everything since 0.14.x: VisuBot as a robotics-only world with its own basic lessons, a game in every lesson, repaired lesson steps (0.14.34) and lessons that are easier for self-study (0.14.35).
- **Web 0.14.35, lessons easier for self-study:** VisuBot lesson 3 gets a new step „So sieht Java aus“ before the first Java exercise: where the Code area is, the square with a variable in Java, semicolons, the `for` head, curly brackets, upper and lower case, and how to solve a Java exercise (Im Editor öffnen, type, Prüfen); plus a Kompetenz and checklist item. VisuBot lesson 2 explains the counter `i` of the for loop (what `int i = 0`, `i < 5`, `i++` mean, table of the five runs). VisuBot says `true`/`false` like the editor instead of Ja/Nein (lesson text, hints, tasks). VisuBot lesson 1 (Struktogramm und Editor) says that every exercise ends with Prüfen, often in several worlds, and that the hints help. VisuStruct lesson 4 explains `"Text: " + variable` in the lesson text before the exercise „Rechteck“ (before, only its second hint did). Lesson 2 names the tool buttons Kopieren, Einfügen and Rückgängig for tablets without a keyboard and points to the Simulation button. The tasks of lessons 29–40 get a list „Du bist fertig, wenn …“ with things you can see in the window, so students working alone know when they are done (de/en/pt; VisuBot de/en).
Expand Down
186 changes: 114 additions & 72 deletions web/lessons/de/visubot/01-der-mbot2.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,78 +170,6 @@ Das Wort kommt vom lateinischen *agere*, „handeln“: Aktoren handeln, Sensore

Dein Programm liest die Sensoren und steuert die Aktoren. Das kennst du schon als Eingabe, Verarbeitung und Ausgabe.

::: quiz
? Ordne jedes Teil seiner Aufgabe zu.
→ Hallo mBot2
= Ultraschallsensor -> misst den Abstand
= Motoren -> bewegen die Räder
= CyberPi -> führt das Programm aus
= Liniensensor -> erkennt eine dunkle Linie
? Welche Teile sind Aktoren?
→ Sensoren und Aktoren
- [x] Motoren
- [ ] Ultraschallsensor
- [x] LEDs
- [ ] Liniensensor
> Aktoren tun etwas, Sensoren messen etwas.
:::

::: spiel frage
titel: Spiel: Sensor oder Aktor?
intro: Misst das Bauteil etwas, oder tut es etwas? Zehn Runden.
antworten: Sensor | Aktor

runde:
frage: Der Ultraschallsensor misst, wie weit die Wand weg ist.
richtig: Sensor
> Er misst etwas: den Abstand.

runde:
frage: Die Motoren drehen die Räder.
richtig: Aktor
> Sie tun etwas: Sie bewegen den mBot2.

runde:
frage: Die LEDs leuchten rot.
richtig: Aktor
> Leuchten ist etwas tun, nicht messen.

runde:
frage: Der Liniensensor erkennt das schwarze Klebeband.
richtig: Sensor
> Er misst, wie viel Licht vom Boden zurückkommt.

runde:
frage: Der Lautsprecher piept.
richtig: Aktor
> Er gibt einen Ton aus.

runde:
frage: Das Mikrofon hört dein Klatschen.
richtig: Sensor
> Es misst die Lautstärke.

runde:
frage: Der Bildschirm zeigt „Hallo VisuBot!“.
richtig: Aktor
> Anzeigen ist eine Ausgabe.

runde:
frage: Taste A merkt, dass du drückst.
richtig: Sensor
> Tasten sind Sensoren: Sie melden, ob sie gedrückt sind.

runde:
frage: Der Lagesensor merkt, dass der mBot2 schief steht.
richtig: Sensor
> Er misst die Neigung.

runde:
frage: Die Ringe am Ultraschallsensor leuchten blau.
richtig: Aktor
> Gemein! Das Bauteil ist ein Sensor, aber das Leuchten der Ringe ist eine Ausgabe.
:::

## Finde die Bauteile

Jetzt bist du dran: Klicke im Modell auf das gesuchte Teil. Liegst du richtig, kommt die nächste Frage.
Expand Down Expand Up @@ -360,6 +288,66 @@ Ist der mBot2 verbunden, erscheint unter der Welt **🔧 mBot2 testen**. Klapp e

Ändert sich ein Wert nicht, obwohl du etwas tust, stimmt etwas nicht. Dann sag deiner Lehrkraft Bescheid, bevor du programmierst.

## Spiel: Sensor oder Aktor?

::: spiel frage
titel: Spiel: Sensor oder Aktor?
intro: Misst das Bauteil etwas, oder tut es etwas? Zehn Runden.
antworten: Sensor | Aktor

runde:
frage: Der Ultraschallsensor misst, wie weit die Wand weg ist.
richtig: Sensor
> Er misst etwas: den Abstand.

runde:
frage: Die Motoren drehen die Räder.
richtig: Aktor
> Sie tun etwas: Sie bewegen den mBot2.

runde:
frage: Die LEDs leuchten rot.
richtig: Aktor
> Leuchten ist etwas tun, nicht messen.

runde:
frage: Der Liniensensor erkennt das schwarze Klebeband.
richtig: Sensor
> Er misst, wie viel Licht vom Boden zurückkommt.

runde:
frage: Der Lautsprecher piept.
richtig: Aktor
> Er gibt einen Ton aus.

runde:
frage: Das Mikrofon hört dein Klatschen.
richtig: Sensor
> Es misst die Lautstärke.

runde:
frage: Der Bildschirm zeigt „Hallo VisuBot!“.
richtig: Aktor
> Anzeigen ist eine Ausgabe.

runde:
frage: Taste A merkt, dass du drückst.
richtig: Sensor
> Tasten sind Sensoren: Sie melden, ob sie gedrückt sind.

runde:
frage: Der Lagesensor merkt, dass der mBot2 schief steht.
richtig: Sensor
> Er misst die Neigung.

runde:
frage: Die Ringe am Ultraschallsensor leuchten blau.
richtig: Aktor
> Gemein! Das Bauteil ist ein Sensor, aber das Leuchten der Ringe ist eine Ausgabe.
:::

## Checkliste

Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀️ kann ich sicher. Bei ⛅ und ☂️ hilft dir **Nachlesen**. Danach kommt der Wissenstest. Er zeigt dir, ob deine Einschätzung stimmt.

::: checkliste
Expand All @@ -372,3 +360,57 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀
- Ich kann den echten mBot2 per USB-C verbinden und wieder trennen. → Den echten mBot2 verbinden
- Ich kann prüfen, ob alle Sensoren und Aktoren funktionieren. → Den mBot2 testen
:::

## Wissenstest

::: quiz
? Ordne jedes Teil seiner Aufgabe zu.
→ Hallo mBot2
= Ultraschallsensor -> misst den Abstand
= Motoren -> bewegen die Räder
= CyberPi -> führt das Programm aus
= Liniensensor -> erkennt eine dunkle Linie
? Welche Teile sind Aktoren?
→ Sensoren und Aktoren
- [x] Motoren
- [ ] Ultraschallsensor
- [x] LEDs
- [ ] Liniensensor
> Aktoren tun etwas, Sensoren messen etwas.
? Wie misst der Ultraschallsensor den Abstand?
→ Der Ultraschallsensor
- [ ] Er fotografiert die Wand.
- [x] Er schickt einen sehr hohen Ton los und wartet auf das Echo.
- [ ] Er tastet die Wand mit seinen blauen Ringen ab.
> Je länger das Echo braucht, desto weiter ist die Wand weg.
? Woran erkennt der Liniensensor eine schwarze Linie?
→ Unter dem Roboter
- [x] Von der schwarzen Linie kommt wenig Licht zurück.
- [ ] Die Linie ist wärmer als der Boden.
- [ ] Er hört, wie die Räder über die Linie rollen.
> Jeder Fühler leuchtet den Boden an. Heller Boden wirft viel Licht zurück, eine schwarze Linie wenig.
? Was tut `mbot.turnRight()`?
→ Befehle für den mBot2
- [ ] Der mBot2 fährt 10 cm nach rechts.
- [x] Der mBot2 dreht sich um 90° nach rechts.
- [ ] Die rechte LED geht an.
> Ohne Zahl in den Klammern dreht er sich um 90°. `mbot.turnRight(45)` dreht nur 45°.
? Im Struktogramm stehen fünf Kästen `mbot.forward()` untereinander. Wie weit fährt der mBot2 in der Simulation?
→ Erste Fahrt
- [ ] 5 cm
- [x] 50 cm
- [ ] 10 cm
> Jedes `mbot.forward()` fährt 10 cm, also ein Kästchen im Gitter.
? Du bist mit dem echten mBot2 fertig. Was machst du, bevor du das Kabel ziehst?
→ Den echten mBot2 verbinden
- [x] Noch einmal auf **🟢 mBot2** klicken und warten, bis „Bis bald!“ dasteht
- [ ] Den Schiebeschalter auf OFF schieben
- [ ] Nichts, das Kabel darf sofort raus
> Erst nach „Bis bald!“ ist der Anschluss frei.
? Du hältst die Hand vor den Ultraschallsensor, aber unter **🔧 mBot2 testen** ändert sich der Wert nicht. Was tust du?
→ Den mBot2 testen
- [ ] Trotzdem losprogrammieren
- [x] Der Lehrkraft Bescheid sagen, bevor du programmierst
- [ ] Den Wert in der Simulation von Hand ändern
> Ändert sich ein Wert nicht, obwohl du etwas tust, stimmt am Roboter etwas nicht.
:::
35 changes: 35 additions & 0 deletions web/lessons/de/visubot/02-das-quadrat.md
Original file line number Diff line number Diff line change
Expand Up @@ -328,3 +328,38 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀
- Ich kann drei Schleifen ineinander schachteln. → Vier Quadrate
- Ich kann mein Programm auf den mBot2 übertragen und ohne Kabel mit Taste A starten. → Ohne Kabel fahren
:::

## Wissenstest

::: quiz
? Der mBot2 soll noch ohne Schleife eine Seite von 50 cm fahren und sich dann drehen. Welche Kästen brauchst du?
→ Ein Quadrat fahren
- [ ] einmal `mbot.forward()` und einmal `mbot.turnRight()`
- [x] fünfmal `mbot.forward()` und einmal `mbot.turnRight()`
- [ ] fünfmal `mbot.turnRight()`
> Jedes `mbot.forward()` fährt 10 cm, fünf davon sind 50 cm.
? Eine For-Schleife hat den Start `int i = 0`, die Bedingung `i < 5` und den Schritt `i++`. Wie oft läuft sie?
→ Immer das Gleiche
- [ ] 4-mal
- [x] 5-mal
- [ ] 6-mal
> `i` zählt 0, 1, 2, 3, 4. Das sind fünf Durchläufe.
? Warum heißt die Zählvariable der inneren Schleife `j` und nicht auch `i`?
→ Schleife in der Schleife
- [ ] In einem Programm darf jeder Buchstabe nur einmal vorkommen.
- [x] Jede Schleife braucht ihre eigene Zählvariable, sonst kommen sich die beiden in die Quere.
- [ ] `j` zählt schneller als `i`.
> Würden beide mit `i` zählen, würde die innere Schleife die äußere durcheinanderbringen.
? Wie oft führt der mBot2 bei den vier Quadraten `mbot.turnRight()` aus?
→ Vier Quadrate
- [ ] 4-mal
- [ ] 16-mal
- [x] 20-mal
> In jedem Quadrat dreht er sich viermal, das sind 4 · 4 = 16. Dazu kommt nach jedem Quadrat noch eine Drehung: 16 + 4 = 20.
? Dein Programm ist übertragen und das Kabel ist ab. Wie startest du es?
→ Ohne Kabel fahren
- [ ] mit Taste B
- [x] mit Taste A
- [ ] mit **⬆ Übertragen**
> Nach dem Übertragen zeigt der mBot2 **A = Start** und wartet auf Taste A.
:::
35 changes: 35 additions & 0 deletions web/lessons/de/visubot/22-eigene-methoden.md
Original file line number Diff line number Diff line change
Expand Up @@ -297,3 +297,38 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀
- Ich kann eine überladene Methode erkennen und aufrufen. → Gleicher Name, andere Parameter: Überladung
- Ich kann eine Methode mit Rückgabewert schreiben. → Methode mit Rückgabe
:::

## Wissenstest

::: quiz
? Das Unterprogramm `void quadrat(int seite)` soll ein Quadrat mit 30 cm Seitenlänge fahren. Wie sieht der Aufruf aus?
→ Ein Unterprogramm für das Quadrat
- [ ] `quadrat()`
- [x] `quadrat(30)`
- [ ] `int seite = quadrat(30)`
> Der Wert in den Klammern wird zum Parameter `seite`. Weil `quadrat` nichts zurückgibt, gibt es keine Zuweisung.
? In welcher Methode beginnt ein Java-Programm?
→ Methoden in Java
- [ ] in der ersten Methode der Klasse
- [x] in der Methode `main`
- [ ] in der Methode `quadrat`
> Das Programm beginnt immer in `main`. Von dort werden die anderen Methoden aufgerufen.
? Woran unterscheidet Java die überladenen Methoden `forward()`, `forward(int cm)` und `forward(int wert, String einheit)`?
→ Gleicher Name, andere Parameter: Überladung
- [ ] am Namen
- [x] an der Anzahl und am Typ der Parameter
- [ ] an der Reihenfolge im Programm
> Der Name ist bei allen gleich. Java wählt die Variante, deren Parameter zum Aufruf passen.
? `static int zentimeter(int umdrehungen) { return umdrehungen * 20; }`: Was liegt nach `int strecke = zentimeter(2);` in `strecke`?
→ Methode mit Rückgabe
- [ ] 2
- [ ] 20
- [x] 40
> `return` gibt 2 · 20 = 40 zurück, und dieser Wert landet in `strecke`.
? Was steht in der Kopfzeile einer Methode, die eine ganze Zahl zurückgibt, statt `void`?
→ Methode mit Rückgabe
- [ ] `return`
- [x] `int`
- [ ] `static`
> Statt `void` steht der Datentyp des Ergebnisses in der Kopfzeile.
:::
Loading
Loading