Hallo Waldgeist,
Ein gutes Programm liefert für die erwarteten Daten die richtigen Resultate.
Ein sehr gutes Programm verhält sich auch mit unerwarteten Daten definiert, vorhersehbar und sicher.
Ein einfaches Beispiel:
Code:
INPUT "Alles löschen? (J/N)", A$
IF A$ = "N" THEN Goto nicht löschen
hier wird alles gelöscht
Erwartet wird als Eingabe "J" oder "N"
Das funktioniert bestens, so lange nur N und J gedrückt werden. Nun hat aber eine Tastatur noch eine Menge mehr Zeichen als nur diese beiden! Zudem ist die Gross/Klein-Schreibung auch noch zu beachten.
Da A$ ein String ist, kann da auch mehr als 1 Zeichen drin stehen.
Prellt das N gibt es eine Katastrophe, dann sind alle Daten weg!
Eine bessere Variante:
Code:
INPUT "Alles löschen? (J/N)", A$
IF A$ = "J" THEN Goto löschen
hier wird NICHTS gelöscht
Hier führt nur die Eingabe von "J" zum Löschen aller Daten, alle anderen Eingaben bewirken nichts.
Noch besser:
Code:
INPUT "Alles löschen? (J/N)", A$
IF A$ = "J" THEN Goto löschen
IF A$ = "N" THEN Goto nicht löschen
Falsche Eingabe verarbeiten
Dies ist jetzt kein Schulbeispiel, sondern ich habe dies in der Praxis mehrfach erlebt.
Je nach dem wie der Programmierer denkt, wählt er im Prinzip eine dieser Lösungen. Du darfst jetzt raten, welche ein sehr guter Programmierer wählt.
Entsprechend geht man auch bein Hacken vor. Exploits findet man ausserhalb der vom Programm erwarteten Datenmenge.
Es ist immer wieder Lustig zu testen, was bei Rechnern oder Formularen passiert, wenn man z.B. negative Zahlenwerte eingibt oder Buchstaben an der Stelle von Ziffern! Schon ein einfacher "U = I * R" kann sich lustig verhalten, wenn man negative Widerstandswerte oder 0 Ohm eingibt.
Lesezeichen