Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Einführung in die Programmierung Vorlesungsteil 1 Einführung und erste Schritte PD Dr. Thomas Hinze Brandenburgische Technische Universität Cottbus – Senftenberg Institut für Informatik, Informations- und Medientechnik Sommersemester 2016 Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Java: eine der verbreitetsten Programmiersprachen Quelle: TIOBE Index, www.tiobe.com Einführung in die Programmierung Marktanteil von Java: ca. 20.5% Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Einige Fakten zu Java Java−Logo (www.oracle.com) • 1995 eingeführt, schnell Duke als internetfähige Sprache akzeptiert und etabliert Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Einige Fakten zu Java Java−Logo (www.oracle.com) • 1995 eingeführt, schnell als internetfähige Sprache akzeptiert und etabliert • 3.5 Milliarden Mobiltelefone und mehr als Quelle: Christian Ullenboom. Java ist auch eine Insel. 10. Auflage. Galileo Computing, 2014 Einführung in die Programmierung Duke eine Milliarde Arbeitsplatzcomputer führen Java-Programme aus (2014). Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Einige Fakten zu Java Java−Logo (www.oracle.com) • 1995 eingeführt, schnell als internetfähige Sprache akzeptiert und etabliert • 3.5 Milliarden Mobiltelefone und mehr als eine Milliarde Arbeitsplatzcomputer führen Java-Programme aus (2014). • Etwa 9 Millionen Softwareentwickler Quelle: Christian Ullenboom. Java ist auch eine Insel. 10. Auflage. Galileo Computing, 2014 Einführung in die Programmierung Duke weltweit arbeiten primär mit Java. Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Einige Fakten zu Java Java−Logo (www.oracle.com) • 1995 eingeführt, schnell als internetfähige Sprache akzeptiert und etabliert • 3.5 Milliarden Mobiltelefone und mehr als eine Milliarde Arbeitsplatzcomputer führen Java-Programme aus (2014). • Etwa 9 Millionen Softwareentwickler weltweit arbeiten primär mit Java. • Mehr als 3000 vorgefertigte Klassen: Quelle: Christian Ullenboom. Java ist auch eine Insel. 10. Auflage. Galileo Computing, 2014 Einführung in die Programmierung Duke umfangreiche anwendungsfertige Quelltextbibliotheken sparen viel Programmierarbeit Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Einige Fakten zu Java Java−Logo (www.oracle.com) • 1995 eingeführt, schnell als internetfähige Sprache akzeptiert und etabliert • 3.5 Milliarden Mobiltelefone und mehr als eine Milliarde Arbeitsplatzcomputer führen Java-Programme aus (2014). • Etwa 9 Millionen Softwareentwickler weltweit arbeiten primär mit Java. • Mehr als 3000 vorgefertigte Klassen: umfangreiche anwendungsfertige Quelltextbibliotheken sparen viel Programmierarbeit • Java zunächst von Sun Microsystems Einführung in die Programmierung Duke vermarktet, 2010 von Oracle übernommen Quelle: Christian Ullenboom. Java ist auch eine Insel. 10. Auflage. Galileo Computing, 2014 Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Java ist . . . Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Java ist . . . plattformunabhaengig Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Java ist . . . objektorientiert plattformunabhaengig Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Java ist . . . objektorientiert plattformunabhaengig robust und sicher Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Java ist . . . objektorientiert leicht erlernbar plattformunabhaengig robust und sicher Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Java ist . . . objektorientiert leicht erlernbar plattformunabhaengig kompakt im Sprachumfang robust und sicher Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Java ist . . . objektorientiert leicht erlernbar plattformunabhaengig interpretierbar kompakt im Sprachumfang robust und sicher Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Java ist . . . objektorientiert grossprojektgeeignet leicht erlernbar plattformunabhaengig interpretierbar kompakt im Sprachumfang robust und sicher Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Java ist . . . objektorientiert parallelisierbar grossprojektgeeignet leicht erlernbar plattformunabhaengig interpretierbar kompakt im Sprachumfang robust und sicher Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Java ist . . . objektorientiert parallelisierbar grossprojektgeeignet leicht erlernbar plattformunabhaengig interpretierbar kompakt im Sprachumfang etabliert Einführung in die Programmierung robust und sicher Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Software, größtenteils in Java geschrieben Google Gmail Eclipse Entwicklungsumgebung MatLab GUI Einführung in die Programmierung Blue Ray Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Die 51 Schlüsselwörter von Java Java als kompakte Programmiersprache abstract boolean break byte case cast catch char class const continue default do double else extends final finally float for if implements import instanceof int interface long native new null operator outer package private protected public rest return short static super switch synchronized this throw throws transient try var void while ergänzt durch vorbelegte Bezeichner (z.B. main) und Operatoren wie < Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Webseite http://www.informatik.tu-cottbus.de/∼hinzet/eidp-sose16/ • Ankündigungen (z.B. Klausurtermine) • Übungsblätter und hilfreiche Links • Downloadmaterial Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Orga ganz kurz https://www.tu-cottbus.de/elearning/btu • Bitte im Laufe dieser Woche im Moodle für eine Laborübungsgruppe anmelden • Ab 11.04. drei Veranstaltungen jede Woche: Vorlesung, Hörsaalübung, Laborübung • Alle weiteren Organisationsdetails nächste Woche in der Hörsaalübung Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Vorlesung Einführung in die Programmierung mit Java 1. Einführung und erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Installation Java-Compiler, ein erstes Programm: HalloWelt, Blick in den Computer Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Vorlesung Einführung in die Programmierung mit Java 1. Einführung und erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Installation Java-Compiler, ein erstes Programm: HalloWelt, Blick in den Computer 2. Elementare Datentypen, Variablen, Arithmetik, Typecast . . . . . . . . . . . . . . . . . . . . . . . . Java als Taschenrechner nutzen, Tastatureingabe → Formelberechnung → Ausgabe Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Vorlesung Einführung in die Programmierung mit Java 1. Einführung und erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Installation Java-Compiler, ein erstes Programm: HalloWelt, Blick in den Computer 2. Elementare Datentypen, Variablen, Arithmetik, Typecast . . . . . . . . . . . . . . . . . . . . . . . . Java als Taschenrechner nutzen, Tastatureingabe → Formelberechnung → Ausgabe 3. Imperative Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Befehlsfolgen, Verzweigungen, Schleifen und logische Ausdrücke programmieren Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Vorlesung Einführung in die Programmierung mit Java 1. Einführung und erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Installation Java-Compiler, ein erstes Programm: HalloWelt, Blick in den Computer 2. Elementare Datentypen, Variablen, Arithmetik, Typecast . . . . . . . . . . . . . . . . . . . . . . . . Java als Taschenrechner nutzen, Tastatureingabe → Formelberechnung → Ausgabe 3. Imperative Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Befehlsfolgen, Verzweigungen, Schleifen und logische Ausdrücke programmieren 4. Methoden selbst programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Methoden als wiederverwendbare Funktionen, Werteübernahme und -rückgabe Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Vorlesung Einführung in die Programmierung mit Java 1. Einführung und erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Installation Java-Compiler, ein erstes Programm: HalloWelt, Blick in den Computer 2. Elementare Datentypen, Variablen, Arithmetik, Typecast . . . . . . . . . . . . . . . . . . . . . . . . Java als Taschenrechner nutzen, Tastatureingabe → Formelberechnung → Ausgabe 3. Imperative Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Befehlsfolgen, Verzweigungen, Schleifen und logische Ausdrücke programmieren 4. Methoden selbst programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Methoden als wiederverwendbare Funktionen, Werteübernahme und -rückgabe 5. Rekursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selbstaufrufende Funktionen als elegantes algorithmisches Beschreibungsmittel Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Vorlesung Einführung in die Programmierung mit Java 1. Einführung und erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Installation Java-Compiler, ein erstes Programm: HalloWelt, Blick in den Computer 2. Elementare Datentypen, Variablen, Arithmetik, Typecast . . . . . . . . . . . . . . . . . . . . . . . . Java als Taschenrechner nutzen, Tastatureingabe → Formelberechnung → Ausgabe 3. Imperative Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Befehlsfolgen, Verzweigungen, Schleifen und logische Ausdrücke programmieren 4. Methoden selbst programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Methoden als wiederverwendbare Funktionen, Werteübernahme und -rückgabe 5. Rekursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selbstaufrufende Funktionen als elegantes algorithmisches Beschreibungsmittel 6. Objektorientiert programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Klassen, Objekte, Attribute, Methoden, Sichtbarkeit, Vererbung, Polymorphie Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Vorlesung Einführung in die Programmierung mit Java 1. Einführung und erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Installation Java-Compiler, ein erstes Programm: HalloWelt, Blick in den Computer 2. Elementare Datentypen, Variablen, Arithmetik, Typecast . . . . . . . . . . . . . . . . . . . . . . . . Java als Taschenrechner nutzen, Tastatureingabe → Formelberechnung → Ausgabe 3. Imperative Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Befehlsfolgen, Verzweigungen, Schleifen und logische Ausdrücke programmieren 4. Methoden selbst programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Methoden als wiederverwendbare Funktionen, Werteübernahme und -rückgabe 5. Rekursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selbstaufrufende Funktionen als elegantes algorithmisches Beschreibungsmittel 6. Objektorientiert programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Klassen, Objekte, Attribute, Methoden, Sichtbarkeit, Vererbung, Polymorphie 7. Felder und Graphen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .effizientes Handling größerer Datenmengen und Beschreibung von Netzwerken Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Vorlesung Einführung in die Programmierung mit Java 1. Einführung und erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Installation Java-Compiler, ein erstes Programm: HalloWelt, Blick in den Computer 2. Elementare Datentypen, Variablen, Arithmetik, Typecast . . . . . . . . . . . . . . . . . . . . . . . . Java als Taschenrechner nutzen, Tastatureingabe → Formelberechnung → Ausgabe 3. Imperative Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Befehlsfolgen, Verzweigungen, Schleifen und logische Ausdrücke programmieren 4. Methoden selbst programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Methoden als wiederverwendbare Funktionen, Werteübernahme und -rückgabe 5. Rekursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selbstaufrufende Funktionen als elegantes algorithmisches Beschreibungsmittel 6. Objektorientiert programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Klassen, Objekte, Attribute, Methoden, Sichtbarkeit, Vererbung, Polymorphie 7. Felder und Graphen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .effizientes Handling größerer Datenmengen und Beschreibung von Netzwerken 8. Sortieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . klassische Sortierverfahren im Überblick, Laufzeit und Speicherplatzbedarf Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Vorlesung Einführung in die Programmierung mit Java 1. Einführung und erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Installation Java-Compiler, ein erstes Programm: HalloWelt, Blick in den Computer 2. Elementare Datentypen, Variablen, Arithmetik, Typecast . . . . . . . . . . . . . . . . . . . . . . . . Java als Taschenrechner nutzen, Tastatureingabe → Formelberechnung → Ausgabe 3. Imperative Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Befehlsfolgen, Verzweigungen, Schleifen und logische Ausdrücke programmieren 4. Methoden selbst programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Methoden als wiederverwendbare Funktionen, Werteübernahme und -rückgabe 5. Rekursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selbstaufrufende Funktionen als elegantes algorithmisches Beschreibungsmittel 6. Objektorientiert programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Klassen, Objekte, Attribute, Methoden, Sichtbarkeit, Vererbung, Polymorphie 7. Felder und Graphen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .effizientes Handling größerer Datenmengen und Beschreibung von Netzwerken 8. Sortieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . klassische Sortierverfahren im Überblick, Laufzeit und Speicherplatzbedarf 9. Zeichenketten, Dateiarbeit, Ausnahmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Texte analysieren, ver-/entschlüsseln, Dateien lesen/schreiben, Fehler behandeln Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Vorlesung Einführung in die Programmierung mit Java 1. Einführung und erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Installation Java-Compiler, ein erstes Programm: HalloWelt, Blick in den Computer 2. Elementare Datentypen, Variablen, Arithmetik, Typecast . . . . . . . . . . . . . . . . . . . . . . . . Java als Taschenrechner nutzen, Tastatureingabe → Formelberechnung → Ausgabe 3. Imperative Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Befehlsfolgen, Verzweigungen, Schleifen und logische Ausdrücke programmieren 4. Methoden selbst programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Methoden als wiederverwendbare Funktionen, Werteübernahme und -rückgabe 5. Rekursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selbstaufrufende Funktionen als elegantes algorithmisches Beschreibungsmittel 6. Objektorientiert programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Klassen, Objekte, Attribute, Methoden, Sichtbarkeit, Vererbung, Polymorphie 7. Felder und Graphen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .effizientes Handling größerer Datenmengen und Beschreibung von Netzwerken 8. Sortieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . klassische Sortierverfahren im Überblick, Laufzeit und Speicherplatzbedarf 9. Zeichenketten, Dateiarbeit, Ausnahmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Texte analysieren, ver-/entschlüsseln, Dateien lesen/schreiben, Fehler behandeln 10. Dynamische Datenstruktur „Lineare Liste“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . unsere selbstprogrammierte kleine Datenbank Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Vorlesung Einführung in die Programmierung mit Java 1. Einführung und erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Installation Java-Compiler, ein erstes Programm: HalloWelt, Blick in den Computer 2. Elementare Datentypen, Variablen, Arithmetik, Typecast . . . . . . . . . . . . . . . . . . . . . . . . Java als Taschenrechner nutzen, Tastatureingabe → Formelberechnung → Ausgabe 3. Imperative Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Befehlsfolgen, Verzweigungen, Schleifen und logische Ausdrücke programmieren 4. Methoden selbst programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Methoden als wiederverwendbare Funktionen, Werteübernahme und -rückgabe 5. Rekursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . selbstaufrufende Funktionen als elegantes algorithmisches Beschreibungsmittel 6. Objektorientiert programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Klassen, Objekte, Attribute, Methoden, Sichtbarkeit, Vererbung, Polymorphie 7. Felder und Graphen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .effizientes Handling größerer Datenmengen und Beschreibung von Netzwerken 8. Sortieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . klassische Sortierverfahren im Überblick, Laufzeit und Speicherplatzbedarf 9. Zeichenketten, Dateiarbeit, Ausnahmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Texte analysieren, ver-/entschlüsseln, Dateien lesen/schreiben, Fehler behandeln 10. Dynamische Datenstruktur „Lineare Liste“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . unsere selbstprogrammierte kleine Datenbank 11. Ausblick und weiterführende Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Literatur: Wikibook Java Programming https://de.wikibooks.org/wiki/Kurzeinstieg_Java =⇒ kostenfrei, gut verständlich, klar gegliedert, viele Beispiele, praxisnah Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Vertiefend: Galileo/Rheinwerk openbook Java http://openbook.rheinwerk-verlag.de/javainsel/ =⇒ nützliche Praxistipps, themenübergreifende Beispiele, Wissensspeicher Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Noch zwei „klassische“ Bücher M. Hölzl, A. Raed, M. Wirsing Java kompakt Eine Einführung in die Software-Entwicklung mit Java Springer-Verlag 2013 ISBN 978-3-642-28504-2 =⇒ Via http://link.springer.com von IP-Adressen der BTU kostenfrei als pdf herunterladbar Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Noch zwei „klassische“ Bücher M. Hölzl, A. Raed, M. Wirsing Java kompakt Eine Einführung in die Software-Entwicklung mit Java Springer-Verlag 2013 ISBN 978-3-642-28504-2 =⇒ Via http://link.springer.com von IP-Adressen der BTU kostenfrei als pdf herunterladbar J. Goll, C. Heinisch Java als erste Programmiersprache Ein professioneller Einstieg in die Objektorientierung mit Java Springer-Verlag, 7. Auflage 2014 ISBN 978-3-8348-2270-3 Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Vorbereitungen Um eigene Java-Programme schreiben und ausführen zu können, brauchen wir als Software-Grundausstattung • einen Texteditor (Empfehlung: Notepad++) Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Vorbereitungen Um eigene Java-Programme schreiben und ausführen zu können, brauchen wir als Software-Grundausstattung • einen Texteditor (Empfehlung: Notepad++) • das Java Software Development Kit (JDK) mit dem Java-Compiler javac Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Vorbereitungen Um eigene Java-Programme schreiben und ausführen zu können, brauchen wir als Software-Grundausstattung • einen Texteditor (Empfehlung: Notepad++) • das Java Software Development Kit (JDK) mit dem Java-Compiler javac • (oder alternativ die integrierte Java-Entwicklungsumgebung Eclipse) Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Vorbereitungen Um eigene Java-Programme schreiben und ausführen zu können, brauchen wir als Software-Grundausstattung • einen Texteditor (Empfehlung: Notepad++) • das Java Software Development Kit (JDK) mit dem Java-Compiler javac • (oder alternativ die integrierte Java-Entwicklungsumgebung Eclipse) • die Java-Laufzeitumgebung mit der Java Virtual Machine zum Ausführen compilierter Java-Programme Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Vorbereitungen Um eigene Java-Programme schreiben und ausführen zu können, brauchen wir als Software-Grundausstattung • einen Texteditor (Empfehlung: Notepad++) • das Java Software Development Kit (JDK) mit dem Java-Compiler javac • (oder alternativ die integrierte Java-Entwicklungsumgebung Eclipse) • die Java-Laufzeitumgebung mit der Java Virtual Machine zum Ausführen compilierter Java-Programme =⇒ Java-Laufzeitumgebung auf handelsüblichen Laptops meist schon vorinstalliert Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Notepad++ zum Eingeben der Programmquelltexte http://www.notepad-plus-plus.org flexibler Unicode-fähiger Editor mit Syntax-Hervorhebung Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Java Virtual Machine (JVM) installiert? 1. Ein Terminal-Fenster öffnen (heißt in Windows: Eingabeaufforderung) 2. Eingeben: java -version 3. Bildschirmausschrift anschauen Wird eine Versionsnummer angezeigt, ist JVM schon installiert Ansonsten erscheint eine Fehlermeldung. Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Java Software Development Kit (JDK) installiert? Dazu im Terminal-Fenster eingeben: javac -version • Erscheint Fehlermeldung, JDK installieren • JDK beinhaltet auch die Java Virtual Machine Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen JDK frei herunterladbar http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads2133151.html Auswahlempfehlung: Java SE („Standard Edition“) Development Kit Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Installation • Heruntergeladenes Installationsprogramm starten (Windows, Mac) • Wunschverzeichnis angeben bzw. Vorschlag akzeptieren • Der Umgebungsvariablen PATH den Verzeichnispfad, in welchem die Anwendungen java und javac stehen, hinzufügen (Windows) • Terminal-Fenster schließen und neu öffnen Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Ein erstes Java-Programm Im Texteditor eingeben und als HalloWelt.java speichern: • Terminal-Fenster öffnen und in das Verzeichnis wechseln, in welchem HalloWelt.java liegt (Kommando cd „change directory“ navigiert in nächsttieferes Verzeichnis) • Compilieren durch javac HalloWelt.java • Dadurch entsteht neue Datei HalloWelt.class • Ausführen dieser Datei durch java HalloWelt Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main(String[] args) { System.out.println("Hallo Welt!"); } } • Jede Java-Quelltextdatei besteht aus einer oder mehrerer Klassen, gekennzeichnet durch das Schlüsselwort class. • Eine Klasse ist ein Beschreibungsrahmen für zusammengehörige Daten und Werkzeuge (Methoden), die auf diesen Daten operieren. • Szenarien aus der realen oder gedachten Welt lassen sich durch Klassen vereinfacht computergerecht beschreiben. Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Beispiel: Eine Kaffeetasse als Klasse gesehen Kaffeetasse Klasse in Java Daten: enthaltenes Kaffeevolumen in Kubikzentimeter Kapazitaet in Kubikzentimeter Werkzeuge (Methoden): eingiessen (bestimmtes Volumen) trinken (bestimmtes Volumen) testen auf leere Tasse Durch eingiessen oder trinken verändert sich das Kaffeevolumen in der Tasse Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main(String[] args) { System.out.println("Hallo Welt!"); } } • Unsere Klasse heißt HalloWelt. Klassennamen kann man (nahezu) frei wählen. Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main(String[] args) { System.out.println("Hallo Welt!"); } } • Unsere Klasse heißt HalloWelt. Klassennamen kann man (nahezu) frei wählen. • Quelltextdatei heißt wie die Klasse: HalloWelt.java Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main(String[] args) { System.out.println("Hallo Welt!"); } } • Unsere Klasse heißt HalloWelt. Klassennamen kann man (nahezu) frei wählen. • Quelltextdatei heißt wie die Klasse: HalloWelt.java • Die Beschreibung der Daten und Methoden in der Klasse wird durch geschweifte Klammern { und } außen umschlossen. Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main(String[] args) { System.out.println("Hallo Welt!"); } } • Unsere Klasse heißt HalloWelt. Klassennamen kann man (nahezu) frei wählen. • Quelltextdatei heißt wie die Klasse: HalloWelt.java • Die Beschreibung der Daten und Methoden in der Klasse wird durch geschweifte Klammern { und } außen umschlossen. • Andere Klassen (die es in einem größeren Java-Programm geben könnte, aber in unserem Beispiel nicht gibt) dürfen auf die Klasse HalloWelt zugreifen und z.B. Methoden daraus nutzen. Unsere Klasse ist somit öffentlich, gekennzeichnet durch: public Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main (String[] args) { System.out.println("Hallo Welt!"); } } • In einer Klasse können Methoden definiert werden. Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main (String[] args) { System.out.println("Hallo Welt!"); } } • In einer Klasse können Methoden definiert werden. • In jedem Java-Programm gibt es genau eine Methode, die main heißt. Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main (String[] args) { System.out.println("Hallo Welt!"); } } • In einer Klasse können Methoden definiert werden. • In jedem Java-Programm gibt es genau eine Methode, die main heißt. • Die main-Methode wird bei Aufruf des Java-Programms zuerst ausgeführt. Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main (String[] args) { System.out.println("Hallo Welt!"); } } • In einer Klasse können Methoden definiert werden. • In jedem Java-Programm gibt es genau eine Methode, die main heißt. • Die main-Methode wird bei Aufruf des Java-Programms zuerst ausgeführt. • Dadurch hat man einen klar definierten Anfangspunkt der Programmausführung, von dem ausgehend dann nach und nach weitere Methoden aufgerufen werden können. Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main (String[] args){ System.out.println("Hallo Welt!"); } } • Bei Aufruf eines Java-Programms im Terminal-Fenster können Zeichenketten (engl. strings) durch Leerzeichen getrennt als Parameter an die main-Methode übergeben werden, z.B. durch den Programmaufruf: java HalloWelt 5432.1 4711 Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main (String[] args){ System.out.println("Hallo Welt!"); } } • Bei Aufruf eines Java-Programms im Terminal-Fenster können Zeichenketten (engl. strings) durch Leerzeichen getrennt als Parameter an die main-Methode übergeben werden, z.B. durch den Programmaufruf: java HalloWelt 5432.1 4711 • Diese Zeichenketten stehen dann in der main-Methode zur Verfügung in der Variablen args und können weiterverarbeitet werden, was aber in unserem Programm nicht geschieht. Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main (String[] args){ System.out.println("Hallo Welt!"); } } • Bei Aufruf eines Java-Programms im Terminal-Fenster können Zeichenketten (engl. strings) durch Leerzeichen getrennt als Parameter an die main-Methode übergeben werden, z.B. durch den Programmaufruf: java HalloWelt 5432.1 4711 • Diese Zeichenketten stehen dann in der main-Methode zur Verfügung in der Variablen args und können weiterverarbeitet werden, was aber in unserem Programm nicht geschieht. • Man kann jede Methode als eine Funktion im Sinne der Mathematik auffassen, der die Argumente in runden Klammern übergeben werden, z.B. f(x) = x 2 , berechne f(2). Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main (String[] args){ System.out.println("Hallo Welt!"); } } • Die main-Methode darf von außerhalb der Klasse HalloWelt uneingeschränkt aufgerufen werden und ist daher public. Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main (String[] args){ System.out.println("Hallo Welt!"); } } • Die main-Methode darf von außerhalb der Klasse HalloWelt uneingeschränkt aufgerufen werden und ist daher public. • Von der main-Methode und ihren lokalen Parametern gibt es stets nur ein Exemplar, das im Speicher gehalten werden muss. Daher kann die Speicherverwaltung hier verschlankt werden und braucht nicht dynamisch für mehrere Methodenexemplare ausgelegt zu sein, deshalb wird sie als static markiert. Die main-Methode muss zwingend static sein. Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main (String[] args){ System.out.println("Hallo Welt!"); } } • Die main-Methode darf von außerhalb der Klasse HalloWelt uneingeschränkt aufgerufen werden und ist daher public. • Von der main-Methode und ihren lokalen Parametern gibt es stets nur ein Exemplar, das im Speicher gehalten werden muss. Daher kann die Speicherverwaltung hier verschlankt werden und braucht nicht dynamisch für mehrere Methodenexemplare ausgelegt zu sein, deshalb wird sie als static markiert. Die main-Methode muss zwingend static sein. • Die main-Methode liefert keinen Funktionswert zurück, was durch void (engl. für Leere) ausgedrückt wird. Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main (String[] args){ System.out.println("Hallo Welt!"); } } • Der Methodenrumpf wird in geschweifte Klammern { gesetzt. Einführung in die Programmierung } Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main (String[] args){ System.out.println("Hallo Welt!"); } } • Der Methodenrumpf wird in geschweifte Klammern { gesetzt. } • Dort Schritt für Schritt beschrieben, was die Methode tun soll. Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main (String[] args){ System.out.println("Hallo Welt!"); } } • Der Methodenrumpf wird in geschweifte Klammern { gesetzt. } • Dort Schritt für Schritt beschrieben, was die Methode tun soll. • Guter Stil: Programmblöcke zwischen { und } einrücken. Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main (String[] args){ System.out.println("Hallo Welt!"); } } • Der Methodenrumpf wird in geschweifte Klammern { gesetzt. } • Dort Schritt für Schritt beschrieben, was die Methode tun soll. • Guter Stil: Programmblöcke zwischen { und } einrücken. • Runde Klammern ( Einführung in die Programmierung ) für Argumente, geschweifte für Blöcke. Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main (String[] args){ System.out.println("Hallo Welt!"); } } • In der zur Java Standard Edition gehörenden Klassenbibliothek System.out gibt es die vorgefertigte Methode println (print line) zur Ausgabe einer Zeichenkette mit abschließendem Zeilenumbruch im Terminal-Fenster. Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main (String[] args){ System.out.println("Hallo Welt!"); } } • In der zur Java Standard Edition gehörenden Klassenbibliothek System.out gibt es die vorgefertigte Methode println (print line) zur Ausgabe einer Zeichenkette mit abschließendem Zeilenumbruch im Terminal-Fenster. • Wir rufen diese Methode auf und übergeben ihr als Argument die auszugebende Zeichenkette. Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main (String[] args){ System.out.println("Hallo Welt!"); } } • In der zur Java Standard Edition gehörenden Klassenbibliothek System.out gibt es die vorgefertigte Methode println (print line) zur Ausgabe einer Zeichenkette mit abschließendem Zeilenumbruch im Terminal-Fenster. • Wir rufen diese Methode auf und übergeben ihr als Argument die auszugebende Zeichenkette. • Beginn und Ende der Zeichenkette werden durch Anführungszeichen ” ” gekennzeichnet. Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Den Aufbau des Programmquelltextes verstehen public class HalloWelt { public static void main (String[] args){ System.out.println("Hallo Welt!"); } } • In der zur Java Standard Edition gehörenden Klassenbibliothek System.out gibt es die vorgefertigte Methode println (print line) zur Ausgabe einer Zeichenkette mit abschließendem Zeilenumbruch im Terminal-Fenster. • Wir rufen diese Methode auf und übergeben ihr als Argument die auszugebende Zeichenkette. • Beginn und Ende der Zeichenkette werden durch Anführungszeichen ” ” gekennzeichnet. • Am Ende jeder Anweisung im Methodenrumpf bzw. innerhalb eines Blocks {. . .} steht ein Semikolon ; Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Kommentare im Quelltext public class HalloWelt { public static void main (String[] args){ /* Das ist ein Kommentar ueber mehrere Zeilen */ System.out.println("Hallo Welt!"); } } • Kommentare zur Verbesserung der Lesbarkeit von Quelltexten Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Kommentare im Quelltext public class HalloWelt { public static void main (String[] args){ /* Das ist ein Kommentar ueber mehrere Zeilen */ System.out.println("Hallo Welt!"); } } • Kommentare zur Verbesserung der Lesbarkeit von Quelltexten • können an beliebigen Zeilen eingefügt werden durch /* Einführung in die Programmierung */ Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Kommentare im Quelltext public class HalloWelt { public static void main (String[] args){ /* Das ist ein Kommentar ueber mehrere Zeilen */ System.out.println("Hallo Welt!"); } } • Kommentare zur Verbesserung der Lesbarkeit von Quelltexten • können an beliebigen Zeilen eingefügt werden durch /* */ • eignen sich, um Quelltextteile vom Compilieren auszuschließen Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Kommentare im Quelltext public class HalloWelt { public static void main (String[] args){ // einzeiliger Kommentar System.out.println("Hallo Welt!"); } } • einzeilige Kommentare mit // einleiten • gesamter Text hinter // bis Zeilenende als Kommentar aufgefasst • Kommentare werden beim Compilieren ignoriert Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Compilieren und Ausführen von Java-Programmen • Compiler erzeugt plattformunabhängigen Zwischencode (Bytecode) • Java Virtual Machine interpretiert Bytecode und führt ihn aus Java−Compiler Java Virtuelle Maschine javac prog.java java prog prog.class prog.java Maschinencode Byte−Code Interpreter Windows PC Interpreter Linux PC Interpreter Apple MacOS Java−Programm auf jeweiliger Plattform Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Fragen . . . • Warum so „umständlich“? Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Fragen . . . • Warum so „umständlich“? • Weshalb kann man den Java-Quelltext HalloWelt.java nicht „unmittelbar“ ausführen, sondern muss erst den Java-Compiler und dann die Java Virtual Machine bemühen? Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Fragen . . . • Warum so „umständlich“? • Weshalb kann man den Java-Quelltext HalloWelt.java nicht „unmittelbar“ ausführen, sondern muss erst den Java-Compiler und dann die Java Virtual Machine bemühen? =⇒ Um das zu verstehen, brauchen wir eine grobe Vorstellung davon, was im Inneren des Computers passiert und wie er arbeitet. Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Typische Komponenten eines Personal Computers 1. Hauptplatine (Motherboard) 2. Hauptprozessor (CPU) 3. Prozessorkühler 4. Arbeitsspeicher (RAM) 5. Grafikkarte und Netzwerkkarte 6. Netzteil 7. Festplattenlaufwerk (HDD) 8. Optisches Laufwerk (z.B. DVD-Brenner) 9. Monitor 10. Tastatur 11. Maus Bild: www.wikipedia.de Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Arbeitsspeicher organisiert als virtueller Speicher 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 0020 0021 0022 00 48 00 20 49 00 21 43 47 00 22 02 03 00 • Speicherzellen von 0 an fortlaufend durchnummeriert Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Arbeitsspeicher organisiert als virtueller Speicher • Speicherzellen von 0 an fortlaufend durchnummeriert • Jede Speicherzelle besitzt eine eigene Adresse, über die sie angesprochen wird 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 0020 0021 0022 00 48 00 20 49 00 21 43 47 00 22 02 03 00 Adressen Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Arbeitsspeicher organisiert als virtueller Speicher • Speicherzellen von 0 an fortlaufend durchnummeriert • Jede Speicherzelle besitzt eine eigene Adresse, über die sie angesprochen wird • In jeder Speicherzelle ist ein Zahlenwert (typischerweise 0 . . . 255 als Bitkette mit 8 Bit) abgelegt 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 0020 0021 0022 00 48 00 20 49 00 21 43 47 00 22 02 03 00 Adressen Inhalte Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Arbeitsspeicher organisiert als virtueller Speicher • Speicherzellen von 0 an fortlaufend durchnummeriert • Jede Speicherzelle besitzt eine eigene Adresse, über die sie angesprochen wird • In jeder Speicherzelle ist ein Zahlenwert (typischerweise 0 . . . 255 als Bitkette mit 8 Bit) abgelegt • Beispiel: Bitkette 00110000 entspricht der Zahl 0 · 27 + 0 · 26 + 1 · 25 + 1 · 24 + 0 · 23 + 0 · 22 + 0 · 21 + 0 · 20 = 48 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 0020 0021 0022 00 48 00 20 49 00 21 43 47 00 22 02 03 00 Adressen Inhalte Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Arbeitsspeicher (II) • Virtueller Speicher in Fragmente unterteilt • Peripheriegeräte wie z.B. Festplatte eingebunden • Physischer Speicher über Hardwarekomponenten verteilt • Datenaustausch über ein Bussystem technisch realisiert (Abbildung stark vereinfacht) Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Hauptprozessor Central Processing Unit, CPU • kann den (virt.) Speicher gezielt auslesen und beschreiben • besitzt einen Befehlssatz aus Maschinenbefehlen • Jeder Prozessortyp hat eigenen Befehlssatz (leider kaum bis gar nicht kompatibel) Intel i7 Ober− und Unterseite www.wikipedia.de Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Maschinenprogramm im Speicher • Speicher enthält ausführbare Programme (*.exe) und Daten • Jedes ausführbare Programm (Maschinenprogramm) besteht aus Maschinenbefehlen • Startadresse des Maschinenprogramms ist klar definiert 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 0020 0021 0022 00 48 00 20 49 00 21 43 47 00 22 02 03 00 Inhalt eines zusammenhaengenden Speicherbereiches ab einer Startadresse als Maschinenprogramm aufgefasst Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Ein Beispiel-Maschinenprogramm für einen fiktiven Prozessortyp • Jeder im Befehlssatz definierte Befehl hat einen Befehlscode, eine fest zugeordnete Zahl (hier zwischen 40 und 49) • Nach dem Befehlscode kann eine Anzahl von Operanden 0022 0021 0020 Maschinen− programm 00 03 02 0009 0010 22 00 0007 0006 0005 0008 47 43 21 0004 0003 0002 Einführung in die Programmierung 00 49 20 00 48 0001 folgen, wobei durch den Befehl festgelegt wird, ob und wieviele Operanden es sind 48 00 20 49 00 21 43 47 00 22 Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Befehle des Beispiel-Maschinenprogramms Programm zur Addition zweier Zahlen aus dem Speicher Maschinenprogramm 48 00 20 49 00 21 43 47 00 22 Einführung in die Programmierung $0020 LDA $0021 LDB ADD B STORE A $0022 Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Befehle des Beispiel-Maschinenprogramms Programm zur Addition zweier Zahlen aus dem Speicher Maschinenprogramm 48 00 20 49 00 21 43 47 00 22 $0020 LDA $0021 LDB ADD B STORE A $0022 =⇒ Was bewirken die einzelnen Befehle und wie werden sie im Prozessor ausgeführt? Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Programmstart 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 0020 0021 0022 48 00 20 49 00 21 43 47 00 22 02 03 00 Programmzähler auf Startadresse setzen Einführung in die Programmierung LDA $0020 LDB $0021 ADD B STORE A $0022 Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Programmstart 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 0020 0021 0022 48 00 20 49 00 21 43 47 00 22 02 03 00 Programmzähler auf Startadresse setzen LDA $0020 LDB $0021 ADD B STORE A $0022 0001 Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Befehlsabarbeitung 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 0020 0021 0022 48 00 20 49 00 21 43 47 00 22 02 03 00 Befehl lesen und decodieren LDA $0020 LDB $0021 ADD B STORE A $0022 LDA 0001 48 Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Befehlsabarbeitung 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 0020 0021 0022 48 00 20 49 00 21 43 47 00 22 02 03 00 Operanden einlesen und im Register A ablegen A LDA $0020 LDB $0021 ADD B STORE A $0022 02 LDA 0001 48 Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Befehlsabarbeitung 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 0020 0021 0022 48 00 20 49 00 21 43 47 00 22 02 03 00 Befehl lesen und decodieren A LDA $0020 LDB $0021 ADD B STORE A $0022 02 LDB 0004 49 Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Befehlsabarbeitung 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 0020 0021 0022 48 00 20 49 00 21 43 47 00 22 02 03 00 Operanden einlesen und im Register B ablegen A B LDA $0020 LDB $0021 ADD B STORE A $0022 02 03 LDB 0004 49 Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Befehlsabarbeitung 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 0020 0021 0022 48 00 20 49 00 21 43 47 00 22 02 03 00 Befehl lesen und decodieren A B LDA $0020 LDB $0021 ADD B STORE A $0022 02 03 5 0007 43 Einführung in die Programmierung ADD B ALU: Arithmetic Logical Unit "2 + 3 = 5" Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Befehlsabarbeitung 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 0020 0021 0022 48 00 20 49 00 21 43 47 00 22 02 03 00 Register A und B addieren, Ergebnis in Register A ablegen A B LDA $0020 LDB $0021 ADD B STORE A $0022 05 03 ADD B 0007 43 Einführung in die Programmierung ALU: Arithmetic Logical Unit "2 + 3 = 5" Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Befehlsabarbeitung 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 0020 0021 0022 48 00 20 49 00 21 43 47 00 22 02 03 00 Befehl lesen und decodieren A B LDA $0020 LDB $0021 ADD B STORE A $0022 05 03 STORE A 0008 47 Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Befehlsabarbeitung 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 0020 0021 0022 48 00 20 49 00 21 43 47 00 22 02 03 05 Operanden einlesen, Inhalt von A in Speicher schreiben A B LDA $0020 LDB $0021 ADD B STORE A $0022 05 03 STORE A 0008 47 Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Zentrale Befehlsschleife im Prozessor 1. Befehl lesen 2. Befehl decodieren 3. Operanden einlesen 4. Befehl ausführen 5. zum nächsten Befehl springen Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Zentrale Befehlsschleife im Prozessor 1. Befehl lesen 2. Befehl decodieren 3. Operanden einlesen 4. Befehl ausführen 5. zum nächsten Befehl springen • Befehlsschleife immer wieder durchlaufen • Nach Programmende Fortsetzung der Befehlsschleife im Betriebssystem Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Wollen wir auf dieser Ebene programmieren? Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Wollen wir auf dieser Ebene programmieren? Nein! Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Wollen wir auf dieser Ebene programmieren? Nein! Der Java-Compiler und die Java Virtual Machine sorgen dafür, dass unsere Java-Programme in entsprechende Maschinenprogramme umgewandelt werden, die dann auf dem genutzten Prozessor ausführbar sind. Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Wollen wir auf dieser Ebene programmieren? Nein! Der Java-Compiler und die Java Virtual Machine sorgen dafür, dass unsere Java-Programme in entsprechende Maschinenprogramme umgewandelt werden, die dann auf dem genutzten Prozessor ausführbar sind. =⇒ Wir haben jetzt eine grobe Vorstellung davon, was im Computer passiert. Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Wollen wir auf dieser Ebene programmieren? Nein! Der Java-Compiler und die Java Virtual Machine sorgen dafür, dass unsere Java-Programme in entsprechende Maschinenprogramme umgewandelt werden, die dann auf dem genutzten Prozessor ausführbar sind. =⇒ Wir haben jetzt eine grobe Vorstellung davon, was im Computer passiert. In der Anfangszeit der Computertechnik (bis in die 1960er Jahre) wurden Maschinenprogramme von Hand erstellt („Assemblercode“), es gab damals noch keine (ausgereiften) Compiler. Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Evolution der Programmiersprachen Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Geschichte der Programmiersprache C (I) 1966 Martin Richards stellt am Massachusetts Institute of Technology (MIT) die Basic Combined Programming Language (BCPL) vor. • BCPL kennt bereits lokale Variablen und Kontrollstrukturen, aber noch keine Typen. • Zu jeder Variable muss vom Programmierer noch der Speicherort angegeben werden. Einführung in die Programmierung Martin Richards www.cl.cam.ac.uk/~mr10/ Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Geschichte der Programmiersprache C (II) 1969 Ken Thompson und Dennis Ritchie präsentieren mit B eine Weiterentwicklung von BCPL, bei der der Speicherort von Variablen automatisch zugewiesen wird. • Der Interpreter ist kürzer als 8 KByte (!). • B unterscheidet keine Variablentypen. Einführung in die Programmierung Ken Thompson www.bell−labs.com Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Geschichte der Programmiersprache C (III) 1972 Dennis Ritchie führt an den Bell Laboratories C als Weiterentwicklung von B ein. Erstmals gibt es unterschiedliche Typen für Variablen Dennis Ritchie www.bell−labs.com Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Geschichte der Programmiersprache C (III) 1972 Dennis Ritchie führt an den Bell Laboratories C als Weiterentwicklung von B ein. Erstmals gibt es unterschiedliche Typen für Variablen 1988 Das American National Standards Institute (ANSI) normiert und standardisiert Sprachumfang und Syntax von C. Erster Standard: C90 Dennis Ritchie www.bell−labs.com Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Geschichte der Programmiersprache C (III) 1972 Dennis Ritchie führt an den Bell Laboratories C als Weiterentwicklung von B ein. Erstmals gibt es unterschiedliche Typen für Variablen 1988 Das American National Standards Institute (ANSI) normiert und standardisiert Sprachumfang und Syntax von C. Erster Standard: C90 1999 Erweiterter Standard C99 mit Elementen aus C++ Einführung in die Programmierung Dennis Ritchie www.bell−labs.com Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Geschichte der Programmiersprache C (III) 1972 Dennis Ritchie führt an den Bell Laboratories C als Weiterentwicklung von B ein. Erstmals gibt es unterschiedliche Typen für Variablen 1988 Das American National Standards Institute (ANSI) normiert und standardisiert Sprachumfang und Syntax von C. Erster Standard: C90 1999 Erweiterter Standard C99 mit Elementen aus C++ 2011 Dennis Ritchie www.bell−labs.com Nochmals erweiterter Standard C11, umfasst jetzt u.a. MultithreadHandling und dynamische Speicherallokation Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Softwarekrise in den 70ern und ihre Nachwirkungen =⇒ Wie bekommt man die Komplexität immer größerer Programme sinnvoll in den Griff, und wie kann man (versteckte) Programmierfehler vermeiden oder zumindest rechtzeitig erkennen? „Die Hauptursache für die Softwarekrise liegt darin begründet, dass die Maschinen um einige Größenordnungen mächtiger geworden sind! Um es ziemlich einfach auszudrücken: Solange es keine Maschinen gab, war Programmierung kein existierendes Problem; als wir ein paar schwache Computer hatten, wurde Programmierung zu einem geringen Problem, und nun, da wir gigantische Computer haben, ist die Programmierung ein ebenso gigantisches Problem.“ E. Dijkstra (E. Dijkstra, 1972) www.wikipedia.de Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Das Denver-Koffer-Debakel Keine Gepäck-Verwaltung Zwischen 1993 und 1994 gab es mehrere Versuche, den Flughafen in Denver neu zu eröffnen. Auf dem supermodernen Flughafen sollte ein vollautomatisches Gepäcksystem im Zusammenspiel von 150 Computern, Laserscannern und Fotozellen zum Einsatz kommen. Ergebnis: Gepäckstücke wurden auf Wagen geworfen, die nicht da waren, Wagen fielen aus den Fahrspuren heraus, Koffer wurden zerquetscht und gingen verloren – das Gepäck wurde wieder von Hand sortiert. Die Verluste durch die fehlerhafte Anlage betrugen am Ende 3,2 Millionen Dollar (dpa). Einführung in die Programmierung www.wikipedia.de Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Chaos am Bahnhof Große Wirkung 1995 sollte das von 50 Eisenbahnern betriebene alte Stellwerk des Bahnhofs Hamburg-Altona durch ein digitales System, zu dessen Betrieb nur noch 10 Personen nötig sind, ersetzt werden. Nach Inbetriebnahme am 13. März 1995 stürzten etwa alle zehn Minuten die Rechner ab. Die Schließung des Stellwerks erzeugte ein europaweites Verkehrschaos im Bahnverkehr. Es dauerte zwei Tage, bis der Fehler gefunden war: Ein Zwischenspeicher für die Stellbefehle im Hauptrechner der neuen Anlage war zu klein ausgelegt. Dadurch kam es zum Datenüberlauf, infolgedessen der Rechner sich – und damit das ganze Stellwerk – abschaltete (dpa). Einführung in die Programmierung www.wikipedia.de Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Die Geburt von Java • Anfang 1990er Jahre: Bill Joy entwickelt Konzept für neue objektorientierte Sprache Bill Joy James Gosling Bilder: inventors.about.com Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Die Geburt von Java • Anfang 1990er Jahre: Bill Joy entwickelt Konzept für neue objektorientierte Sprache • Sollte in Grundzügen auf C++ aufbauen, aber Programmcode über Netzwerk empfangen können, und fehlerhafte Programme sollten keinen Schaden anrichten. Bill Joy James Gosling Bilder: inventors.about.com Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Die Geburt von Java • Anfang 1990er Jahre: Bill Joy entwickelt Konzept für neue objektorientierte Sprache • Sollte in Grundzügen auf C++ aufbauen, aber Programmcode über Netzwerk empfangen können, und fehlerhafte Programme sollten keinen Schaden anrichten. • Zeitgleich: James Gosling und Patrick Naughton am Green-Projekt mit Ziel, Software für interaktives Fernsehen und weitere Konsumelektronik zu entwickeln Bill Joy James Gosling Bilder: inventors.about.com Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Die Geburt von Java • Anfang 1990er Jahre: Bill Joy entwickelt Konzept für neue objektorientierte Sprache • Sollte in Grundzügen auf C++ aufbauen, aber Programmcode über Netzwerk empfangen können, und fehlerhafte Programme sollten keinen Schaden anrichten. • Zeitgleich: James Gosling und Patrick Naughton am Green-Projekt mit Ziel, Software für interaktives Fernsehen und weitere Konsumelektronik zu entwickeln • Daraus entstand zunächst Sprache Oak („Eiche“ oder auch Object Application Kernel) gemeinsam mit einem Betriebssystem Green-OS, einem Compiler und einem Laufzeitinterpreter, alles programmiert in C. Bill Joy James Gosling Bilder: inventors.about.com Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Die Geburt von Java • Anfang 1990er Jahre: Bill Joy entwickelt Konzept für neue objektorientierte Sprache • Sollte in Grundzügen auf C++ aufbauen, aber Programmcode über Netzwerk empfangen können, und fehlerhafte Programme sollten keinen Schaden anrichten. • Zeitgleich: James Gosling und Patrick Naughton am Green-Projekt mit Ziel, Software für interaktives Fernsehen und weitere Konsumelektronik zu entwickeln • Daraus entstand zunächst Sprache Oak („Eiche“ oder auch Object Application Kernel) gemeinsam mit einem Betriebssystem Green-OS, einem Compiler und einem Laufzeitinterpreter, alles programmiert in C. • Umbenennung in Java („Kaffee“), akt. Version: 1.8 Einführung in die Programmierung Bill Joy James Gosling Bilder: inventors.about.com Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Wie funktioniert ein Compiler? • compile −→ engl. zusammentragen, zusammenführen abstrakter Syntaxbaum für id = num; id = id + num Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Wie funktioniert ein Compiler? • compile −→ engl. zusammentragen, zusammenführen • übersetzt ein in einer Hochsprache geschriebenes Programm in • prozessorabhängigen • ausführbaren • Maschinencode (Bytecode) abstrakter Syntaxbaum für id = num; id = id + num Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Wie funktioniert ein Compiler? • compile −→ engl. zusammentragen, zusammenführen • übersetzt ein in einer Hochsprache geschriebenes Programm in • prozessorabhängigen • ausführbaren • Maschinencode (Bytecode) • Übersetzungsprozess gliedert sich in verschiedene Phasen, begleitet von Optimierungsschritten abstrakter Syntaxbaum für id = num; id = id + num Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Arbeitsschritte beim Compilieren #include <stdio.h> int main(void) { int tag = 5; int monat = 11; int jahr = 2012; printf("Datum: %d.%d.%d\n", tag, monat, jahr); return 0; } datum.c Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Arbeitsschritte beim Compilieren 1. Lexikalische Analyse (Scanner): Erkennung von Token #include <stdio.h> int main(void) { int tag = 5; int monat = 11; int jahr = 2012; printf("Datum: %d.%d.%d\n", tag, monat, jahr); return 0; } datum.c Token: Schlüsselwörter, Bezeichner, Zahlen, Zeichenketten, Operatoren Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Arbeitsschritte beim Compilieren 1. Lexikalische Analyse (Scanner): Erkennung von Token 2. Syntaktische Analyse (Parser): Korrektheit der Deklarations- und Steuerstrukturen prüfen gemäß Grammatikdefinition #include <stdio.h> int main(void) { int tag = 5; int monat = 11; int jahr = 2012; printf("Datum: %d.%d.%d\n", tag, monat, jahr); return 0; } datum.c Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Arbeitsschritte beim Compilieren 1. Lexikalische Analyse (Scanner): Erkennung von Token 2. Syntaktische Analyse (Parser): Korrektheit der Deklarations- und Steuerstrukturen prüfen gemäß Grammatikdefinition 3. Semantische Analyse (Attributierung): Typverträglichkeit der Variablen und Operatoren prüfen, Parametrisierung von Funktionen prüfen u.ä. Einführung in die Programmierung #include <stdio.h> int main(void) { int tag = 5; int monat = 11; int jahr = 2012; printf("Datum: %d.%d.%d\n", tag, monat, jahr); return 0; } datum.c Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Arbeitsschritte beim Compilieren 1. Lexikalische Analyse (Scanner): Erkennung von Token 2. Syntaktische Analyse (Parser): Korrektheit der Deklarations- und Steuerstrukturen prüfen gemäß Grammatikdefinition 3. Semantische Analyse (Attributierung): Typverträglichkeit der Variablen und Operatoren prüfen, Parametrisierung von Funktionen prüfen u.ä. 4. Codeerzeugung: maschinennahe Objektdatei durch Termersetzung gewinnen und optimieren Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Arbeitsschritte beim Compilieren 1. Lexikalische Analyse (Scanner): Erkennung von Token 2. Syntaktische Analyse (Parser): Korrektheit der Deklarations- und Steuerstrukturen prüfen gemäß Grammatikdefinition 3. Semantische Analyse (Attributierung): Typverträglichkeit der Variablen und Operatoren prüfen, Parametrisierung von Funktionen prüfen u.ä. 4. Codeerzeugung: maschinennahe Objektdatei durch Termersetzung gewinnen und optimieren 5. Linken: Zusammenführen von Objektdatei(en) mit Laufzeitbibliothek zum ausführbaren Maschinenprogramm Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Compiler • Führt verschiedene Prüfungen zur Korrektheit des Quellcodes aus • Verstöße gegen Syntaxregeln werden als Syntaxfehler gemeldet • Bei formal korrekten, aber möglicherweise problematischen Anweisungen werden Warnungen angezeigt • Ein Java-Programm besteht i.d.R. aus mehreren Quellfiles • Compiler kann nur die innere Korrektheit der Quellfiles überprüfen, er führt keine (oder nur rudimentäre) Prüfungen auf mögliche Laufzeitfehler (z.B. Division durch 0, Overflow, Speicherüberlauf) durch Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Compiler • Führt verschiedene Prüfungen zur Korrektheit des Quellcodes aus • Verstöße gegen Syntaxregeln werden als Syntaxfehler gemeldet • Bei formal korrekten, aber möglicherweise problematischen Anweisungen werden Warnungen angezeigt • Ein Java-Programm besteht i.d.R. aus mehreren Quellfiles • Compiler kann nur die innere Korrektheit der Quellfiles überprüfen, er führt keine (oder nur rudimentäre) Prüfungen auf mögliche Laufzeitfehler (z.B. Division durch 0, Overflow, Speicherüberlauf) durch Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Compiler • Führt verschiedene Prüfungen zur Korrektheit des Quellcodes aus • Verstöße gegen Syntaxregeln werden als Syntaxfehler gemeldet • Bei formal korrekten, aber möglicherweise problematischen Anweisungen werden Warnungen angezeigt • Ein Java-Programm besteht i.d.R. aus mehreren Quellfiles • Compiler kann nur die innere Korrektheit der Quellfiles überprüfen, er führt keine (oder nur rudimentäre) Prüfungen auf mögliche Laufzeitfehler (z.B. Division durch 0, Overflow, Speicherüberlauf) durch Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Compiler • Führt verschiedene Prüfungen zur Korrektheit des Quellcodes aus • Verstöße gegen Syntaxregeln werden als Syntaxfehler gemeldet • Bei formal korrekten, aber möglicherweise problematischen Anweisungen werden Warnungen angezeigt • Ein Java-Programm besteht i.d.R. aus mehreren Quellfiles • Compiler kann nur die innere Korrektheit der Quellfiles überprüfen, er führt keine (oder nur rudimentäre) Prüfungen auf mögliche Laufzeitfehler (z.B. Division durch 0, Overflow, Speicherüberlauf) durch Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Compiler • Führt verschiedene Prüfungen zur Korrektheit des Quellcodes aus • Verstöße gegen Syntaxregeln werden als Syntaxfehler gemeldet • Bei formal korrekten, aber möglicherweise problematischen Anweisungen werden Warnungen angezeigt • Ein Java-Programm besteht i.d.R. aus mehreren Quellfiles • Compiler kann nur die innere Korrektheit der Quellfiles überprüfen, er führt keine (oder nur rudimentäre) Prüfungen auf mögliche Laufzeitfehler (z.B. Division durch 0, Overflow, Speicherüberlauf) durch Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Evolution der Programmiersprachen Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Programmierparadigmen Programmiersprachen nutzen verschiedene Grundkonzepte Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Programmierparadigmen Programmiersprachen nutzen verschiedene Grundkonzepte Imperative Sprachen verwenden Abfolgen von Befehlen, die schrittweise Daten (Variablenwerte) verarbeiten. Das Programm legt fest, in welcher Reihenfolge welche Verarbeitungsschritte ausgeführt werden. Beispiele: Fortran, Cobol, C, Basic, Perl, ... Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Programmierparadigmen Programmiersprachen nutzen verschiedene Grundkonzepte Imperative Sprachen verwenden Abfolgen von Befehlen, die schrittweise Daten (Variablenwerte) verarbeiten. Das Programm legt fest, in welcher Reihenfolge welche Verarbeitungsschritte ausgeführt werden. Beispiele: Fortran, Cobol, C, Basic, Perl, ... Deklarative Sprachen beschreiben das Ergebnis. Daraus leitet ein Übersetzerprogramm die benötigten Verarbeitungsschritte und ihre Abfolge her. Beispiele: funktionale (Haskell, ...) und logische Sprachen (Prolog, ...) Einführung in die Programmierung Thomas Hinze Motivation und Einstieg Ein erstes Java-Programm Blick in den Computer Java, Compiler, Paradigmen Programmierparadigmen Programmiersprachen nutzen verschiedene Grundkonzepte Imperative Sprachen verwenden Abfolgen von Befehlen, die schrittweise Daten (Variablenwerte) verarbeiten. Das Programm legt fest, in welcher Reihenfolge welche Verarbeitungsschritte ausgeführt werden. Beispiele: Fortran, Cobol, C, Basic, Perl, ... Deklarative Sprachen beschreiben das Ergebnis. Daraus leitet ein Übersetzerprogramm die benötigten Verarbeitungsschritte und ihre Abfolge her. Beispiele: funktionale (Haskell, ...) und logische Sprachen (Prolog, ...) Objektorientierte Sprachen sind (zumeist) eine Erweiterung imperativer Sprachen, bei denen Daten und auf ihnen operierende Methoden als eigenständige Einheiten (Objekte) behandelt werden. Objekte kommunizieren zum Datenaustausch miteinander. Beispiele: C++, Java, JavaScript, ... Einführung in die Programmierung Thomas Hinze