Java I Vorlesung 1 Einführung in Java

Ähnliche Dokumente
Programmierkurs Python I

III.1 Prinzipien der funktionalen Programmierung - 1 -

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

Vorlesung Programmieren

Vorlesung Programmieren. Programmiersprachen-Paradigmen. Programmierparadigmen. Eine Programmiersprache dient dem Aufschreiben von Algorithmen

Grundlagen der Modellierung und Programmierung, Übung

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung

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

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

12. Rekursion Grundlagen der Programmierung 1 (Java)

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

Java I Vorlesung Imperatives Programmieren

Einführung in die Programmierung mit Java

Einführung in die Programmierung

Java: Kapitel 1. Überblick. Programmentwicklung WS 2008/2009. Holger Röder Holger Röder

Programmiersprache. Emily & rica

Grundlagen der Programmierung UE

Grundlagen der Programmierung UE

2. JAVA-Programmierung. Informatik II für Verkehrsingenieure

Erste Schritte zum lauffähigen Java-Programm

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi

Von Assembler zu Java

Vorkurs Informatik WiSe 17/18

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 1. Einführung und Grundbegriffe

Vorkurs Informatik WiSe 16/17

Grundlagen der Informatik für Ingenieure I

Informatik. Studiengang Chemische Technologie. Michael Roth Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013.

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 1. Einführung und Grundbegriffe

Institut für Programmierung und Reaktive Systeme. Java 1. Markus Reschke

Definitionen/Vorarbeit zum Thema Java

Java Einführung Programmcode

Klassenvariablen, Klassenmethoden

Algorithmen und Datenstrukturen

Inhalt. n Algorithmus. n Euklidscher Algorithmus. n Sortieren. n Programmiersprachen. n Entwicklungsschritte eines Programms.

Programmiersprachen: Klassifizierung und Methoden. Programmier-Paradigmen. Grundlagen der Programmierung 2 (1.C) - 1 -

Erste Schritte in Java

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 -

Einführung in die Informatik I (autip)

Probeklausur: Programmierung WS04/05

JAVA als erste Programmiersprache Semesterkurs

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

Informatik I - Einstiegskurs

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

JAVA 06: Gemischte einfache Fragen zu Java

Kapitel 02. Java was, wann, warum, wieso. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Einführung in die Programmierung mit Java

Kapitel 1: Einführung

Übung zur Vorlesung Strukturiertes Programmieren WS 2014/15. Übungsblatt 1: JAVA - Erste Schritte Abgabe: Besprechung:

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

1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

Einführung in die Programmierung am Beispiel von Java

Programmieren lernen mit Groovy Allgemeines Programme und ihre Ausführung

Informatik Algorithmen und Programme

Einführung in die Programmierung

Grundlagen der Programmierung

Einführung in die Programmierung

Vorlesung Informatik II

Die Programmiersprache C Eine Einführung

Objektorientierte Programmierung OOP Programmieren mit Java

Einführung in die Programmierung Wintersemester 2016/17

Programme erstellen in Java

1.3 Geschichte der Programmiersprachen

Algorithmen und Datenstrukturen Laufzeitabschätzung

Einstieg in die Informatik mit Java

Einführung in die Informatik Turing Machines

Programmierung. Programme, Compiler, virtuelle Maschinen, Java

Martin Unold INFORMATIK. Geoinformatik und Vermessung

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien.

Programmiertechnik. Prof. Dr. Oliver Haase Raum G124 Tel: 07531/ Oliver Haase Hochschule Konstanz 1

Einführung in die Programmierung mit Java

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

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

Kapitel 1: Einleitung. Gliederung. Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren

Aufgabenblatt 1: - Präsenzübung für die Übungen Do Mi Ausgabe Mi

2. Einführung. Informatik II für Verkehrsingenieure

Javakurs für Anfänger

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

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

Einführung in Java. Ausgewählte Quellen zu Java

Programmieren in Java -Eingangstest-

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

Transkript:

Java I Vorlesung 1 Einführung in Java Alexander Koller koller@coli.uni-sb.de 26.4.2004 Problem Algorithmus Programm Programmiersprachen Warum Java? Unser erstes Java-Programm Organisatorisches

Was heißt Programmieren? Programmierer will ein Problem auf systematische Weise lösen. Ein Algorithmus ist eine abstrakte, detaillierte Berechnungsvorschrift, die das Problem löst. Ein Programm ist eine Darstellung des Algorithmus in einer konkreten Programmiersprache. Ein Programm kann mit verschiedenen Eingaben ausgeführt werden. 2

Einige Probleme Berechnung von arithmetischen Funktionen Was ist der kürzeste Weg in einem Graphen? Computerlinguistische Probleme: Dialog mit einem Menschen führen; grammatische Analyse Wie komme ich vom Bett in die Uni? Teilproblem: Anziehen 3

Algorithmen Kochrezepte, die Schritt für Schritt beschreiben, wie das Problem gelöst wird. Funktionieren für alle Eingaben, die das Problem vorsieht. Müssen in endlich vielen Schritten fertig werden. Granularität der Einzelschritte hängt davon ab, was ein Mensch als offensichtliche Schritte akzeptiert. 4

Ein Algorithmus fürs Anziehen... Gehe zum Kleiderschrank. Nimm eine frische Unterhose. Stecke die Beine durch die Löcher. Nimm ein frisches T-Shirt. Stecke Kopf und Arme durch die passenden Löcher. Binde den rechten Schuh. 5

Ein Algorithmus für Größte Zahl Gegeben eine Liste L von n natürlichen Zahlen; gesucht ist die größte Zahl in L. Merke dir die erste Zahl in L als aktuelle größte Zahl. Gehe der Reihe nach durch die 2-te bis n-te Zahl in L. Wenn die aktuelle Zahl größer als die bisherige größte ist, merke dir die aktuelle als die neue größte Zahl. Der gemerkte Wert nach Ansehen aller Zahlen in L ist die echte größte Zahl in L. 6

Programme Sind konkrete Implementierungen eines Algorithmus in einer Programmiersprache (z.b. Java). Verwenden Konstruktionen der Programmiersprache, um intuitive Begriffe präzise zu machen (z.b. Schleifen, Variablen). Einzelne Schritte hängen von Programmiersprache und verfügbaren Funktionen ab. 7

Ein Algorithmus für Größte Zahl Gegeben eine Liste L von n natürlichen Zahlen; gesucht ist die größte Zahl in L. Merke dir die erste Zahl in L als aktuelle größte Zahl. Gehe der Reihe nach durch die 2-te bis n-te Zahl in L. Wenn die aktuelle Zahl größer als die bisherige größte ist, merke dir die aktuelle als die neue größte Zahl. Der gemerkte Wert nach Ansehen aller Zahlen in L ist die echte größte Zahl in L. 8

Größte Zahl -Algorithmus als Java-Programm Gegeben eine Liste L von n natürlichen Zahlen; gesucht ist die größte Zahl in L. int max = L[0]; Gehe der Reihe nach durch die 2-te bis n-te Zahl in L. Wenn die aktuelle Zahl größer als die bisherige größte ist, merke dir die aktuelle als die neue größte Zahl. Der gemerkte Wert nach Ansehen aller Zahlen in L ist die echte größte Zahl in L. 9

Größte Zahl -Algorithmus als Java-Programm Gegeben eine Liste L von n natürlichen Zahlen; gesucht ist die größte Zahl in L. int max = L[0]; Variable Zuweisung Gehe der Reihe nach durch die 2-te bis n-te Zahl in L. Wenn die aktuelle Zahl größer als die bisherige größte ist, merke dir die aktuelle als die neue größte Zahl. Der gemerkte Wert nach Ansehen aller Zahlen in L ist die echte größte Zahl in L. 10

Größte Zahl -Algorithmus als Java-Programm Gegeben eine Liste L von n natürlichen Zahlen; gesucht ist die größte Zahl in L. int max = L[0]; for( int i = 1; i < L.length; i++ ) Wenn die aktuelle Zahl größer als die bisherige größte ist, merke dir die aktuelle als die neue größte Zahl. Der gemerkte Wert nach Ansehen aller Zahlen in L ist die echte größte Zahl in L. 11

Größte Zahl -Algorithmus als Java-Programm Gegeben eine Liste L von n natürlichen Zahlen; gesucht ist die größte Zahl in L. int max = L[0]; Schleife for( int i = 1; i < L.length; i++ ) Wenn die aktuelle Zahl größer als die bisherige größte ist, merke dir die aktuelle als die neue größte Zahl. Der gemerkte Wert nach Ansehen aller Zahlen in L ist die echte größte Zahl in L. 12

Größte Zahl -Algorithmus als Java-Programm Gegeben eine Liste L von n natürlichen Zahlen; gesucht ist die größte Zahl in L. int max = L[0]; for( int i = 1; i < L.length; i++ ) if( L[i] > max ) merke dir die aktuelle als die neue größte Zahl. Der gemerkte Wert nach Ansehen aller Zahlen in L ist die echte größte Zahl in L. 13

Größte Zahl -Algorithmus als Java-Programm Gegeben eine Liste L von n natürlichen Zahlen; gesucht ist die größte Zahl in L. int max = L[0]; Bedingung for( int i = 1; i < L.length; i++ ) if( L[i] > max ) merke dir die aktuelle als die neue größte Zahl. Der gemerkte Wert nach Ansehen aller Zahlen in L ist die echte größte Zahl in L. 14

Größte Zahl -Algorithmus als Java-Programm Gegeben eine Liste L von n natürlichen Zahlen; gesucht ist die größte Zahl in L. int max = L[0]; for( int i = 1; i < L.length; i++ ) if( L[i] > max ) max = L[i]; Der gemerkte Wert nach Ansehen aller Zahlen in L ist die echte größte Zahl in L. 15

Größte Zahl -Algorithmus als Java-Programm Gegeben eine Liste L von n natürlichen Zahlen; gesucht ist die größte Zahl in L. int max = L[0]; for( int i = 1; i < L.length; i++ ) if( L[i] > max ) max = L[i]; Zuweisung Der gemerkte Wert nach Ansehen aller Zahlen in L ist die echte größte Zahl in L. 16

Größte Zahl -Algorithmus als Java-Programm Gegeben eine Liste L von n natürlichen Zahlen; gesucht ist die größte Zahl in L. int groesstezahl(int[] L) { int max = L[0]; for( int i = 1; i < L.length; i++ ) if( L[i] > max ) max = L[i]; } return max; 17

Größte Zahl -Algorithmus als Java-Programm Gegeben eine Liste L von n natürlichen Zahlen; gesucht ist die größte Zahl in L. Methode Argumente int groesstezahl(int[] L) { int max = L[0]; for( int i = 1; i < L.length; i++ ) if( L[i] > max ) max = L[i]; } return max; Rückgabewert der Methode 18

Größte Zahl -Algorithmus als Java-Programm Gegeben eine Liste L von n natürlichen Zahlen; gesucht ist die größte Zahl in L. class GroessteZahl { int groesstezahl(int[] L) { int max = L[0]; for( int i = 1; i < L.length; i++ ) if( L[i] > max ) max = L[i]; } } return max; 19

Größte Zahl -Algorithmus als Java-Programm Gegeben eine Liste L von n natürlichen Klasse Zahlen; gesucht ist die größte Zahl in L. class GroessteZahl { int groesstezahl(int[] L) { int max = L[0]; for( int i = 1; i < L.length; i++ ) if( L[i] > max ) max = L[i]; } } return max; Vorsicht: Wir haben den Spezialfall missachtet, bei dem die Liste leer ist! 20

Effiziente Algorithmen Manche Algorithmen lösen ein Problem effizienter (mit weniger Zeit- oder Speicherverbrauch) als andere. Beispiel: Finde die zwei größten Zahlen in L. Algorithmus 1: Verwende zwei Variablen, um die aktuell beiden größten Zahlen zu speichern. Algorithmus 2: Berechne zunächst die größte Zahl; dann lösche sie aus L und berechne nochmal die größte Zahl. 21

Programmiersprachen Es gibt eine sehr breite Auswahl an verschiedenen Programmiersprachen. CPU versteht sehr eingeschränkten Befehlssatz, der für Menschen unbequem ist. Programmiersprachen verbergen Komplexität und stellen abstraktere Konstrukte zur Verfügung. Verfolgen verschiedene Ziele; unterstützen verschiedene Programmierstile; haben verschiedene Vor- und Nachteile. 22

Imperativ vs. funktional vs. deklarativ Imperativ: Programme sind Sequenzen von Anweisungen. (Algol, Fortran, C, C++, Java) Funktional: Programme sind mathematische Funktionen, die aus einfacheren Funktionen zusammengesetzt sind (SML, Lisp, Haskell) Deklarativ: Programme sind logische Formeln, die das Problem spezifizieren; Programmiersystem kümmert sich um eigentliche Berechnung (Prolog) 23

Prozedural vs. objektorientiert Prozedural: Die wesentliche Gliederungseinheit des Programms ist die Prozedur, d.h. Gruppe von Anweisungen (C, SML) Objektorientiert: Die wesentliche Gliederungseinheit ist die Klasse, d.h. Repräsentation eines Objekts mit Sammlung von Methoden (Java, C++, Smalltalk) 24

Interpretiert vs. kompiliert Programmiersprachen sind dafür da, dass Menschen Algorithmen bequem aufschreiben können. Programm-Quelltexte können nicht direkt vom Computer ausgeführt werden. Zu einer Programmiersprache gehört deshalb Software, die Programme für Computer ausführbar macht. 25

Interpretation Interpreter sind Programme, die den Quelltext Anweisung für Anweisung ausführen. Beliebt z.b. für Skriptsprachen wie Perl. Programm-Quelltext Interpreter Eingaben Betriebssystem / CPU 26

Kompilation Compiler sind Programme, die den Quelltext in ein direkt ausführbares Maschinenprogramm übersetzen. Beliebt z.b. für C, C++ usw. Programm-Quelltext Compiler Kompiliertes Programm Betriebssystem / CPU 27

Kompilation Compiler sind Programme, die den Quelltext in ein direkt ausführbares Maschinenprogramm übersetzen. Beliebt z.b. für C, C++ usw. Programm-Quelltext Compile-Zeit Laufzeit Compiler Kompiliertes Programm Eingaben Betriebssystem / CPU 28

Interpretation vs. Kompilation Interpretation ist viel langsamer, da Interpreter selbst Rechenzeit verbraucht. Compiler wendet einmal Zeit bei der Kompilation auf, danach sehr effizienter Programmablauf. Ein kompiliertes Programm läuft nur auf einer einzigen Plattform (Betriebssystem + CPU). Quelltext muss daher auf neuen Plattformen neu kompiliert werden (Portierung). Das ist oft problematisch. 29

Virtuelle Maschinen In Java wird der Quelltext zunächst in Bytecode kompiliert; dieser wird von einer virtuellen Maschine interpretiert oder weiter ("just in time") kompiliert. Programm-Quelltext Compiler Java-Bytecode Java Virtual Machine (JVM) Eingaben Betriebssystem / CPU 30

Die Java-Plattform http://java.sun.com/ 31

Geschichte von Java Seit 1995 verfügbar. Ursprünglich von Sun entwickelt als Plattform für Home Entertainment. Zunächst v.a. als Internet-Plattform verkauft. Heute für alle möglichen Anwendungen sehr weit verbreitete Sprache. Syntax basiert auf C/C++, aber viele objektorientierte Konzepte etwas anders als in C++ umgesetzt. 32

Warum Java? Portabilität: Ein (in Bytecode) kompiliertes Programm kann ohne Änderung auf verschiedenen Betriebssystemen ausgeführt werden. Java-Plattform. Objektorientierung: Unterstützt Modularisierung und Wiederverwendbarkeit von Programmcode. Statische Typisierung: Compiler kann viele Programmierfehler abfangen. 33

Warum Java? Mächtige Standardbibliothek: Standard- Installation von Java enthält viele nützliche Klassen. Effizienz: Moderne Java-Systeme kommen in die Nähe von C++-Implementierungen. Sicherheit: Kann verhindern, dass Programme Schaden anrichten. Weit verbreitet: Daher Zugriff auf Programme vieler anderer Programmierer. 34

Unser erstes Java-Programm Definiere die Klasse HelloWorld in der Datei HelloWorld.java: class HelloWorld { } public static void main(string[] args) { System.out.println("Hallo Welt!"); } 35

Unser erstes Java-Programm Definiere die Klasse HelloWorld in der Datei HelloWorld.java: Klasse Hauptprogramm class HelloWorld { Kommandozeilen -Argumente public static void main(string[] args) { System.out.println("Hallo Welt!"); } Anweisungen } 36

Wie führt man ein Java-Programm aus? [koller@cicero]$ javac HelloWorld.java Kompiliert Quelltext in HelloWorld.java in Bytecode und schreibt das Ergebnis in die Datei HelloWorld.class. [koller@cicero]$ java HelloWorld Lädt den Bytecode für die Klasse HelloWorld aus der Datei HelloWorld.class und führt ihn auf der virtuellen Maschine aus. 37

Literatur Einschlägige Literatur: Java-Bücher von Sun O'Reilly (... in a nutshell ) und viele andere Die meisten Sun-Bücher sind online zugänglich: http://java.sun.com/docs/books/ Java-Tutorial: http://java.sun.com/docs/books/tutorial/ 38

Zusammenfassung Algorithmen lösen Probleme; Programme implementieren Algorithmen in einer konkreten Programmiersprache. Es gibt viele Programmiersprachen. Java zeichnet sich v.a. durch Portabilität, Objektorientierung und weite Verbreitung aus. Zweistufiger Prozess: Erst Kompilation in Bytecode, dann Ausführen von Bytecode auf virtueller Maschine. 39

Organisatorisches Wöchentliche Übungen (wichtig!) in Teams von max. drei Studenten. Jeder Student muss Programmcode selbst kommentieren und in der Lage sein, seine Übung zu erklären. Voraussetzung zur Klausurzulassung sind 50% der Punkte in den Übungen. Klausur am Ende des Semesters 40

Termin Übungsgruppen Problem: Finde eine hinreichende Anzahl von Übungsterminen, so dass möglichst wenige Studenten zu keinem der Termine Zeit haben. Wir verwenden jetzt folgenden Algorithmus: Finde zunächst Termin, bei dem die meisten Zeit haben; finde dann Termin, bei dem von den übrigen die meisten Zeit haben. Löst dieser Algorithmus das Problem korrekt? 41