Grundlagen der Programmierung UE JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network GdP UE © H. Prähofer , M Löberbauer 1 Vortragende Dipl.-Ing. Markus Löberbauer (G1) Dr. Herbert Praehofer (G2 u. G3) Institute for System Software Johannes Kepler University Altenbergerstrasse 69 A-4040 Linz / Austria Tel.: ++43 (732) 2468 7132 EMail: [email protected] http: www.ssw.uni-linz.ac.at Raum: HF 306 (Hochschulfondgebäude 3. Stock) JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network GdP UE © H. Prähofer , M Löberbauer 2 Webpage der LVA http://http://www.ssw.uni-linz.ac.at/Teaching/Lectures/GdP/2005/index.html Alle wichtigen Infos wie Termine Angaben Unterlagen Informationen findet man auf dieser Seite JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network GdP UE © H. Prähofer , M Löberbauer 3 Höhere Programmiersprachen Höhere Programmiersprachen dienen der Formulierung von Programmen Sind für den Computer lesbar und verarbeitbar können vom Computer gelesen werden können vom Computer in ein ausführbares Programm übersetzt werden (Compiler) Sind aber auch für den Menschen wesentlich einfacher lesbar und schreibbar als Maschinensprache Programmieren wird wesentlich erleichtert Programme können vom Experten gelesen und verstanden werden JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network GdP UE © H. Prähofer , M Löberbauer 4 Geschichte der Programmiersprachen Jahr 1957 1960 1962 1965 1968 1971 1972 1973 1980 1983 1987 1995 2000 Sprache Fortran Algol-60 Cobol Basic APL Lisp PL/I Algol-68 Pascal Prolog C Modula-2 Ada Smalltalk C++ Oberon Java C# Bemerkung technische Anwendungen “Algol-Familie” kaufmännische Anwendungen Anfänger-Sprache Vektoren und Matrizen funktionale Sprache Allzwecksprache Nachfolger von Algol-60 Einfluß auf spätere Sprachen Wissen und Schlußregeln “Unix-Sprache” Nachfolger von Pascal Allzwecksprache; DoD objektorientierte Sprache objektorientierte Erweiterung von C Weiterentwicklung von Modula-2 Weiterentwicklung von C++; WWW Weiterentwicklung von Java durch Microsoft JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network GdP UE © H. Prähofer , M Löberbauer 5 Programmiersprache Java Java ist eine höhere, problemorientierte Programmiersprache, die laut Sun durch folgende Eigenschaften charakterisiert ist: Simple: einfacher als C++ Architecture-neutral: läuft auf Windows-Rechner als auch auf Unix/Linux, Mac Object-oriented Portable Distributed High-performance Interpreted Multithreaded Robust Secure Dynamic JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network GdP UE © H. Prähofer , M Löberbauer 6 Java Virtual Machine Java-Programme werden nicht direkt auf dem Computer ausgeführt sondern von einen speziellen Programm, nämlich der Java Virtual Machine (JVM) Vorteile: Java-Programme laufen „kontrolliert“ in der JVM ab Erhöhte Sicherheit und Zuverlässigkeit Kann auf jede Plattformen portiert werden. Vom Super Computer bis zu Handys Von Unix bis Windows-CE Selbes Programm läuft (mit Einschränkungen) auf alle diesen Plattformen ohne nochmals übersetzt oder portiert zu werden, da sich die VM auf jeder Plattform gleich verhält JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network GdP UE © H. Prähofer , M Löberbauer 7 Unterschied normale Programmausführung Ö Virtuelle Machine (VM) normale Prgrammausführung Ö Virtuelle Machine Application I-B er ei ch Application JN Systemlibraries Operating-System Virtual Machine Systemlibraries Operating-System Hardware Hardware JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network GdP UE © H. Prähofer , M Löberbauer 8 Java Runtime Environment (JRE) Eine Plattform ist die Hard- und Softwareumgebung auf der ein Programm läuft. Die meisten Plattformen bestehen aus Hardware und Betriebssystem. Die Java-Plattform unterscheidet sich von den meisten anderen Plattformen dadurch, das sie eine reine Software-Plattform ist, die für verschiedenste Hardware und Betreibssysteme verfügbar ist. Die Java Runtime Environment besteht aus zwei Teilen: • Die Java Virtual Machine (Java VM) • Das Java Application Programming Interface (Java API) JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network GdP UE © H. Prähofer , M Löberbauer 9 Java Development Tookit (JDK) == Programmwerkzeuge zum Erstellen, Übersetzen und Testen von Java-Programmen Java Compiler Ö javac übersetzt den Quellcode in Java Byte-Code Java Debugger Ö jdb Tool zur Fehlersuche Java Disassembler Ö javap erzeugt aus Byte-Code lesbaren Quellcode Weitere Tools jar, javah, javadoc, javakey, serialver, ... Java Dokumentation (separates Download) JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network GdP UE © H. Prähofer , M Löberbauer 10 Erstellen und Ausführen von Java-Programmen Beispielprogramm HelloWorld Erstellen von Java-Programm mit Editor Quellcode (Sourcecode) in Java Java Compiler (javac) Java Zwischencode (Byte Code) Java Runtime (java) Programmausführung Erstellen von Programm HelloWorld mit Editor Datei HelloWorld.java mit Java-Source javac HelloWorld.java Datei HelloWorld.class mit Byte-Code java HelloWorld Ausführung von Programm HelloWorld JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network GdP UE © H. Prähofer , M Löberbauer 11 Programm schreiben (Wordpad) JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network GdP UE © H. Prähofer , M Löberbauer 12 Programm kompilieren (javac) JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network GdP UE © H. Prähofer , M Löberbauer 13 Programm starten (java) JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network GdP UE © H. Prähofer , M Löberbauer 14 In und Out Die Programme In und Out unterstützen eine einfache Ein- und Ausgabe Dateien (verfügbar von der Homepage der LVA) In.java Out.java ins gleich Verzeichnis wie Programmdatei Mit Methoden wie In.read() In.readInt() In.readWord() können Werte eingelesen haben Mit Methoden wie Out.print() Out.println() können Werte ausgegeben haben JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network GdP UE © H. Prähofer , M Löberbauer 15 Java-Programm "Sum" (Sum.java) public class Sum { public static void main(String[] args) { int sum = 0; int number; Out.print("Bitte Zahlen eingeben: "); number = In.readInt(); while (number > 0) { sum = sum + number; number = In.readInt(); } Out.print("Die Summe ist:"); Out.printLn(sum); } } JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network GdP UE © H. Prähofer , M Löberbauer 16