Lösung
Lösung
Lösung
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Lösung</strong> I 2: Grundlagen der Software und der Programmierung<br />
<br />
<br />
<br />
!"#<br />
<br />
<br />
$%%&'("(%(<br />
<br />
)<br />
#!"#<br />
<br />
#*!*<br />
<br />
$ !+! +<br />
&<br />
<br />
Vorab: Es gibt viele mögliche <strong>Lösung</strong>en! Ihre ist bestimmt auch gut. Das Folgende ist nur ein Beispiel, wie man's<br />
machen könnte.<br />
Der Entwurf eines Programms geschieht in drei Phasen<br />
• Problemanalyse, Aufteilung in Teilprobleme<br />
• Entwicklung einer <strong>Lösung</strong> in Form eines Algorithmus<br />
• Spezifikation der Programme und Unterprogramme und ihrer Schnittstellen - Darstellung mittels<br />
Flußdiagramm oder mittels Nassi-Shneiderman Struktogramm
1. Zunächst die Problemanalyse:<br />
Als erstes analysieren wir die Tippfehler empirisch:<br />
Vertipper korrekte Form Diagnose<br />
Enwterfen Entwerfen tw vertauscht<br />
ejn ein i durch j ersetzt (j links unten von i auf Tastatur)<br />
text Text T durch t ersetzt (Klein- statt Grossschreibung)<br />
liets liest st vertauscht<br />
Wöretr Wörter te vertauscht<br />
korigiert korrigiert r fehlt in rr (Orthographiefehler?)<br />
stehgt steht g insertiert nach h (links von h auf Tastatur)<br />
akller aller k insertiert vor l (links von l auf Tastatur)<br />
korekten korrekten r fehlt in rr (Orthographiefehler?)<br />
Eingabesüprache Eingabesprache ü insertiert vor p (rechts von p auf Tastatur)<br />
vertipper Vertipper V durch v ersetzt (Klein- statt Grossschreibung)<br />
gobt gibt i durch o ersetzt (i links von o auf Tastatur)<br />
richtiuge richtige u insertiert nach i (u links von i auf Tastatur)<br />
Besscreiebn Beschreiben ch durch sc ersetzt, be vertauscht<br />
probleme Probleme P durch p ersetzt (Klein- statt Grossschreibung)<br />
Lsöung <strong>Lösung</strong> ös durch sö vertauscht<br />
zunäclsht zunächst ls insertiert<br />
zeichenen zeichnen e insertiert (vielleicht durch Einfluss von Zeichen)<br />
Flusssdiagramm Flussdiagramm s insertiert vor ss (Doppelung überzogen)
Wir klassifizieren die Fehler:<br />
Fehlertyp absolut prozentual<br />
zwei Buchstaben vertauscht 5 26,3<br />
ein oder zwei Buchstaben zuviel, häufig ein auf der Tastatur benachbarter<br />
8 42,1<br />
Buchstabe<br />
ein Buchstabe durch anderen ersetzt (benachbart auf Tastatur) 1 5,2<br />
Klein statt Grossschreibung 3 15,7<br />
einfacher Buchstabe statt Doppelbuchstabe 2 10,5<br />
2. Entwicklung einer <strong>Lösung</strong><br />
Woran erkennen wir überhaupt einen Tippfehler? Indem wir jedes Wort des Textes mit einer Liste aller korrekten<br />
Wörter vergleichen. (Eine solche Wortliste könnte man aus einer großen Menge von texten (z.B. Zeitungen im<br />
Internet) leicht gewinnen.) Allerdings bekommen wir so alle Fehler heraus - ob es Tippfehler sind oder schlicht<br />
rechtschreibschwächen können wir nicht entscheiden. Sei's drum.<br />
Man könnte nun versuchen die unkorrekten Wörter zu verändern, indem man die Fehler rückgängig macht. Also z.B.<br />
alle Buchstabenpaare im Problemwort vertauschen, an allen Stellen alle auf der Tastatur benachbarten Buchstaben<br />
insertieren oder gegen vorhandenen austauschen, alle klein geschriebenen Wörter groß schreiben - und nach jeder<br />
Operation nachsehen, ob das geänderte Wort nun in der Liste der korrekten Wörter ist. Dieses Verfahren wäre aber<br />
so aufwendig, dass wir diesen Gedanken wieder aufgeben.<br />
Wieso kann der Mensch ein falsches Wort korrigieren? Weil das richtige Wort doch so ähnlich ist, dass es noch<br />
erkennbar ist. Also könnte man doch versuchen, zunächst aus der Liste der korrekten Wörter das ähnlichste Wort zu<br />
dem Vertipper zu finden. Im Nachhinein kann man dann überprüfen, ob der Unterschied zwischen beiden Wörtern<br />
einem der o.g. Fehlertypen zuzuordnen ist.
Wie erkennt man aber die Ähnlichkeit? Dazu kann man sich manches ausdenken. Es gibt auch in der Informatik<br />
dazu bekannte Algorithmen. Meist erzeugt man für das falsche und die richtigen Wörter eine Kodierung, welche den<br />
Vergleich flexibler macht, als ein Buchstabe für Buchstabe vorgehender Vergleich. Eine Möglichkeit ist es, jedem<br />
Wort - sei es richtig oder falsch- die Menge aller Buchstabenpaare (sog. Bi-gramme) zuzuordnen, aus dem es<br />
besteht. Statt der Wörter direkt vergleicht man die Mengen von Bi-grammen. Am ähnlichsten sind danach Wörter,<br />
deren Durchschnittsmenge am meisten Bi-gramme enthält. Reihenfolge der Paare spielt keine Rolle. Beispiel<br />
(Durchschnitt = blau, Divergenz=rot):<br />
<br />
<br />
<br />
) )) <br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
# ## <br />
" "<br />
<br />
<br />
$ $ $ $ <br />
<br />
<br />
!+ !++ !+ !++ <br />
! ! ! ! <br />
& & & &<br />
Die rot markierten divergenten Bi-gramme kann man auf mögliche Fehlertypen hin untersuchen, so sieht man leicht,<br />
dass in der Menge {nw,wt,te} gegenüber {nt,tw,we} die Buchstaben t und w vertauscht sind.
3. Flussdiagramm: (Voraussetzung = eine Liste der korrekten Wortformen, zerlegt jeweils in eine Menge von Bi-Grammen)<br />
Start<br />
nächstes Wort lesen<br />
Bi-gramm-Menge bilden<br />
Liste durchgehen<br />
Differenz der Bi-Gramm-Mengen korrektes Wort mit der kleinsten<br />
zählen Differenz entnehmen<br />
Differenz=0? Tippfehler<br />
j erklärbar?<br />
n j n<br />
n Ist dies korrektes Wort ausgeben<br />
die bisher kleinste<br />
Differenz?<br />
j Ende<br />
Wort in der Liste merken