Teil 1: Einführung und erste Schritte

Werbung
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
Herunterladen