Startseite | Kontakt | Impressum

Material für den Informatikunterricht

Rechnen mit Zeiten: eine Stoppuhr

Eine Stoppuhr errechnet die Differenz zwischen Startzeit und Zielzeit. In unserem Fall soll es mit Sekunden genau genug sein.
Beispiel:

Start8.58.20
Ziel8.58.30
Differenz   10 Sekunden

 
Soweit so einfach.
Etwas anders sieht es schon im Folgenden aus, denn da wird die Minutengrenze überschritten. Jeder Mensch würde solche Zeiten im Kopf sozusagen nach vorne rechnen: Vom Start weiterzählen bis zur Zielzeit:

Start8.58.53
Ziel8.59.07
Differenz   14 Sekunden

 
Wie kann ein Programm das ohne Theater mit WENN - DANN - SONST errechnen? Mathematisch handelt es sich da um eine Subtraktion, also wird vom höheren Wert (das ist die Zielzeit) der niedrigere Wert (das ist die Startzeit) subtrahiert (Zeiten aus dem zweiten Beispiel):

07 - 53 = -46das sind die Sekunden
59 - 58 = 1das sind die Minuten,
umgerechnet in Sekunden = 1 * 60 = 60
Beides addiert ergibt-46 + 60 = 14 Sekunden.

 
Wenn die Stoppuhr ausgerechnet die Grenze einer vollen Stunde überschreitet, sieht die Sache in etwa genauso aus:

Start = 8.58.53Ziel = 9.01.07
Differenz in Sekunden07 - 53 = -46
Differenz in Minuten01 - 58 = -57;
-57 * 60 = -3.420 (Sekunden)
Differenz in Stunden9 - 8 = 1;
1 * 60 * 60 = 3.600 (Sekunden)
Und diese Daten werden addiert:-46 + (-3.420) + 3.600 = 134 (Sekunden)
Im Kopf oder mit dem Zifferblatt der Uhr vor Augen hätte man vermutlich so gerechnet:
von 8.58.53 bis 9.01.07 sind es 7 + 60 + 60 + 7 = 134 Sekunden

Das Rechnen über die 24-Stunden-Grenze hinaus wird hier nicht untersucht; wir gehen davon aus, dass um Mitternacht keine Stoppuhr gebraucht wird...

Als LOGO-Prozedur

- gibt es ein Problem: Logo kann nur immer eine einzige Tätigkeit ausführen, nicht mehrere gleichzeitig. Logo kann also nicht ein Spiel laufen lassen, in dem dann noch laufend der Ort des Igels daraufhin geprüft wird, ob er in einem Zielfeld angekommen ist (siehe das Landespiel mit der Dynaturtle) und dabei die Zeit messen. Was Logo aber wohl kann, ist beim Start die so genannte Systemzeit des Rechners als Liste speichern und am Schluss eben die Systemzeit als eine zweite Liste speichern und dann halt wie oben beschrieben die Differenz ausrechnen. Alles Weitere sagt uns die Logo-Hilfe und ein bisschen Nachdenken und Rechnen, wie oben beschrieben. - Hier ein Muster für die, die es nicht selbst hinbekommen.

PR stoppuhr
   LS
   SETZE "h1" ELEMENT 1 .ZEIT
   SETZE "m1" ELEMENT 2 .ZEIT
   SETZE "s1" ELEMENT 3 .ZEIT
   DZ "BITTE nach kurzer Pause eine beliebige Taste drücken."
   SETZE "x" TASTE
   SETZE "h2" ELEMENT 1 .ZEIT
   SETZE "m2" ELEMENT 2 .ZEIT
   SETZE "s2" ELEMENT 3 .ZEIT
   SETZE "diff_s" :s2 - :s1
   SETZE "diff_m" :m2 - :m1
   SETZE "diff_h" :h2 - :h1
   SETZE "diff_m" :diff_m * 60
   SETZE "diff_h" :diff_h * 3600
   LS
   DR "Das hat jetzt " DR :diff_s + :diff_m + :diff_h DZ " Sekunden gedauert."
ENDE

© Michael Kraus, Dezember 2009