Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
schule:klassen:2019:10abc:zustandsdiagramme [2020/01/05 17:19]
martin [Zustandsdiagramm]
schule:klassen:2019:10abc:zustandsdiagramme [2020/01/05 17:31]
martin [Umsetzung als Computerprogramm:]
Zeile 96: Zeile 96:
  
 </code> </code>
 +
 +===== Aufgabe: Zwischenstopp-Taste =====
 +Die Stoppuhr erhält eine weitere Taste Z („Zwischenzeit“), mit der man die Anzeige anhalten kann, während die Uhr im Hintergrund weiterläuft. Erweitere sowohl das Zustandsdiagramm (mit Bleistift) als auch das Programm entsprechend!
 +
 +{{:schule:klassen:2019:10abc:pasted:20200105-172537.png?600}}
 +
 +<code java>
 +Uhr u = new Uhr();
 +
 +// Die Timer-Klasse führt die Methode run des Objekts u
 +// alle 1000 ms immer wieder aus:
 +Timer.repeat(u, 1000); 
 +
 +
 +public class Uhr implements Runnable {
 +   
 +   int zustand = 1;
 +   int sekunden = 0;
 +   int minuten = 0;
 +
 +   public void drückeZ() {
 +      
 +      if(zustand == 2) {
 +         zustand = 4;
 +         return;
 +      }
 +      
 +      if(zustand == 4) {
 +         zustand = 2;
 +         return;
 +      }
 +
 +      ausgabe();
 +
 +   }
 +   
 +
 +   public void drückeS() {
 +      
 +      if(zustand == 1) {
 +         zustand = 2;
 +         // Uhr starten
 +         return;
 +      }
 +
 +      if(zustand == 2) {
 +         
 +         zustand = 3;
 +         // Zwischenstopp
 +         return;
 +
 +      }
 +
 +      if(zustand == 3) {
 +         zustand = 2;
 +         // wieder starten
 +         return;
 +      }
 +
 +      if(zustand == 4) {
 +         zustand = 2;
 +         return;
 +      }
 +
 +      ausgabe();
 +
 +   }
 +   
 +   public void drückeR() {
 +
 +      zustand = 1;
 +      // reset
 +      sekunden = 0;
 +      minuten = 0;
 +
 +      ausgabe();
 +      return;
 +      
 +   }
 +   
 +   public void run() {
 +      
 +      if(zustand == 2 || zustand == 4) {
 +         
 +         sekunden++;
 +
 +         if(sekunden == 60) {
 +            minuten++;
 +            sekunden = 0;
 +         }
 +
 +      }
 +
 +      ausgabe();
 +
 +   }
 +
 +   public void ausgabe() {
 +      if(zustand != 4) { 
 +         System.clearScreen();
 +         System.out.println(minuten + " : " + sekunden);
 +      }
 +   }
 +
 +}
 +
 +</code>
 +
Drucken/exportieren
QR-Code
QR-Code schule:klassen:2019:10abc:zustandsdiagramme (erstellt für aktuelle Seite)