Skip to main content


Zutaten: Zucker, Kakaomasse (50%), Milchzucker, Weizenmehl, Vollmilchpulver, Magermilchpulver, Butterreinfett, Sahnepulver, Butter (1,4%)
Kann Spuren von Analysis und Geometrie enthalten.

IV_29_lauf-titel

Lilas Fun Run Program

Charly hat noch Ferien und kommt nach Berlin. Lila will ein TigerJython-Programm für einen Volkslauf schreiben. Beim Zieleinlauf will sie die Nummer des Läufers eingeben und hofft, gleichzeitig die Zeit mitzunotieren. Das will sie nun testen.

Lilas Fun Run Program

Charly Lila, erklär‘ doch mal Dein Programm!

Lila Klar! Die Idee kommt aus Deinem Lehrbuch. Da gibt es eine Vorlage, die für jeden Läufer den Vornamen und das Alter abspeichert. Es hat zwei Schwachstellen.

Charly Ja?

Lila Es speichert die Daten nur solange, wie das Programm läuft. Also – die Daten werden nicht extern abgelegt.

Charly Hahaha! Ein Anmeldeprogramm, das die Anmeldedaten nach der Anmeldung zerstört!

Lila Ja, außerdem enthält es keine Messung der Laufzeit jedes Läufers. Es war nur ein Anmelde-Programm.

Charly Na! Ein Programm für einen Lauf – ohne Ergebnisse und ohne Siegerzeiten?

Lila Stimmt!

Charly Lila – und was hast Du gemacht?

Lilas Variablen

Lila Ich habe eine Tabelle in einer Datenbank angelegt. In jeder Zeile steht die Nummer des Läufers und dahinter kommt seine Laufzeit. Die Syntax stand nicht im Buch, das habe ich mir selbst überlegt.

Das Datenbank-File nenne ich

Berlin-Lauf.pydb

Die Variable zum File heißt

data

Die Tabelle kriegt die Variable

teilnehmer

Mit der Erzeugung der Tabelle werden die beiden Spalten mit den Überschriften „Läufer“ bzw. „Laufzeit“ festgelegt. Schau mal, so geht das:

29_code_start_04
Code zur Erstellung einer Datenbank mit einer 2-spaltigen Tabelle

Charly Okay!

Lila Dann kann man auf die Tabellenwerte durch

data.teilnehmer

zugreifen.

Tatsächlich schreibe ich immer nur zeilenweise etwas hinein. Wenn Max hier im Ziel einläuft, dann will ich seine Nummer eingeben, gleichzeitig soll das Programm die Zeit notieren und in einer Zeile eintragen.

Zeitmessung

Charly Hört sich gut an! Wie geht das mit der Zeitmessung?

Lila Man muss die time-Bibliothek einbinden und hat dann Befehle zur Zeitmessung zur Verfügung. Das konnte ich direkt aus dem Documentary von Rainer Steiger oder Roger Keller nehmen. Da blicke ich nicht ganz durch, ob Rainer oder Roger. Jedenfalls geht es einfach so:

startzeit = time()

Charly Klaro!

Lila Vorher rufe ich ein askYesNo-Dialogfenster auf, das habe ich im TigerJython-Documentary gefunden, sodass ich selbst die Startzeit festlegen kann:

29_startdialog_01
askYesNo-Dialogfenster zur Initialiserung der Zeit

Wenn ein Läufer durch's Ziel läuft, messen wir wieder die Zeit, merken uns das:

endzeit = time()

und berechnen die Differenz:

laufzeit = startzeit - endzeit

Was meinst Du, reichen da ganze Sekunden oder soll ich lieber die Zeit als Gleitkommazahl nehmen?

Charly Nimm mal lieber Gleitkommazahlen, bei kurzen Strecken kann schon eine hundertstel Sekunde entscheiden.

Schleife und Abbruch

Lila Gut! Das Schwierigste war wieder, den Lauf zu beenden. Ich mache ein Dialogfeld und frage nach der Nummer:

29_dialog_01
Dialogfenster zur Eingabe von Integern und sinnvollem Abbruch

Dann kommt die Zeitmessung und danach wird die Differenzzeit in die Tabelle geschrieben. Das mache ich immer wieder bis zum letzten Läufer. Aber wie breche ich ab?

Charly Hier steht doch „Abbrechen“! Du musst also immer nachfragen, was der Dialog zurückgibt.

Lila Richtig, das hatte ich doch schon mal!

Charly Siehst Du! Und wenn nicht „Abbrechen“ gedrückt wird, machst Du immer weiter. Außerdem würde ich eine maximale Zahl angeben, vielleicht ist ja die Zahl der Läufer nach der Anmeldung bekannt?

Lila Okay! Da muss ich einen geeigneten Befehl für den Dialog heraussuchen:

inputInt(prompt, False)

macht das genau. Ich prüfe, ob das Ergebnis „None“ ist, wenn nicht, übernehme ich die Zahl in die Integer-Variable

n

und wenn doch, wird die Schleife abgebrochen. Charly, wie oft soll Max durchs Ziel laufen?

Charly Max, kannst Du 5 Runden laufen?

Max Okay!

Lila Gut!

Charly Dann mal los! Max und Lila: Auf die Plätze, fertig, los!

***

Übungsaufgaben

  1. Schreibe das Flowchart für Lilas Programm!
  2. Schreibe Lilas Programm und teste es!
  3. Wie schnell ist Max gelaufen?

Lösung

1. Datenbank initialisieren:

iV_29_flowchart_fun_run_01-03Datenbank füllen und ausgeben:

iV_29_flowchar

2.

29_code_run_03
Code zur Messung der Zieleinläufe beim Volkslauf – Lilas Run Fun Program

3. 47,8 s; 133,8 s; 69,6 s; 177,2 s; 74,1 s