22.11.2013 Aufrufe

Lösung

Lösung

Lösung

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!