Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 5 Dr. W. Narzt u. Dr. A. Stritzinger.

Ähnliche Präsentationen


Präsentation zum Thema: "Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 5 Dr. W. Narzt u. Dr. A. Stritzinger."—  Präsentation transkript:

1 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 5 Dr. W. Narzt u. Dr. A. Stritzinger Institut für Wirtschaftsinformatik- Software Engineering JKU Linz

2 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 2 Algorithmen mit Gedächtnis Begriff e … Eingangsgrößen a … Ausgangsgrößen normaler Algorithmus a = ƒ(e) Die Ausgangsgrößen sind eine Funktion der Eingangsgrößen Frühere Aufrufe haben keinerlei Auswirkungen auf spätere Algorithmus mit Gedächtnis weitere Größe s (innerer Zustand) a = ƒ(e, s n ) s n+1 = g(e, s n ) Frühere Aufrufe des Algorithmus wirken sich auf spätere aus

3 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 3 Algorithmen mit Gedächtnis Realisierungsformen (1) Externe Zustandsgrößen (globale Variable) Zustandsgrößen nicht verborgen, werden außerhalb initialisiert, können aber auch außerhalb verändert werden int sum = 0 // auch für weitere Algorithmen sichtbar addValue( int v) { sum = sum + v write("Aktuelle Summe = ") writeln(sum) } Spezialform: Modul (modul-globale Variable, nicht nach außen sichtbar)

4 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 4 Algorithmen mit Gedächtnis Realisierungsformen (2) Zustandsgrößen als Parameter Der Algorithmus hat kein Gedächtnis! Daten werden bei jedem Aufruf mitgegeben - nicht verborgen (unsicher) addValue( int v int sum) { sum = sum + v write("Aktuelle Summe = ") writeln(sum) }

5 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 5 Algorithmen mit Gedächtnis Realisierungsformen (3) Statisch initialisierte Größen (static) Nur bei Sprachen, die statische Größen und Initialisierung erlauben (C, C++, Java) addValue( int v) { static int sum = 0 // nur in addValue sichtbar sum = sum + v write("Aktuelle Summe = ") writeln(sum) }

6 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 6 Algorithmen mit Gedächtnis Anwendungsbeispiele Pseudozufallszahlen gepufferte Eingabe von Datei allgemein: Algorithmen, bei denen nicht alle Werte auf einmal kommen t Durchschnittsbildung t Messwerte t Eingabestrom t Automaten (Zustände bleiben erhalten)

7 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 7 Algorithmen mit Gedächtnis Beispiel Schreiben Sie einen Algorithmus mit Gedächtnis, der als Eingangsparameter einen aktuellen Messwert für einen Luftschadstoff erwartet und bei jedem 10. Aufruf den aktuellen Mittelwert für alle bisherigen Messwerte und das bisher aufgetretene Maximum ausdruckt. Verwendung: addSample(0.123) addSample(0.23) addSample(0.421) addSample(0.232).... //nach 10. Aufruf: Maximum = 7.21 Durchschnitt = //nach

8 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 8 Algorithmen mit Gedächtnis addSample( float val) { static float max = 0 static float avg = 0 static int numOfVal = 0 if (val > maxVal) { maxVal = val } avg = (avg * numOfVal + val) / (numOfVal + 1) numOfVal ++ if (numOfVal % 10 == 0) { write("Maximaler Wert = "); writeln(max) write("Durschnitt = "); writeln(avg) }

9 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 9 Algorithmen mit Gedächtnis Beispiel l Bei der Eingabe eines Passworts hat man drei Versuche, das richtige und gültige Passwort einzugeben. Das Passwort wird in einer globalen Variablen passwd gespeichert und mittels der Funktion setPasswd( word) jeweils gesetzt oder geändert. l Schreiben Sie einen Algorithmus, der zur Überprüfung des eingegebenen Passworts dient. Der Algorithmus checkPasswd( word) liefert true, wenn das Passwort richtig ist und false, wenn es falsch ist. Nach der dritten inkorrekten Angabe eines Passworts wird jeglicher weitere Versuch checkPasswd aufzurufen sofort mit false beendet. Ein korrekter Versuch setzt alle Zählvariablen wieder auf den Initialzustand zurück. Als Einschränkung soll ein Passwort aus genau 6 Zeichen bestehen.

10 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 10 Algorithmen mit Gedächtnis char passwd[1:6] boolean checkPasswd( char word[1:6]) { static int count = 0 int i count = count + 1 if (count > 3) { return false } i = 1 while ((i <= 6) && (word[i] == passwd[i])) { i= i+1 } if (I == 7) { count = 0 return true } else { return false } Anmerkung: Was passiert, wenn man 3x bereits falsch eingegeben hat? (Rücksetzen möglich?)


Herunterladen ppt "Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 5 Dr. W. Narzt u. Dr. A. Stritzinger."

Ähnliche Präsentationen


Google-Anzeigen