Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen 1 SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

Ziele von EINI I + II Einführen in „Informatik“
Forschungszentrum caesar
Zusammenfassung der Vorwoche
Suche in Texten (Stringsuche )
10. Grundlagen imperativer Programmiersprachen
der Universität Oldenburg
Java: Dynamische Datentypen
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Imperative Programmierung Funktionen und Parameter
Zusammenfassung Vorwoche
DVG Ablaufsteuerung
Einführung in die Programmierung Datensammlung
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 4 Dr. W. Narzt u. Dr. A. Stritzinger.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Kontrollstrukturen Verwendung: Steuerung des Ablaufs.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Einführung in die Programmierung
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut für Wirtschaftsinformatik- Software Engineering JKU Linz.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Algorithmen und Datenstrukturen SS 2005
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen 1 SS 2007 Dr. W. Narzt u. Dr. A. Stritzinger Institut.
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 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
Algorithmen und Datenstrukturen Übungsmodul 8
Algorithmen und Datenstrukturen Übungsmodul 11
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Thomas Hilpold: Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger.
Algorithmen und Datenstrukturen SS 2005
Algorithmen und Datenstrukturen Übungsmodul 1
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 2 Dr. W. Narzt u. Dr. A. Stritzinger.
Algorithmen und Datenstrukturen Übungsmodul 3
Einführung in PHP.
MODULA-2.
Agenda für heute, 20. April, 2006 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Agenda für heute, 28. April, 2005 Strukturierte VariablenStrukturierte Variablen Arrays.
BMEVIEEA100 Grundlagen der Programmierung
PHP: Operatoren und Kontrollstrukturen
Algorithmen und Datenstrukturen 1 SS 2002
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
Algorithmen und Datenstrukturen 1 SS 2002
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Algorithmen und Datenstrukturen 1 SS 2002
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Rekursion-
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Variablen und Datentypen
Einführung in die Programmierung
Schleifen Datenfelder (Arrays) Verzweigungen
 Präsentation transkript:

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen 1 SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut für Wirtschaftsinformatik- Software Engineering JKU Linz

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 2 Organisation der Übung Algorithmen allgemein Darstellungsarten Algorithmenbeschreibungssprache Jana Beispiele Übungsbesprechung Übung 1 Überblick

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 3 wöchentliche Übung (90 min) Anwesenheitspflicht (2 x fehlen) 10 Übungen (mind. 8) ca 50 % werden kontrolliert Abgabeschluß: Do 10:00 (Briefkästen SWE) Rückgabe: Do darauf 10:00 (Eingangsbereich) (Teaching) Organisation

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 4 Beurteilung 50 % Klausur / 50 % Übungen beide Anteile müssen positiv sein jeweils 24 Punkte (>= 12 ist positiv) Nachklausur im WS 2005 Organisation

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 5 In der Übung Präsentation der letzten Übung Mitarbeit Beispiele Vortrag Unterlagen & Übungsangabe (z.B. Jana, Org,...) Organisation

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 6 Organisation Form Die Übung soll sauber und sorgfältig abgefasst sein. Verwenden Sie die Übungsangabe als Deckblatt. Verwenden Sie zur Ausarbeitung einen Texteditor. Formulieren Sie ihre Algorithmen in Jana. Heften Sie die Übungen links oben zusammen. Ergänzende Skizzen und Diagramme können Sie auch handschriftlich verfassen. Gliederung für jede Aufgabe Lösungsidee Algorithmus Test Gruppenarbeit ist nicht erlaubt!

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 7 Tutorenstunden Montag 12:00-13:00 Raum MZ 313A (PC Labor) ab (z.B. Jana, Org,...) Organisation

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 8 Algorithmen Problemlösungsverfahren, die sich aus einzelnen "Aktionen" zusammensetzen. Jede Aktion hat einen Effekt Jede Aktion -> eindeutig interpretierbar, ausführbar Algorithmus: statisch endlich 0..n Eingangsobjekte 0..n Ausgangs- oder Ergebnisobjekte 0..n lokale Hilfsobjekte Programme Programme sind Algorithmen, die in einer Programmiersprache abgefaßt sind, damit sie auf einem Rechner ausgeführt werden können Prozessor: Mensch oder Maschine Algorithmen vs. Programme

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 9 Jana JANA Übersicht Algorithmen (Prozeduren) Kommentare Operatoren Ablaufsteuerung (Sequenz, Selektion, Iteration) if / else if / else, switch; while, repeat, for 4 Elementare Datentypen boolean, int, float, char Felder (inkl. Zeichenketten) boolean[1:n], char[], float[-3:3], int[1:n; 1:m] und weitere Sprachkonstrukte

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 10 JANA (2) Algorithmen (Prozeduren) Gleichheitsprüfung: i == 1 (Ergebnis: boolean) (auch: !=,, >=, <=, *, /, %, +, -, !, &&, ||, usw.) i = 1 // Zuweisung i = search(  values,  3) // Funktionsaufruf replace(  values,  1,  4) // Prozeduraufruf // + Anweisungen zur Ablaufsteuerung Operatoren und Anweisungen int search (  int[1:n] values,  int x) { } replace(  int[1:n] values,  int valueToReplace,  int value) { }

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 11 Ablaufsteuerung Verzweigung (Selektion) if (ausdruck) { Anweisungen } if (ausdruck1) { Anweisungen1 } else if (ausdruck2) { Anweisungen2 } else { Anweisungen3 } switch (ausdruck) { case ausdruck1: { Anweisungen1 } case ausdruck2: { Anweisungen2 }... default: { Anweisungenn } }

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 12 Ablaufsteuerung (2) Schleifen (Iteration) while (ausdruck) { Anweisungen } repeat { Anweisungen } until (ausdruck) // iteriert von i=1 bis n for (i=1.. n) { Anweisungen } // i nimmt nacheinander alle // werte der menge  an for (i   ) { Anweisungen } // iteriert über 2er-potenzen for (int i=2, 4, 8, 16,.., n) { Anweisungen }

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 13 Elementare Datentypen int..., -1, 0, 1, 2,... float..., 0.0,... char'a', 'b', 'c',... boolean true, false Konstanten: final int i = 5 final boolean a = true, b = false

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 14 Felder (Arrays) Deklaration in Jana: int[1:n] feld Feldliteral in Jana: feld = {1, 2, 3, 4} Elementzugriff erfolgt immer durch Indizierung: feld[i] = element element = feld[i] Alle Elemente müssen gleichen (statischen) Datentyp haben. Unterer und oberer Grenzindex sind frei wählbar. Für unteren Grenzindex ist 0 (Java, C++) oder 1 (Smalltalk) üblich n Erstes Element an Position unterer Grenzindex (z.B.: 0) Letztes Element an Position oberer Grenzindex (z.B.: n) IndexElemente Annordnung einer Zahl von Elementen die fortlaufend nummeriert sind (Index von unterer bis oberer Grenze, muß ganze Zahl sein)

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 15 Lineares Suchen in Feldern //liefert die indexposition der gesuchten Zahl value in feld array, oder -1 //falls nicht enthalten int sequentialSearch(  int[1:n] array,  int value) { int index for (index = 1 to n) { if (array[index] == value) { // value an der Stelle index gefunden return index } // value im ganzen feld nicht enthalten return -1 } Aufruf: position = sequentialSearch(myArray, searchNumber) Gegeben ist ein unsortiertes Feld mit beliebigen ganzen Zahlen Gesucht: Ist eine bestimmte Zahl enthalten und an welcher Stelle?

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 16 Löschen und Einfügen in Felder deleteElem(  float[1:n] array,  int elemIndex) { int i if (elemIndex n) return; //ungültiger Index for (i = elemIndex to n-1) { array[i] = array[i+1] } Beim Löschen eines Feldelements müssen die dahinterliegenden Elemente um eine Stelle nach vor gereiht werden; insertElem(  float[1:n] array,  int elemIndex,  float value) { int i if (elemIndex n) return //ungültiger Index for (i=n-1 downto elemIndex) { array[i+1] = array[i] } array[elemIndex] = value; } Beim Einfügen müssen alle Elemente ab der Einfüge-Position nach hinten gereiht werden. Vorsicht: oberer Grenzindex, letztes Element geht verloren

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 17 Rückblick Zusammenfassung Algorithmen (Prozeduren) Kommentare Operatoren Ablaufsteuerung (Sequenz, Selektion, Iteration) if / else if / else, switch; while, repeat, for 4 Elementare Datentypen boolean, int, float, char Felder (inkl. Zeichenketten) boolean[1:n], char[], float[-3:3], int[1:n; 1:m] und weitere Sprachkonstrukte

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 18 Beispiel: Sinusberechnung durch Reihenentwicklung Idee : Sinusfunktion kann durch folgende Reihe beliebig genau angenähert werden: sin (x) = x 1 /1! - x 3 /3! + x 5 /5! - x 7 /7! + x 9 /9! -... Zusatzidee : Wenn der Wert eines Terms kleiner ist als maximal zulässiger Fehler, dann ist die Abweichung des Näherungswertes vom exakten Sinuswert auch kleiner als der maximal zulässige Fehler und dahinterliegende Terme können ignoriert werden (konvergierende Reihe). Sinus - Version 1: float sinus (↓float angle) { i = 1 ergebnis = term(i) while (ergebnis noch zu ungenau) { i = i+1 //berechne nächsten term(i) ergebnis = ergebnis +/- term(i) } return ergebnis }

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 19 Beispiel: Sinusberechnung durch Reihenentwicklung (2) Idee : Sinusfunktion kann durch folgende Reihe beliebig genau angenähert werden: float sinus (↓float angle) { int i int termVorzeichen float term, ergebnis, maximalerFehler maximalerFehler = // i = 1 termVorzeichen = -1 term = angle ergebnis = angle //while (ergebnis noch zu ungenau) { while (|term| > maximalerFehler) { i = i+2 //!!! statt i+1 //berechne nächsten term(i) term = (angle i / i!) * termVorzeichen termVorzeichen = -termVorzeichen// schaltet Vorzeichen um ergebnis = ergebnis + term// akkumuliert terme in ergebnis } return ergebnis }