![]() |
![]() |
C++ |
G.Eichelsdörfer - Staatliche Technikerschule Weilburg |
Projekt: warten bzw. warten_f
Es soll auf das Drücken einer Taste der Tastatur gewartet werden. Zu diesem Zweck ist eine Abfrage geeignet, ob eine Taste gedrückt wurde. Genau genommen wird geprüft, ob ein Zeichen im Tastaturpuffer liegt, das noch nicht abgeholt wurde. Beim Drücken einer Taste wird deren Zeichen im Tastatur-Pufferspeicher (Teil des Arbeitsspeichers) abgelegt. Beim Einlesen werden die im Puffer liegenden Zeichen geholt und gegebenenfalls umgewandelt (konvertiert).
Die Abfrage, ob eine Taste gedrückt wurde, gelingt per VC++ mit der etwas proprietären Konsolenfunktion _kbhit()
- von keyboard hit. Diese Funktion liefert eine Null, wenn kein neuer Tastendruck vorliegt, andernfalls einen anderen,
von Null verschiedenen Wert. Der gelieferte Wert kann als Wahrheitswert verwendet werden. Das bedeutet konkret:
_kbhit() ergibt wahr, wenn eine neue Taste gedrückt wurde.
!_kbhit() ergibt wahr, wenn keine neue Taste gedrückt wurde.
Hinweis: Bei Sondertasten wie Funktionstasten und Cursor-Steuertasten werden zwei Tastencodes (Zeichen) im Puffer abgelegt.
Wenn eine Taste gedrückt wurde, kann sie eingelesen werden. Das Einlesen einer Taste ohne abschließendes Drücken
der Eingabetaste gelingt mit der Funktion _getch(). Diese liefert den Code der gedrückten Taste und gibt das
Tastenzeichen nicht als Echo aus. Dieser Code kann unmittelbar einer Zeichenvariablen zugeordnet werden.
Beispiel: char Taste = _getch();
Beide Funktionen _kbhit() und _getch() stehen erst nach Einbeziehung der Datei conio.h zur Verfügung.
Erstellen Sie ein kleines Programm und variieren bzw. erweitern Sie es ein wenig.
Es soll auf das Drücken irgendeiner Taste gewartet werden. Wenn dieses Ereignis eintritt, soll der Text "Taste gedrueckt" ausgegeben und das Programm beendet werden.
Es soll auf das Drücken der Taste t gewartet werden. Dann soll "t gedrueckt" ausgegeben und das Programm beendet werden. Andere Tastendrücke sollen ohne Wirkung bleiben.
Ändern Sie das letzte Programm für das Warten auf die Leertaste ab!
Bauen Sie das Programm wie folgt aus: