diff --git a/.unosim-compatible-commit b/.unosim-compatible-commit index c9cbcf9..7354309 100644 --- a/.unosim-compatible-commit +++ b/.unosim-compatible-commit @@ -1 +1 @@ -5042bd0398271fa4e12f3e7eeb1003a58e382a57 +5ce3564b2b770e59f48d8bc3b97097bf1f2ab894 diff --git a/examples/IT01/it01-01-variable-speichern.ino b/examples/IT01/it01-01-variable-speichern.ino index 960fd83..7e942d0 100644 --- a/examples/IT01/it01-01-variable-speichern.ino +++ b/examples/IT01/it01-01-variable-speichern.ino @@ -34,11 +34,26 @@ void loop() { */ /* @unosim-tutor -schemaVersion: 1 -topics: - - variables-and-serial -primaryTopic: variables-and-serial +schemaVersion: 2 learningObjectives: - - Die Studierenden sollen erklären können, welche Rolle die Variable im aktuellen Sketch spielt. - - Sie sollen den Zusammenhang zwischen gespeichertem Wert und serieller Ausgabe verstehen. + - "Die Studierenden sollen erklären können, welche Rolle die Variable im aktuellen Sketch spielt." + - "Sie sollen den Zusammenhang zwischen gespeichertem Wert und serieller Ausgabe verstehen." +exclusive: true +focus: + - id: wert-und-zuweisung + title: "Wert und Zuweisung" + objective: "Die Studierenden sollen den Aspekt \"Wert und Zuweisung\" erklären können." + questions: + - kind: recall + text: "Welchen Wert besitzt `anzahlTeile` direkt nach der Deklaration?" + - kind: prediction + text: "Was geschieht mit dem alten Wert von `anzahlTeile`, wenn `anzahlTeile = 5` ausgeführt wird?" + - id: sichtbare-ausgabe + title: "Sichtbare Ausgabe" + objective: "Die Studierenden sollen den Aspekt \"Sichtbare Ausgabe\" erklären können." + questions: + - kind: concept + text: "Warum erscheint jede Ausgabe von `Serial.println` nur einmal?" + - kind: transfer + text: "Welche weitere Zuweisung und Ausgabe würdest du ergänzen, um einen dritten Wert sichtbar zu machen?" @end-unosim-tutor */ diff --git a/examples/IT01/it01-02-konstante.ino b/examples/IT01/it01-02-konstante.ino index 64a22db..8898137 100644 --- a/examples/IT01/it01-02-konstante.ino +++ b/examples/IT01/it01-02-konstante.ino @@ -30,3 +30,27 @@ void loop() { * 2. Warum meldet der Compiler beim zweiten Experiment einen Fehler? * 3. Warum werden Konstantennamen hier grossgeschrieben? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Einen Wert mit const als Konstante deklarieren." +exclusive: true +focus: + - id: konstante-oder-variable + title: "Konstante oder Variable" + objective: "Die Studierenden sollen den Aspekt \"Konstante oder Variable\" erklären können." + questions: + - kind: concept + text: "Wodurch unterscheidet sich `MAXIMALE_ANZAHL` von einer gewöhnlichen Variablen?" + - kind: prediction + text: "Was würde der Compiler melden, wenn man später versucht, `MAXIMALE_ANZAHL` einen neuen Wert zuzuweisen, und warum?" + - id: const-und-namen + title: "const und Namenswahl" + objective: "Die Studierenden sollen den Aspekt \"const und Namenswahl\" erklären können." + questions: + - kind: concept + text: "Welche Aufgabe hat das Schlüsselwort `const` in der Deklaration?" + - kind: concept + text: "Warum ist der Name `MAXIMALE_ANZAHL` hier großgeschrieben?" +@end-unosim-tutor */ diff --git a/examples/IT02/it02-01-arithmetische-operatoren.ino b/examples/IT02/it02-01-arithmetische-operatoren.ino index 0274035..8080632 100644 --- a/examples/IT02/it02-01-arithmetische-operatoren.ino +++ b/examples/IT02/it02-01-arithmetische-operatoren.ino @@ -39,3 +39,27 @@ void loop() { * 2. Welche Bedeutung hat das Ergebnis von 13 % 5? * 3. Bei welchem Experiment darf der Operator % nicht verwendet werden? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Die Operatoren +, -, *, / und % anwenden." +exclusive: true +focus: + - id: ganzzahldivision + title: "Ganzzahldivision" + objective: "Die Studierenden sollen den Aspekt \"Ganzzahldivision\" erklären können." + questions: + - kind: concept + text: "Warum liefert `a / b` bei Variablen vom Typ `int` ein ganzzahliges Ergebnis?" + - kind: prediction + text: "Welches Ergebnis erwartest du für `a / b`, wenn `a` den Wert 13 und `b` den Wert 5 hat?" + - id: modulo + title: "Rest einer Division" + objective: "Die Studierenden sollen den Aspekt \"Rest einer Division\" erklären können." + questions: + - kind: concept + text: "Welche Bedeutung hat das Ergebnis von `a % b`?" + - kind: application + text: "Wofür könnte man den Rest einer Division in einem Programm nutzen?" +@end-unosim-tutor */ diff --git a/examples/IT02/it02-02-vergleichsoperatoren.ino b/examples/IT02/it02-02-vergleichsoperatoren.ino index 9e1be3e..27bb8bf 100644 --- a/examples/IT02/it02-02-vergleichsoperatoren.ino +++ b/examples/IT02/it02-02-vergleichsoperatoren.ino @@ -37,3 +37,27 @@ void loop() { * 2. Was ist der Unterschied zwischen = und ==? * 3. Welchen Datentyp hat das Ergebnis eines Vergleichs? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Vergleichsoperatoren anwenden und ihr boolesches Ergebnis beobachten." +exclusive: true +focus: + - id: vergleichsergebnis + title: "Ergebnis eines Vergleichs" + objective: "Die Studierenden sollen den Aspekt \"Ergebnis eines Vergleichs\" erklären können." + questions: + - kind: prediction + text: "Welche der Vergleiche `a == b`, `a != b`, `a < b` und `a >= b` sind mit den aktuellen Werten wahr?" + - kind: recall + text: "Wie werden ein wahres und ein falsches Ergebnis in der Ausgabe dargestellt?" + - id: zuweisung-oder-vergleich + title: "Zuweisung oder Vergleich" + objective: "Die Studierenden sollen den Aspekt \"Zuweisung oder Vergleich\" erklären können." + questions: + - kind: concept + text: "Was ist der Unterschied zwischen `=` und `==`?" + - kind: concept + text: "Welchen Datentyp hat das Ergebnis eines Vergleichs?" +@end-unosim-tutor */ diff --git a/examples/IT02/it02-03-boolesche-operatoren.ino b/examples/IT02/it02-03-boolesche-operatoren.ino index 76fd5db..53336b9 100644 --- a/examples/IT02/it02-03-boolesche-operatoren.ino +++ b/examples/IT02/it02-03-boolesche-operatoren.ino @@ -35,3 +35,27 @@ void loop() { * 2. Wann ergibt eine ODER-Verknuepfung false? * 3. Welche Wirkung hat der Operator ! auf einen Wahrheitswert? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Die Operatoren &&, || und ! auf Wahrheitswerte anwenden." +exclusive: true +focus: + - id: verknuepfungen + title: "UND und ODER" + objective: "Die Studierenden sollen den Aspekt \"UND und ODER\" erklären können." + questions: + - kind: concept + text: "Wann ergibt `schalter1 && schalter2` den Wert `true`?" + - kind: prediction + text: "Welche Ausgabe erwartest du für `schalter1 || schalter2` mit den aktuellen Werten?" + - id: negation + title: "Negation" + objective: "Die Studierenden sollen den Aspekt \"Negation\" erklären können." + questions: + - kind: concept + text: "Welche Wirkung hat der Operator `!` auf `schalter1`?" + - kind: transfer + text: "Wie würdest du ausdrücken, dass genau einer der beiden Schalter `true` ist?" +@end-unosim-tutor */ diff --git a/examples/IT02/it02-04-bitoperatoren.ino b/examples/IT02/it02-04-bitoperatoren.ino index 1da1ea7..4e799ea 100644 --- a/examples/IT02/it02-04-bitoperatoren.ino +++ b/examples/IT02/it02-04-bitoperatoren.ino @@ -36,3 +36,27 @@ void loop() { * 2. Welchen Dezimalwert hat MASKE_BIT_2? * 3. Worin unterscheiden sich & und &&? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Eine Bitmaske mit dem bitweisen UND-Operator anwenden." +exclusive: true +focus: + - id: bitmaske + title: "Bitmaske" + objective: "Die Studierenden sollen den Aspekt \"Bitmaske\" erklären können." + questions: + - kind: concept + text: "Warum bleibt bei `wert & MASKE_BIT_2` nur ein gesetztes Bit erhalten?" + - kind: prediction + text: "Welches Ergebnis erwartest du für `wert & MASKE_BIT_2`, wenn Bit 2 in `wert` nicht gesetzt wäre?" + - id: bitweise-oder-logisch + title: "Bitweise oder logisch" + objective: "Die Studierenden sollen den Aspekt \"Bitweise oder logisch\" erklären können." + questions: + - kind: concept + text: "Welche Rolle spielt `BIN` in `Serial.println(wert, BIN)`?" + - kind: concept + text: "Worin unterscheidet sich der bitweise Operator `&` vom logischen UND mit zwei Und-Zeichen?" +@end-unosim-tutor */ diff --git a/examples/IT03/it03-01-serielle-ausgabe.ino b/examples/IT03/it03-01-serielle-ausgabe.ino index a702ccf..8e2812b 100644 --- a/examples/IT03/it03-01-serielle-ausgabe.ino +++ b/examples/IT03/it03-01-serielle-ausgabe.ino @@ -29,3 +29,27 @@ void loop() { * 2. Warum muss Serial.begin() vor der ersten Ausgabe stehen? * 3. Wie oft werden die Texte ausgegeben und warum? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Die serielle Verbindung starten und Text mit print() und println() ausgeben." +exclusive: true +focus: + - id: print-und-println + title: "print und println" + objective: "Die Studierenden sollen den Aspekt \"print und println\" erklären können." + questions: + - kind: concept + text: "Was unterscheidet `Serial.print` von `Serial.println`?" + - kind: application + text: "Wie viele Zeilen erscheinen im Monitor, und woran erkennst du das im Code?" + - id: initialisierung + title: "Serielle Verbindung starten" + objective: "Die Studierenden sollen den Aspekt \"Serielle Verbindung starten\" erklären können." + questions: + - kind: concept + text: "Warum muss `Serial.begin` vor der ersten Ausgabe stehen?" + - kind: prediction + text: "Wie oft werden die Texte ausgegeben, und warum nicht fortlaufend?" +@end-unosim-tutor */ diff --git a/examples/IT03/it03-02-serielles-zeichen-einlesen.ino b/examples/IT03/it03-02-serielles-zeichen-einlesen.ino index 0757826..defd9b5 100644 --- a/examples/IT03/it03-02-serielles-zeichen-einlesen.ino +++ b/examples/IT03/it03-02-serielles-zeichen-einlesen.ino @@ -31,3 +31,27 @@ void loop() { * 2. Was liefert Serial.read(), wenn kein Zeichen vorhanden ist? * 3. Warum erscheinen bei einer int-Variablen Zahlen statt Zeichen? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Mit Serial.available() und Serial.read() ein einzelnes Zeichen empfangen." +exclusive: true +focus: + - id: zeichen-empfangen + title: "Zeichen empfangen" + objective: "Die Studierenden sollen den Aspekt \"Zeichen empfangen\" erklären können." + questions: + - kind: concept + text: "Warum wird `Serial.available` vor `Serial.read` geprüft?" + - kind: prediction + text: "Was geschieht in `loop`, solange kein Zeichen gesendet wurde?" + - id: datentyp-char + title: "Datentyp char" + objective: "Die Studierenden sollen den Aspekt \"Datentyp char\" erklären können." + questions: + - kind: concept + text: "Welche Rolle spielt der Datentyp `char` für die Variable `zeichen`?" + - kind: prediction + text: "Was würde sich in der Ausgabe ändern, wenn `zeichen` den Typ `int` hätte?" +@end-unosim-tutor */ diff --git a/examples/IT03/it03-03-digitaler-ausgang.ino b/examples/IT03/it03-03-digitaler-ausgang.ino index 32f2d0e..2a313f7 100644 --- a/examples/IT03/it03-03-digitaler-ausgang.ino +++ b/examples/IT03/it03-03-digitaler-ausgang.ino @@ -30,8 +30,26 @@ void loop() { */ /* @unosim-tutor -schemaVersion: 1 +schemaVersion: 2 learningObjectives: - - Die Studierenden sollen erklären können, wie ein digitaler Ausgang im aktuellen Sketch gesetzt wird. - - Sie sollen den Zusammenhang zwischen Ausgangszustand und beobachtbarer Wirkung beschreiben können. + - "Die Studierenden sollen erklären können, wie ein digitaler Ausgang im aktuellen Sketch gesetzt wird." + - "Sie sollen den Zusammenhang zwischen Ausgangszustand und beobachtbarer Wirkung beschreiben können." +exclusive: true +focus: + - id: pin-konfigurieren + title: "Pin konfigurieren" + objective: "Die Studierenden sollen den Aspekt \"Pin konfigurieren\" erklären können." + questions: + - kind: concept + text: "Welche Aufgabe hat `pinMode(PIN_LED, OUTPUT)`?" + - kind: concept + text: "Welche elektrische Bedeutung hat `HIGH` an diesem Pin?" + - id: programmstruktur + title: "Programmstruktur" + objective: "Die Studierenden sollen den Aspekt \"Programmstruktur\" erklären können." + questions: + - kind: concept + text: "Warum reicht für dieses Beispiel die Funktion `setup` aus?" + - kind: transfer + text: "Wie würdest du die LED wieder ausschalten?" @end-unosim-tutor */ diff --git a/examples/IT03/it03-04-digitaler-eingang.ino b/examples/IT03/it03-04-digitaler-eingang.ino index c4d86dd..6baab3e 100644 --- a/examples/IT03/it03-04-digitaler-eingang.ino +++ b/examples/IT03/it03-04-digitaler-eingang.ino @@ -31,3 +31,27 @@ void loop() { * 2. Warum liefert ein gedrueckter Taster bei INPUT_PULLUP normalerweise LOW? * 3. Welchen Zweck hat ein Pullup-Widerstand? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Einen Eingang mit internem Pullup-Widerstand konfigurieren und lesen." +exclusive: true +focus: + - id: eingang-lesen + title: "Eingang lesen" + objective: "Die Studierenden sollen den Aspekt \"Eingang lesen\" erklären können." + questions: + - kind: recall + text: "Welche Werte kann `digitalRead` liefern?" + - kind: concept + text: "Welchen Zweck hat `INPUT_PULLUP` für den Pin `PIN_TASTER`?" + - id: taster-logik + title: "Taster-Logik" + objective: "Die Studierenden sollen den Aspekt \"Taster-Logik\" erklären können." + questions: + - kind: prediction + text: "Welcher Wert wird ausgegeben, solange der Taster gedrückt ist, und warum?" + - kind: concept + text: "Warum steht in `loop` der Aufruf `delay(500)`?" +@end-unosim-tutor */ diff --git a/examples/IT03/it03-05-millis.ino b/examples/IT03/it03-05-millis.ino index afd4a8b..ba44b7c 100644 --- a/examples/IT03/it03-05-millis.ino +++ b/examples/IT03/it03-05-millis.ino @@ -30,11 +30,26 @@ void loop() { */ /* @unosim-tutor -schemaVersion: 1 -topics: - - long-values -primaryTopic: long-values +schemaVersion: 2 learningObjectives: - - Die Studierenden sollen erklären können, warum millis() einen Zeitwert liefert. - - Sie sollen den Zeitwert als Grundlage für einen wiederkehrenden Ablauf einordnen können. + - "Die Studierenden sollen erklären können, warum millis() einen Zeitwert liefert." + - "Sie sollen den Zeitwert als Grundlage für einen wiederkehrenden Ablauf einordnen können." +exclusive: true +focus: + - id: zeitwert + title: "Der Zeitwert" + objective: "Die Studierenden sollen den Aspekt \"Der Zeitwert\" erklären können." + questions: + - kind: concept + text: "In welcher Einheit liefert `millis()` die Zeit?" + - kind: prediction + text: "Wie verändert sich der ausgegebene Wert von einem Schleifendurchlauf zum nächsten?" + - id: datentyp + title: "Der Datentyp" + objective: "Die Studierenden sollen den Aspekt \"Der Datentyp\" erklären können." + questions: + - kind: concept + text: "Warum eignet sich `unsigned long` für `zeitSeitStart`?" + - kind: concept + text: "Wird der Zeitwert durch einen erneuten Durchlauf von `loop` zurückgesetzt?" @end-unosim-tutor */ diff --git a/examples/IT04/it04-01-analoger-eingang.ino b/examples/IT04/it04-01-analoger-eingang.ino index ddc9bd6..5313cd2 100644 --- a/examples/IT04/it04-01-analoger-eingang.ino +++ b/examples/IT04/it04-01-analoger-eingang.ino @@ -30,3 +30,27 @@ void loop() { * 2. Warum sind fuer diesen Bereich 10 Bit erforderlich? * 3. Muss ein analoger Eingang mit pinMode() eingerichtet werden? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Einen Messwert mit analogRead() erfassen." +exclusive: true +focus: + - id: wertebereich + title: "Wertebereich" + objective: "Die Studierenden sollen den Aspekt \"Wertebereich\" erklären können." + questions: + - kind: recall + text: "Welchen Wertebereich liefert `analogRead` beim Arduino Uno?" + - kind: concept + text: "Warum sind für diesen Bereich 10 Bit erforderlich?" + - id: pin-und-messwert + title: "Pin und Messwert" + objective: "Die Studierenden sollen den Aspekt \"Pin und Messwert\" erklären können." + questions: + - kind: concept + text: "Muss ein analoger Eingang wie `PIN_SENSOR` mit pinMode() eingerichtet werden?" + - kind: application + text: "Welchen Wert erwartest du für `messwert`, wenn A0 auf halber Referenzspannung liegt?" +@end-unosim-tutor */ diff --git a/examples/IT04/it04-02-messwert-in-volt.ino b/examples/IT04/it04-02-messwert-in-volt.ino index a51239b..9eef407 100644 --- a/examples/IT04/it04-02-messwert-in-volt.ino +++ b/examples/IT04/it04-02-messwert-in-volt.ino @@ -36,3 +36,27 @@ void loop() { * 2. Warum wird fuer spannung der Datentyp float verwendet? * 3. Welche Bedeutung hat die Referenzspannung in der Rechnung? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Den digitalisierten Messwert eines Analogeingangs in eine Spannung umrechnen." +exclusive: true +focus: + - id: umrechnung + title: "Umrechnung in Volt" + objective: "Die Studierenden sollen den Aspekt \"Umrechnung in Volt\" erklären können." + questions: + - kind: prediction + text: "Welche Spannung gehört ungefähr zum Messwert 512?" + - kind: concept + text: "Welche Bedeutung hat `REFERENZSPANNUNG` in der Rechnung?" + - id: datentyp-float + title: "Gleitkommazahlen" + objective: "Die Studierenden sollen den Aspekt \"Gleitkommazahlen\" erklären können." + questions: + - kind: concept + text: "Warum wird für `spannung` der Datentyp `float` verwendet?" + - kind: prediction + text: "Was ändert sich im Ergebnis, wenn bei `1024.0` der Dezimalpunkt entfällt?" +@end-unosim-tutor */ diff --git a/examples/IT04/it04-03-pwm-ausgang.ino b/examples/IT04/it04-03-pwm-ausgang.ino index 48930b3..4499f06 100644 --- a/examples/IT04/it04-03-pwm-ausgang.ino +++ b/examples/IT04/it04-03-pwm-ausgang.ino @@ -35,3 +35,27 @@ void loop() { * 2. Welchem Tastgrad entspricht ungefaehr der Wert 128? * 3. Warum ist nicht jeder digitale Pin fuer PWM geeignet? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Mit analogWrite() unterschiedliche PWM-Tastgrade einstellen." +exclusive: true +focus: + - id: tastgrad + title: "Wertebereich und Tastgrad" + objective: "Die Studierenden sollen den Aspekt \"Wertebereich und Tastgrad\" erklären können." + questions: + - kind: recall + text: "Welchen Wertebereich erwartet `analogWrite`?" + - kind: concept + text: "Welchem Tastgrad entspricht ungefähr der Wert `128`?" + - id: pwm-pins + title: "PWM-Pins" + objective: "Die Studierenden sollen den Aspekt \"PWM-Pins\" erklären können." + questions: + - kind: concept + text: "Warum ist nicht jeder digitale Pin für PWM geeignet?" + - kind: prediction + text: "Wie unterscheidet sich die Helligkeit einer LED bei `64` und bei `255`?" +@end-unosim-tutor */ diff --git a/examples/IT04/it04-04-map.ino b/examples/IT04/it04-04-map.ino index 9f7e5f9..89d2de6 100644 --- a/examples/IT04/it04-04-map.ino +++ b/examples/IT04/it04-04-map.ino @@ -31,3 +31,27 @@ void loop() { * 2. Warum ist das Ergebnis fuer 512 nicht exakt 127,5? * 3. Begrenzt map() einen Wert automatisch auf den Zielbereich? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Mit map() die relative Lage eines Wertes auf einen neuen Wertebereich uebertragen." +exclusive: true +focus: + - id: bereichsgrenzen + title: "Bereichsgrenzen" + objective: "Die Studierenden sollen den Aspekt \"Bereichsgrenzen\" erklären können." + questions: + - kind: concept + text: "Welche Bedeutung haben die vier Bereichsgrenzen im Aufruf von `map`?" + - kind: concept + text: "Warum ist das Ergebnis für 512 nicht exakt 127,5?" + - id: datentyp-und-grenzen + title: "Datentyp und Grenzen" + objective: "Die Studierenden sollen den Aspekt \"Datentyp und Grenzen\" erklären können." + questions: + - kind: concept + text: "Welche Rolle spielt der Typ `long` für `ausgangswert`?" + - kind: prediction + text: "Begrenzt `map` einen Eingangswert wie 1200 automatisch auf den Zielbereich?" +@end-unosim-tutor */ diff --git a/examples/IT05/it05-01-if.ino b/examples/IT05/it05-01-if.ino index 5bcc912..8f84147 100644 --- a/examples/IT05/it05-01-if.ino +++ b/examples/IT05/it05-01-if.ino @@ -32,3 +32,27 @@ void loop() { * 2. Was geschieht bei einer falschen Bedingung? * 3. Wann unterscheiden sich > und >=? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Mit if einen Programmblock nur bei einer wahren Bedingung ausfuehren." +exclusive: true +focus: + - id: bedingung + title: "Die Bedingung" + objective: "Die Studierenden sollen den Aspekt \"Die Bedingung\" erklären können." + questions: + - kind: prediction + text: "Welchen Wahrheitswert hat `messwert > GRENZWERT` mit den aktuellen Werten?" + - kind: prediction + text: "Was geschieht, wenn die Bedingung falsch ist?" + - id: grenzfall + title: "Der Grenzfall" + objective: "Die Studierenden sollen den Aspekt \"Der Grenzfall\" erklären können." + questions: + - kind: application + text: "Wann unterscheidet sich der Vergleich mit `>` von einem Vergleich mit „größer oder gleich“?" + - kind: transfer + text: "Wie würdest du eine zweite Meldung für Werte unterhalb des `GRENZWERT` ergänzen?" +@end-unosim-tutor */ diff --git a/examples/IT05/it05-02-if-else.ino b/examples/IT05/it05-02-if-else.ino index 24068ca..1085aa3 100644 --- a/examples/IT05/it05-02-if-else.ino +++ b/examples/IT05/it05-02-if-else.ino @@ -34,3 +34,25 @@ void loop() { * 2. Welcher Zweig wird bei messwert = 60 ausgefuehrt? * 3. Wie muesste die Bedingung fuer "mindestens 60" lauten? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Mit if/else genau einen von zwei Programmzweigen ausfuehren." +exclusive: true +focus: + - id: zwei-zweige + title: "Zwei Zweige" + objective: "Die Studierenden sollen den Aspekt \"Zwei Zweige\" erklären können." + questions: + - kind: concept + text: "Können der `if`-Zweig und der `else`-Zweig in einem Durchlauf beide ausgeführt werden?" + - kind: prediction + text: "Welcher Zweig wird ausgeführt, wenn `messwert` genau dem Wert von `GRENZWERT` entspricht?" + - id: bedingung-formulieren + title: "Bedingung formulieren" + objective: "Die Studierenden sollen den Aspekt \"Bedingung formulieren\" erklären können." + questions: + - kind: transfer + text: "Wie müsste die Bedingung lauten, damit der Wert mindestens `GRENZWERT` entspricht?" +@end-unosim-tutor */ diff --git a/examples/IT05/it05-03-switch.ino b/examples/IT05/it05-03-switch.ino index 9e01241..58b96f0 100644 --- a/examples/IT05/it05-03-switch.ino +++ b/examples/IT05/it05-03-switch.ino @@ -39,3 +39,27 @@ void loop() { * 2. Welche Aufgabe hat break? * 3. Was geschieht ohne das erste break bei modus = 1? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Mit switch/case anhand eines Wertes einen Programmzweig auswaehlen." +exclusive: true +focus: + - id: default-zweig + title: "Der default-Zweig" + objective: "Die Studierenden sollen den Aspekt \"Der default-Zweig\" erklären können." + questions: + - kind: concept + text: "Wann wird der `default`-Zweig ausgeführt?" + - kind: prediction + text: "Welche Meldung erscheint, wenn `modus` den Wert 7 hat?" + - id: break + title: "Die Rolle von break" + objective: "Die Studierenden sollen den Aspekt \"Die Rolle von break\" erklären können." + questions: + - kind: concept + text: "Welche Aufgabe hat `break` in einem `case`?" + - kind: prediction + text: "Was geschähe ohne das erste `break` bei `modus` gleich 1?" +@end-unosim-tutor */ diff --git a/examples/IT06/it06-01-while.ino b/examples/IT06/it06-01-while.ino index b727e7b..b7a7e78 100644 --- a/examples/IT06/it06-01-while.ino +++ b/examples/IT06/it06-01-while.ino @@ -31,3 +31,27 @@ void loop() { * 2. Warum muss zaehler im Schleifenblock veraendert werden? * 3. Wie oft laeuft die Schleife beim Startwert 5? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Einen Anweisungsblock mit while wiederholen, solange eine Bedingung wahr ist." +exclusive: true +focus: + - id: bedingungspruefung + title: "Bedingungsprüfung" + objective: "Die Studierenden sollen den Aspekt \"Bedingungsprüfung\" erklären können." + questions: + - kind: concept + text: "Wann wird die Bedingung `zaehler < 5` geprüft?" + - kind: prediction + text: "Wie oft läuft die Schleife, wenn `zaehler` mit dem Wert 5 startet?" + - id: zaehler + title: "Der Zähler" + objective: "Die Studierenden sollen den Aspekt \"Der Zähler\" erklären können." + questions: + - kind: concept + text: "Warum muss `zaehler` im Schleifenblock verändert werden?" + - kind: prediction + text: "Welche Zahlen erscheinen im Monitor?" +@end-unosim-tutor */ diff --git a/examples/IT06/it06-02-do-while.ino b/examples/IT06/it06-02-do-while.ino index 21140b8..3b89be1 100644 --- a/examples/IT06/it06-02-do-while.ino +++ b/examples/IT06/it06-02-do-while.ino @@ -31,3 +31,25 @@ void loop() { * 2. Wie oft wird ihr Block mindestens ausgefuehrt? * 3. Warum entsteht beim zweiten Experiment mit Startwert 5 keine Ausgabe? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Einen Anweisungsblock mit do/while mindestens einmal ausfuehren." +exclusive: true +focus: + - id: pruefung-am-ende + title: "Prüfung am Ende" + objective: "Die Studierenden sollen den Aspekt \"Prüfung am Ende\" erklären können." + questions: + - kind: concept + text: "Wann wird die Bedingung der `do`/`while`-Schleife geprüft?" + - kind: prediction + text: "Wie oft wird der Block mindestens ausgeführt?" + - id: vergleich-while + title: "Vergleich mit while" + objective: "Die Studierenden sollen den Aspekt \"Vergleich mit while\" erklären können." + questions: + - kind: concept + text: "Warum entstünde mit einer reinen `while`-Schleife und demselben Startwert keine Ausgabe?" +@end-unosim-tutor */ diff --git a/examples/IT06/it06-03-for.ino b/examples/IT06/it06-03-for.ino index 2d2cf6c..ae006f2 100644 --- a/examples/IT06/it06-03-for.ino +++ b/examples/IT06/it06-03-for.ino @@ -29,3 +29,27 @@ void loop() { * 2. Wie oft wird der Schleifenblock ausgefuehrt? * 3. Welchen Gueltigkeitsbereich hat die Variable i? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Eine feste Anzahl von Wiederholungen mit for formulieren." +exclusive: true +focus: + - id: schleifenkopf + title: "Der Schleifenkopf" + objective: "Die Studierenden sollen den Aspekt \"Der Schleifenkopf\" erklären können." + questions: + - kind: concept + text: "Welche drei Angaben stehen im Kopf von `for (byte i = 1; i <= 5; i++)`?" + - kind: prediction + text: "Wie oft wird der Schleifenblock ausgeführt?" + - id: gueltigkeit + title: "Gültigkeit und Richtung" + objective: "Die Studierenden sollen den Aspekt \"Gültigkeit und Richtung\" erklären können." + questions: + - kind: concept + text: "Welchen Gültigkeitsbereich hat die Variable `i`?" + - kind: transfer + text: "Wie würdest du die Schleife von 5 bis 1 herunterzählen lassen?" +@end-unosim-tutor */ diff --git a/examples/IT06/it06-04-verschachtelte-schleifen.ino b/examples/IT06/it06-04-verschachtelte-schleifen.ino index 16af4d8..5908e86 100644 --- a/examples/IT06/it06-04-verschachtelte-schleifen.ino +++ b/examples/IT06/it06-04-verschachtelte-schleifen.ino @@ -32,3 +32,27 @@ void loop() { * 2. Welche Schleife bestimmt die Anzahl der Zeilen? * 3. Warum steht println() ausserhalb der inneren Schleife? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Eine innere Schleife fuer jeden Durchlauf einer aeusseren Schleife ausfuehren." +exclusive: true +focus: + - id: verschachtelung + title: "Verschachtelung" + objective: "Die Studierenden sollen den Aspekt \"Verschachtelung\" erklären können." + questions: + - kind: prediction + text: "Wie oft wird die innere Schleife insgesamt durchlaufen?" + - kind: concept + text: "Welche Schleife bestimmt die Anzahl der Zeilen?" + - id: zeilenumbruch + title: "Zeilenumbruch" + objective: "Die Studierenden sollen den Aspekt \"Zeilenumbruch\" erklären können." + questions: + - kind: concept + text: "Warum steht `Serial.println()` außerhalb der inneren Schleife?" + - kind: transfer + text: "Wie erzeugst du ein Rechteck aus zwei Zeilen und sechs Spalten?" +@end-unosim-tutor */ diff --git a/examples/IT07/it07-01-funktion-ohne-rueckgabe.ino b/examples/IT07/it07-01-funktion-ohne-rueckgabe.ino index 84a3d92..042ecbe 100644 --- a/examples/IT07/it07-01-funktion-ohne-rueckgabe.ino +++ b/examples/IT07/it07-01-funktion-ohne-rueckgabe.ino @@ -31,3 +31,25 @@ void loop() { * 2. Welche Bedeutung hat der Rueckgabetyp void? * 3. Welcher Teil ist Funktionsdefinition und welcher Funktionsaufruf? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Wiederverwendbare Anweisungen in einer void-Funktion zusammenfassen." +exclusive: true +focus: + - id: definition-und-aufruf + title: "Definition und Aufruf" + objective: "Die Studierenden sollen den Aspekt \"Definition und Aufruf\" erklären können." + questions: + - kind: concept + text: "Welcher Teil ist die Definition und welcher der Aufruf von `begruessungAusgeben`?" + - kind: concept + text: "Wann werden die Anweisungen in der Funktion ausgeführt?" + - id: rueckgabetyp + title: "Rückgabetyp" + objective: "Die Studierenden sollen den Aspekt \"Rückgabetyp\" erklären können." + questions: + - kind: concept + text: "Welche Bedeutung hat der Rückgabetyp `void`?" +@end-unosim-tutor */ diff --git a/examples/IT07/it07-02-funktion-mit-rueckgabe.ino b/examples/IT07/it07-02-funktion-mit-rueckgabe.ino index 2b176ef..6127f1d 100644 --- a/examples/IT07/it07-02-funktion-mit-rueckgabe.ino +++ b/examples/IT07/it07-02-funktion-mit-rueckgabe.ino @@ -32,3 +32,27 @@ void loop() { * 2. Welchen Datentyp besitzt der Rueckgabewert? * 3. Was bewirkt die Anweisung return? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Einer Funktion einen Parameter uebergeben und ihr Ergebnis mit return nutzen." +exclusive: true +focus: + - id: eingabe-und-ergebnis + title: "Eingabe und Ergebnis" + objective: "Die Studierenden sollen den Aspekt \"Eingabe und Ergebnis\" erklären können." + questions: + - kind: concept + text: "Was geht in `quadrat` hinein, und was kommt heraus?" + - kind: concept + text: "Welchen Datentyp besitzt der Rückgabewert?" + - id: return + title: "Die Anweisung return" + objective: "Die Studierenden sollen den Aspekt \"Die Anweisung return\" erklären können." + questions: + - kind: concept + text: "Was bewirkt die Anweisung `return`?" + - kind: prediction + text: "Welcher Wert steht nach `quadrat(6)` in `ergebnis`?" +@end-unosim-tutor */ diff --git a/examples/IT07/it07-03-call-by-value.ino b/examples/IT07/it07-03-call-by-value.ino index 4d4e507..426ec55 100644 --- a/examples/IT07/it07-03-call-by-value.ino +++ b/examples/IT07/it07-03-call-by-value.ino @@ -36,3 +36,25 @@ void loop() { * 2. Warum bleibt zaehler ausserhalb der Funktion gleich? * 3. In welchem Bereich ist der Parameter zahl gueltig? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Beobachten, dass Call-by-value in der Funktion mit einer Kopie arbeitet." +exclusive: true +focus: + - id: kopie + title: "Der Wert wird kopiert" + objective: "Die Studierenden sollen den Aspekt \"Der Wert wird kopiert\" erklären können." + questions: + - kind: concept + text: "Welcher Wert wird beim Aufruf von `erhoehen` kopiert?" + - kind: concept + text: "Warum bleibt `zaehler` außerhalb der Funktion unverändert?" + - id: gueltigkeit + title: "Gültigkeit des Parameters" + objective: "Die Studierenden sollen den Aspekt \"Gültigkeit des Parameters\" erklären können." + questions: + - kind: concept + text: "In welchem Bereich ist der Parameter `zahl` gültig?" +@end-unosim-tutor */ diff --git a/examples/IT07/it07-04-call-by-reference.ino b/examples/IT07/it07-04-call-by-reference.ino index 32163d1..8797d62 100644 --- a/examples/IT07/it07-04-call-by-reference.ino +++ b/examples/IT07/it07-04-call-by-reference.ino @@ -33,3 +33,25 @@ void loop() { * 2. Welche Bedeutung hat * vor zahl in der Funktion? * 3. Warum bleibt die Aenderung nach dem Funktionsaufruf erhalten? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Eine Variable ueber einen Zeiger in einer Funktion veraendern." +exclusive: true +focus: + - id: adresse-und-zeiger + title: "Adresse und Zeiger" + objective: "Die Studierenden sollen den Aspekt \"Adresse und Zeiger\" erklären können." + questions: + - kind: concept + text: "Welche Bedeutung hat `&` beim Aufruf `erhoehen(&zaehler)`?" + - kind: concept + text: "Welche Bedeutung hat `*` vor `zahl` in der Funktion?" + - id: wirkung + title: "Wirkung außerhalb der Funktion" + objective: "Die Studierenden sollen den Aspekt \"Wirkung außerhalb der Funktion\" erklären können." + questions: + - kind: concept + text: "Warum bleibt die Änderung nach dem Funktionsaufruf erhalten?" +@end-unosim-tutor */ diff --git a/examples/IT07/it07-05-eindimensionales-array.ino b/examples/IT07/it07-05-eindimensionales-array.ino index 06a63cd..dc02a0b 100644 --- a/examples/IT07/it07-05-eindimensionales-array.ino +++ b/examples/IT07/it07-05-eindimensionales-array.ino @@ -32,3 +32,31 @@ void loop() { * 2. Welchen Wert besitzt messwerte[2] zu Beginn? * 3. Warum muss die Schleifenbedingung i < ANZAHL_WERTE lauten? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Ein eindimensionales Array deklarieren und ueber seinen Index auslesen." +exclusive: true +focus: + - id: index + title: "Der Index" + objective: "Die Studierenden sollen den Aspekt \"Der Index\" erklären können." + questions: + - kind: recall + text: "Mit welchem Index beginnt das Array `messwerte`?" + - kind: recall + text: "Welchen Wert besitzt das Element von `messwerte` mit dem Index 2 zu Beginn?" + - id: schleife-und-grenze + title: "Schleife und Obergrenze" + objective: "Die Studierenden sollen den Aspekt \"Schleife und Obergrenze\" erklären können." + questions: + - kind: concept + text: "Warum muss die Bedingung `i < ANZAHL_WERTE` lauten und darf nicht „kleiner oder gleich“ sein?" + - id: elementtyp + title: "Der Elementtyp" + objective: "Die Studierenden sollen den Aspekt \"Der Elementtyp\" erklären können." + questions: + - kind: concept + text: "Welche Rolle spielt der Elementtyp `int` des Arrays `messwerte`?" +@end-unosim-tutor */ diff --git a/examples/IT07/it07-06-zweidimensionales-array.ino b/examples/IT07/it07-06-zweidimensionales-array.ino index be927c0..f282d8c 100644 --- a/examples/IT07/it07-06-zweidimensionales-array.ino +++ b/examples/IT07/it07-06-zweidimensionales-array.ino @@ -40,3 +40,25 @@ void loop() { * 2. Welchen Wert liefert tabelle[1][2]? * 3. Welche Schleife laeuft ueber die Spalten? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Ein zweidimensionales Array als Tabelle verwenden." +exclusive: true +focus: + - id: zwei-indizes + title: "Zwei Indizes" + objective: "Die Studierenden sollen den Aspekt \"Zwei Indizes\" erklären können." + questions: + - kind: concept + text: "Welche zwei Indizes werden für ein Element von `tabelle` benötigt?" + - kind: prediction + text: "Welchen Wert hat das Element von `tabelle` in der zweiten Zeile und dritten Spalte?" + - id: schleifen + title: "Die Schleifen" + objective: "Die Studierenden sollen den Aspekt \"Die Schleifen\" erklären können." + questions: + - kind: concept + text: "Welche Schleife läuft über die Spalten?" +@end-unosim-tutor */ diff --git a/examples/IT08/it08-01-struct.ino b/examples/IT08/it08-01-struct.ino index c95befc..5798c47 100644 --- a/examples/IT08/it08-01-struct.ino +++ b/examples/IT08/it08-01-struct.ino @@ -42,3 +42,27 @@ void loop() { * 2. Welche Aufgabe hat der Punktoperator? * 3. Ist Messung ein Datentyp oder bereits eine Variable? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Mit struct einen eigenen zusammengesetzten Datentyp definieren." +exclusive: true +focus: + - id: datentyp-oder-variable + title: "Datentyp oder Variable" + objective: "Die Studierenden sollen den Aspekt \"Datentyp oder Variable\" erklären können." + questions: + - kind: concept + text: "Ist `Messung` ein Datentyp oder bereits eine Variable?" + - kind: concept + text: "Welche Datentypen fasst `Messung` zusammen?" + - id: feldzugriff + title: "Zugriff auf Felder" + objective: "Die Studierenden sollen den Aspekt \"Zugriff auf Felder\" erklären können." + questions: + - kind: concept + text: "Welche Aufgabe hat der Punktoperator in `messung.messwert`?" + - kind: application + text: "Warum ist für das Feld `zeit` der Typ `unsigned long` passend?" +@end-unosim-tutor */ diff --git a/examples/IT08/it08-02-array-aus-structs.ino b/examples/IT08/it08-02-array-aus-structs.ino index ac26592..25df5da 100644 --- a/examples/IT08/it08-02-array-aus-structs.ino +++ b/examples/IT08/it08-02-array-aus-structs.ino @@ -43,3 +43,25 @@ void loop() { * 2. Was bedeutet messungen[1].messwert? * 3. Warum koennen die Felder einer Struktur verschiedene Datentypen haben? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Ein Array verwenden, dessen Elemente Strukturen sind." +exclusive: true +focus: + - id: array-aus-structs + title: "Array aus Strukturen" + objective: "Die Studierenden sollen den Aspekt \"Array aus Strukturen\" erklären können." + questions: + - kind: concept + text: "Welchen Datentyp besitzt ein einzelnes Element von `messungen`?" + - kind: concept + text: "Was bedeutet es, das Feld `messwert` des Elements mit dem Index 1 von `messungen` anzusprechen?" + - id: gemischte-typen + title: "Gemischte Datentypen" + objective: "Die Studierenden sollen den Aspekt \"Gemischte Datentypen\" erklären können." + questions: + - kind: concept + text: "Warum können die Felder einer `struct` verschiedene Datentypen haben?" +@end-unosim-tutor */ diff --git a/examples/IT08/it08-03-struct-als-parameter.ino b/examples/IT08/it08-03-struct-als-parameter.ino index 8aaa4af..86c30ed 100644 --- a/examples/IT08/it08-03-struct-als-parameter.ino +++ b/examples/IT08/it08-03-struct-als-parameter.ino @@ -38,3 +38,25 @@ void loop() { * 2. Welche Bedeutung hat der Operator ->? * 3. Wird in der Funktion eine Kopie oder das Original veraendert? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Eine Struktur per Referenz an eine Funktion uebergeben." +exclusive: true +focus: + - id: zeiger-uebergabe + title: "Übergabe per Zeiger" + objective: "Die Studierenden sollen den Aspekt \"Übergabe per Zeiger\" erklären können." + questions: + - kind: concept + text: "Warum wird beim Aufruf `&messung` verwendet?" + - kind: concept + text: "Welche Bedeutung hat der Operator `->`?" + - id: kopie-oder-original + title: "Kopie oder Original" + objective: "Die Studierenden sollen den Aspekt \"Kopie oder Original\" erklären können." + questions: + - kind: concept + text: "Wird in `messwertKorrigieren` eine Kopie oder das Original verändert?" +@end-unosim-tutor */ diff --git a/examples/IT08/it08-04-funktion-auslagern.ino b/examples/IT08/it08-04-funktion-auslagern.ino index 671b534..f893c72 100644 --- a/examples/IT08/it08-04-funktion-auslagern.ino +++ b/examples/IT08/it08-04-funktion-auslagern.ino @@ -28,3 +28,25 @@ void loop() { * 2. In welcher Datei ist addieren() implementiert? * 3. Welchen Vorteil bietet die Trennung bei groesseren Programmen? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Eine eigene Headerdatei mit #include in das Hauptprogramm einbinden." +exclusive: true +focus: + - id: include + title: "Die Include-Zeile" + objective: "Die Studierenden sollen den Aspekt \"Die Include-Zeile\" erklären können." + questions: + - kind: concept + text: "Welche Aufgabe hat die Zeile mit `#include`?" + - kind: concept + text: "In welcher Datei ist `addieren` implementiert?" + - id: trennung + title: "Trennung von Dateien" + objective: "Die Studierenden sollen den Aspekt \"Trennung von Dateien\" erklären können." + questions: + - kind: concept + text: "Welchen Vorteil bietet die Trennung bei größeren Programmen?" +@end-unosim-tutor */ diff --git a/examples/IT11/it11-01-matrix-ausgeben.ino b/examples/IT11/it11-01-matrix-ausgeben.ino index 53d4ea1..b8eda03 100644 --- a/examples/IT11/it11-01-matrix-ausgeben.ino +++ b/examples/IT11/it11-01-matrix-ausgeben.ino @@ -41,3 +41,25 @@ void loop() { * 2. Warum werden zwei Schleifen benoetigt? * 3. Welche Aufgabe hat das Tabulatorzeichen \t? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Die Elemente einer 3x3-Matrix zeilen- und spaltenweise ausgeben." +exclusive: true +focus: + - id: elementzugriff + title: "Elementzugriff" + objective: "Die Studierenden sollen den Aspekt \"Elementzugriff\" erklären können." + questions: + - kind: prediction + text: "Welches Element von `matrix` wird mit den Indizes 1 und 2 angesprochen?" + - kind: concept + text: "Warum werden zwei Schleifen benötigt?" + - id: ausgabeformat + title: "Ausgabeformat" + objective: "Die Studierenden sollen den Aspekt \"Ausgabeformat\" erklären können." + questions: + - kind: concept + text: "Welche Aufgabe hat das Tabulatorzeichen `\\t`?" +@end-unosim-tutor */ diff --git a/examples/IT11/it11-02-matrix-transponieren.ino b/examples/IT11/it11-02-matrix-transponieren.ino index 20fc94f..bc284e1 100644 --- a/examples/IT11/it11-02-matrix-transponieren.ino +++ b/examples/IT11/it11-02-matrix-transponieren.ino @@ -47,3 +47,25 @@ void loop() { * 2. Was geschieht mit den Elementen auf der Hauptdiagonalen? * 3. Welche Eigenschaft hat das Ergebnis bei einer symmetrischen Matrix? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Beim Transponieren Zeilen- und Spaltenindizes vertauschen." +exclusive: true +focus: + - id: transponieren + title: "Transponieren" + objective: "Die Studierenden sollen den Aspekt \"Transponieren\" erklären können." + questions: + - kind: concept + text: "Welche beiden Indizes werden beim Transponieren vertauscht?" + - kind: concept + text: "Was geschieht mit den Elementen auf der Hauptdiagonalen?" + - id: ergebnis + title: "Das Ergebnis" + objective: "Die Studierenden sollen den Aspekt \"Das Ergebnis\" erklären können." + questions: + - kind: prediction + text: "Welcher Wert steht nach dem Transponieren in `transponiert` an der Position mit den Indizes 1 und 0?" +@end-unosim-tutor */ diff --git a/examples/IT11/it11-03-matrizen-addieren.ino b/examples/IT11/it11-03-matrizen-addieren.ino index 2764c58..f1d305b 100644 --- a/examples/IT11/it11-03-matrizen-addieren.ino +++ b/examples/IT11/it11-03-matrizen-addieren.ino @@ -48,3 +48,25 @@ void loop() { * 2. Warum muessen beide Matrizen dieselben Abmessungen besitzen? * 3. Welchen Wert hat summe[2][1] im Ausgangsbeispiel? */ + +/* @unosim-tutor +schemaVersion: 2 +learningObjectives: + - "Zwei Matrizen elementweise addieren." +exclusive: true +focus: + - id: addition + title: "Elementweise Addition" + objective: "Die Studierenden sollen den Aspekt \"Elementweise Addition\" erklären können." + questions: + - kind: concept + text: "Welche Elemente werden in `summe[zeile][spalte]` miteinander addiert?" + - kind: concept + text: "Warum müssen `matrixA` und `matrixB` dieselben Abmessungen besitzen?" + - id: ergebnis + title: "Das Ergebnis" + objective: "Die Studierenden sollen den Aspekt \"Das Ergebnis\" erklären können." + questions: + - kind: prediction + text: "Welchen Wert hat das Element von `summe` mit den Indizes 2 und 1 im Ausgangsbeispiel?" +@end-unosim-tutor */