Peter S schrieb:
> Vielen Dank für den Hinweis, das Return als Abbruchbedingung habe ich
> wohl übersehen.
>
> Ist dieser Ansatz für ein Menü welches auf einem Display angezeigt
> werden soll empfehlenswert?
Kommt drauf an.
In den meisten Fällen ist dieser Ansatz nicht so toll.
Warum?
Weil es sich dabei dem Prinzip nach um eine Warteschleife handelt
("warte solange, bis der Benutzer eine Eingabe gemacht hat"), und wir
alle wissen, dass so etwas der Tod für ein Programm ist, welches mehrere
Dinge gleichzeitig machen soll. Die Temperaturregelung eines Terrariums
muss weiter laufen! Und zwar selbst dann, wenn der Benutzer noch
überlegt, ob er per Menü die LCD-Hintergrundbeleichtung nun heller oder
doch dunkler stellen will und zwischendurch noch aufs Klo muss.
Aber: in diesem Artikel geht es primär um Funktionszeiger und wie man
mit ihnen arbeitet. Die Kombination aus Funktionszeiger und Text ist
auch noch ok, aber die eigentliche Menüfunktion wird man ein wenig
anders machen. Eben so, dass sie erstens 2-geteilt ist (Anzeige und
Auswertung) und zweitens so, dass das 'Menü' nicht aktiv auf den
Benutzer wartet, sondern mal kurz nachsieht ob es eine
Benutzerbetätigung gegeben hat und wenn ja, diese dann auswertet (zb
Cursor verschieben, Menü bei Bedarf scrollen, Funktion bei Bedarf
aufrufen, etc.). Da dieses aber hochgradig von der tatsächlich
vorhandenen Hardware abhängt (gibt es ein LCD? Wird die
Benutzerinteraktion über UART und Terminal abgewickelt), kann man da
keine allgemein verwendbare Standardfunktionen angeben. Das alles muss
an die vorhandene Hardware angepasst werden (welche Tasten gibt es? Wo
erfolgt die Ausgabe? Hat der Benutzer einen Cursor den er zur Markierung
des Menüpunktes benutzt? Wie sieht der Cursor aus? etc. etc). Das alles
kann man aber nicht voraussehen und in aller Allgemeinheit behandeln.
Daher hab ich mich beim Schreiben des Artikels auf die einfachst
mögliche Form der Benutzerinteraktion konzentriert, damit man die
Benutzung des Funktionszeigers sieht. Denn genau darum geht es ja im
Artikel: Funktionszeiger. Wer in seinem Sprachstudien bei
Funktionszeiger angelangt ist, ist sowieso kein Anfänger mehr und hat
seine ersten zehntausend Lines of Code schon programmiert. Der weiß
auch, wie er dann seine Menüs aufbaut bzw. wie eine State-Machine
funktioniert, mit der er dann das drumherum baut.