ReiheSchüler:innen · Jahrgang 7Teilweise verfügbarStand Details
Informatik 7 · UV I · Block 04 · Stunde 6 · Code prüfen ohne Rechner

Code prüfen ohne Rechner

Gemeinsamer Kern

Stunde 6 · 45 Minuten · ohne Rechner

Unser Kopf übernimmt den Programmlauf

Gestern haben wir gebaut und programmiert. Heute prüfen wir fremden Code, bevor wir ihn wieder ans Board lassen. Eine Person führt nur die erreichten Zeilen aus; die andere protokolliert. Danach tauscht ihr.

Heute reicht: Programm A/B begründet vergleichen, beim Zeitfall einen verlorenen Tastendruck erklären und im Rückblick selbst einen Test begründen. Zähler und Forschungsaufträge sind Vertiefung.

Du brauchst Papier, Stift und die mitgegebenen Codekarten. Dein eigener Code aus der vorigen Stunde ist willkommen, aber keine Voraussetzung. Ein Gerät, ein Download oder Internetzugang ist für die Bearbeitung nicht nötig.

Gemeinsamer Kern

Vereinbarungen für unsere Papierprüfung

Die Codekarten zeigen Lesecode mit deutschen MicroBlocks-Blocknamen. Einrückung zeigt, welche Blöcke zu falls, sonst oder einer Schleife gehören. Eckige Klammern umschließen Bedingungen; sie sind kein zusätzlicher Block. Das ist keine Python-Datei.

RegelFür unseren Ablauf
VorbereitungFür A/B/C ist der Summer vorab an Pin 25 gebunden. Kein anderes Skript läuft. T1=18, T2=19, beide mit pull up.
Pin lesenLosgelassen liefert wahr, gedrückt falsch. nicht dreht es um.
falls / sonstBedingung beim Erreichen lesen. Genau einen erreichten Zweig ausführen; sonst überspringen, wenn falls wahr war.
fortlaufendAm Ende wieder zum ersten eingerückten Block zurück.
Ton / wartespiele Ton … für … ms hält dieses Skript bis zum Ende des Tons auf. warte hält es ebenfalls auf. Dazwischen werden keine anderen Zeilen dieses Skripts abgefragt.
ZeitmodellNur Ton- und Warteblöcke verbrauchen hier Zeit. Andere Zeilen dauern 0 ms. Das ist ein vereinfachtes Papiermodell, keine gemessene ESP32-Laufzeit.
ZeitgrenzeEin Druck von 80 bis 140 ms gilt bei 80 schon und bei 140 nicht mehr. Kein Kontaktprellen.
ProtokollZeile → gelesener Zustand → gewählter Zweig → Ausgabe → nächste Zeile. Offene Frage markieren statt ausprobieren.

Gemeinsames Mini-Beispiel: Bei losgelassenem T1 ist der Rohwert wahr. „nicht wahr“ ist falsch: Der Ton im zugehörigen falls-Zweig wird übersprungen. Prüft dann gemeinsam, was bei gedrücktem T1 anders ist.

Gemeinsamer Kern

1 · Welcher Code erfüllt den Vorrang?

Gewünscht ist wie zuvor: nur T1 → hoch, nur T2 → tief, keine Taste → still, beide → nur tief. Verfolgt A und B für jede Zeile der Eingabekarte genau eine vollständige Runde. Notiert die erreichten Zeilennummern und die Reihenfolge der Töne. Die jeweilige Eingabe bleibt für diese ganze Runde unverändert; diese Runden werden hier einzeln betrachtet.

Wählt danach den kleinsten Test, der A und B unterscheidet. Begründet eure Entscheidung am Kontrollfluss. Verbessert A möglichst gezielt, ohne drei schon richtige Fälle zu verändern.

Programm A · zwei unabhängige Prüfungen
  1. fortlaufend
  2. falls [nicht (lies digitalen Pin 18 pull up)]
  3. spiele Ton 880 Hz für 120 ms
  4. falls [nicht (lies digitalen Pin 19 pull up)]
  5. spiele Ton 440 Hz für 120 ms
  6. warte 20 Millisekunden
Programm B · Entscheidung mit sonst
  1. fortlaufend
  2. falls [nicht (lies digitalen Pin 19 pull up)]
  3. spiele Ton 440 Hz für 120 ms
  4. sonst
  5. falls [nicht (lies digitalen Pin 18 pull up)]
  6. spiele Ton 880 Hz für 120 ms
  7. warte 20 Millisekunden
KarteT1T2A: Tonfolge / ZeilenB: Tonfolge / Zeilen
1loslos________________
2gedrücktlos________________
3gedrücktgedrückt________________
4losgedrückt________________
Starthilfe · Ein Durchlauf mit dem Finger

Beginne mit Karte 1. Zeige auf jede falls-Zeile. Setze nur an erreichten Tonzeilen ein Zeichen. Beginne danach Karte 2 wieder oben. Vergleiche bei Karte 3 besonders, ob der zweite falls-Block unabhängig oder im sonst-Zweig liegt. Schließe dann die Hilfe und bearbeite Karte 4 allein.

Gemeinsamer Kern

2 · Warum bleibt die zweite Taste ungehört?

Programm C enthält beide Tasterabfragen. Trotzdem kann es eine Betätigung verpassen. Beginnt die erste Runde bei 0 ms. T1 ist von 0 bis 60 ms gedrückt, T2 von 80 bis 140 ms. Davor und danach sind die Tasten losgelassen.

Verfolgt die ersten zwei Runden mit Uhrzeiten. Wann werden Pin 18 und Pin 19 tatsächlich gelesen? Welcher Ton läuft? Erklärt dann den Unterschied, wenn T2 stattdessen von 80 bis 260 ms gehalten wird. Eine Gruppe schlägt vor, nur warte 20 auf warte 5 zu ändern: Behebt das den ursprünglichen Verlust? Belegt eure Antwort mit Zeiten.

Programm C · Tonblöcke dauern
  1. fortlaufend
  2. falls [nicht (lies digitalen Pin 18 pull up)]
  3. spiele Ton 880 Hz für 200 ms
  4. falls [nicht (lies digitalen Pin 19 pull up)]
  5. spiele Ton 440 Hz für 100 ms
  6. warte 20 Millisekunden
Ereignis / ZeileZeitpunkt oder ZeitraumGelesener Wert / Ausgabe
Erste Prüfung Pin 18________________
Erster Ton________________
Erste Prüfung Pin 19________________
Beginn der zweiten Runde________________
Starthilfe · Zeit statt Raten

Zeichne 0,60,80,140,200 und 220 ms auf eine Linie. Markiere die gedrückten Zeiträume. Bleibe mit dem Programmfinger während der 200 ms auf der Tonzeile. Erst danach gehst du zur nächsten Abfrage. Schließe die Hilfe und verfolge den längeren T2-Druck allein.

Wahlweise vertiefen

3 · Ein Druck ist mehr als ein Zustand

Der Code D zählt neue T1-Drücke und gibt den Zähler mit sage aus. T2 setzt auf 0 zurück und hat Vorrang. Jede Tabellenzeile beschreibt die beiden gelesenen Tastenwerte einer Runde; während dieser Runde bleiben sie gleich. Führt die Zeilen nacheinander aus, ohne die Variablen zurückzusetzen.

Notiert vorher1 vor der Runde, ob die Erhöhung in Codezeile 11 ausgeführt wird, zaehler am Ende und vorher1 am Ende. Erklärt besonders den Übergang von Runde 4 zu 5 der Eingabekarte. Jemand rückt Codezeile 12 in den sonst-Zweig: Konstruiert mit der Karte den entstehenden Fehler. Warum muss eine verworfene Eingabe trotzdem im Gedächtnis ankommen?

Programm D · Gedächtnis für den letzten Zustand
  1. wenn gestartet
  2. setze zaehler auf 0
  3. setze vorher1 auf falsch
  4. fortlaufend
  5. setze jetzt1 auf [nicht (lies digitalen Pin 18 pull up)]
  6. setze jetzt2 auf [nicht (lies digitalen Pin 19 pull up)]
  7. falls [jetzt2]
  8. setze zaehler auf 0
  9. sonst
  10. falls [jetzt1 und nicht vorher1]
  11. ändere zaehler um 1
  12. setze vorher1 auf jetzt1
  13. sage zaehler
  14. warte 20 Millisekunden
RundeT1T2vorher1 vor / nachzaehler am Ende
1loslos____ / ________
2gedrücktlos____ / ________
3loslos____ / ________
4gedrücktgedrückt____ / ________
5weiter gedrücktlos____ / ________
6loslos____ / ________
7gedrücktlos____ / ________
Starthilfe · Erinnerung mit Karten

Lege zwei Zettel mit den Variablennamen aus. Bei setze wird der alte Wert ersetzt. Übernimm den Endwert einer Runde als Startwert der nächsten. Zeile 12 läuft im Original auch dann, wenn T2 zurückgesetzt hat.

Wahlweise vertiefen

Forschung 1 · Eine unmögliche Zusage?

Ein Programm liest eine Taste nur bei 0,10,20 und 30 ms. Eine Person behauptet: „Mit genügend gutem Code geht zwischen den Abfragen kein noch so kurzer Druck verloren.“ Entwirf zwei verschiedene physische Eingabeverläufe, die an allen vier Abfragezeitpunkten denselben Wert liefern. Beweise damit, ob die Zusage haltbar ist.

Formuliere anschließend eine erfüllbare Zusage mit einer Annahme über die kürzeste Druckdauer und den längsten Abstand zwischen Abfragen. Erkläre, was ein nachgeschalteter Zähler daran ändern kann und was nicht. Eine Tabelle mit vier Messwerten allein ist noch kein Beweis: Verbinde Beobachtung, gespeicherten Zustand und Ausgabe.

Wahlweise vertiefen

Forschung 2 · Welche Zusagen passen zusammen?

Ein Auftrag benötigt drei Töne zu 100 ms und drei Pausen zu 100 ms, insgesamt 600 ms. Bei 0 ms startet A. Weitere neue Bestellungen kommen bei 100(B),200(C),300(D),400(E) ms. Eine läuft, höchstens drei warten. Volle Warteschlange: neuen Auftrag ablehnen. Neue Bestellungen liegen im Modell bereits als Ereignisse vor, nicht als ungeklärte Pinimpulse.

Entwirf auf Papier die Zustände und verfolge bis 1200 ms: Wer wartet, läuft, endet oder wird abgelehnt? Vergleiche mit einem zweiten Verlauf: Bei 600 ms kommt ein Stop genau beim fälligen Ende von A; Stop hat vor dem Ende Vorrang und löscht alles. Bei 700 ms kommt F. Gib die Ereignisreihenfolge ausdrücklich an.

Begründe „höchstens drei warten“ für jede deiner Übergangsregeln. Kann ein endlicher Speicher beliebig viele Bestellungen verlustfrei aufnehmen? Welche Garantie gilt nur, wenn kein Stop kommt? Übertrage deine Regeln als eingerückten Lesecode oder Zustandsdiagramm.

Gemeinsamer Kern

Allein · Dein Beleg zählt

Eine Person sagt über Programm C: „Der zweite falls-Block steht in der Schleife. Also wird jeder Druck auf T2 erkannt.“ Widerlege oder bestätige die Aussage mit einer konkreten Eingabe, zwei Abfragezeitpunkten und einer erklärten Codezeile. Unterscheide dabei Papiermodell und eine Behauptung über echte Hardware.

Mitnehmen: Eine Abfrage erkennt nur den gelesenen Zustand. Schleifen wiederholen Prüfungen, beseitigen aber keine blockierende Tonphase. Eine belastbare Erklärung nennt den tatsächlich erreichten Weg.

Gemeinsamer Kern

Belege aufbewahren

Im Unterricht ohne Rechner: Name und Codeversion auf deine Papierseiten schreiben. Gebt Erwartung, Ablaufspur und Korrektur gemeinsam ab. Markiert einen später am Board zu prüfenden Fall. Schreibt heute nicht „funktioniert getestet“, wenn ihr nur einen Papierlauf gemacht habt.

Die nächsten Computerchecks vergleichen eure Vorhersage mit dem echten Verhalten. Abweichungen können aus Code, Verdrahtung oder unserem vereinfachten Zeitmodell entstehen.

Alle Code- und Aufgabenkarten als Kopiervorlage
Nur für die spätere digitale Bearbeitung

Zur Reihenübersicht · Vorheriger Block · Der nächste Block wird in einer kommenden Stunde freigeschaltet.