R-Basic Schnupperkurs "Stoppuhr" - Teil 2

Nachdem im 1. Teil des Schnupperkurses die Programmoberfläche der Stoppuhr programmiert wurde, geht es im 2. Teil um die eigentliche Funktion einer Stoppuhr - das Messen der Zeit, die seit dem Klick auf den Start-Button vergangen ist.

Vorüberlegungen

Als ich anfing zu überlegen, wie das Messen und die Darstellung der vergangenen Zeit am Besten zu erreichen sei, fiel mir als erstes der Struktur-Befehl DateAndTime ein, den ich auch schon für Uhrwerk Orange benutzt hatte. Leider schien der Befehl außer der Darstellung der aktuellen Uhrzeit keine weiteren Möglichkeiten zu bieten. Rainer hat mich dann eines Besseren belehrt und mir gezeigt wie's geht, sodass ich den Befehl schließlich als Grundlage für die Stoppuhr verwendet habe. Der Vorteil des Befehls ist die Darstellung der führenden Null bei einstelligen Sekundenwerten. Ausserdem behält die Programmierung eine gewisse Geradlinigkeit, da nur wenige Befehle aus anderen Programmierbereichen notwendig sind, um zum gewünschten Ergebnis zu kommen.

Weiter geht's

Öffnen Sie Ihr Stoppuhr-Programm aus dem 1. Teil des Schnupperkurses.

Variablen definieren

Als erste Programmierarbeit teilen Sie R-Basic mit, dass Sie eine Variable und ein Unterprogramm benötigen.

Klicken Sie im R-BASIC-Fenster unten links im Bereich "Code anzeigen" auf den Button "DIM & DATA". Der Editor zeigt wieder eine leere Seite an.

Tragen Sie die beiden Zeilen ein, die mit DIM und DECL beginnen.

Die beiden beige unterlegten Zeilen am Anfang der Seite sind mit einem Hochkomma auskommentiert. Dort habe ich nur ein paar Infos hinterlegt, sie haben keinen Einfluss auf das Programm.

DIM und DECL

DIM time AS DateAndTime
DECL SUB ticktack()

Der Befehl DIM time AS DateAndTime speichert die aktuelle Uhrzeit im Format Stunden:Minuten:Sekunden = 00:00:00.

Der Befehl DECL SUB ticktack() gibt R-Basic bekannt, das es im Programm ein Unterprogramm mit dem Namen ticktack gibt.

Befehle, die bei jedem Programmstart abgearbeitet werden

Klicken Sie wieder im R-BASIC-Fenster unten links im Bereich Code anzeigen auf den Button BASIC-Code. Der Editor zeigt die Codezeilen an, die Sie bereits im 1. Teil des Kurses eingetragen haben.


Fügen Sie zwischen den beiden Zeilen der im ersten Teil angelegten Unterprogramme die fehlenden Befehle ein.

SystemAction

SYSTEMACTION StartupHandler
  FontSetGeos(FID_MONO,72)
  printFont.style = TS_BOLD
  Print at(0,1);"00:00"
  Delay 60
End ACTION

Der Befehl FontSetGeos(FID_MONO,72) stellt die Schriftart Mono in der Größe 72 Punkt ein.

Der Befehl printFont.style = TS_BOLD vereinbart Fettschrift.

Der Befehl Print at(0,1);"00:00" stellt den zwischen den doppelten Anführungszeichen enthaltenen Textstring in der Zeile 1 ab der Spalte 2 dar. In R-Basic beginnt die Zählung bei Null, deshalb geben Sie für die erste Zeile eine 0 ein und für die zweite Spalte eine 1.

Der Befehl Delay 60 stellt die später im Programm benötigte Verzögerung auf 1 Sekunde ein.

Befehle, die nach dem Anklicken des Start/Stopp-Buttons abgearbeitet werden

Buttonaction

BUTTONACTION StartButtonAction
  StartButton.enabled = FALSE
  StoppButton.enabled = TRUE
  ticktack
End ACTION

Der Befehl StartButton.enabled = FALSE deaktiviert den Startbutton.

Der Befehl StoppButton.enabled = TRUE aktiviert den Stoppbutton.

Der Befehl ticktack springt zum Unterprogramm mit gleichem Namen.

BUTTONACTION StoppButtonAction
  StartButton.enabled = TRUE
  StoppButton.enabled = FALSE
End ACTION

Der Befehl StartButton.enabled = TRUE aktiviert den Startbutton.

Der Befehl StoppButton.enabled = FALSE deaktiviert den Stoppbutton.

SUB

SUB ticktack()
  time.minute = 0
  time.second = 0
    REPEAT
      Delay
      Print at(0,1);Mid$(FormatTime$(time),4)
      time.second = time.second + 1
        IF time.second = 60 THEN
          time.second = 0
          time.minute = time.minute + 1
        End IF
      IF time.minute = 60 THEN time.minute = 0
      IF StoppButton.unhandledEvents THEN BREAK
    UNTIL false
End SUB

Die beiden Variablen time.minute = 0 und time.second = 0 werden auf den Wert Null gesetzt.

Der Befehl REPEAT startet eine "REPEAT-UNTIL-Schleife", die solange wiederholt durchlaufen wird, bis die Taste Stopp gedrückt wird.

Der Befehl Delay wartet bei jedem Schleifendurchlauf die oben bereits festgelegte Zeitspanne (Delay 60 = eine Sekunde).

Die Befehlszeile Print at(0,1);Mid$(FormatTime$(time),4) kombiniert die beiden Befehle Print und Mid$ und sorgt dafür, dass aus dem String der System-Variable time (00:00:00) die ersten beiden Nullen der Stundenanzeige und der erste Doppelpunkt entfernt werden. Übrig bleiben die für die Stoppuhr notwendigen Minuten und Sekunden.

Die Variable time.second = time.second + 1 setzt den Wert der Variable um 1 hoch. Aus "00" wird z.B. "01".

Die Befehlszeile IF time.second = 60 THEN prüft, ob die Variable bereits den Wert "60" erreicht hat. Falls ja, dann ...

...wird der Wert der Variable time.second = 0" wieder auf 0 gesetzt und die Zählung beginnt beim nächsten Durchlauf der Schleife wieder von vorne.

Die Variable time.minute = time.minute + 1 setzt ausserdem die Variable der Minutenanzeige um 1 hoch, da ja 60 Sekunden (60 Schleifendurchläufe) vergangen sind.

Der Befehl End IF markiert das Ende der mehrzeiligen Prüfung.

Die Befehlszeile IF time.minute = 60 THEN time.minute = 0 prüft, ob die Variable den Wert 60 erreicht hat. Falls ja, wird er auf den Wert 0 gesetzt.

Die Befehlszeile IF StoppButton.unhandledEvents THEN BREAK prüft, ob während der Abarbeitung des Unterprogramms der Stopp-Button gedrückt wurde. Falls ja, wird die REPEAT-UNTIL-Schleife verlassen und in der Zeile nach UNTIL FALSE weitergemacht.

Der Befehl UNTIL FALSE markiert das Ende Schleife.

Geschafft!

Das Stoppuhr-Programm starten

Speichern Sie Ihr R-Basic Dokument. Wählen Sie im Menü Programm den Punkt Programm starten. Wenn R-Basic keine Fehler meldet und demnach mit dem Programmcode soweit alles OK ist, sollte Ihr Programm Stoppuhr nun auf dem Bildschirm erscheinen.

Beenden Sie das Programm wieder und wählen Sie im Menü Programm den Punkt Eigenständiges Programm anlegen. Nun wird R-Basic einen Moment beschäftigt sein und anschließend das fertige Programm Stoppuhr im World-Verzeichnis ablegen.

Weitere Hinweise - Wenn Sie Spass am Programmieren mit R-Basic finden, werden Sie sich später vermutlich einige Dokument-Vorlagen erstellen, die bereits einige der verwendeten Objekte enthalten. So brauchen Sie nicht jedes mal die immer benötigten "Grund-Objekte" erneut eintippen.

Zurück zum 1. Teil des Schnupperkurses.

Kommentare / Hinweise können Sie im InfoBase-Forum posten, oder per Mail senden.
 

  
Mit Edith zuletzt aktualisiert am 18.09.22 Impressum     Datenschutz     Zum Seitenanfang