Simulation und Testen von Algorithmen

Ähnliche Dokumente
SWE1 / Übung 2 ( )

Schleifen. JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 45

Softwareentwicklung 1 UE-Stunde 01 - Algorithmen

2.2 Syntax, Semantik und Simulation

Beschreibung von Programmiersprachen. Syntax und Semantik von Programmiersprachen. EBNF (Erweiterte Backus-Naur-Form) Syntax und Semantik von Java

Gleitkommazahlen. JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 74

Einheit 2. Syntax und Semantik Einfache Programme Verzweigungen Schleifen. Syntax und Semantik von Programmiersprachen

Sprachen sind durch folgenden Aufbau gekennzeichnet:

3 Syntax von Programmiersprachen

Kapitel 2. Methoden zur Beschreibung von Syntax

3 Syntax von Programmiersprachen

Informatik I Tutorium WS 07/08

Einführung in die Programmierung für NF. Übung

3.1 Reservierte Wörter

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

Formale Sprachen. Inhaltsverzeichnis. M. Jakob. 10. Dezember Allgemeine Einführung. Aufbau formaler Sprachen

Syntax von Programmiersprachen

Informatik Algorithmen und Programme

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Folien zur Vorlesung. Informatik II. im Sommersemester Prof. Dr. Hans-Peter Kriegel H.-P. Kriegel, T. Seidl

Organisatorisches. Informatik II. Kapitel 1: Einführung. Literaturhinweise

JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network

Programmierkurs Java

Einführung in die Programmierung für NF. Rückgabewerte, EBNF, Fallunterscheidung, Schleifen

Übung Grundlagen der Programmierung WS 2008/09. Übung 04: Methoden. Abgabetermin: Prosabeschreibung Java-Programm.

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Softwareentwicklung 1

3.4 Struktur von Programmen

I N F O R M A T I K UNIVERSITÄT LINZ. SWE1 / Übung 9. Schrittweise Verfeinerung

Syntax von Programmiersprachen

Kapitel 2. Methoden zur Beschreibung von Syntax

Syntax von Programmiersprachen

Es gibt keinen Algorithmus zum Schreiben eines Programms bzw. Algorithmus.

Kapitel 2: Methoden zur Beschreibung von Syntax

2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung:

Aufgabe 1.1. Wählen Sie jene Variablendeklarationen mit Initialisierungen aus, die in Java hinsichtlich der Typen korrekt sind:

Probe-Klausur im Modul: Grundlagen der Informatik (GDI)

Prof. H. Herbstreith Fachbereich Informatik. Leistungsnachweis. Informatik 1 WS 2001/2002

Zuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte

1.1 Daten und Befehle

Übersicht: Inhalt und Ziele. Kapitel 2: Methoden zur Beschreibung von Syntax. Aufbau von Programmen. Syntax von Programmiersprachen

Softwareentwicklung 1

Syntax von Programmiersprachen

Programmierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen

Programmierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen

7. Syntax: Grammatiken, EBNF

Einführung in die Programmierung für NF. Algorithmen, Datentypen und Syntax

1 Formale Sprachen, reguläre und kontextfreie Grammatiken

Kapitel 3: Anweisungen

Formale Sprachen. Inhalte. Lehrplan. Hinweis

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Grundlagen der Programmierung Prof. H. Mössenböck. 4. Schleifen

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Prof. H. Herbstreith 10. Juli Uhr bis 11:00 Uhr Leistungsnachweis Informatik 1 SS 2001

Informatik I WS 07/08 Tutorium 24

Algorithmen und Datenstrukturen II. Algorithmen und Datenstrukturen II 1

Die Klasse MiniJava ist in der Datei MiniJava.java definiert:

Teil IX. Eine kleine Programmiersprache

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.4. Verifikation - 1 -

Tagesprogramm

Algorithmen und Datenstrukturen II

Kontrollstrukturen: Wiederholungsanweisungen

Programmierpraktikum

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.4. Verifikation - 1 -

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

Theoretische Informatik. Reguläre Sprachen und Automaten

Übungen zu Algorithmen

Programmierkurs II. C und Assembler

Arrays. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik

Vorbereitende Aufgaben

Algorithmen und Datenstrukturen

! 1. Erste Schritte! 2. Einfache Datentypen! 3. Anweisungen und Kontrollstrukturen! 4. Verifikation! 5. Reihungen (Arrays) II.1.4. Verifikation - 1 -

Javakurs für Anfänger

Test-Klausuraufgaben Softwaretechnik Fachbereich BW, für WINFO

Einführung in die Programmiertechnik

Programmieren I. Methoden-Special Heusch --- Ratz 6.1, Institut für Angewandte Informatik

Inhalt Kapitel 5: Syntax

Lemma Für jede monotone Grammatik G gibt es eine kontextsensitive

Übung 09: Vererbung und Dynamische Bindung

Kapitel 4: Anweisungen und Kontrollstrukturen

4. Zahlendarstellungen

Verhalten. Def. und Nutzen von Verhalten. Pseudocode Schreibtischtest. Algorithmen

Programmieren I. Methoden-Spezial Heusch --- Ratz 6.1, Institut für Angewandte Informatik

Einführung in die Programmierung mit Java

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Informatik. Programming Languages

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Rekursion. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Sprechen Sie Java? Hanspeter Mössenböck. Tm\ dpunkt.verlag. Eine Einführung in das systematische Programmieren

Transkript:

Simulation und Testen von Algorithmen Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 1 Handsimulation von Algorithmen Man versteht einen Algorithmus, wenn man genau weiß, wie er arbeitet. Dazu rechnet man ihn durch. Handsimulation Schreibtischtest Man spielt Computer und arbeitet den Algorithmus Schritt für Schritt ab. Dabei notiert man sich die Variabelenbelegung an bestimmten, interessanten, neuralgischen Positionen im Algorithmus. Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 4

Algorithmus "Sum" Sum() sum = Pos read( number) Pos number sum while number> Pos 1 1??? 1 9 1 sum = sum + number read( number) Pos 6 8 1 16 4 write( sum) Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 6 Handsimulation: Vor- und Nachteile Vorteile Nachteile Genau Langsam Sicheres Auffinden von Fehlern Bei etwas komplexeren Algorithmen nicht mehr durchführbar Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 7

Testausgaben Testpunkte im Algorithmus sind Stellen für Testausgaben im Programm Testausgaben sollen in ansprechender Weise interessante Zwischenergebnisse während der Programmausführung ausgeben Werte von wichtigen Variablen Werte von Bedingungen (Assertions) Ausgabe, ob bestimmte Zweige (z.b. bei if-verzeigungen) wann betreten werden Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 8 Beispiel Sum: Testausgaben public class Sum { public static void main(string[] args) { int sum = ; int number; /*Test*/ IO.writeLn(" -- Test : sum = " + sum); IO.write("Bitte Zahlen eingeben: "); number = IO.readInt(); /*Test*/ IO.writeLn(" -- Test 1: number = " + number + ", sum = " + sum); while (number > ) { sum = sum + number; IO.write("Bitte Zahlen eingeben: "); number = IO.readInt(); /*Test*/ IO.writeLn(" -- Test : number = " + number + ", sum = " + sum); } IO.write("Die Summe ist:"); IO.writeLn(sum); } } Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 9

Testplan Was will man testen Normale Fälle - testen normale Funktion des Algorithmus - dabei an alle unterschiedlichen Möglichkeiten denken Grenzfälle - sind jene Fälle bei dem der Algorithmus noch funktionieren soll - Grenzfälle sind sehr wichtige Testfälle Sonderfälle - sind jene Fälle, für die der Algorithmus eigentlich nicht funktioniert, die aber vorkommen können - benötigen spezielle Behandlung Wie will man testen Eingabewerte Testpositionen Erwartete Ergebnisse Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 11 Syntax und Semantik von Programmiersprachen Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 14

Beschreibung von Programmiersprachen Syntax Regeln, nach denen Sätze gebaut werden dürfen z.b.: Zuweisung = Variable " " Ausdruck. Semantik Bedeutung der Sätze z.b.: werte Ausdruck aus und weise ihn der Variablen zu Grammatik Menge von Syntaxregeln z.b. Grammatik der ganzen Zahlen Ziffer = "" "1" "" "3" "4" "5" "6" "7" "8" "9". Zahl = Ziffer {Ziffer}. Ziffer Zahl 1 3 4 5 6 7 8 9 Ziffer Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 15 EBNF (Erweiterte Backus-Naur-Form) Metazeichen Bedeutung Beispiel beschreibt =. ( ) [ ] { } trennt Regelseiten schließt Regel ab trennt Alternativen klammert Alternativen wahlweises Vorkommen..n-maliges Vorkommen x y (x y) z [x] y {x} y x, y xz, yz xy, y y, xy, xxy, xxxy,... Beispiel: Beispiele Grammatik der Gleitkommazahlen Zahl = Ziffer {Ziffer}. Gleitkommazahl = Zahl "." Zahl ["E" ["+" "-"] Zahl]. Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 17

EBNF Beispiel Gleitkommazahlen Real = DigitSequence ((. DigitSequence [ ScaleFactor ] ) ScaleFactor ). ScaleFactor = ( e E ) [ + - ] DigitSequence. DigitSequence = Digit { Digit }. Digit = 1 3 4 5 6 7 8 9. Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 18 Syntaxdiagramme (Eisenbahndiagramme) Terminalsymbole Kreise oder Ovale Nonterminalsymbole Rechtecke Für Alternativen Weichen / Montag LongDate Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 19

Beispiel Gleitkommazahlen: Syntaxdiagramm Real 6 DigitSequence 58 9. DigitSequence 58 ScaleFactor 61 8 ScaleFactor 61 7 6 ScaleFactor 61 e + Digit 5 E - DigitSequence 58 4 3 DigieSequence 58 Digit 1 Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer Beispiel Gleitkommazahlen: Syntaxbaum (Ableitungsbaum) Real Digit- Sequence dig dig dig Digit- Seq. dig ScaleFactor DigitSequence dig dig 13.4E+1 Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 1