Vorkurs Informatik WS 2003/2004

Größe: px
Ab Seite anzeigen:

Download "Vorkurs Informatik WS 2003/2004"

Transkript

1 Vorkurs Informatik WS 2003/2004 Prof. Dr. Heinrich Müller Informatik VII Universität Dortmund Informatik VII, Universität Dortmund Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/2004 1

2 Organisatorisches zum Vorkurs Informatik Vorlesung: von Montag, , bis Dienstag, , Uhr Hörsaalgebäude I, Hörsaal 6, Campus Süd Dozent: Prof. Dr. Heinrich Müller Übungen: von Dienstag, , bis Dienstag, , von Uhr beziehungsweise Uhr Rechnerpool 006 im Kellergeschoss von GB IV, Campus Süd Betreuer: Dipl.-Inform. Frank Weichert Tutor: Jörg Knoche Einteilung der Übungsgruppen nach dieser Vorlesung Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/2004 2

3 Inhaltsverzeichnis Organisatorisches... 5 Teil I. Einführung... 9 Teil II. Programmierung Vom Problem über den Algorithmus zum Programm Grundkonzepte von Algorithmen Grundkonzepte der Programmierung Beispiel: Mittelwert einer Menge von Zahlen Grundkonzepte der Programmierung: Gleitkommazahlen Beispiel: Sortieren einer Menge von Zahlen durch Minimumsuche Grundkonzepte der Programmierung: Funktionen Beispiel: Sortieren einer Menge von Zahlen durch Mischen ( Merge-Sort ) Prinzip der Rekursion Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/2004 3

4 Inhaltsverzeichnis 10. Beispiel: Suchen in einem Datenbestand Grundkonzepte der Programmierung: Klassen und Objekte Beispiel: Suchen in einer verzeigerten linearen Liste Mehr zur objektorientierten Programmierung Andere Programmierstile Teil III. Algorithmen und Datenstrukturen Asymptotische Aufwandsanalyse Sortieren Suchen Teil IV. Vom Programm zum Rechner Von-Neumann-Rechner Schaltungen Compiler und formale Sprachen Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/2004 4

5 Organisatorisches zum Vorkurs Informatik Informationsmaterial: Skript zur Vorlesung - ist eine Kopie dieser Präsentation - wird hier verkauft Erstsemester-CD - enthält eine Programmierumgebung (Java) zur Installation zuhause - enthält noch andere nützliche Information - gibt es hier umsonst Übungsblätter - enthalten Aufgaben zum Stoff der Vorlesung - sollten zuhause gelöst werden und, soweit es Programmieraufgaben sind, bei den Übungen im Rechner-Pool zum Laufen gebracht werden - gibt es hier umsonst Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/2004 5

6 Zum Vorkurs Zielgruppe: - Studienanfängerinnen und -anfänger der Informatikstudiengänge und andere Interessierte, die nicht oder nur wenig Informatik in der Schule hatten und mit der Programmierung noch nicht vertraut sind Ziel: - Vermittlung von Informatik-Grundwissen, das aus der Schule verfügbar sein sollte und das die erfolgreiche Teilnahme an den einführenden Informatik-Vorlesungen erleichtern soll. Nicht Ziel: - Vorwegnahme von konkreten Vorlesungen -> in die Vorlesungen gehen - Einführung ins Universitätsleben -> O-Phase der Fachschaft Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/2004 6

7 Organisatorisches zum Vorkurs Informatik Informationsmaterial: Internet-Seite zur Vorlesung: - enthält das Skript zum Herunterladen - enthält die Übungsaufgaben zum Herunterladen - wird Korrekturen zum Skript enthalten - wird möglicherweise weitere nützliche Information anbieten Bitte beachten: Dieses Skript unterscheidet sich teilweise von den Skripten der Vorkurse der vergangenen Jahre Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/2004 7

8 Zum Vorkurs Inhalt: Teil I: Einführung Teil II: Programmierung Teil III: Datenstrukturen und Algorithmen Teil IV: Vom Programm zum Rechner Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/2004 8

9 Teil I. Einführung Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/2004 9

10 Was ist Informatik? Typische Begriffe der Informatik: Information, Informationssysteme, Computer, EDV, Rechner, Programmierung, Programmiersprache, Software, Hardware, Internet, Textverarbeitung, Computerspiele Definition 1: Informatik ist die Wissenschaft von der systematischen Verarbeitung von Information, besonders der automatischen, mit Hilfe von Computern. Definition 2: Informatik ist die Wissenschaft, Technik und Anwendung der maschinellen Verarbeitung und Übermittlung von Information. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

11 Was ist Informatik? Information: abstraktes Abbild (Modell) von Objekten der realen Welt Informationsverarbeitung: Abstraktion (Modellbildung) - das Wesentliche vom Unwesentlichen trennen Informationsverarbeitung: Algorithmen und Systeme Informatiker(innen) müssen - von den Objekten und Vorgängen der realen Welt abstrahieren - mit abstrakten Objekten umgehen. Dazu gibt es Methoden - ganz praktische, die manchmal aber auch ziemlich mathematisch aussehen können. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

12 Einige Teilgebiete der Informatik technische Informatik Rechnerarchitektur Betriebssysteme Rechnernetze Software-Technologie Compilerbau Informationssysteme Mensch-Rechner-Interaktion Theoretische Informatik Algorithmenentwurf Computational Intelligence Systemanalyse Simulation Künstliche Intelligenz Anwendungen der Informatik Informatik und Gesellschaft Didaktik der Informatik Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

13 Eine grobe Einteilung der Informatik Technische Informatik: setzt sich mit der inneren Struktur und dem Bau von Computern und allen damit zusammenhängenden technischen Fragen auseinander Praktische Informatik: umfaßt die Prinzipien und Techniken der Programmierung Angewandte Informatik: bildet die Brücke zwischen den Methoden der Informatik und Anwendungsproblemen Theoretische Informatik: entwickelt mathematische Modelle von Computern und Hilfsmittel zu ihrer präzisen Beschreibung Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

14 Literatur P. Rechenberg, G. Pomberger (Hrsg.): Informatik-Handbuch, Carl Hanser Verlag, München, Wien, 2. Auflage, 1999 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

15 Rechnereinführung - Übungsrechner am FBI - PCs Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

16 Übungsrechner am Fachbereich Informatik Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

17 Übungsrechner am Fachbereich Informatik SunRays mit Server SunRay-Hardware: Bildschirm, Tastatur, Maus SunRay SunRay SunRay SunRay SunRay SunRay Ausgaberechner Server 1 Server 2 Server 3 Server 4 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

18 Übungsrechner am Fachbereich Informatik Software: Betriebssystem: Unix (Sun Solaris) Softwaresystem, das den Rechner verwaltet, z.b. die Ausführung von Programmen oder die Verwaltung von Datenbeständen (Dateien) Editor: Emacs Software-System, das die Eingabe und Bearbeitung von Textdateien erlaubt. Java-Programmiersystem: JDK Software-System, das es erlaubt, eigene Programme auf einem Rechner ablaufen zu lassen. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

19 Privat: Personal Computer (PC) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

20 Personal Computer (PC) Hardware: Rechner: Gehäuse: Tower Prozessor: ab 2.0 GHz, Intel oder AMD Hauptspeicher(RAM): Minimum 256 MB, 512 MB gut Festplatte: etwa 80 GB CD-/DVD-Laufwerk: Kombi (DVD&CD), z.b 16x/48x Diskettenlaufwerk: 3 1/2 Zoll-Laufwerk und evtl. ein ZIP-Laufwerk Graphikkarte: ein Produkt mit nvidea-geforce4, min. 64 MB Soundkarte: Soundblaster Tastatur Maus: 3 Tasten mit Rad (Wheel) Monitor: 19 Zoll Röhrenmonitor oder 17 Zoll TFT-Monitor Modem: 56 kb/s oder ISDN- bzw. ADSL-Karte Drucker: Tintenstrahldrucker Alternative: Laptop/Notebook Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

21 Personal Computer (PC) Software (Standard): Betriebssystem: Microsoft Windows XP oder Windows 2000 Editor: NetBeans IDE V3.5 (früher: Sun ONE Studio) Java-Programmiersystem: JDK Software (Alternative): Betriebssystem: Linux, z.b. von Debian oder SuSE Editor: NetBeans IDE V3.5 Java-Programmiersystem: JDK Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

22 Teil II. Programmierung Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

23 Inhalt: 1. Vom Problem über den Algorithmus zum Programm 2. Grundkonzepte von Algorithmen 3. Grundkonzepte der Programmierung 4. Beispiel: Mittelwert einer Menge von Zahlen 5. Grundkonzepte der Programmierung: Gleitkommazahlen 6. Beispiel: Sortieren einer Menge von Zahlen durch Minimumsuche 7. Grundkonzepte der Programmierung: Funktionen 8. Beispiel: Sortieren einer Menge von Zahlen durch Mischen 9. Prinzip der Rekursion 10. Beispiel: Suchen in einem Datenbestand 11. Grundkonzepte der Programmierung: Klassen und Objekte 12. Beispiel: Suchen in verzeigerten linearen Listen 13. Mehr zur objektorientierten Programmierung 14. Andere Programmierstile Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

24 1. Vom Problem über den Algorithmus zum Programm Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

25 Vom Problem über den Algorithmus zum Programm reale Welt Problem abstrakte Objekte informationsverarbeitendes System Abstraktion Darstellung Algorithmus Programm Problemanalyse funktionale Spezifikation Algorithmenentwurf Darstellung in formalisierter Sprache für Ausführung durch Rechner Rechner Realisierung Maschine Umsetzung in Elementarschritte einer Maschine Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

26 Vom Problem über den Algorithmus zum Programm Algorithmus Endliche Vorschrift zur eindeutigen Zuordnung von Ausgabegrößen zu Eingabegrößen in einer endlichen Zahl von Schritten. Bsp.: Backrezept, Kochrezept, Montageanleitung Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

27 Vom Problem über den Algorithmus zum Programm Bsp.: Backrezept Krustelkuchen Zutaten: 1 kg Kartoffeln, 1 mittelgroße Zwiebel, 2 EL Mehl, 2 Eier, Salz, Pfeffer, Majoran, 300 g geräucherte Mettwürstchen, 60 g Butter, 2-3 EL Semmelbrösel, 125 ml saure Sahne Zubereitung: Backofen auf 200 Grad vorheizen. Kartoffeln schälen, waschen, trockentupfen, fein reiben, in einem Passiertuch Flüssigkeit sorgfältig herausdrücken. Zwiebel schälen, fein würfeln. Zwiebel, Mehl und Eier zu den Kartoffeln geben, mit Salz, Pfeffer und Majoran würzen und aller gut mischen. Mettwürstchen in Scheiben schneiden. Eine Kastenform (1 l Füllmenge) mit etwas flüssiger Butter ausfetten. Kartoffelmasse und Mettwürstchen hineinschichten und Oberfläche mit der restlichen Butter begießen 1 Stunde backen, nach 30 Min. Oberfläche mit Semmelbröseln bestreuen und saure Sahne daraufgießen. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

28 Vom Problem über den Algorithmus zum Programm Algorithmus (ausführlicher) Eine Folge einfacher Anweisungen, die folgende Eigenschaften hat: - Endlichkeit: die Beschreibung ist endlich lang - Terminierung: nach Durchführung endlich vieler Operationen kommt das Verfahren zum Stillstand - Reihenfolge: die Reihenfolge, in der die Operationen anzuwenden sind, ist festgelegt - eindeutige Wirkung: die Wirkung jeder Anweisung der Anweisungsfolge und damit der gesamten Folge ist eindeutig festgelegt. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

29 Vom Problem über den Algorithmus zum Programm Vorgehensweise bei der Lösung von Problemen 1. Problem formulieren 2. Problemanalyse, Problemabstraktion, Problemspezifikation 3. Algorithmenentwurf 4. Nachweis der Korrektheit, Verifikation 5. Aufwandsanalyse 6. Programmierung Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

30 Vom Problem über den Algorithmus zum Programm Beispiel: Jüngster Studierender 1. Problem formulieren Möglichkeiten: 1. Finde den jüngsten Studierenden. 2. Finde das Alter des jüngsten Studierenden. Was ist gemeint? Eins von beiden? Beides? Entscheidung: Möglichkeit 1 erscheint passend. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

31 Vom Problem über den Algorithmus zum Programm Beispiel: Jüngster Studierender 2. Problemanalyse, Problemabstraktion, Problemspezifikation Problemanalyse: Fragen: Gibt es eine Lösung? Gibt es genau eine Lösung? Antwort: Für die Möglichkeit 2: beide ja Für die Möglichkeit 1: Es kann mehr als einen Studierenden geben, der die Anforderung erfüllt. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

32 Vom Problem über den Algorithmus zum Programm Beispiel: Jüngster Studierender 2. Problemanalyse, Problemabstraktion, Problemspezifikation Problemabstraktion: Was ist Alter? Ganze positive Zahl Was ist jüngster? Definiert auf der Ordnungsrelation von Zahlen Was heißt finde? Die Altersangaben müssen verfügbar sein. (Bei der Möglichkeit 1 müßten Personenkennung und Alter verfügbar sein) Entscheidungskorrektur: Möglichkeit 2, weil einfacher. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

33 Vom Problem über den Algorithmus zum Programm Beispiel: Jüngster Studierender 2. Problemanalyse, Problemabstraktion, Problemspezifikation Problemspezifikation: Problem: Minimum einer Menge von Zahlen Gegeben: eine Folge a 0,..., a n von positiven ganzen Zahlen, n 0. Gesucht: der kleinste Wert a der gegebenen Zahlen, d.h. a = min{ a 0,..., a n }. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

34 Vom Problem über den Algorithmus zum Programm Beispiel: Jüngster Studierender 3. Algorithmenentwurf Vorgehensweisen bei der Entwicklung eines Lösungsalgorithmus für ein Problem Top-Down-Strategie: Zerlegen des Problems in ganz einfache Teilprobleme, die dann gelöst werden ( Divide & Conquer ). Bottom-Up-Strategie: Aus Lösungen von Teilproblemen wird eine Lösung des Gesamtproblems zusammengefügt. Der Algorithmusentwurf wird in diesem Kapitel behandelt. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

35 Vom Problem über den Algorithmus zum Programm Beispiel: Jüngster Studierender 4. Nachweis der Korrektheit (Semantik, Verifikation) Fragen: Terminiert der Algorithmus? Liefert er immer das richtige Ergebnis? wird im Teil Vom Programm zum Rechner behandelt. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

36 Vom Problem über den Algorithmus zum Programm Beispiel: Jüngster Studierender 5. Aufwandsanalyse wird im Teil Datenstrukturen und Algorithmen behandelt. 6. Programmierung wird in diesem Kapitel behandelt. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

37 Algorithmenentwurf Beispiel: Minimum einer Menge von Zahlen Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

38 Minimum einer Menge von Zahlen Gegeben: a 0,a 1,...,a n Gesucht: Kleinster Wert der Eingabemenge Algorithmus Minimum(a 0,a 1,...,a n ) Durchlaufe die Elemente der Menge und merke den bisher kleinsten Wert. Pseudocode: Setze merker auf a 0 ; Setze i auf 0; Solange i < n ist, führe aus: Erhöhe i um 1; Wenn a i < merker, dann Setze merker auf a i ; Gib merker zurück; Kurzschreibweise: merker := a 0 ; i := 0; Solange i < n ist, führe aus: {i := i+1; Wenn a i < merker, dann merker := a i ;} Gib merker zurück; Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

39 Minimum einer Menge von Zahlen 11, 7, 8, 3, 15, 13, 9, 19, 18, 10, 4 i a i merker merker := a 0 ; i := 0; Solange i < n ist, führe aus: {i := i+1; Wenn a i <merker, dann merker := a i ;} Gib merker zurück; n= Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

40 2. Grundkonzepte von Algorithmen Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

41 Grundkonzepte von Algorithmen Kurzschreibweise: Block merker := a 0 ; i := 0; Solange i < n ist, führe aus: {i := i+1; Wenn a i < merker, dann merker := a i ;} Gib merker zurück; Wertzuweisung an Variable Schleife Bedingte Anweisung Rückgabeanweisung Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

42 Grundkonzepte von Algorithmen Algorithmus: Folge von Anweisungen: Anweisung 1; Anweisung 2;... Ablaufdiagramm: Anw. 1 Anw. 1 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

43 Grundkonzepte von Algorithmen Variable: - hat einen Namen, über den sie angesprochen wird - speichert Information Bsp: merker, a 0, i, n - Verwendung der gespeicherten Information durch Verwendung des Variablennamens: Anstelle des Variablennamens wird die gespeicherte Information eingesetzt Bsp: i < n a i < merker merker := a 0 ; i := 0; Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

44 Grundkonzepte von Algorithmen Wertzuweisung: - Anweisung, mit der einer Variablen ein Wert gegeben wird - Schreibweise: Variablenname := Ausdruck Bsp.: merker := a 0 ; i := 0; i := i+1; merker := a i ; - Ausführung einer Wertzuweisung: 1. Werte den Ausdruck auf der rechten Seite aus. 2. Speichere den Wert in der Variablen der linken Seite. Bsp.: i:=0; i 0 i:=i+1; i 1 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

45 Grundkonzepte von Algorithmen Bedingte Anweisung: Anweisung, mit der man Alternativen in einem Algorithmus formulieren kann - Schreibweise: Wenn Bedingung, dann Anweisung 1; Sonst Anweisung 2; Bsp.: Wenn a i < merker, dann merker := a i ; Ausfühung einer bedingten Anweisung: 1. Werte die Bedingung aus. 2. Wenn die Bedingung erfüllt ist, dann führe Anweisung 1 aus. 3. Wenn die Bedingung nicht erfüllt ist, dann führe Anweisung 2 aus. Wenn der Sonst-Teil fehlt, wird so verfahren, wie wenn er da wäre, aber Anweisung 2 nichts tut ( leere Anweisung ). Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

46 Grundkonzepte von Algorithmen Bedingte Anweisung: Wenn Bedingung, dann Anweisung 1; Sonst Anweisung 2; Ablaufdiagramm: wahr Bed. falsch Anw. 1 Anw. 2 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

47 Grundkonzepte von Algorithmen Schleife: - Anweisung, mit der man eine andere Anweisung mehrmals wiederholen kann. - Schreibweise: Solange Bedingung, führe aus: Anweisung Bsp.: Solange i < n ist, führe aus: {i := i+1; Wenn a i < merker, dann merker := a i ;} Ausfühung einer Schleife: 1. Werte die Bedingung aus. 2. Wenn die Bedingung erfüllt ist, dann führe Anweisung aus und fahre mit 1. fort. 3. Wenn die Bedingung nicht erfüllt ist, dann beende die Schleife. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

48 Grundkonzepte von Algorithmen Schleife: Solange Bedingung, führe aus: Anweisung Bed. falsch wahr Anw. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

49 Grundkonzepte von Algorithmen Block: - Zusammenfassung einer Folge von Anweisungen zu einer einzigen Anweisung - Schreibweise: {Anweisung 1;... Anweisung n;} Bsp.: {i := i+1; Wenn a i < merker, dann merker := a i ;} Ausführung eines Blocks: Führe die Anweisungen des Blocks nacheinander in der angegebenen Reihenfolge aus. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

50 Grundkonzepte von Algorithmen Rückgabeanweisung: - gibt einen Wert an die aufrufende Instanz zurück (mehr dazu später) - Schreibweise: Gib Ausdruck zurück; Bsp.: Gib merker zurück; Druckanweisung: Analog zur Rückgabeanweisung, nur daß das Ausgabeziel ein Ausgabegerät wie Bildschirm oder Drucker ist. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

51 Grundkonzepte von Algorithmen Darstellung des Algorithmus als Ablaufdiagramm: Start merker := a 0 i:=0 merker := a 0 ; i := 0; Solange i < n ist, führe aus: {i := i+1; Wenn a i <merker, dann merker := a i ;} Gib merker zurück; falsch i < n falsch wahr i:= i + 1 wahr a i < merker Gib merker zurück Ende merker:=a j Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

52 3. Grundkonzepte der Programmierung Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

53 Grundkonzepte der Programmierung Programmierung: Überführung eines Algorithmus- oder Systementwurfs in maschinenverständliche Form durch Formulieren in einer Programmiersprache. Programmiersprachen: hier: Java als Beispiel Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

54 Grundkonzepte der Programmierung Programmiersprache Java: - entwickelt von der Firma Sun Ende der Neunzigerjahre - objektorientiert - ermöglicht rechnerplattformunabhängige Programme - hat außerordentlich umfangreiche Klassenbibliotheken für zahlreiche Anwendungen - ist zur Entwicklung von Internet-Anwendungen besonders geeignet Literatur: Es gibt sehr viele Bücher. Bsp.: Guido Krüger: Go To Java 2, Addison-Wesley. (im Internet verfügbar, siehe auch Erstsemester-CD) Bruce Eckel: Thinking in Java. (im Internet verfügbar, siehe auch Erstsemester-CD) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

55 Grundkonzepte der Programmierung Struktur eines einfachen Java-Programm vom Typ Applikation : public class Programm{ // hier können noch Variablen und Funktionen deklariert werden public static void main(string[] args){ } // hier steht der Text des Hauptprogramms, der aus // Anweisungen besteht, die mit ; enden. } Alles, was auf einer Zeile hinter // kommt, wird vom Rechner ignoriert. Dies dient zur Kommentierung durch den Programmierer. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

56 Grundkonzepte der Programmierung Java-Programm zur Suche des Minimums: public class ProgrammMinSuche{ public static void main(string[] args){ int[] a = {11,7,8,3,15,13,9,19,18,10,4}; int merker = a[0]; // damit hat merker den Wert 11 int i = 0; int n = a.length-1; // gibt den letzten Index der // Folge a while (i<n){ i = i+1; if (a[i]<merker) merker = a[i]; } System.out.println(merker); // druckt das Ergebnis } } Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

57 Grundkonzepte der Programmierung Variablendeklaration: - Variablen müssen vor ihrer Verwendung deklariert werden. - Eine Variablendeklaration besteht aus der Angabe ihres Namens und ihres Datentyps. Bsp.: int merker; int i; Datentyp: Menge von Daten gleicher Art Bsp.: ganze Zahlen, reelle Zahlen, Wahrheitswerte - Bei der Deklaration kann einer Variablen auch ein Wert zugewiesen werden, dies muß jedoch nicht sein. Dann muß dies vor der ersten Verwendung des Werts der Variablen durch eine Wertzuweisung geschehen. Bsp.: int[] a = {11,7,8,3,15,13,9,19,18,10,4}; int merker = a[0]; int i = 0; int n = a.length; Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

58 Grundkonzepte der Programmierung Variablendeklaration: Bsp.: int[] a = {11,7,8,3,15,13,9,19,18,10,4}; int merker = a[0] // damit hat merker den Wert 11 int i = 0; int n = a.length-1; // gibt den letzten Index der // Folge a int steht für integer und bezeichnet den Datentyp der ganzen Zahlen. int[] steht für den Datentyp einer Folge von ganzen Zahlen ( Array ). Mit a[i] kann auf die i-te Komponente zugegriffen werden. Mit a.length wird die Länge der Folge erhalten. = bezeichnet die Wertzuweisung (entspricht := bei den Algorithmen). Wenn in Java das Gleichheitszeichen zum Vergleichen zweier Werte gebraucht wird, muß == geschrieben werden. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

59 Grundkonzepte der Programmierung While-Schleife: - hat die Form while (Bedingung) Anweisung - entspricht der Schleife Solange... führe aus... bei den Algorithmen. Bsp.: while (i<n){ i = i+1; if (a[i]<merker) merker = a[i]; } Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

60 Grundkonzepte der Programmierung Bedingte Anweisung: - hat die Form if (Bedingung) Anweisung 1 else Anweisung 2, wobei der else-teil fehlen darf. - entspricht der bedingten Anweisung Wenn... dann... sonst bei den Algorithmen. Bsp.: if (a[i]<merker) merker = a[i]; Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

61 Grundkonzepte der Programmierung Ausdrücke: - sind Formeln zur Berechnung von Werten arithmetische Ausdrücke: - Formeln mit Zahlenwerten, die unter anderem die üblichen Operationen (+,-,*,/) verwenden und geklammert sein können. Bsp.: i+1 3*(2+i) 3/(2*i+5) (5+2)/(-3) - Bei den Operatoren gelten die üblichen Regeln der Bindungsstärke Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

62 Grundkonzepte der Programmierung Boolesche Ausdrücke: - Formeln, die Vergleiche zwischen arithmetischen Ausdrücken oder logische Verknüpfungen enthalten und die als Wert richtig (true) oder falsch (false) liefern Bsp.: 3 < 7 hat den Wert true - werden als Bedingungen bei bedingten Anweisungen und Schleifen verwendet - Vergleichsoperatoren: kleiner als <, größer als >, gleich ==, ungleich!=, kleiner oder gleich <=, größer oder gleich >= Bsp.: 3 == 7 hat den Wert false 3!= 7 hat den Wert true a[i]<merker i < n Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

63 Grundkonzepte der Programmierung - Boolesche Operatoren: nicht!, und &&, oder, mit folgenden Regeln: x!x true false false true x y x&&y false false false false true false true false false true true true x y x y false false false false true true true false true true true true - Boolesche Werte: true (wahr, richtig), false (false) Bsp.: (3 < 7) && (3==7) hat den Wert false ((3 == 7) (3!= 7)) && (2<=2)) hat den Wert true - Deklaration Boolescher Variablen: boolean Variablenname Bsp.: boolean w; - Wertzuweisung: w = (3<7) w bekommt den Wert true - mathematische Symbole: und, oder, nicht Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

64 Grundkonzepte der Programmierung Block: - faßt eine Folge von Anweisungen zu einer neuen Anweisung zusammen - hat die Form { Anweisung 1... Anweisung n } Bsp.: { } i = i+1; if (a[i]<merker) merker = a[i]; Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

65 Grundkonzepte der Programmierung Ausgabe: - geschieht mit Methoden, die die Java-Programmierumgebung zur Verfügung stellt. - Ausgabe auf dem Standardausgabegerät (üblicherweise Bildschirm): System.out.println(aktuelle Parameterliste); Bsp.: System.out.println(merker); Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

66 4. Beispiel: Mittelwert einer Menge von Zahlen Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

67 Mittelwert einer Menge von Zahlen Gegeben: a 0, a 1,..., a n Gesucht: (a a n )/(n+1) Algorithmus Mittelwert(a 0, a 1,..., a n ) Durchlaufe die Elemente der Menge und addiere sie dabei auf. Teile das Ergebnis durch die Anzahl der Elemente. Pseudocode: Kurzschreibweise: Setze ak auf a 0 ; Setze i auf 0; Solange i < n ist, führe aus: Erhöhe i um 1; addiere a i zu ak; Setze m auf ak/(n+1); Gib m zurück; ak := a 0 ; i := 0; Solange i < n ist, führe aus: {i := i+1; ak := ak + a i ;} m := ak/(n+1); Gib m zurück; Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

68 Mittelwert einer Menge von Zahlen 11, 7, 8, 3, 15, 13, 9, 19, 18, 10, 4 i ak m ak := a 0 ; i := 0; Solange i < n ist, führe aus: {i := i+1; ak := ak + a i ;} m := ak/(n+1); Gib m zurück; n= Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

69 Mittelwert einer Menge von Zahlen Java-Programm zur Berechnung des Mittelwerts: public class ProgrammMittelwert{ public static void main(string[] args){ int[] a = {11,7,8,3,15,13,9,19,18,10,4}; float ak = a[0]; // damit hat ak den Wert 11.0 int i = 0; int n = a.length-1; // gibt (Größe der Menge a)-1 while (i<n){ i = i+1; ak = ak+a[i]; } float m = ak/(n+1); System.out.println( Mittelwert +m); // druckt das Ergebnis } } Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

70 5. Grundkonzepte der Programmierung: Gleitkommazahlen Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

71 Grundkonzepte der Programmierung Gleitkommazahlen: - sind Zahlen der Form 1.73 oder 1.71 * lassen sich in Java von ganzen Zahlen dadurch unterscheiden, daß - ein Exponent existiert (1E13 oder 1.71E15) - die Grundzahl einen Dezimalpunkt enthält (1.73) - ein f (für float ) angefügt ist (2f) (es gibt auch noch d für double ). Bsp.: float ak = a[0]; float m = ak/(n+1); Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

72 6. Beispiel: Sortieren einer Menge von Zahlen durch Minimumsuche Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

73 Sortieren einer Menge von Zahlen durch Minimumsuche Gegeben: a 0, a 1,..., a n Gesucht: Anordnung der Eingabewerte nach steigendem Wert Algorithmus MinSort(a 0, a 1,..., a n ) Suche ein Element a k der Menge mit dem kleinsten Wert. Füge a k an das Ende einer neuen Folge an, die am Anfang leer ist. Entferne a k aus der Eingabemenge und verfahre mit der Restmenge genauso. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

74 Sortieren einer Menge von Zahlen durch Minimumsuche Suche ein Element a k der Menge mit dem kleinsten Wert. Füge a k an das Ende einer neuen Folge an, die am Anfang leer ist. Entferne a k aus der Eingabemenge und verfahre mit der Restmenge genauso. Pseudocode: Weise restfolge die gegebene Folge zu; Solange restfolge nicht leer, führe aus: - suche ein Element a k mit dem kleinsten Wert in restfolge; - füge a k an ergebnisfolge an; - entferne a k aus restfolge; gib ergebnisfolge zurück; Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

75 Sortieren einer Menge von Zahlen durch Minimumsuche gegebenefolge 11, 7, 8, 3, 15, 13, 9, 19, 18, 10, 4 restfolge a k ergebnisfolge 11, 7, 8, 3, 15, 13, 9, 19, 18, 10, , 7, 8, 15, 13, 9, 19, 18, 10, 4 4 3,4 11, 7, 8, 15, 13, 9, 19, 18, , 4, 7 11, 8, 15, 13, 9, 19, 18, , 4, 7, 8 11, 15, 13, 9, 19, 18, , 4, 7, 8, 9 11, 15, 13, 19, 18, , 4, 7, 8, 9, 10 11, 15, 13, 19, , 4, 7, 8, 9, 10, 11 15, 13, 19, , 4, 7, 8, 9, 10, 11, 13 15, 19, , 4, 7, 8, 9, 10, 11, 13, 15 19, , 4, 7, 8, 9, 10, 11, 13, 15, , 4, 7, 8, 9, 10, 11, 13, 15, 18, 19 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

76 Sortieren einer Menge von Zahlen durch Minimumsuche Suche ein Element a k der Menge mit dem kleinsten Wert. Füge a k an das Ende einer neuen Folge an, die am Anfang leer ist. Entferne a k aus der Eingabemenge und verfahre mit der Restmenge genauso. Pseudocode: Weise restfolge die gegebene Folge zu; Solange restfolge nicht leer, führe aus: - suche ein Element a k mit dem kleinsten Wert in restfolge; - füge a k an ergebnisfolge an; - entferne a k aus restfolge; gib ergebnisfolge zurück; Kurzschreibweise: restfolge := gegebenefolge; Solange restfolge nicht leer, führe aus: {a k := MinSuche(restfolge); FügeAn(a k, ergebnisfolge); Enferne(a k, restfolge);} gib ergebnisfolge zurück; Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

77 Sortieren durch Minimumsuche ohne Hilfsmenge Gegeben: a 0, a 1,..., a n Gesucht: Anordnung der Eingabewerte nach steigendem Wert Algorithmus MinSort2(a 0, a 1,..., a n ) - Ordne die Menge zu einer Folge an. - Suche ein Element der Folge mit dem kleinsten Wert. Vertausche das erste Element der Folge mit diesem Element. - Suche in der Restfolge ab dem zweiten Element ein Element mit kleinstem Wert. Vertausche das zweite Element der Folge mit diesem Element. - Führe dieses Verfahren mit der Restfolge ab dem dritten Element, dem vierten Element und so weiter bis zum vorletzten Element aus. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

78 Sortieren einer Menge von Zahlen durch Minimumsuche gegebenefolge 11, 7, 8, 3, 15, 13, 9, 19, 18, 10, 4 a k 11, 7, 8, 3, 15, 13, 9, 19, 18, 10, 4 3, 7, 8, 11, 15, 13, 9, 19, 18, 10, 4 3, 4, 8, 11, 15, 13, 9, 19, 18, 10, 7 3, 4, 7, 11, 15, 13, 9, 19, 18, 10, 8 3, 4, 7, 8, 15, 13, 9, 19, 18, 10, 11 3, 4, 7, 8, 9, 13, 15, 19, 18, 10, 11 3, 4, 7, 8, 9, 10, 15, 19, 18, 13, 11 3, 4, 7, 8, 9, 10, 11, 19, 18, 13, 15 3, 4, 7, 8, 9, 10, 11, 13, 18, 19, 15 3, 4, 7, 8, 9, 10, 11, 13, 15, 19, 18 3, 4, 7, 8, 9, 10, 11, 13, 15, 18, 19 3, 4, 7, 8, 9, 10, 11, 13, 15, 18, Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

79 Sortieren einer Menge von Zahlen durch Minimumsuche Java-Programm zur Sortierung durch Minimumsuche: public class ProgrammMinSort{ static int MinSuche(int[] r, int s) { // gibt den Index eines Elements von r mit kleinstem // Wert im Bereich ab Index s zurück int wmerker = r[s]; // merkt den kleinsten Wert int imerker = s; // merkt einen Index zum kleinsten Wert int i = s; int n = r.length-1; while (i<n){ i = i+1; if (r[i] < wmerker){ wmerker = r[i]; imerker= i;} } return imerker; } Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

80 Sortieren einer Menge von Zahlen durch Minimumsuche } public static void main(string[] args){ int[]a = {11,7,8,3,15,13,9,19,18,10,4}; int n = a.length-1; int i = 0; int k; // speichert den Minimumsindex while (i < n){ k = MinSuche(a,i); int merker = a[i]; // vertausche a[k] und a[i] a[i] = a[k]; //... a[k] = merker; //... i=i+1;} i=0; while (i <= n){ System.out.println(a[i]); i=i+1;} } Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

81 7. Grundkonzepte der Programmierung: Funktionen Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

82 Grundkonzepte der Programmierung Funktionen ( statische Methoden ): - bestimmen aufgrund von Eingabeparametern einen Rückgabewert - werden deklariert durch static Rückgabetyp Funktionsname(formale Parameterdeklaration) { Anweisungsfolge } Bsp.: static int MinSuche(int[] r, int s){ } - werden aufgerufen durch Funktionsname(aktuelle Parameter) Bsp.: k = MinSuche(a,i); - geben den Rückgabewert über eine return-anweisung zurück: return Rückgabewert; Nach Ausführung einer return-anweisung wird die Bearbeitung der Funktion abgebrochen und an der Aufrufstelle fortgefahren. Bsp.: return imerker; Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

83 Grundkonzepte der Programmierung Funktionen ( statische Methoden ): - spezieller Rückgabetyp: leerer Rückgabetyp void Es wird kein Wert zurückgegeben. Bei Rückgabetyp void wird return an der Rücksprungstelle ohne Angabe eines Rückgabewerts aufgerufen. Sichtbarkeitsbereich von Namen: grobe Regel: Ein Name ist in dem Block, in dem er deklariert ist, und in allen Unterblöcken dieses Blocks sichtbar. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

84 Sortieren einer Menge von Zahlen durch Minimumsuche Java-Programm zur Sortierung durch Minimumsuche: public class ProgrammMinSort{ static int MinSuche(int[] r, int s) { // gibt den Index eines Elements von r mit kleinstem // Wert im Bereich ab Index s zurück int wmerker = r[s]; // merkt den kleinsten Wert int imerker = s; // merkt einen Index zum kleinsten Wert int i = s; int n = r.length-1; while (i<n){ i = i+1; if (r[i] < wmerker){ wmerker = r[i]; imerker= i;} } return imerker; } Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

85 Sortieren einer Menge von Zahlen durch Minimumsuche } public static void main(string[] args){ int[]a = {11,7,8,3,15,13,9,19,18,10,4}; int n = a.length-1; int i = 0; int k; // speichert den Minimumsindex while (i < n){ k = MinSuche(a,i); int merker = a[i]; // vertausche a[k] und a[i] a[i] = a[k]; //... a[k] = merker; //... i=i+1;} i=0; while (i <= n){ System.out.println(a[i]); i=i+1;} } Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

86 8. Beispiel: Sortieren einer Menge von Zahlen durch Mischen ( Merge-Sort ) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

87 Sortieren einer Menge von Zahlen durch Mischen Gegeben: a 0, a 1,..., a n Gesucht: Anordnung der Eingabewerte nach steigendem Wert Algorithmus MischSort(a 0, a 1,..., a n ) - Wenn die Menge nur ein Element hat (n=0), dann gib die Menge unverändert zurück. - Sonst zerlege die Menge in zwei Teilmengen, die beide etwa gleich groß sind, und sortiere beide Teilmengen nach diesem Verfahren; - Mische die sortierten Teilmengen und gib das Ergebnis zurück. Beispiel für das Mischen (Verschmelzen) von zwei sortierten Folgen: Rekursion 3, 7, 8, 11, 15 4, 9, 10, 13, 18, 19 3, 4, 7, 8, 9, 10, 11, 13, 15, 18, 19 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

88 Sortieren einer Menge von Zahlen durch Mischen 11, 7, 8, 3, 15, 13, 9, 19, 18, 10, 4 11, 7, 8, 3, 15 13, 9, 19, 18, 10, 4 Auflösung der Rekursion 11, 7, 8 3, 15 13, 9, 19 18, 10, , , , ,8 9, 13 10, 18 7, 8, 11 3, 15 9, 13, 19 4, 10, 18 3, 7, 8, 11, 15 4, 9, 10, 13, 18, 19 3, 4, 7, 8, 9, 10, 11, 13, 15, 18, 19 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

89 Sortieren einer Menge von Zahlen durch Mischen Gegeben: a 0, a 1,..., a n Gesucht: Anordnung der Eingabewerte nach steigendem Wert Algorithmus MischSort(a 0, a 1,..., a n ) - Wenn die Menge nur ein Element hat (n=0), dann gib die Menge unverändert zurück. - Sonst zerlege die Menge in zwei Teilmengen, die beide etwa gleich groß sind, und sortiere beide Teilmengen nach diesem Verfahren; - Mische die sortierten Teilmengen und gib das Ergebnis zurück. Rekursion Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

90 Rekursives Mischen zweier sortierter Folgen Algorithmus Mischen(folge1,folge2) Wenn eine der beiden Folgen leer ist, gib die andere als ergebnisfolge zurück. Sonst führe folgendes aus: Wenn das erste Element f von folge1 kleiner oder gleich dem ersten Element von folge2 ist, dann entferne es aus folge1. Sonst entferne das erste Element f von folge2 aus folge2. Setze ergebnisfolge als einelementige Folge mit dem entfernten Element f. Wende den Algorithmus auf die entstandenen folge1 und folge2 an, wodurch sich eine sortierte Folge ergebnisrestfolge ergibt. Füge ergebnisrestfolge an ergebnisfolge an. Gib ergebnisfolge zurück. Rekursion Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

91 Rekursives Mischen zweier sortierter Folgen Algorithmus Mischen(folge1,folge2) 3, 7, 8, 11, 15 4, 9, 10, 13, 18, , 7, 8, 9, 10, 11, 13, 15, 18, 19 7, 8, 11, 15 4, 9, 10, 13, 18, 19 7, 8, 11, 15 9, 10, 13, 18, , 8, 9, 10, 11, 13, 15, 18, 19 8, 9, 10, 11, 13, 15, 18, 19 8, 11, 15 9, 10, 13, 18, 19 11, 15 9, 10, 13, 18, , 10, 11, 13, 15, 18, 19 10, 11, 13, 15, 18, 19 11, 15 10, 13, 18, 19 11, 15 13, 18, , 18, , 19 18, , 13, 15, 18, , 15, 18, , 18, , 19 18, 19 3, 4, 7, 8, 9, 10, 11, 13, 15, 18, 19 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

92 Iteratives Mischen zweier sortierter Folgen Algorithmus Mischen(folge1,folge2) n := Länge von folge1 plus Länge von folge2; folge := eine leere Folge; Solange die Länge von folge kleiner als n ist, führe aus: Wenn folge1 und folge2 nicht leer ist, dann: Wenn das erste Element f1 von folge1 nicht größer als das erste Element f2 von folge2 ist, dann füge f1 an folge an und entferne f1 aus folge1; sonst füge f2 an folge an und entferne f2 aus folge2; Wenn folge1 leer ist, dann füge folge2 an folge an; Wenn folge2 leer ist, dann füge folge1 an folge an; Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

93 Iteratives Mischen zweier sortierter Folgen Algorithmus Mischen(folge1,folge2) 3, 7, 8, 11, 15 4, 9, 10, 13, 18, 19 7, 8, 11, 15 4, 9, 10, 13, 18, 19 7, 8, 11, 15 9, 10, 13, 18, 19 8, 11, 15 9, 10, 13, 18, 19 11, 15 9, 10, 13, 18, 19 11, 15 10, 13, 18, 19 11, 15 13, 18, , 18, , 19 18, , 4 3, 4, 7 3, 4, 7, 8 3, 4, 7, 8, 9 3, 4, 7, 8, 9, 10 3, 4, 7, 8, 9, 10, 11 3, 4, 7, 8, 9, 10, 11, 13 3, 4, 7, 8, 9, 10, 11, 13, 15 3, 4, 7, 8, 9, 10, 11, 13, 15, 18, 19 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

94 Iteratives Mischen zweier sortierter Folgen Algorithmus Mischen(folge1,folge2) 3, 7, 8, 11, 15 4, 9, 10, 13, 18, , 7, 8, 11, 15 4, 9, 10, 13, 18, 19 3, 4 3, 7, 8, 11, 15 4, 9, 10, 13, 18, 19 3, 4, 7 3, 7, 8, 11, 15 4, 9, 10, 13, 18, 19 3, 4, 7, 8 3, 7, 8, 11, 15 4, 9, 10, 13, 18, 19 3, 4, 7, 8, 9 3, 7, 8, 11, 15 4, 9, 10, 13, 18, 19 3, 4, 7, 8, 9, 10 3, 7, 8, 11, 15 4, 9, 10, 13, 18, 19 3, 4, 7, 8, 9, 10, 11 3, 7, 8, 11, 15 4, 9, 10, 13, 18, 19 3, 4, 7, 8, 9, 10, 11, 13 3, 7, 8, 11, 15 4, 9, 10, 13, 18, 19 3, 4, 7, 8, 9, 10, 11, 13, 15 3, 7, 8, 11, 15 4, 9, 10, 13, 18, 19 3, 4, 7, 8, 9, 10, 11, 13, 15, 18 3, 7, 8, 11, 15 4, 9, 10, 13, 18, 19 3, 4, 7, 8, 9, 10, 11, 13, 15, 18, 19 i1 i2 i Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

95 Iteratives Mischen zweier sortierter Folgen public class ProgrammMischSort{ static int[] mische(int f1[],int f2[]){ int n1=f1.length; int n2=f2.length; int n=n1+n2; int[] f=new int[n]; int i1,i2,i; i=0; i1=0; i2=0; while (i<n){ if (i1<n1 & i2<n2){ // f1 und f2 nicht leer: if (f1[i1]<=f2[i2]){ // erstes Element aus f1 f[i]=f1[i1]; i1=i1+1;i=i+1; // übernehmen } else { // erstes Element aus f2 f[i]=f2[i2]; i2=i2+1;i=i+1; // übernehmen } } Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

96 Iteratives Mischen zweier sortierter Folgen if (i1==n1){ // f1 leer: while (i2<n2){ // f2 anfügen f[i]=f2[i2]; i2=i2+1; i=i+1; } } if (i2==n2){ // f2 leer: while (i1<n1){ // f1 anfügen f[i]=f1[i1]; i1=i1+1; i=i+1; } } } // while (i<n) return f; } // mische Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

97 Sortieren durch Mischen static int[] MischSort(int f[]){ int n = f.length; if (n>1) {int nl=n/2; int nr=n-nl; int hlinks[] = new int[nl]; int i=0; while (i<nl) {hlinks[i]=f[i]; i=i+1;} int flinks[]=mischsort(hlinks); // Rekursion int hrechts[] = new int[nr]; i=0; while (i<nr) {hrechts[i]=f[nl+i]; i=i+1;} int frechts[]=mischsort(hrechts); // Rekursion return mische(flinks,frechts); } else return f; } // MischSort Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

98 Sortieren durch Mischen public static void main(string[] args){ int[]a = {11,7,8,3,15,13,9,19,18,10,4}; int n = a.length; int[]b = MischSort(a); int i = 0; while (i<n) { System.out.println(b[i]); i=i+1; } } // main } // ProgrammMischSort Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

99 9. Prinzip der Rekursion Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

100 Prinzip der Rekursion 1. Zerlege ein großes Problem in kleinere Versionen des Problems und löse diese auf die gleiche Weise. 2. Füge die Lösungen kleinerer Versionen des Problems zu einer Lösung des großen Problems zusammen. 3. Löse kleine Versionen des Problems direkt. Bsp.: Sortieren durch Mischen 1. Zerlege die gegebene Menge von Zahlen in zwei Teilmengen etwa gleicher Größe und sortiere die beiden Teilmengen auf die gleiche Weise. 2. Mische die beiden sortierten Teilfolgen. 3. Falls die gegebene Menge nur ein Element umfaßt, gib die einelementige Folge, bestehend aus diesem Element, zurück. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

101 10. Beispiel: Suchen in einem Datenbestand Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

102 Suchen in einem Datenbestand Verweise, Referenzen, Zeiger: Stuhl Regal Tisch Bett Stuhl Tisch Regal Bett Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

103 Suchen in einem Datenbestand Gegeben: d 0, d 1,..., d n, wobei die d i auf Studierendendatensätze mit folgender Information verweisen: Name, Matrikelnummer, Geburtsjahr Gesucht: Für eine gegebene Matrikelnummer m ein Verweis auf denjenigen Datensatz, der diese Matrikelnummer enthält. Falls es keinen solchen Datensatz gibt, wird ein leerer Verweis zurückgegeben. Ergebnis für m=88633: d 0 d 1 d 2 Thorsten Meier Monika Schmidt Monika Schneider Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

104 Suchen in einem Datenbestand Algorithmus Suche(d 0, d 1,..., d n,m) - Durchlaufe die Elemente der Menge und vergleiche die Komponente Matrikelnummer des Datensatzes des aktuellen Elements mit m. - Wenn beide übereinstimmen, dann gib den Verweis auf das aktuelle Element zurück und breche die Suche ab. - Falls bei keinem Datensatz Gleichheit gefunden wurde, gib einen leeren Verweis zurück. Pseudocode: i := 0; Solange i <= n und d i.gibmatrikelnummer()!= m, führe aus: i := i+1; Wenn i <= n, dann Gib d i zurück; Sonst Gib null zurück. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

105 11. Grundkonzepte der Programmierung: Klassen und Objekte Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

106 Grundkonzepte von Algorithmen Datentyp: Menge von Daten gleicher Art Bsp.: ganze Zahlen, reelle Zahlen, Wahrheitswerte, Zeichenketten, Studierendendaten Zusammengesetzter Datentyp oder Klasse: ist aus Datenkomponenten zusammengesetzt und bietet Operationen zur Manipulation der Datenkomponenten an. Bsp.: Studierendendaten Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

107 Grundkonzepte von Algorithmen Bsp.: Studierendendaten d 0 Komponenten ( Attribute ): Studname (Typ Zeichenkette), Matrikelnummer (Typ ganze Zahl), Geburtsjahr (Typ ganze Zahl) Thorsten Meier Operationen ( Methoden ): gibstudname(), setzestudname(name), gibmatrikelnummer, setztematrikelnummer(nummer), gibgeburtsjahr(), setzegeburtsjahr(jahr), gibalter() Ein konkreter Datensatz einer Klasse wird auch als Objekt oder Instanziierung einer Klasse bezeichnet. Bsp.: d 0.gibStudname() liefert Thorsten Meier. d 0.setzeMatrikelnummer(20002) liefert d 0.gibAlter() liefert 21. d 0 Thosten Meier Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

108 Suchen in einem Datenbestand Deklaration einer Java-Klasse Studierendendaten : class Studierendendaten { String studname; int matrikelnummer; int geburtsjahr; String gibstudname() { return studname; } void setzestudname( String name) { studname = name; } int gibmatrikelnummer() { return matrikelnummer; } } void setzematrikelnummer( int nummer) { matrikelnummer = nummer; } int gibgeburtsjahr() { return geburtsjahr; } void setzegeburtsjahr(int jahr) { geburtsjahr = jahr; } int gibalter() { return 2001-geburtsjahr; } Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

109 Grundkonzepte der Programmierung Deklaration von Klassen in Java: - besteht aus der Angabe eines Klassennamens, von Attributen, von Methoden und von Konstruktoren. Syntax: class Klassenname { Attributdeklaration Konstruktordeklaration Methodendeklaration } Attribute werden wie Variablen deklariert. Methoden werden wie Funktionen deklariert. - bilden zusammen ein Java-Programm, d.h. ein Java-Programm besteht aus einer Menge von Klassen. In einer Klasse muß die Methode main deklariert sein. Mit dieser Methode startet das Gesamtprogramm. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

110 Grundkonzepte der Programmierung Deklaration von Klassen in Java: - Konstruktor: Ein Programmstück, das ausgeführt wird, wenn ein Objekt des Typs der Klasse instanziiert wird. Syntax: Klassenname(formale Parameterdeklaration){ Anweisungsfolge } Falls kein Konstruktor deklariert wird, wird ein vordefinierter ( Default -) Konstruktor ohne Parameter (Klassenname()) verwendet. Bsp.: ein expliziter Konstruktor für die Klasse Studierendendaten: Studierendendaten(String name, int nummer, int jahr) { studname = name; matrikelnummer = nummer; geburtsjahr = jahr; } Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

111 Suchen in einem Datenbestand public class Suchprogramm { static Studierendendaten Suche( Studierendendaten d[],int m) { int i=0; int n = d.length; while ((i<n) && (d[i].gibmatrikelnummer()!=m)) i=i+1; if (i<n) return d[i]; else return null; } i := 0; Solange i < =n und d i.gibmatrikelnummer()!= m, führe aus: i := i+1; Wenn i <= n, dann Gib d i zurück; Sonst Gib null zurück. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

112 Suchen in einem Datenbestand } public static void main(string[] args) { Studierendendaten testd[] = new Studierendendaten[3]; testd[0] = new Studierendendaten( Thorsten Meier,88188,1980); testd[1] = new Studierendendaten( Monika Schmidt,88633,1981); testd[2] = new Studierendendaten( Monika Schneider,88755,1980); int m = 88633; boolean gefunden = (Suche(testd,m)!=null); if (gefunden) System.out.println(m+ gefunden ); // hier wird der Wert von m in eine Zeichenfolge gewandelt // und mit der Zeichenfolge gefunden verkettet. else System.out.println(m+ nicht gefunden ); } Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

113 Grundkonzepte der Programmierung Deklaration von Java-Objektvariablen: - wie für Variablen einfachen Datentyps Bsp.: Studierendendaten a; Studierendendaten d[]; - Wirkung einer Deklaration: Es wird eine Variable abgelegt, die einen Verweis (Referenz, Zeiger) auf ein Objekt aufnehmen kann. Der Verweis wird auf den leeren Verweis null gesetzt. Bsp: Studierendendaten a; a null Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

114 Grundkonzepte der Programmierung Instanziierung von Java-Objekten: - erzeugt ein Objekt und gibt den Verweis (Referenz, Zeiger) auf dieses zurück. Syntax: new Klassenname(aktuelle Parameter); Bsp.: new Studierendendaten( Thorsten Meier,88188,1980); Thorsten Meier Der Verweis ist durch den Pfeil angedeutet. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

115 Grundkonzepte der Programmierung Wertzuweisung an Objektvariable: - wie für Variable einfachen Datentyps. - Wirkung einer Wertzuweisung: Der Verweis auf der rechten Seite der Wertzuweisung = wird in die Variable der linken Seite übernommen. Bsp.: Studierendendaten a = new Studierendendaten( Thorsten Meier,88188,1980); Studierendendaten b; b = a; a b Thorsten Meier Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

116 Grundkonzepte der Programmierung zum Vergleich: Wertzuweisung an Variable einfachen Typs (z.b. ganze Zahlen, Gleitkommazahlen, Wahrheitswerte (Boolean)): Bsp.: int a = 5; int b = a; a 5 b 5 Beispiele für Klassen, die bereits Bestandteil der Sprache Java sind: Array, Zeichenfolgen (String) Bsp.: Studierendendaten testd[] = new Studierendendaten[3]; testd Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

117 12. Beispiel: Suchen in einer verzeigerten linearen Liste Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

118 Suchen in einer verzeigerten linearen Liste Die gleiche Aufgabe wie bei Suchen in einem Datenstand, mit dem Unterschied, daß die Daten nun nicht in einem Array gegeben sind, sondern in einer verzeigerten linearen Liste. Array: d Thorsten Meier verzeigerte lineare Liste: dliste Monika Schmidt Monika Schneider null Thorsten Meier Monika Schmidt Monika Schneider Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

119 Suchen in einer verzeigerten linearen Liste Deklaration eines Datenttyps Liste dieser Art: wert naechstes class Liste{ Studierendendaten wert; Liste naechstes; void setzewert(studierendendaten einwert) { wert = einwert;} Thorsten Meier Liste gibnaechstes() { return naechstes;} } void setzenaechstes(liste einnaechstes) { naechstes = einnaechstes;} Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

120 Suchen in einer verzeigerten linearen Liste Anweisungen zum Anlegen einer Liste: Liste dliste = new Liste(); dliste null null Studierendendaten a = new Studierendendaten( Thorsten Meier,88188,1980); a Thorsten Meier Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

121 Suchen in einer verzeigerten linearen Liste Anweisungen zum Anlegen einer Liste: Liste dliste = new Liste(); dliste null null Studierendendaten a = new Studierendendaten( Thorsten Meier,88188,1980); dliste.setzewert(a); a dliste Thorsten Meier null Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

122 Suchen in einer verzeigerten linearen Liste Anweisungen zum Anlegen einer Liste: Bsp.: Liste aktuell = dliste; aktuell.setzenaechstes(new Liste()); aktuell = aktuell.gibnaechstes(); aktuell dliste Thorsten Meier null a = new Studierendendaten( Monika Schmidt,88633,1981); aktuell.setzewert(a); dliste aktuell a Thorsten Meier Monika Schmidt Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

123 Suchen in einer verzeigerten linearen Liste Anweisungen zum Anlegen einer Liste: aktuell.setzenaechstes(new Liste()); aktuell = aktuell.gibnaechstes(); a = new Studierendendaten( Monika Schneider,88755,1980); aktuell.setzewert(a); dliste aktuell a Thorsten Meier Monika Schmidt Monika Schneider Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

124 Die Java-Programmierumgebungen Windows: NetBeans IDE V3.5 Unix: Emacs Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

125 Java-Programmierung mit NetBeans Installation Entwicklungsumgebung starten Erstellen eines ersten Programms: HelloWorld Compilieren und Ausführen Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

126 Vorbereitung Installation von Java und NetBeans Programme von der Vorkurs-CD installieren Windows oder Linux Java installieren: JDK_1.4.2 (Sun) NetBeans IDE V3.5 (bzw. Sun ONE Studio 4 oder Forte) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

127 NetBeans - Programmstart 1. Windows Starten des Programms (Doppelklick) über das Icon NetBeans IDE 3.5 von der Windowsarbeitsfläche 2. Linux In einem geöffneten Shell (=Eingabeaufforderung) starten Sie NetBeans über runide. Die folgenden Screenshots stammen von einer Windows-Umgebung, deshalb kann es geringfügige Unterschiede im Erscheinungsbild unter Linux geben. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

128 NetBeans Ansicht nach Programmstart Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

129 HelloWorld Schritt 1: Neues Projekt anlegen Anlegen eines neuen Projektes: Project >> Project Manager Neues Projekt Projekt öffnen Neues Projekt erstellen: New Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

130 HelloWorld Schritt 2: Projektname bestimmen Name für das neue Projekt vergeben: HelloWorld Requester mit OK verlassen Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

131 HelloWorld Schritt 3: Projektverzeichnis festlegen Verzeichnis auswählen: File >> New Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

132 HelloWorld Schritt 4: Quelldatei erzeugen Neue Datei ergänzen: File >> New Java-Klassentyp auswählen: Classes -> Empty Abfragedialog mit Next beenden Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

133 HelloWorld Schritt 5: Klassenname festlegen Name der Klasse eingeben: HelloWorld Abfragedialog mit Finish beenden Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

134 HelloWorld Schritt 6: Quellcode eingeben Eingeben des Java-Quellcodes: Das berühmte HelloWorld-Programm Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

135 HelloWorld Schritt 7: Speichern und Compilieren Über die rechte Maustaste PullDown-Menü öffnen Mit linker Maustaste Save auswählen Quellcode übersetzen (Compile) Programm ausführen (Execute) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

136 HelloWorld Schritt 8: Programm ausführen Compiliertes Programm mit Execute starten Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

137 Einführung in die Unix-Systemumgebung Ausstattung Benutzerumgebung Das erste Java-Programm Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

138 Ausstattung SunRays keine Workstations wie z.b. PC s, sondern Terminals, über Ethernet mit PC- Servern verbunden realisieren nur Bildschirmausgabe und Eingabeinteraktionen Geschossbau IV im Raum 006, Sun- Rays (carne[01..12, 21 44]) Einschalten bedeutet hier Einloggen Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

139 Einloggen: Erste Anmeldung an das Unix-System Die Anmeldungsmaske 1.) Linke Maustaste auf das Feld Options 2.) Remote Login- >Choose host from list 3.) Rechner auswählen: carne[01..12, 21-44] 4.) Eingabe von Benutzername und Passwort 5.) Nach der Anmeldung: ändern des Passworts (passwd) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

140 Java-Programmierung unter Unix Der Editor emacs als Entwicklungstool: 1.) Emacs starten mit: emacs & Im geöffneten Editor Programm- Code eingeben: class HelloWorld { public static void main(string argv[]) { System.out.println("Hello World."); } } Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

141 Java-Programmierung unter Unix Der Editor emacs als Entwicklungstool: 2.) Programm speichern: Pulldown-Menüs mit rechter Maustaste anwählen Files -> Save Buffer In unterer Statuszeile Name eingeben: HelloWorld.java 3.) Programm compilieren (=übersetzen): Über Menü JDE-->Compile Vorgang starten Meldung Compilation finished sollte erscheinen 4.) Programm starten: Menü: JDE-->RunApp Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

142 Marvin-Account Rechnerzugang (marvin) für alle Studierende des FBI 1. Reservieren eines Account Einloggen unter marvin an Marvin-Pool-Rechner (Campus Süd, Pav. 6) Matrikelnummer, Vor- und Nachname eingeben und mit J bestätigen Gewünschtes Passwort eingeben Accountname und Mailadresse werden berechnet <vorname>.<nachname>@marvin.cs.uni-dortmund.de Bitte Passwort und Accountnamen merken 2. Freischalten des Account Beim Operating der IRB (Campus Süd, GB V, R 311) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

143 Links zu Java und Unix ww.cs.uni- dortmund.de/anleitungen Anleitungen zu Unix und CDE Informationen zu Java Homepage der deutschen Java User Group Informationen zum Editor emacs Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

144 13. Mehr zur objektorientierten Programmierung Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

145 Vom Problem über den Systementwurf zum Programm reale Welt Abstraktion Problem Problemanalyse funktionale Spezifikation Algorithmenentwurf abstrakte Objekte Systementwurf Algorithmus Darstellung in formalisierter Sprache Darstellung für Ausführung durch Rechner Informationsver- Programm arbeitendes System Realisierung Umsetzung in Elementarschritte einer Maschine Rechner Maschine Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

146 Objektorientierter Entwurf - Modellierung von Systemen durch miteinander interagierende Objekte Bsp.: Videorekorder Benutzungsschnittstelle Tasten für play, stop, fwd, rwd, rec, eject Sensor am Kassettenschacht Systemsteuerung Operationen: Kassette einlegen lassen Band um LS-Kopf wickeln nach rechts laufen nach rechts abspulen nach links abspulen Schreibkopf aktivieren Lesekopf aktivieren Band entwickeln Kassette auswerfen Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

147 Objektorientierter Entwurf Videorekorder-Software Objekt Eingabeverarbeitung Tastendruck aktiviert passende Interpretationsmethode von Eingabeverarbeitung Bsp.: Methode play Objekt Laufwerksteuerung Interpretationsmethode führt eine Sequenz von Steuermethoden von Laufwerksteuerung Bsp.: Methoden lauferechts aktivierelesen Steuermethode aktiviert Laufwerk über Signalleitungen und bekommt Rückmeldung über den Zustand Vorteil des objektorientierten Entwurfs: direkte Zuordnung von realen Funktionseinheiten zu Programmteilen (Objekten) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

148 Konzepte der objektorientierten Programmierung - Objekt = Attribute + Methoden - Verdeckung von Implementierungsdetails durch Spezifikation der Sichtbarkeit: public, protected, private - Vererbung: Deklaration von Unterklassen, die sich durch Hinzunahme weiterer Attribute und Methoden zu einer Klasse ergeben. Bsp.: Videorecorder: Laufwerksteuerung_mit_Fastplay Unterklasse von Laufwerksteuerung - Polymorphismus durch Überladung: Methoden können den gleichen Namen haben, aber etwas unterschiedliches tun. Bsp.: Addition von ganzen Zahlen, Addition von reellen Zahlen, Addition von komplexen Zahlen. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

149 14. Andere Programmierstile Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

150 Programmierstile Imperative Programmierung Programm = eine Folge von Befehlen Bsp.: Fortran, Basic, Pascal, C funktionale Programmierung Programm = eine Schachtelung von Funktionsaufrufen Bsp.: LISP Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

151 Programmierstile logische Programmierung Programm = eine Menge von wenn-dann-regeln. Der dann-teil einer Regel wird ausgeführt, wenn der wenn-teil erfüllt ist. Der dann-teil enthält Aktionen, die dazu führen können, daß andere weitere Regeln ausgeführt werden können. Die Reihenfolge der Regelausführung ist nicht festgelegt. Bsp.: Prolog objektorientierte Programmierung Programm = eine Menge von interagierenden Objekten Bsp.: Smalltalk, C++, Java Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

152 Teil III. Algorithmen und Datenstrukturen Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

153 Inhalt 1. Asymptotische Aufwandsanalyse 2. Sortieren 3. Suchen Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

154 1. Asymptotische Aufwandsanalyse Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

155 Zeitaufwandsanalyse - durch Abschätzen der Anzahl der ausgeführten Elementaroperationen (E) Bsp: Minimum Min(a 0, a 1,..., a n ) einer Menge von Zahlen Algorithmus Zeitaufwand Anzahl Durchläufe merker := a 0 ; i := 0; Solange i < n ist, führe aus: {i := i+1; Wenn a i <merker, dann merker := a i ;} Gib merker zurück; 1 E 1 1 E 1 1 E n+1 1 E n 1 E n 1 E min. 0, max. n 1 E 1 günstigster Fall: T min (n) = 3n + 4 ungünstigster Fall: T max (n)=4n + 4 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

156 Zeitaufwandsanalyse - Aufwandsmaße allgemein: Sei E die Menge aller Eingaben des Algorithmus, E n :={e in E die Größe von e ist n}, wobei die Größe einer Eingabe e aus E die Anzahl elementarer Datenelemente von e ist, A(e) der Aufwand des Algorithmus bei der Eingabe e. Dann ist A max (n):= max { A(e) e in E n } der maximale Aufwand A min (n):= min { A(e) e in E n } der minimale Aufwand. Speziell für den Zeitaufwand: A := T für den Speicheraufwand: A := S Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

157 Zeitaufwandsanalyse - asymptotische Aufwandsanalyse Beobachtung: die Elementaroperationen haben unterschiedliche Ausführungszeiten, d.h. das genaue Zählen lohnt sich nicht. Vorgehensweise für die Abschätzung des schlechtesten Falls: - Angabe einer oberen Zeitschranke, d.h. einer Funktion, die für jedes Argument größer oder gleich dem korrekten Wert ist. - Beschränkung der Angabe auf die Größenordnung, d.h. Unabhängig von den konkreten Konstanten. Bsp: T max (n) = 4n + 4 hat die Größenordnung n, oder: T max (n) = 4n + 4 wächst mit der Ordnung n. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

158 Zeitaufwandsanalyse - asymptotische Aufwandsanalyse groß-oh-notation : c 0 g f Seien f: IN->IR, g: IN->IR zwei Funktionen. f wächst mit der Ordnung g ( f ist von der Größenordnung g), Schreibweise f=o(g), wenn gilt: Es gibt ein n 0 in IN und ein dazu passendes c 0 > 0, c 0 in IR, so daß f(n) < c 0 * g(n) für alle n > n 0. Bsp.: Für T max (n) = 4n+4 gilt: T max (n) = O(n), da T max (n) < 5n für n > 4 T max (n) = O(n 2 ), da T max (n) < n 2 für n > 4 T max (n) nicht O( n) T max (n) nicht O(1) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/ n 0

159 Speicheraufwandsanalyse - durch Abschätzen der Anzahl der während der Algorithmusausführung belegten Elementardateneinheiten (e) Bsp: Minimum Min(a 0, a 1,..., a n ) einer Menge von Zahlen Algorithmus: merker := a 0 ; i := 0; Solange i < n ist, führe aus: {i := i+1; Wenn a i <merker, dann merker := a i ;} Gib merker zurück; Speicherbedarf: a 0, a 1,..., a n merker, i, n: S max (n) = S min (n) = n + 4, d.h. S max (n) = S min (n) = O(n) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

160 2. Sortieren Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

161 Sortieren einer Menge von Zahlen Gegeben: a 0, a 1,..., a n Gesucht: Anordnung der Eingabewerte nach steigendem Wert Bedeutung: Sortieren großer Datenbestände ist eine der Hauptaufgaben kommerziell eingesetzter Rechnersysteme im folgenden: Analyse des Zeitaufwands der Verfahren Sortieren durch Minimumsuche und Sortieren durch Mischen Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

162 Sortieren durch Minimumsuche Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

163 Sortieren einer Menge von Zahlen durch Minimumsuche Algorithmus MinSort(a 0,a 1,..., a n ) Zeitaufwand Anzahl Durchläufe restfolge := gegebenefolge; Solange restfolge nicht leer, führe aus: {a k := MinSuche(restfolge); FügeAn(a k, ergebnisfolge); Enferne(a k, restfolge);} gib ergebnisfolge zurück; O(n) 1 O(1) n + 2 O(n) n + 1 O(1) n + 1 O(1) n + 1 O(n) 1 Maximaler Zeitaufwand: T max (n)= (n+1) * O(n) + (3n+4) * O(1) + 2*O(n) = O(n 2 ) Annahme: 1 Nanosekunde = 10-9 Sekunden pro Elementaroperation, n 2 Elementaroperationen dann: Sortieren von =10 5 Werten benötigt 10 Sekunden Sortieren von =10 6 Werten benötigt Sekunden Sortieren von =5*10 6 Werten benötigt Sekunden, d.h. fast 7 Stunden Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

164 Sortieren einer Menge von Zahlen durch Minimumsuche Mit Hilfsmengen: restfolge := gegebenefolge; Solange restfolge nicht leer, führe aus: {a k := MinSuche(restfolge); FügeAn(a k, ergebnisfolge); Enferne(a k, restfolge);} gib ergebnisfolge zurück; Speicheraufwand beim i-ten Durchlauf: gegebenefolge restfolge ergebnisfolge a k (n+1) E (n+1-i) E i E 1 E MinSuche,FügeAn, Entferne c E Ohne Hilfsmengen: Die Datenstruktur gegebenefolge wird schrittweise so verändert, daß sie am Ende das Ergebnis enthält. Dies benötigt (n+d) E, wobei d eine von n unabhängige Konstante ist. Summe: (2n+3+c) E Hier kann eine nichtasymptotische Betrachtung praktisch relevant sein. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

165 Sortieren durch Mischen Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

166 Iteratives Mischen zweier sortierter Folgen Algorithmus Mischen(folge1,folge2) n1 n2 n=n1+n2 n := Länge von folge1 plus Länge von folge2; folge := eine leere Folge; Solange die Länge von folge kleiner als n ist, führe aus: Wenn folge1 und folge2 nicht leer ist, dann: Wenn das erste Element f1 von folge1 nicht größer als das erste Element f2 von folge2 ist, dann füge f1 an folge an und entferne f1 aus folge1; sonst füge f2 an folge an und entferne f2 aus folge2; Wenn folge1 leer ist, dann füge folge2 an folge an; Wenn folge2 leer ist, dann füge folge1 an folge an; O(1) O(1) O(1) O(1) O(1) O(1) O(n) min{n1,n2} - mal O(n) (n - min{n1,n2}) - mal O(n) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

167 Sortieren einer Menge von Zahlen durch Mischen Algorithmus MischSort(a 0,a 1,..., a n ) Wenn die Menge nur ein Element hat (n = 0), dann gib die Menge unverändert zurück. T(n) c 0 Sonst zerlege die Menge in zwei Teilmengen, die beide etwa gleich groß sind, und sortiere beide Teilmengen nach diesem Verfahren; Mische die sortierten Teilmengen und gib das Ergebnis zurück. T(n/2)+T(n/2) O(n) Zeitaufwand: T(0) = c 0, T(n) = T(n/2)+T(n/2)+O(n) für n > 0. Behauptung: T(n) = O(n log n) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

168 Sortieren einer Menge von Zahlen durch Mischen Algorithmus MischSort(a 0,a 1,..., a n ) Zeitaufwand: T(0) = c 0, T(n) = T(n/2)+T(n/2)+O(n) für n>0. T(n/2) = T(n/4)+T(n/4)+O(n/2) c n c n c n/2 c n/2 c n/4 c n/4 c n/4 c n/4 c n/8 c n/8 c n/8 c n/8 c n/8 c n/8 c n/8 c n/ c n +c n +c n... i Stufen, wobei i minimal mit n/2 i < 1, d.h. log n < i =c n (log n +1)) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

169 Sortieren einer Menge von Zahlen durch Mischen Algorithmus MischSort(a 0,a 1,..., a n ) Zeitaufwand: T(0) = c 0, T(n) = T(n/2)+T(n/2)+O(n) für n>0. c n T(n/2) = T(n/4)+T(n/4)+O(n/2) c n c n/2 c n/2 c n/4 c n/4 c n/4 c n/4 c n/8 c n/8 c n/8 c n/8 c n/8 c n/8 c n/8 c n/ c n +c n +c n... i Stufen, wobei i minimal mit n/2 i < 1, d.h. log n < i =c n (log n +1)) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

170 Sortieren einer Menge von Zahlen durch Mischen Algorithmus MischSort(a 0,a 1,..., a n ) Zeitaufwand: T(0) = c 0, T(n) = T(n/2)+T(n/2)+O(n) für n>0. T(n/2) = T(n/4)+T(n/4)+O(n/2) c n c n T(n/4) = T(n/8)+T(n/8)+O(n/4) c n/2 c n/2 +c n T(n/8) = T(n/16)+T(n/16)+O(n/8) c n/4 c n/4 c n/4 c n/4 c n/8 c n/8 c n/8 c n/8 c n/8 c n/8 c n/8 c n/ c n +c n... i Stufen, wobei i minimal mit n/2 i < 1, d.h. log n < i =c n (log n +1)) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

171 Sortieren einer Menge von Zahlen durch Mischen Algorithmus MischSort(a 0,a 1,..., a n ) Zeitaufwand: T(n) = T(n/2)+T(n/2)+O(n) für n>0. Behauptung: T(n) = O(n log n), wobei log den Logarithmus zur Basis 2 bezeichnet. Beweis: induktiv über n. Exkurs: Vollständige Induktion Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

172 Beweisprinzip der vollständigen Induktion Zu beweisen: Die Behauptung B(n) ist für alle natürlichen Zahlen n k richtig. Beweis: Induktionsanfang: (n=k) Es wird bewiesen, daß die Behauptung B(k) richtig ist, d.h. B(n) gilt für n=k. Induktionsschritt: Es wird bewiesen, daß unter der Annahme, daß die Behauptungen B(n-1), B(n-2),..., B(k) richtig sind, auch die Behauptung B(n) richtig ist. Warum reicht das? B(k) Induktionsschritt mit n=k+1 B(k), B(k+1) Induktionsschritt mit n=k+2 B(k), B(k+1), B(k+2)... Induktionsanfang Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

173 Beweisprinzip der vollständigen Induktion Bsp: Behauptung: Die Summe S(n) der Zahlen von 1 bis n, n 1, ist gleich n(n+1)/2. B(n): S(n)=n(n+1)/2 Beweis: Induktionsanfang: (n=1) Es ist zu beweisen, daß S(1)=1(1+1)/2 richtig ist. Dies stimmt offensichtlich. Induktionsschritt: Es wird bewiesen, daß unter der Annahme, daß S(n-1)=(n-1)n/2, S(n-2)=(n-2)(n-1)/2,..., S(1)=1(1+1)/2 richtig sind, auch S(n)=n(n+1)/2 richtig ist. Das folgt aus S(n) = S(n-1)+n=(n-1)n/2+n = (n+1)n/2=n(n+1)/2 Induktionsannahme Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

174 Beweisprinzip der vollständigen Induktion Bsp: Behauptung: Die Summe S(n) der Quadratzahlen von 1 bis n, n 1, ist gleich n(n+1)(2n+1)/6. B(n): S(n)=n(n+1)(2n+1)/6 Beweis: Induktionsanfang: (n=1) Es ist zu beweisen, daß S(1)=1(1+1)(2+1)/6=1 richtig ist. Dies stimmt offensichtlich. Induktionsschritt: Es wird bewiesen, daß unter der Annahme, daß S(n-1)=(n-1)n(2n-1)/6, S(n-2)=(n-2)(n-1)(2n-3)/6,... richtig sind, auch S(n)=n(n+1)(2n+1)/6 richtig ist. Das folgt aus 2 2 S(n) = S(n-1)+n =(n-1)n (2n-1)/6+n = n(n+1)(2n+1)/6 Induktionsannahme Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

175 Sortieren einer Menge von Zahlen durch Mischen Algorithmus MischSort(a 0,a 1,..., a n ) Zeitaufwand: T(n) = T(n/2)+T(n/2)+O(n) für n>0. Behauptung: T(n) = O(n log n), wobei log den Logarithmus zur Basis 2 bezeichnet. Beweis: induktiv über n. Es wird gezeigt, daß es eine Konstante c>0 gibt, so daß T(n) < c n(1+log n) für n>0. Induktionsanfang: Nachweis für n=1. Sei c 1 eine obere Schranke für den Zeitbedarf für Eingaben mit n=1. Dann gilt T(1)= c 1 < c 1 (1+log 1) für alle c> c 1. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

176 Sortieren einer Menge von Zahlen durch Mischen Algorithmus MischSort(a 0,a 1,..., a n ) Induktionsschritt: Nachweis für n>1 unter der Annahme, daß die Aussage für n-1, n-2,...,0 gilt. Aufgrund der Induktionsannahme gilt T(n/2) < c n/2 (1+log (n/2)). Mit T(n) = T(n/2)+T(n/2)+O(n) für n>1 folgt damit T(n) < T(n/2)+T(n/2)+ c 2 n < c n/2 (1+log n/2) + c n/2 (1+ log n/2) + c 2 n Induktionsannahme < c n (1+log (n) -1) + c 2 n < c n (1+log n), Umformung falls c > c 2 Mit c>max{c 1, c 2 } gilt die Behauptung. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

177 Sortieren einer Menge von Zahlen Einige Bemerkungen zum Sortierproblem: - Es kann bewiesen werden, daß jeder Sortieralgorithmus, der nur Vergleiche und Speicherzugriffe verwendet, asymptotisch mindestens c n log n Operationen, c eine Konstante, benötigt. Damit ist Sortieren durch Mischen optimal, wenn es geeignet implementiert wird. - Es gibt zahlreiche andere Sortierverfahren mit Zeitaufwand O(n log n). - Ein schnelles Verfahren ist Quicksort. Quicksort hat einen Zeitaufwand von O(n 2 ) im schlechtesten Fall, im Mittel jedoch von O(n log n). Annahme: 1 Nanosekunde = 10-9 Sekunden pro Elementaroperation n n 2 n log n = Sek. < 2*10-3 Sek = Sek. < 24*10-3 Sek =5* Sek. < 24*10-3 Sek. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

178 3. Suchen Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

179 Operationen auf Mengen Gegeben: Eine Menge S= {s 0, s 1,..., s n } von Zahlen. Operation Suchen : Gesucht: Die Antwort ja, falls eine gegebene Zahl s in S enthalten ist, sonst nein. Operation Einfügen : Gesucht: Für eine gegebene Zahl s, die Erweiterung der Menge S um s Operation Entfernen : Gesucht: Für eine gegebene Zahl s, die um s reduzierte Menge S, falls s in S, sonst bleibt S unverändert. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

180 Operationen auf Mengen im folgenden: Lösungen mit - unsortiertem Array - sortiertem Array - ausgeglichenem binärem Suchbaum - Hashing Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

181 Lösung mit unsortiertem Array Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

182 Lösung mit unsortiertem Array Datenstruktur: Index i: Daten S[i]: Variable füllstand: 11 enthält den Index des ersten nicht zur Menge S gehörigen Array-Elements Algorithmus Suche(s) i:=0; solange i < füllstand und nicht S[i] = s, führe aus i := i + 1; wenn i<füllstand, dann gib ja zurück sonst nein Zeitaufwand: T(n)=O(n), wobei n die Größe der Menge (=füllstand) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

183 Lösung mit unsortiertem Array Datenstruktur: Index i: Daten S[i]: Variable füllstand: 11 Algorithmus Fügeein(s) wenn füllstand < Länge von S[ ], dann {S[füllstand] := s; füllstand := füllstand+1;} sonst gib Überlauf zurück; Zeitaufwand: T(n)=O(1), wobei n die Größe der Menge (=füllstand) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

184 Lösung mit unsortiertem Array Datenstruktur: Index i: Daten s[i]: Variable füllstand: 11 Algorithmus Entferne(s) i := 0; // suche s solange i<füllstand und nicht s[i]=s, führe aus i := i + 1; wenn i<füllstand, dann // entferne s { s[i]:=s[füllstand-1]; füllstand:=füllstand-1; } Zeitaufwand: T(n)=O(n), wobei n die Größe der Menge (=füllstand) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

185 Lösung mit sortiertem Array Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

186 Lösung mit sortiertem Array Datenstruktur: Index i: Daten S[i]: Variable füllstand: 11 Algorithmus Suche(s,l,r) binäre Suche: Bsp.: s=13 Suche im Intervall [0,10]: s > S[(0+10) div 2] = S[5] -> Suche im Intervall [6,10]: s nicht > S[(6+10) div 2]=S[8]-> Suche im Intervall [6,8]: s nicht > S[(6+8) div 2]=S[7]-> Suche im Intervall [6,7]: s > S[(6+7) div 2] = S[6]-> Suche im Intervall [7,7]: gefunden Zeitaufwand: T(n) = T(n/2)+O(1) für n>0 -> T(n) = O(log n), Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

187 Lösung mit sortiertem Array l m r Algorithmus Suche(s,l,r) // binäre Suche wenn r < l, dann gib nein zurück; sonst wenn l = r und S[l] = s, dann gib ja zurück, sonst nein ; m:= (l+r) div 2; // ganzzahlige Division Wenn S[m] < s, dann wenn Suche(s,m+1,r) = ja, dann gib ja zurück; sonst gib nein zurück; sonst wenn Suche(s,l,m) = ja, dann gib ja zurück; sonst gib nein zurück; T(n) O(1) O(1) T(n/2) O(1) T(n/2) O(1) T(n) = T(n/2)+O(1) für n>0 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

188 Lösung mit sortiertem Array Zeitaufwand: T(n) = T(n/2)+O(1) für n>0, n die Mächtigkeit der Menge S. Behauptung: T(n)=O(log n) Beweis: induktiv über n. Es wird gezeigt, daß es eine Konstante c>0, so daß T(n) < c(1+ log n) für n>1. Induktionsanfang: n=1 Sei c 1 eine obere Schranke für die Rechenzeit von Eingaben mit n=1. Dann gilt T(1)= c 1 < c(1+ log 1) für c> c 1. Induktionsschritt: Nachweis, daß die Behauptung für n>1 unter der Annahme gilt, daß sie für n-1,n-2,...,1 richtig ist. Es gilt: T(n)<T(n/2)+ c 2 < c (1+log n/2)+ c 2 < c (1+log n), wobei c 2 eine Konstante für O(1) und falls c> c 2 gilt. Mit c>max{c 1, c 2 } gilt die Behauptung. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

189 Lösung mit sortiertem Array Datenstruktur: Index i: Daten S[i]: Variable füllstand: 11 Algorithmus Fügeein(s) Wenn füllstand gleich der Array-Länge (im Bsp. 15) ist, gib Überlauf zurück. Sonst durchlaufe das Array aufsteigend bis zu ersten Index i, für den S[i+1] nicht kleiner s ist. Wenn S[i+1] nicht gleich s, dann verschiebe die Array-Elemente von i+1 bis füllstand um 1 nach rechts und setzte S[i+1] auf s. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

190 Lösung mit sortiertem Array Algorithmus Entferne(s) wenn füllstand>0, dann i := 0; // suche s solange i<füllstand und nicht s =S[i], führe aus i := i+1; wenn nicht i=füllstand, dann { j:=i; // verschiebe den Rest solange j<füllstand-1, führe aus { S[j] := S[j+1]; j:=j+1;} füllstand := füllstand-1;} Zeitaufwand: T(n) = O(n), wobei n=füllstand Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

191 Lösung mit ausgeglichenem binärem Suchbaum Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

192 Lösung mit ausgeglichenem binärem Suchbaum Datenstruktur: Bsp.: Suche(11) :10 ->15 ->13 ->11 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

193 Lösung mit ausgeglichenem binärem Suchbaum Definitionen gerichteter Graph: eine Struktur aus Knoten und Kanten. Eine Kante e wird durch ein Paar (p,q) von Knoten definiert, d.h. e=(p,q). Schreibweise: G=(V,E), wobei G der Graph V eine endliche Menge von Knoten E eine Teilmenge von VxV. Bsp.: G=(V,E) mit V={1,2,3,4}, E={(1,2),(2,2),(1,3),(3,4),(4,3)} zusammenhängender Graph: zu je zwei Knoten gibt es eine Folge von Knoten, in der je zwei aufeinanderfolgende Knoten durch eine Kante verbunden sind. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

194 Lösung mit ausgeglichenem binärem Suchbaum binärer Baum: ein zusammenhängender gerichteter Graph B, der eine der folgenden Eigenschaften hat: 1. B hat nur einen Knoten. 2. Falls B mehr als einen Knoten hat, gibt es einen Knoten w, die sogenannte Wurzel, der nur auswärts gerichtete Kanten hat. Wird w inklusive seiner Kanten weggenommen, so entstehen genau zwei zusammenhängende Graphen, die 1. oder 2. erfüllen. Die Endknoten der weggenommen Kanten sind Wurzeln in den entstehenden Graphen. w Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

195 Lösung mit ausgeglichenem binärem Suchbaum Bsp: Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

196 Lösung mit ausgeglichenem binärem Suchbaum Schlußfolgerung: Jeder Knoten in einem binären Baum ist Wurzel eines binären Baums, der von allen Knoten induziert wird, die direkter oder indirekter Nachfolger des Knotens längs einer gerichteten Folge von Kanten (einem Pfad) sind. Blatt eines binären Baums: ein Knoten ohne Auswärtskanten innerer Knoten eines binären Baums: ein Knoten, der nicht Blatt ist. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

197 Lösung mit ausgeglichenem binärem Suchbaum ausgeglichener binärer Baum zu einer endlichen Menge S von Zahlen (eine mögliche Definition): ein binärer Baum, bei dem für jeden inneren Knoten gilt, daß die beiden Teilbäume, die von seinen Nachfolgern gebildet werden, etwa gleich viele Knoten enthalten Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

198 Lösung mit ausgeglichenem binärem Suchbaum binärer Suchbaum zu einer endlichen Menge S von Zahlen: ein binärer Baum, dessen innere Knoten mit den Zahlen aus S markiert sind, so daß - es für jede Zahl genau einen Knoten gibt - die maximal zwei Teilbäume, die durch die Nachfolger eines Knotens p induziert werden, die Eigenschaft haben, daß die Knotenmarkierungen des einen Teilbaums alle kleiner als die Markierung von p sind und die Knotenmarkierungen der andere Teilbaums alle größer sind. ausgeglichener binärer Suchbaum: ein binärer Suchbaum, der ein ausgeglichener binärer Baum ist. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

199 Lösung mit ausgeglichenem binärem Suchbaum ausgeglichener binärer Suchbaum zu einer endlichen Menge S von Zahlen: Bsp.: Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

200 Lösung mit ausgeglichenem binärem Suchbaum Datenstruktur: 10 Verweise auf Blätter durch null-zeiger repräsentiert Algorithmus Suche(s) Vergleiche s mit dem Wert s der Wurzel. Wenn beide übereinstimmen, dann wird ja zurückgegeben. Wenn nicht, wird im Fall s<s zum linken Nachfolger gegangen und mit diesem Teibaum genauso verfahren. Im Fall s>s geschieht dies mit dem rechten Teilbaum. Falls es den entsprechenden Teilbaum nicht gibt (null-pfeil), wird nein zurückgegeben. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

201 Lösung mit ausgeglichenem binärem Suchbaum Datenstruktur: Algorithmus Suche(s) Bsp.: Suche(11): 10->15->13->11 Suche(7): 10->7 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

202 Lösung mit ausgeglichenem binärem Suchbaum Datenstruktur: Algorithmus Suche(s) Bsp.: Suche(11): 10->15->13->11 Suche(7): 10->7 Suche(12): 10->15->13->11->null Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

203 Lösung mit ausgeglichenem binärem Suchbaum Zeitaufwand des Algorithmus Suche(s): T(n) = O(log n) Beweis: Der Zeitaufwand ist proportional zu der Anzahl durchzuführender Vergleiche. Die Anzahl durchzuführender Vergleiche ist durch die Höhe des Baums beschränkt. Die Höhe des Baums ist durch O(log (2n+3)) = O(log n) beschränkt (siehe Behauptungen 1-3 im folgenden.) Länge eines Pfades: die Anzahl der Knoten auf dem Pfad Höhe eines binären Baumes: die maximale Pfadlänge von der Wurzel zu den Blättern. Vollständiger binärer Baum: alle Pfade haben die gleiche Länge. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

204 Lösung mit ausgeglichenem binärem Suchbaum Behauptung 1: Für die Höhe h(m) eines ausgeglichenen binären Suchbaums mit m Knoten gilt h(m)=o(log m), d.h. es gibt Konstante c und d, so daß h(m) < c log m + d. Beweis: induktiv über m. Induktionsanfang: m=1: Die Behauptung gilt für alle d>1. Induktionsschritt: Nachweis der Behauptung für m>1 unter der Annahme, daß die Behauptung für m-1, m-2,..., 1 richtig ist. Da die Höhe eines ausgeglichenen Baums gleich 1 plus die Höhe der beiden Unterbäume der Wurzel ist (die beide etwa m/2 Knoten haben), gilt Induktionsannahme h(m) = 1 + h(m/2) < 1 + c log (m/2) + d = c log m c + d + 1 <= c log m + d für c >= 1 und d > 0. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

205 Lösung mit ausgeglichenem binärem Suchbaum Einfügen und Entfernen: Es gibt Klassen ausgeglichener binärer Suchbäume und Algorithmen dazu, die folgenden Zeitaufwand haben (ohne Beweis): Suchen: T(n) = O(log n) Einfügen: T(n) = O(log n) Entfernen: T(n) = O(log n) Zum Vergleich: Unsortierte Arrays: Suchen: T(n) = O(n) Einfügen: T(n) = O(1) Entfernen: T(n) = O(n) Sortierte Arrays: Suchen: T(n) = O(log n) Einfügen: T(n) = O(n) Entfernen: T(n) = O(n) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

206 Lösung mit Hashing Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

207 Lösung mit Hashing Datenstruktur: Bsp.: S={110,119,150, 127, 164, 147, 173} Index i: h[i]: Hashfunktion: ordnet einer Zahl s einen Index i(s) zu, unter dem sie abgelegt wird. Bsp.: i(s)=s mod k, k die Länge des Arrays (hier 14) Definition: a mod b, wobei a, b ganze Zahlen: Rest der ganzzahligen Division, z.b. 9 mod 4 = 1, 12 mod 3 = 0 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

208 Lösung mit Hashing Datenstruktur: Bsp.: S={110,119,150, 127, 164, 147, 173} Index i: h[i]: Algorithmus Suche(s) Berechne i(s). Durchlaufe die Liste von h[i(s)]. Wenn ein Element mit dem Wert s auftritt, gib ja aus, sonst nein. Zeitaufwand: im schlechtesten Fall T(n)=O(n) (alle Elemente in einer Liste) im günstigsten Fall T(n)=O(1) (ein Element in einer Liste). Es kann gezeigt werden, daß eher der gute Fall erwartet werden kann. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

209 Lösung mit Hashing Datenstruktur: Bsp.: S={110,119,150, 127, 164, 147, 173} Index i: h[i]: Algorithmus Fügeein(s) Berechne i(s). Füge s am Anfang der Liste von h[i(s)] ein. Zeitaufwand: T(n)=O(1). Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

210 Lösung mit Hashing Datenstruktur: Bsp.: S={110,119,150, 127, 164, 147, 173} Index i: h[i]: Algorithmus Entferne(s) Berechne i(s). Durchlaufe die Liste von h[i(s)]. Wenn ein Element mit dem Wert s auftritt, entferne es aus der Liste. Zeitaufwand: im schlechtesten Fall T(n)=O(n) (alle Elemente in einer Liste) im günstigsten Fall T(n)=O(1) (ein Element in einer Liste). Es kann gezeigt werden, daß eher der gute Fall erwartet werden kann. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

211 Lösung mit Hashing Bemerkungen zum Hashing: Bei dem vorgestellten Verfahren wird das Array nicht gut genutzt. Alternative: Die Werte werden im Array abgelegt. Beim Auftreten einer Kollision wird der Wert nach einem vorgegebenen Verfahren in einem noch leeren Array-Element untergebracht, z.b. das erste freie Element nach aufsteigendem Index. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

212 Teil IV. Vom Programm zum Rechner Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

213 Ebenen heutiger Rechner Problemorientierte Programmierspache Assemblersprache Maschinensprache Registertransfer Schaltungen Hardware-Ebene Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

214 Inhalt 1. Von-Neumann-Rechner 2. Schaltungen 3. Compiler und formale Sprachen 4. Semantik und Verifikation Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

215 1. Von-Neumann-Rechner Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

216 Grundstruktur heutiger Rechner - von-neumann-rechnerarchitektur - Rechner = Prozessor + Speicher + Ein-/Ausgabe - Programm und Daten im Speicher - Abarbeiten des Programms durch den Prozessor Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

217 von-neumann-architektur Möglichkeiten der Integration der Funktionseinheiten: - Einzelverbindungswege Prozessor Hauptspeicher Ein-/Ausgabe Direct Memory Access (DMA) Speicherperipherie Interaktionsperipherie Datenkommunikationsperipherie Datenkommunikationsperipherie - Bus (Sammelschiene) Prozessor Hauptspeicher Interaktionsperipherie Bussteuerung Speicherperipherie Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

218 von-neumann-architektur (Haupt-)Speicher: - setzt sich aus Speicherzellen zusammen, die unter Adressen ansprechbar sind: Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

219 von-neumann-architektur Prozessor: - führt Maschinenbefehle aus. Die Befehle sind im Befehlssatz festgelegt. Einteilung eines typischen Befehlssatzes: Befehlssatz Zuweisen (Transport) Rechnen (arithm./log. Verknüpfungen) Steuern (Ablauforganisation) Register- Register Register- Hauptspeicher Register- Ein-/Ausgabe arithmetische Befehle logische Befehle Sprungbefehle Gerätesteuerung Aufbau eines typischen Maschinenbefehls: Operationscode Operanden Bsp.: addiere r 4, r 3, r 2 ; hole r 5, a 1 ; multipliziere r 6, r 5, r 4 ; Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

220 von-neumann-architektur Prozessor: - Funktionsgruppen eines Prozessors: Leitwerk: steuert die Abarbeitung des Programms Rechenwerk: führt die arithmetischen und logischen Befehle sowie eventuelle Dienstleistungen (z.b. Adressrechnungen) für das Leitwerk aus Register: Speicherzellen im Prozessor für Operanden und Zwischenergebnisse - sind schneller als als der Hauptspeicher zugreifbar Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

221 von-neumann-architektur Prozessor: Hauptspeicher... SAR BZ +1 Leitwerk SDR Prozessor BR Reg. opcode Operand Rechenwerk SAR: Speicheradressregister SDR: Speicherdatenregister BZ: Befehlszeiger BR: Befehlsregister addiere r 4, r 3, r 2 ; hole r 5, a 1 ; Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

222 von-neumann-architektur Prozessor: - Befehlsausführungszyklus: Wiederhole hole den nächsten Befehl vom Hauptspeicher (Adresse im BZ) in das Befehlsregister (BR); erhöhe den Befehlszeiger (BZ); führe den Befehl aus, der im Befehlsregister (BR) steht; bis ein Halte-Befehl auftritt. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

223 2. Schaltungen Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

224 Zweiwertige Informationsdarstellung Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

225 Zweiwertige Informationsdarstellung Bit: - kleinste Informationseinheit - zwei mögliche Werte: 0 oder 1 - Realisierung: Transistor: auf/zu Byte: - Informationseinheit aus 8 Bits: Bsp: Anwendung: Codierung von Zeichen (Textzeichen und Steuerzeichen) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

226 Zweiwertige Informationsdarstellung positive ganze Zahlen: - Darstellung als Dualzahl: z = z n 2 n +z n-1 2 n.1 +z n-2 2 n z Bsp.: dezimal 7 ist dual dezimal 14 ist dual Dualzahlen sind ein Spezialfall der p-adischen Darstellung (p=2): z = z n p n +z n-1 p n.1 +z n.2 p n z 0 p 0 Bsp.: Hexadezimalsystem: p=16, Ziffern: 0-9,A-F dezimal 15 ist hexadezimal F dezimal 16 ist hexadezimal 10 dezimal 27 ist hexadezimal 1B Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

227 Zweiwertige Informationsdarstellung positive ganze Zahlen: Berechnung der p-adischen Darstellung einer Dezimalzahl d: z i = (d div p i ) mod p wobei div die ganzzahlige Division ohne Rest und mod (modulo) die Berechnung des Rests bezeichnet. Bsp.: Dezimal 14 in Dualdarstellung: z 0 = (14 div 1) mod 2 = 14 mod 2 = 0 z 1 = (14 div 2) mod 2 = 7 mod 2 = 1 z 2 = (14 div 4) mod 2 = 3 mod 2 = 1 z 3 = (14 div 8) mod 2 = 1 mod 2 = 1 (z 4 = (14 div 16) mod 2 = 0 mod 2 = 0) 14 = div 1 = div 2 = div 4 = div 8 = Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

228 Zweiwertige Informationsverarbeitung: Boolesche Funktionen Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

229 Zweiwertige Informationsverarbeitung Berechnung Boolescher Funktionen n-stellige Boolesche Funktion: Definitionsbereich: Menge der 0/1-Folgen der Länge n Wertebereich: {0,1} Definition boolescher Funktionen durch Wertetabellen: Bsp.: a b c f (a,b,c) f ist genau dann gleich 1, wenn die Mehrzahl der Bitstellen des Arguments gleich 1 ist. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

230 Zweiwertige Informationsverarbeitung Berechnung Boolescher Funktionen: Boolesche Formeln: Darstellung einer Booleschen Funktion durch Verknüpfung von elementaren Booleschen Funktionen. Beispiele für elementare Boolesche Funktionen: and, or, nand, nor, not a b and a b or a b nand a b nor a not nand = nicht and, nor = nicht or, 1 = true, 0= false Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

231 Zweiwertige Informationsverarbeitung Berechnung Boolescher Funktionen: Verfahren zur Herleitung einer Booleschen Formel, der sogenannten disjunktiven Normalform, aus and-, or- und not-verküpfungen: Bsp.: a b c f (a,b,c) a*b*c a*b*c a*b*c a*b*c * entspricht and (math. ) + entspricht or (math. ) entspricht not (math. ) Ergebnis: f = a*b*c + a*b*c+a *b* c+a*b*c math.: ( a b c) (a b c) (a b c) (a b c) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

232 Zweiwertige Informationsverarbeitung Berechnung Boolescher Funktionen: Verfahren zur Herleitung einer Booleschen Formel, der sogenannten disjunktiven Normalform, aus and-, or- und not-verküpfungen: 1. Für alle Zeilen der Tabelle, die den Wert 1 liefern, forme eine Boolesche Formel, die alle Eingabeparameter direkt oder negiert enthält. Ein Parameter genau dann negiert wird, wenn sein Wert auf der Zeile =0 ist. Die Parameter werden mit and verknüpft. 2. Verknüpfe die Formeln aus 1. mit or. Optimierung: Die resultierenden Formeln können häufig noch verkürzt werden (weniger Operationen). Hierfür gibt es Optimierungsverfahren. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

233 Zweiwertige Informationsverarbeitung: Schaltungen Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

234 Zweiwertige Informationsverarbeitung Boolescher Schaltkreise: Darstellung einer Booleschen Funktion durch Verknüpfung von Gattern. Gattern entsprechen den elementaren Booleschen Funktionen Beispiele für elementare Boolesche Funktionen: and, or, nand, nor, not and-gatter or-gatter nand-gatter nor-gatter not-gatter and or nand nor not and or Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

235 Zweiwertige Informationsverarbeitung Boolesche Schaltkreise: Bsp.: f = a*b*c + a*b*c+a *b* c+a*b*c a and not b and not or f c and not and a b c a b c Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

236 Schaltungen 1. Zweiwertige Informationsdarstellung: Bit, Byte, positive ganze Zahl 2. Zweiwertige Informationsverarbeitung: Boolesche Funktionen a b S a*b a*b S= a*b + a*b 3. Zweiwertige Informationsverarbeitung: Schaltungen a b not and or S not and Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

237 Zweiwertige Informationsverarbeitung Beispiel: 1-Bit-Addierer a b Halbaddierer: a b S Ü xor and S Ü xor: entweder oder a b Ü in Addierer: a b Ü in S Ü out HA HA: Halbaddierer Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/ Ü S HA Ü S OR Ü out S 011 a b 11 Ü 1000 S

238 Zweiwertige Informationsverarbeitung Speicher: Bsp.: RS-Flipflop: R= reset, S= set, speichert 1-Bit-Information Lösung: Realisierung durch rückgekoppelte Schaltung: S Q R nor S nor R Gespeicherter Wert: Q Setzen des Speichers auf 1: S=1, R=0 Setzen des Speichers auf 0: S=0, R=1 Ausgabe des gespeicherten Werts: S=0, R=0, d.h. Q=0 oder Q=1 nicht verwendet: S=1, R=1 Q Problem: Zwei Werte (Q=0/1) für die gleiche Eingabe (S=0, R=0) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

239 Zweiwertige Informationsverarbeitung Speicher: RS-Flipflop: Analyse des Verhaltens Zustand R S Q alt Q neu Q alt S R nor nor Q neu Q stabil, gibt den gespeicherten Wert aus stabil, gibt den gespeicherten Wert aus instabil, speichert den Wert 1 ( set ), ->3 stabil, wird auf 1 gesetzt ( set ) stabil, wird auf 0 gesetzt ( reset ) instabil, wird auf 0 gesetzt ( reset ), ->4 stabil, für Speicherfunktion nicht verwendet instabil, ->6 Stabiler Zustand: Q alt =Q neu Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

240 Zweiwertige Informationsverarbeitung Beispiel für einen schwingenden Schaltkreis: b alt a nand b neu b Zustand a b alt b neu Ergebnis: instabil, ->1 stabil, ->1, b=1 instabil, ->3 instabil, ->2 Eingabe a=0: Ausgabe b=1 Eingabe a=1: Ausgabe b schwingt zwischen 0 und 1 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

241 3. Compiler und formale Sprachen Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

242 Compiler und Interpreter Compiler: übersetzt ein Programm, das üblicherweise in einer höheren Programmiersprache geschrieben ist, in ein Programm in einer anderen, üblicherweise einfacheren Sprache, z.b. Assembler oder Maschinensprache Interpreter: arbeitet ein gegebenes Programm schrittweise ab und führt es dabei gleich aus Bsp. Java - Übersetzung des Java-Programms (.java-datei) in ein Java-Byte-Code-Programm (.class-datei), das rechnerunabhängig ist, durch den Java-Compiler - Interpretation des Java-Byte-Code-Programms auf dem Zielrechner durch die Java Virtual Machine (JVM) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

243 Compiler und Interpreter Vorgehensweise: Analyse der syntaktischen Struktur des Programms und Zusammensetzen des übersetzten Programms aus Bausteinen, die Sprachelementen zugeordnet sind (compilieren = zusammensetzen) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

244 Inhalt Grammatiken Sprachtypen nach Chomsky Übersetzung endlicher Automat Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

245 Grammatiken Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

246 Formale Sprachen Sprache: - Menge von Worten über einem Alphabet Alphabet: - endliche Menge von Zeichen Wort: - endliche Folge von Zeichen Bsp.: Alphabet A = {b} Sprache L = {b, bb, bbb, bbbb,...} Syntax: struktureller Aufbau der Worte, z.b. beschrieben durch eine Grammatik Semantik: Bedeutung der Worte der Sprache Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

247 Formale Sprachen Grammatik: Satz -> Subjekt Prädikat Objekt Subjekt -> Vorwort Hauptwort... - Regelwerk, das den Aufbau der Worte einer Sprache beschreibt. Bsp.: Grammatikregeln für L = {b, bb, bbb, bbbb,...} : S -> b, S->Sb Ableitung von Worten durch Ersetzen von Zeichen: S=>b Anwendung der ersten Regel S=>Sb=>bb Anwendung der zweiten Regel, dann der ersten Regel S=>Sb=>Sbb=>bbb zweimal die zweite Regel, dann die erste Regel usw. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

248 Formale Sprachen Grammatik: Bsp.: Grammatik für geklammerte arithmetische Ausdrücke 3*(b+7)+c a*(a+a)+a Alphabet: { a,+,*,(,) } Hilfszeichenmenge: { E,T,F } Startsymbol: E Produktionsregeln: { E->T, E->E+T, T->F, T->T*F, F->a, F->(E) } Bsp.: a*(a+a)+a gehört zur Sprache dieser Grammatik E => E+T => T+T => T*F+T => F*F+T => a*f+t => a*(e)+t =>a*(e+ T)+T => a*(t+t)+t => a*(f+t)+t => a*(a+t)+t => a*(a+f)+t => a*(a+a)+t => a*(a+a)+f => a*(a+a)+a Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

249 Formale Sprachen Grammatik: Definition: ein 4-Tupel G=(N,T,P,S), wobei N eine endliche Menge von Variablenzeichen ( Nichtendzeichen ) T eine endliche Menge von Endzeichen ( Terminalzeichen ), wobei N und T disjunkt sind P eine endliche Menge von Produktionsregeln der Form y -> y, wobei y und y endliche Folgen aus Zeichen ( Worte ) aus N oder T sind, y mindestens ein Zeichen enthalten muß und y auch leer sein kann ( leeres Wort lambda λ). S ein Zeichen aus N, Startvariable genannt. Bsp.; Grammatik auf der vorigen Seite: G=(N,T,P,E) mit N={ E,T,F }, T={ a,+,*,(,) }, P={ E->T, E->E+T, T->F, T->T*F, F->a, F->(E) } Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

250 Formale Sprachen Grammatik: unmittelbare Ableitung u=>v: u geht unmittelbar in v über, wenn gilt: u und v sind Worte aus Zeichen aus N oder T, u hat die Form xyz, v hat die Form xy z, wobei x,y,y,z Worte sind, y->y ist eine Produktionsregel in P. Ableitung u => *v: u geht in v über oder v wird aus u abgeleitet, wenn gilt: Es gibt eine Folge w 1,..., w n von Worten mit u = w 1 und v = w n, sodaß w i => w i+1, i = 1,..., n-1. von G erzeugte (definierte) Sprache L(G): die Menge aller Worte w aus Zeichen aus T, die aus dem Startsymbol ableitbar sind: L(G) = { w S => *w, w enthält nur Endzeichen oder ist das leere Wort} Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

251 Sprachentypen nach Chomsky Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

252 Formale Sprachen Sprachtypen: Chomsky-Typ-i-Sprache, i = 0,... 3: Es gibt eine Chomsky-Typ-i-Grammatik, die die Sprache erzeugt. Typ 1: kontextsensitive Sprache Typ 2: kontextfreie Sprache Typ 3: reguläre Sprache Bsp.: L = {b, bb, bbb, bbbb,...} ist regulär. Die Sprache der arithmetischen Ausdrücke ist kontextfrei. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

253 Formale Sprachen Grammatik G=(N,T,P,E) : Bsp.: Grammatik für geklammerte arithmetische Ausdrücke a*(a+a)+a Alphabet: T={ a,+,*,(,) } Hilfszeichenmenge: N={ E,T,F } Startsymbol: E Produktionsregeln: P={ E->T, E->E+T, T->F, T->T*F, F->a, F->(E) } Bsp.: a*(a+a)+a gehört zur Sprache dieser Grammatik E => E+T => T+T => T*F+T => F*F+T => a*f+t => a*(e)+t =>a*(e+ T)+T => a*(t+t)+t => a*(f+t)+t => a*(a+t)+t => a*(a+f)+t => a*(a+a)+t => a*(a+a)+f => a*(a+a)+a Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

254 Formale Sprachen Grammatik: spezielle Grammatiken nach Chomsky: Chomsky-Typ-0-Grammatik: alle Grammatiken Chomsky-Typ-1-Grammatik (kontextsensitive Grammatiken): Für alle Regeln w->w ist w nicht länger als w. Chomsky-Typ-2-Grammatik (kontextfreie Grammatiken): Typ-1-Grammatiken, für die alle Regeln die Form X->w haben, wobei X ein Variablenzeichen ist. Chomsky-Typ-3-Grammatik: Typ 2-Grammatiken, für die alle Regeln die Form X->x oder X->Yx haben, wobei X, Y Variablenzeichen und x ein Endzeichen sind. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

255 Formale Sprachen Bedeutung der Sprachtypen: Die Syntax der meisten existierenden Programmiersprachen läßt sich im wesentlichen durch kontextfreie Grammatiken beschreiben. Teilsprachen, wie die Menge der Namen oder die Menge der ganzen Zahlen sind regulär. Bsp.: Java Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

256 Formale Sprachen Bedeutung der Sprachtypen: Bsp.: Java-Gleitpunktzahlen in Java-Grammatik-Notation FloatingPointLiteral: Digits. Digits_opt ExponentPart_opt FloatTypeSuffix_opt. Digits ExponentPart_opt FloatTypeSuffix_opt Digits ExponentPart FloatTypeSuffix_opt Digits ExponentPart_opt FloatTypeSuffix ExponentPart: ExponentIndicator SignedInteger Linke Seite der Produktionsregeln Rechte Seiten der Produktionsregeln: jede Zeile definiert eine alternative Regel; opt bedeutet, daß das Symbol auch fehlen darf ExponentIndicator: one of e E SignedInteger: Sign_opt Digits Sign: one of + - FloatTypeSuffix: one of f F d D Endzeichen Bsp.: 1.E-14.12e13F 5d andere, ähnliche, gebräuliche Grammatikdarstellung, z.b. bei Pascal: Backus-Naur-Form (BNF-Form) Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

257 Übersetzung Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

258 Formale Sprachen Übersetzung (nur zur Illustration): Zuweisung von Übersetzungsaktionen an Produktionsregeln Bsp.: geklammerte arithmetische Ausdrücke mit n Variablen Alphabet: T={ a 1,..., a n,+,*,(,) } Hilfszeichenmenge: N={ E,T,F } Startsymbol: E Produktionsregeln: P={ E->T, E->E+T, T->F, T->T*F, F->a i, i = 1,...n, F->(E) } Befehlsatz der Zielsprache: hole a,b (a=b), addiere a,b,c (a=b+c), multipliziere a,b,c (a=b*c) Zuweisung von Aktionen: E->T e k: =t i ; E->E+T e k := e i +t j ; T->F t k := f i ; T->T*F t k := t i * f j ; F->a i f k := a i ; F->(E) f k := e i ; wobei e i, f i,t i Programmvariable sind. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

259 Formale Sprachen Übersetzung: - Bestimme eine Ableitung für das gegebene Wort (Programm). Wenn dies nicht möglich ist, gib eine Fehlermeldung aus (Syntaxfehler). Wenn dies möglich ist, fahre wie folgt fort: - Arbeite die Ableitung von hinten nach vorne ab. - Gib die zugeordneten Anweisungen der Produktionsregeln aus. - Tritt links ein Index auf, der rechts nicht vorhanden ist, gib diesem den kleinsten bisher nicht verwendeten Indexwert. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

260 Formale Sprachen Übersetzung: E->T e k = t i ; E-> E+T e k := e i + t j ; T->F t k := f i ; T-> T*F t k := t i * f j ; F->a i f k := a i ; F-> (E) f k := e i ; Bsp.: a 1 *(a 2 + a 3 ) + a 4 Ableitung Ersetzung E =>E+T =>T+T =>T*F+T =>F*F+T =>a 1 *F+T => a 1 *(E)+T => a 1 *(E+T)+T Ableitung Ersetzung =>a 1 *(T+T)+T => a 1 *(F + T)+T => a 1 *(a 2 + T)+T => a 1 *(a 2 + F)+T => a 1 *(a 2 + a 3 )+T => a 1 *(a 2 + a 3 )+ F => a 1 *(a 2 + a 3 )+ a 4 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

261 Formale Sprachen Übersetzung: E->T e k = t i ; E-> E+T e k := e i + t j ; T->F t k := f i ; T-> T*F t k := t i * f j ; F->a i f k := a i ; F-> (E) f k := e i ; Bsp.: a 1 *(a 2 + a 3 ) + a 4 Ableitung Ersetzung E =>E+T =>T+T =>T*F+T =>F*F+T =>a 1 *F+T => a 1 *(E)+T => a 1 *(E+T)+T Ableitung Ersetzung =>a 1 *(T+T)+T => a 1 *(F + T)+T => a 1 *(a 2 + T)+T => a 1 *(a 2 + F)+T => a 1 *(a 2 + a 3 )+T => a 1 *(a 2 + a 3 )+ F f 5 := a 4 ; => a 1 *(a 2 + a 3 )+ a 4 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

262 Formale Sprachen Übersetzung: E->T e k = t i ; E-> E+T e k := e i + t j ; T->F t k := f i ; T-> T*F t k := t i * f j ; F->a i f k := a i ; F-> (E) f k := e i ; Bsp.: a 1 *(a 2 + a 3 ) + a 4 Ableitung Ersetzung E =>E+T =>T+T =>T*F+T =>F*F+T =>a 1 *F+T => a 1 *(E)+T => a 1 *(E+T)+T Ableitung Ersetzung =>a 1 *(T+T)+T => a 1 *(F + T)+T => a 1 *(a 2 + T)+T => a 1 *(a 2 + F)+T => a 1 *(a 2 + a 3 )+T t 6 := f 5 ; => a 1 *(a 2 + a 3 )+ F f 5 := a 4 ; => a 1 *(a 2 + a 3 )+ a 4 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

263 Formale Sprachen Übersetzung: E->T e k = t i ; E-> E+T e k := e i + t j ; T->F t k := f i ; T-> T*F t k := t i * f j ; F->a i f k := a i ; F-> (E) f k := e i ; Bsp.: a 1 *(a 2 + a 3 ) + a 4 Ableitung Ersetzung E e 18 := e 17 + t 6 ; =>E+T e 17 := t 16 ; =>T+T t 16 := t 15 * f 13 ; =>T*F+T t 15 := f 14 ; =>F*F+T f 14 := a 1 ; =>a 1 *F+T f 13 := e 12 ; => a 1 *(E)+T e 12 := e 11 + t 8 ; => a 1 *(E+T)+T e 11 := t 10 ; Ableitung Ersetzung =>a 1 *(T+T)+T t 10 := f 9 ; => a 1 *(F + T)+T f 9 := a 2 ; => a 1 *(a 2 + T)+T t 8 := f 7 ; => a 1 *(a 2 + F)+T f 7 := a 3 => a 1 *(a 2 + a 3 )+T t 6 := f 5 ; => a 1 *(a 2 + a 3 )+ F f 5 := a 4 ; => a 1 *(a 2 + a 3 )+ a 4 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

264 Formale Sprachen Übersetzung: E e 18 := e 17 + t 6 ; =>E+T e 17 := t 16 ; =>T+T t 16 := t 15 * f 13 ; =>T*F+T t 15 := f 14 ; =>F*F+T f 14 := a 1 ; =>a 1 *F+T f 13 := e 12 ; => a 1 *(E)+T e 12 := e 11 + t 8 ; => a 1 *(E+T)+T e 11 := t 10 ; Kopie von voriger Seite =>a 1 *(T+T)+T t 10 := f 9 ; => a 1 *(F + T)+T f 9 := a 2 ; => a 1 *(a 2 + T)+T t 8 := f 7 ; => a 1 *(a 2 + F)+T f 7 := a 3 => a 1 *(a 2 + a 3 )+T t 6 := f 5 ; => a 1 *(a 2 + a 3 )+ F f 5 := a 4 ; => a 1 *(a 2 + a 3 )+ a 4 Ergebnis: f 5 := a 4 ; t 6 := f 5 ; f 7 := a 3 ; t 8 := f 7 ; f 9 := a 2 ; t 10 := f 9 ; e 11 := t 10 ; e 12 :=e 11 + t 8 ; f 13 :=e 12 ; f 14 :=a 1 ; t 15 :=f 14 ; t 16 :=t 15 * f 13 ; e 17 :=t 16 ; e 18 :=e 17 + t 6 ; Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

265 Formale Sprachen Übersetzung: Ergebnis (Kopie von voriger Seite): f 5 := a 4 ; t 6 := f 5 ; f 7 := a 3 ; t 8 := f 7 ; f 9 := a 2 ; t 10 := f 9 ; e 11 := t 10 ; e 12 :=e 11 + t 8 ; f 13 :=e 12 ; f 14 :=a 1 ; t 15 :=f 14 ; t 16 :=t 15 * f 13 ; e 17 :=t 16 ; e 18 :=e 17 + t 6 ; Optimierung: Entfernen von Zuweisungsketten t 6 := a 4 ; t 8 := a 3 ; e 11 := a 2 ; f 13 :=e 11 +t 8 ; t 15 :=a 1 ; e 17 :=t 15 *f 13 ; e 18 :=e 17 +t 6 ; Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

266 Formale Sprachen Übersetzung: t 6 := a 4 ; t 8 := a 3 ; e 11 := a 2 ; Kopie von voriger Seite f 13 :=e 11 +t 8 ; t 15 :=a 1 ; e 17 :=t 15 *f 13 ; e 18 :=e 17 +t 6 ; Registerzuweisung: r 1 r 2 r 3 r 4 r 5 r 6 r 7 t 6 t 8 e 11 f 13 t 15 e 17 e 18 a 1, a 2, a 3, a 4 stehen für Hauptspeicheradressen Ergebnis: r 1 := a 4 ; r 2 := a 3 ; r 3 := a 2 ; r 4 :=r 3 + r 2 ; r 5 := a 1 ; r 6 :=r 5 *r 4 ; r 7 :=r 6 + r 1 ; Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

267 Formale Sprachen Übersetzung: r 1 :=a 4 ; r 2 :=a 3 ; r 3 :=a 2 ; Kopie von voriger Seite r 4 :=r 3 +r 2 ; r 5 :=a 1 ; r 6 :=r 5 *r 4 ; r 7 :=r 6 +r 1 ; Übersetzung in Assembler oder Maschinensprache durch eins-zu-eins-ersetzung: hole r 1, a 4 ; hole r 2, a 3 ; hole r 3, a 2 ; addiere r 4, r 3, r 2 ; hole r 5, a 1 ; multipliziere r 6, r 5, r 4 ; addiere r 7, r 6, r 1 ; Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

268 Formale Sprachen Teilaufgabe der Sprachübersetzung durch Compiler: Bestimmung einer Ableitung für ein gegebenes Programm (= Wort der Sprache. Lösung: Automaten Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

269 Formale Sprachen korrespondierende Automatentypen für Sprachen: für Typ-0-Sprachen: (nichtdeterministische) Turingmachinen für Typ-1-Sprachen: bandbeschränkte Turingmaschinen für Typ 2-Sprachen: (nichtdeterministische) Kellerautomaten für Typ 3-Sprachen: endliche Automaten Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

270 Endlicher Automat Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

271 Formale Sprachen endlicher Automat: Eingabewort Zustandsübergangsdiagramm: Zustand a z 0 z 1 b a b a Ausgabe: akzeptiert/nicht akzeptiert Abarbeitung einer Eingabe: abab: z 0 => z 1 => z 2 => z 1 => z 2 a b a b akzeptierte Sprache: L = {ab, abab, ababab,...} z 3 a b b z 0,..., z 3 : Zustände z 0 : Startzustand z 2 : Endzustand Alphabet: {a, b} z 2 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

272 Formale Sprachen endlicher Automat: spezifiziert durch ein 5-Tupel M = (Z, T, δ, z 0, E), wobei Z eine endliche Menge von Zuständen T ein endliches Eingabealphabet δ eine Überführungsfunktion, die einem Paar aus Zustand z und Eingabezeichen a einen neuen Zustand z = δ(z, a) zuordnet z 0 der Anfangszustand E eine Menge von Endzuständen, die Teilmenge von Z ist. Bsp.: a z 0 z 1 b a b a δ (z 0, a) = z 1, δ(z 0, b) = z 3, δ(z 1, a) = z 3, δ(z 1, b) = z 2, δ(z 2, a) = z 1, δ(z 2, b) = z 3, δ(z 3, a) = z 3, δ(z 3, b) = z 3. z 3 a b b z 2 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

273 Formale Sprachen endlicher Automat: Ein Automat M akzeptiert ein Wort a 1 a 2... a n, genau dann wenn der Automat beim Abarbeiten des Worts beginnend mit dem Startzustand z 0 eine Folge z 0, z 1,..., z n von Zuständen durchläuft, wobei a z 0 z 1 z {i+1} = δ(z i,a {i+1} ), i = 0,..., n-1, b a b z n ein Endzustand ist. Bsp.: abab: z 0 => z 1 => z 2 => z 1 => z 2 δ(z 0,a) = z 1, δ(z 1, b) = z 2, δ(z 2, a) = z 1, δ(z 1, b) = z 2 δ(z 0, a)= z 1, δ(z 0, b)= z 3, δ(z 1, a)= z 3, δ(z 1, b)= z 2, δ(z 2, a) = z 1, δ(z 2, b) = z 3, δ(z 3, a) = z 3, δ(z 3, b) = z 3. mit δ definiert durch Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/ z 3 a b b z 2 a

274 Formale Sprachen endlicher Automat: - Von einem Automaten M akzeptierte Sprache L(M): die Menge aller Worte, die M akzeptiert. - Eine von einem endlichen Automaten akzeptierte Sprache ist vom Chomsky-Typ 3, d.h. regulär. Eine entsprechende reguläre Grammatik kann aus der Überführungsfunktion konstruiert werden. Bsp. (nicht durch Konstruktion erhalten): L = {ab, abab, ababab,...} G = {N,T,P,S} mit T={a,b}, N={X,B,S}, P={S->aB, S->aX, X->bS, B->b} S=>aX=>abS=>abaB=>abab Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

275 Formale Sprachen endlicher Automat: - Zu jeder regulären Sprache L gibt es einen endlichen Automaten, der L akzeptiert. Die Überführungsfunktion eines entsprechenden endlichen Automaten kann aus der Grammatik konstruiert werden. Bsp. (nicht durch Konstruktion erhalten): L = {b, bb, bbb, bbbb,...} b z 0 z 1 b T = {b}, Z={z 0,z 1 }, Startzustand z 0, E = {z 1 }, δ(z 0, b) = z 1, δ(z 1, b) = z 1 Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

276 Semantik und Verifikation Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

277 Semantik Sprache: Syntax und Semantik Struktur des Gesprochenen/Geschriebenen Inhalt/Bedeutung des Gesprochenen/Geschriebenen Formaler Ansatz zur Syntaxdefinition: Grammatik Formale Ansätze zur Semantikdefinition: - operationelle Semantiken - denotationelle Semantiken - axiomatische Semantiken Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

278 Semantik Repräsentation: Apfel apple... Information, Begriffe: Apfel reale Welt: Syntax Semantik Abstraktion Semantikschema: (R,I,[. ]) mit - R: Menge der Repräsentationen - I: Menge der Informationen - [. ] Teilmenge von R x I: Semantikrelation oder Interpretation: ist (r,i) in [. ], dann ist i eine Information zur Repräsentation r. Vorkurs Informatik, LS VII, Universität Dortmund, WS 2003/

Vorkurs Informatik Wintersemester 2015/2016. Programmtexte

Vorkurs Informatik Wintersemester 2015/2016. Programmtexte www.vorkurs-informatik.de Vorkurs Informatik Wintersemester 2015/2016 Programmtexte 1 Grundkonzepte der Programmierung Java-Programm zur Suche des Minimums: class ProgrammMinSuche{ int[] a = {11,7,8,3,15,13,9,19,18,10,4;

Mehr

Vorlesung: von Montag, 14.09.2009, bis Mittwoch, 30.09.2009, 14-16 Uhr. Emil-Figge-Straße 50, HS 1, Campus Nord Hörsaalgbäude I, Hörsaal 6, Campus Süd

Vorlesung: von Montag, 14.09.2009, bis Mittwoch, 30.09.2009, 14-16 Uhr. Emil-Figge-Straße 50, HS 1, Campus Nord Hörsaalgbäude I, Hörsaal 6, Campus Süd Vorkurs Informatik Prof. Dr. Heinrich Müller Informatik VII Technische Universität Dortmund http://ls7www.cs.unidortmund.de Informatik VII, Universität Dortmund Vorkurs Informatik, LS VII, WS 2009/2010

Mehr

Prof. Dr. Heinrich Müller. Informatik VII Universität Dortmund. http://ls7-www.cs.uni-dortmund.de. Organisatorisches zum Vorkurs Informatik

Prof. Dr. Heinrich Müller. Informatik VII Universität Dortmund. http://ls7-www.cs.uni-dortmund.de. Organisatorisches zum Vorkurs Informatik (UJlQ]HQGH)ROLHQ]XP 9RUNXUV,QIRUPDWLN Prof. Dr. Heinrich Müller Informatik VII Universität Dortmund http://ls7www.cs.unidortmund.de Informatik VII, Universität Dortmund Organisatorisches zum Vorkurs Informatik

Mehr

Vom Problem über den Algorithmus zum Programm

Vom Problem über den Algorithmus zum Programm 2 Vom Problem über den Algorithmus zum Programm Computer sind heute praktisch überall zu finden. Entsprechend groß ist die Vielzahl der Problemstellungen, mit denen man bei der Entwicklung von Programmen

Mehr

FD Informatik Mauch SSDL (WHRS) Reutlingen. Algorithmen

FD Informatik Mauch SSDL (WHRS) Reutlingen. Algorithmen FD Informatik Mauch SSDL (WHRS) Reutlingen Algorithmen Überblick Definition Notwendigkeit Realisierung Grundkonzepte Umsetzung im Unterricht Algorithmus? Ein Algorithmus ist eine Verwaltungsvorschrift,

Mehr

Inhaltsverzeichnis. Was ist Informatik? 5. Programmierung 13. Einleitung. 1 Informatik 7 1.1 Was ist Informatik? 7 1.2 Teilgebiete der Informatik 8

Inhaltsverzeichnis. Was ist Informatik? 5. Programmierung 13. Einleitung. 1 Informatik 7 1.1 Was ist Informatik? 7 1.2 Teilgebiete der Informatik 8 Einleitung Was ist Informatik? 5 1 Informatik 7 1.1 Was ist Informatik? 7 1.2 Teilgebiete der Informatik 8 Programmierung 13 2 Vom Problem über den Algorithmus zum Programm 15 2.1 Vorgehensweise bei der

Mehr

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon

Mehr

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

Einführung in die Programmierung für NF. Algorithmen, Datentypen und Syntax Einführung in die Programmierung für NF Algorithmen, Datentypen und Syntax Ziele Begriffsbildungen: InformaCk, Algorithmus, Programm, Compiler und andere Einordnung von Java Ein einfaches Java- Programm

Mehr

Kapitel 1: Informationsverarbeitung durch Programme

Kapitel 1: Informationsverarbeitung durch Programme LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS Skript zur Vorlesung: Einführung in die Informatik: Systeme und Anwendungen Sommersemester 2009 Kapitel 1: Informationsverarbeitung

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. ) Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Rekursion Datenstrukturen Merge S ( split, s, merge ) Beispiel:

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML. JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung

Mehr

Java I Vorlesung Imperatives Programmieren

Java I Vorlesung Imperatives Programmieren Java I Vorlesung 2 Imperatives Programmieren 3.5.2004 Variablen -- Datentypen -- Werte Operatoren und Ausdrücke Kontrollstrukturen: if Imperatives Programmieren Im Kern ist Java eine imperative Programmiersprache.

Mehr

Algorithmen und ihre Programmierung

Algorithmen und ihre Programmierung Veranstaltung Pr.-Nr.: 101023 Algorithmen und ihre Programmierung Veronika Waue WS 07/08 Einführung Definition: Algorithmus Ein Algorithmus ist eine genau definierte Folge von Anweisungen zur Lösung eines

Mehr

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden Javaprogrammierung mit NetBeans Variablen, Datentypen, Methoden Programmieren 2 Java Bezeichner Bezeichner: Buchstabe _ $ Buchstabe _ $ Ziffer Groß- und Kleinbuchstaben werden strikt unterschieden. Schlüsselwörter

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Klassenvariablen, Klassenmethoden

Klassenvariablen, Klassenmethoden Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07 Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion Klassenmethoden

Mehr

Informatik I - Einstiegskurs

Informatik I - Einstiegskurs Informatik I - Einstiegskurs Dr. Henrik Brosenne Georg-August-Universität Göttingen Institut für Informatik Basiert auf dem Einstiegskurs im Wintersemester 2009/10 von Markus Osterhoff Wintersemester 2012/13

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Methoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Methoden 2 Methodendefinition 3 Parameterübergabe, Methodenaufruf

Mehr

Umsetzung einer Klassenkarte in einer Programmiersprache

Umsetzung einer Klassenkarte in einer Programmiersprache Klassen in Java Umsetzung einer Klassenkarte in einer Programmiersprache Objektorientierte Programme bestehen (nur) aus Klassendefinitionen In Klassendefinitionen wird die Struktur der Objekte festgelegt,

Mehr

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Tag 5 Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Methoden Deklaration

Mehr

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH 1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH Die Umgebungsvariable CLASSPATH kann im Hamster-Simulator sowohl für Compiler als auch für die Ausführung des Hamster-Programms gesetzt werden: Hierdurch

Mehr

Nachklausur Bitte in Druckschrift leserlich ausfüllen!

Nachklausur Bitte in Druckschrift leserlich ausfüllen! Übungen zur Vorlesung Informatik für Informationsmanager WS 2005/2006 Universität Koblenz-Landau Institut für Informatik Prof. Dr. Bernhard Beckert Dr. Manfred Jackel Nachklausur 24.04.2006 Bitte in Druckschrift

Mehr

Klassen als Datenstrukturen

Klassen als Datenstrukturen Einstieg in die Informatik mit Java, Vorlesung vom 27.11.07 Übersicht 1 Klassen als Datenstruktur 2 Vereinbarung von Klassen 3 Erzeugen von Objekten - Instanzen einer Klasse 4 Zugriff auf Attribute 5 Initialisierung

Mehr

Java Einführung Methoden. Kapitel 6

Java Einführung Methoden. Kapitel 6 Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden

Mehr

3.2 Datentypen und Methoden

3.2 Datentypen und Methoden Kap03.fm Seite 217 Dienstag, 7. September 2010 1:48 13 3.2 Datentypen und Methoden 217 3.2 Datentypen und Methoden Wie bei vielen höheren Programmiersprachen gibt es auch in Java einfache und strukturierte

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

Intensivübung zu Algorithmen und Datenstrukturen

Intensivübung zu Algorithmen und Datenstrukturen Intensivübung zu Algorithmen und Datenstrukturen Silvia Schreier Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht Programmierung Fallunterscheidung Flussdiagramm Bedingungen Boolesche

Mehr

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1 Fachhochschule Stralsund Fachbereich Maschinenbau Lehrgebiet Informatik Prof. Dr.-Ing. Ch.Wahmkow Arbeitsblätter für die Lehrveranstaltung OOP I. Aufbau eines Java-Programmes JAVA 1 Escape-Sequenzen zur

Mehr

Java: Eine kurze Einführung an Beispielen

Java: Eine kurze Einführung an Beispielen Java: Eine kurze Einführung an Beispielen Quellcode, javac und die JVM Der Quellcode eines einfachen Java-Programms besteht aus einer Datei mit dem Suffix.java. In einer solchen Datei wird eine Klasse

Mehr

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

Prof. H. Herbstreith Fachbereich Informatik. Leistungsnachweis. Informatik 1 WS 2001/2002 Prof. H. Herbstreith 30.01.2002 Fachbereich Informatik Leistungsnachweis Informatik 1 WS 2001/2002 Bearbeitungszeit 120 Minuten. Keine Hilfsmittel erlaubt. Aufgabe 1: 20 Punkte Vervollständigen Sie folgende

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Eigene Entwicklungen Datenstrukturen Elementare Datentypen Abstrakte Datentypen Elementare

Mehr

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Speicherverwaltung und Parameterübergabe Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Gültigkeitsbereich von

Mehr

2. Unterprogramme und Methoden

2. Unterprogramme und Methoden 2. Unterprogramme und Methoden Durch Methoden wird ausführbarer Code unter einem Namen zusammengefasst. Dieser Code kann unter Verwendung von sogenannten Parametern formuliert sein, denen später beim Aufruf

Mehr

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen Themen der Übung 1 Organisatorisches Methoden und Wrapperklassen 2 Methoden 3 Wrapper-Klassen CoMa-Übung IV TU Berlin 07.11.2012 Organisatorisches: Im Pool nur auf die Abgabeliste setzen, wenn ihr wirklich

Mehr

4.4 Imperative Algorithmen Prozeduren

4.4 Imperative Algorithmen Prozeduren 4.4.2 Prozeduren Der Wert eines Ausdrucks u in Zustand z Z lässt sich damit auch leicht definieren (jetzt W Z statt W σ ) Dazu erweitern wir die rekursive Definition von Folie 57 (Wert eines Ausdrucks):

Mehr

Methoden und Wrapperklassen

Methoden und Wrapperklassen Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)

Mehr

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 8. September 2014 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Abschnitt 2: Daten und Algorithmen

Abschnitt 2: Daten und Algorithmen Abschnitt 2: Daten und Algorithmen 2. Daten und Algorithmen 2.1 Zeichenreihen 2.2 Datendarstellung durch Zeichenreihen 2.3 Syntaxdefinitionen 2.4 Algorithmen 2 Daten und Algorithmen Einf. Progr. (WS 08/09)

Mehr

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 12. März 2014 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr Studiengang:

Mehr

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

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 - 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

Mehr

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4 Folienpaket 7 Themenschwerpunkte: Methoden in OOP 284 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4 Eine Klasse entwerfen Eine Klasse enthält folgende Information: Name der Klasse (ist auch der

Mehr

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen Willkommen zur Vorlesung Algorithmen und Datenstrukturen Mein Name: Andreas Berndt Zum Dozenten Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen Derzeitige Sprachen:

Mehr

7. Übung Informatik II - Objektorientierte Programmierung

7. Übung Informatik II - Objektorientierte Programmierung 7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber

Mehr

Praktische Informatik I

Praktische Informatik I Praktische Informatik I WS 2005/2005 Prof. Dr. Wolfgang Effelsberg Lehrstuhl für Praktische Informatik IV Universität Mannheim 1. Einführung 1-1 Inhaltsverzeichnis (1) 1. Einführung 1.1 Was ist Informatik?

Mehr

Algorithmen implementieren. Implementieren von Algorithmen

Algorithmen implementieren. Implementieren von Algorithmen Algorithmen implementieren Implementieren von Algorithmen Um Algorithmen ablaufen zu lassen, muss man sie als Programm darstellen (d.h. implementieren) Wie stellt man die algorithmischen Strukturelemente

Mehr

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr Organisatorisches Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, 14.10., 14 Uhr bis Do, 23.10., 8Uhr. 14.10.2014 IT I - VO 1 1 IT I: Heute Wiederholung CuP ctd: this Arrays, ArrayLists Schleifen:

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen 1 Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Ziele 2 Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

Einführung in die Programmierung mit VBA

Einführung in die Programmierung mit VBA Einführung in die Programmierung mit VBA Vorlesung vom 07. November 2016 Birger Krägelin Inhalt Vom Algorithmus zum Programm Programmiersprachen Programmieren mit VBA in Excel Datentypen und Variablen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 18 Einstieg in die Informatik mit Java Klassenvariablen, Klassenmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 18 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 04: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:

Mehr

Ursprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java

Ursprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java Ursprünge Die Syntax von Java Borland Software Corp 1995 Syntax: Pascal Objektorientierte Prorammierung optional Plattformen: Windows (Linux, Mac OS X) Sun Microsystems 1995 Syntax: C/C++ Objektorientiert

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 24 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 24 1 Klassen als Datenstruktur 2 Vereinbarung von

Mehr

Einführung in die Programmierung 1

Einführung in die Programmierung 1 Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener

Mehr

Test-Klausuraufgaben Softwaretechnik Fachbereich BW, für WINFO

Test-Klausuraufgaben Softwaretechnik Fachbereich BW, für WINFO Test-Klausuraufgaben Softwaretechnik Fachbereich BW, für WINFO Dipl.-Ing. Klaus Knopper 21.12.2006 Hinweis: Bitte schreiben Sie auf das Deckblatt und auf jede Seite Ihren Namen und Ihre Matrikelnummer,

Mehr

Vorkurs Informatik WiSe 17/18

Vorkurs Informatik WiSe 17/18 Java Einführung Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 04.10.2017 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello World 04.10.2017 Dr. Werner Struckmann

Mehr

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3. Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50 Organisatorisches Vorlesung Donnerstag 8:35 bis 10:05 Übung drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50 Tutorium (Mehr oder weniger) abwechselnd Mo und Mi 10-11:30 Termine

Mehr

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

1 Aufgaben 1.1 Objektorientiert: (extended-hamster) Sammel-Hamster 1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster Aufgabe: Bearbeitungszeit: ca. 1/4 Std) Schreiben Sie ein "objektorientiertes" Programm ("CuB_05_1") für das Sammeln der Körner. Aufgabenbeschreibung:

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 47 Einstieg in die Informatik mit Java Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 47 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung,

Mehr

JAVA-Datentypen und deren Wertebereich

JAVA-Datentypen und deren Wertebereich Folge 8 Variablen & Operatoren JAVA 8.1 Variablen JAVA nutzt zum Ablegen (Zwischenspeichern) von Daten Variablen. (Dies funktioniert wie beim Taschenrechner. Dort können Sie mit der Taste eine Zahl zwischenspeichern).

Mehr

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Java Einführung Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 04.10.2016 Technische Universität Braunschweig, IPS Überblick Organisatorisches Hello! 04.10.2016 Dr. Werner Struckmann / Stephan Mielke,

Mehr

Elementare Konzepte von

Elementare Konzepte von Elementare Konzepte von Programmiersprachen Teil 2: Anweisungen (Statements) Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Anweisungen (statements) in Java Berechnung (expression statement)

Mehr

Java Einführung Klassendefinitionen

Java Einführung Klassendefinitionen Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse

Mehr

Grundlagen der Informatik I (Studiengang Medieninformatik)

Grundlagen der Informatik I (Studiengang Medieninformatik) Grundlagen der Informatik I (Studiengang Medieninformatik) Thema: 3. Datentypen, Datenstrukturen und imperative Programme Prof. Dr. S. Kühn Fachbereich Informatik/Mathematik Email: skuehn@informatik.htw-dresden.de

Mehr

Die Syntax von Java. Ursprünge. Konsequenzen. Das Wichtigste in Kürze. Weiteres Vorgehen. Rund um Java. Sun Microsystems. Borland Software Corp

Die Syntax von Java. Ursprünge. Konsequenzen. Das Wichtigste in Kürze. Weiteres Vorgehen. Rund um Java. Sun Microsystems. Borland Software Corp Ursprünge Die Syntax von Java Borland Software Corp 1995 Syntax: Pascal Objektorientierte Prorammierung optional Plattformen: Windows (Linux, Mac OS X) Sun Microsystems 1995 Syntax: C/C++ Objektorientiert

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG GRUNDLAGEN Tobias Witt!! 24.03.2014 ORGANISATORISCHES 09:00-10:30! Täglich Übungen zur Vertiefung! Laptop hier nicht erforderlich! Linux, OS X! Freitag: http://hhu-fscs.de/linux-install-party/

Mehr

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22 C++ Teil 2 Sven Groß IGPM, RWTH Aachen 16. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 2 16. Apr 2015 1 / 22 Themen der letzten Vorlesung Hallo Welt Elementare Datentypen Ein-/Ausgabe Operatoren Sven

Mehr

Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2

Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2 Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2 Neben vector ist list die zweite wichtige Containerklasse. Um unsere Kenntnisse von Containerklassen zu erweitern,

Mehr

Programmieren I + II Regeln der Code-Formatierung

Programmieren I + II Regeln der Code-Formatierung Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme WS 2012/2013, SS 2013 Programmieren I + II Regeln der Code-Formatierung Die hier vorgestellten

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

JAVA - Methoden

JAVA - Methoden Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 sind eine Zusammenfassung von Deklarationen und Anweisungen haben einen Namen und können

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 25.4.07, Anweisungen Übersicht 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung, Vorbereitungen 4 Verbundanweisung 5 Bedingte Anweisung 6 Auswahlanweisung 7 for

Mehr

Programmieren I + II Regeln der Code-Formatierung

Programmieren I + II Regeln der Code-Formatierung Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme WS 2016/2017, SS 2017 Programmieren I + II Regeln der Code-Formatierung In diesem Dokument finden

Mehr

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7. CoMa 04 Java II Paul Boeck Humboldt Universität zu Berlin Institut für Mathematik 7. Mai 2013 Paul Boeck CoMa 04 7. Mai 2013 1 / 13 Verzweigungen Wenn-Dann Beziehungen if (BEDINGUNG) { else if (BEDINGUNG2)

Mehr

Einführung in die Informatik I (autip)

Einführung in die Informatik I (autip) Einführung in die Informatik I (autip) Dr. Stefan Lewandowski Fakultät 5: Informatik, Elektrotechnik und Informationstechnik Abteilung Formale Konzepte Universität Stuttgart 24. Oktober 2007 Was Sie bis

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Christian-Albrechts-Universität zu Kiel CAU 8-1 Objektorientiertes Programmieren Die Programme, die bisher in diesem Kurs verwendet wurden, sind alle klein und überschaubar

Mehr

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen 1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.2 Methoden, Unterprogramme und Parameter - 1 - 2. Methoden

Mehr

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand Übungsblatt 7 Besprechung: 4. 8.12.2017 (KW 49) Vorbereitende

Mehr

Einführung in C. EDV1-04C-Einführung 1

Einführung in C. EDV1-04C-Einführung 1 Einführung in C 1 Helmut Erlenkötter C Programmieren von Anfang an Rowohlt Taschenbuch Verlag ISBN 3-4993 499-60074-9 19,90 DM http://www.erlenkoetter.de Walter Herglotz Das Einsteigerseminar C++ bhv Verlags

Mehr

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

Mehr

Fragenkatalog ESOP WS 16/17

Fragenkatalog ESOP WS 16/17 Fragenkatalog ESOP WS 16/17 1. Einleitung 1.1 Was ist Programmieren? 1.2 Was ist ein Programm? 1.3 Welche Schritte werden bei der Programmerstellung benötigt? 1.4 Was ist ein Algorithmus? 1.5 Was sind

Mehr

JAVA - Methoden - Rekursion

JAVA - Methoden - Rekursion Übungen Informatik I JAVA - Methoden - Rekursion http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 1 Methoden Methoden sind eine Zusammenfassung von Deklarationen und Anweisungen

Mehr