Programmieren. Besonderheiten von Java:



Ähnliche Dokumente
Programmierkurs Java. Grundlagen. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck

Programmierkurs Java

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

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

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Tutorium Rechnerorganisation

Primitive Datentypen

Vorkurs Informatik WiSe 15/16

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz Institut für Angewandte Informatik

5. Tutorium zu Programmieren

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java-Schulung Grundlagen

Vorlesung Programmieren

Java Einführung Operatoren Kapitel 2 und 3

Objektorientierte Programmierung

Modul 122 VBA Scribt.docx

Programmierkurs Java

Programmieren in Haskell Einführung

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

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Erwin Grüner

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Dr. Monika Meiler. Inhalt

Einführung in die Java- Programmierung

Einführung in die C++ Programmierung für Ingenieure

Übungen Programmieren 1 Felix Rohrer. Übungen

Kurze Einführung in die Programmiersprache C++ und in Root

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Java Einführung Programmcode

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

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

Computeranwendung und Programmierung (CuP)

Applications Applets (eingeschränkte Rechte)

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Einführung in Eclipse und Java

Modellierung und Programmierung 1

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

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

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff

Einführung in Javadoc

Objektorientierte Programmierung für Anfänger am Beispiel PHP

C# im Vergleich zu Java

Grundlagen der Programmierung UE

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Sin-Funktion vgl. Cos-Funktion

Grundlagen der Programmierung UE

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek

PHP 5.4 ISBN Stephan Heller, Andreas Dittfurth 1. Ausgabe, September Grundlagen zur Erstellung dynamischer Webseiten GPHP54

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer)

1. Java Grundbegriffe

Diana Lange. Generative Gestaltung Operatoren

Übersicht Programmablaufsteuerung

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

E-PRIME TUTORIUM Die Programmiersprache BASIC

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Datentypen. Agenda für heute, 4. März, Pascal ist eine streng typisierte Programmiersprache

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

Brainfuck. 1 Brainfuck. 1.1 Brainfuck Geschichte und Umfeld. 1.2 Esoterische Programmiersprachen

Einfache Rechenstrukturen und Kontrollfluss II

Vorlesung Informatik II

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Einführung in die Programmierung

Einführung in die Programmierung

Datentypen: Enum, Array, Struct, Union

JAVA als erste Programmiersprache Semesterkurs

Selbststudium OOP4 Auftrag

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Java Kurs für Anfänger Einheit 5 Methoden

Java: Vererbung. Teil 3: super()

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Einführung in die Java- Programmierung

4 Objektorientierte Programmierung mit Java 4.1 Java-Grundlagen

Institut für Telematik Universität zu Lübeck. Programmieren. Kapitel 0: Organisatorisches. Wintersemester 2008/2009. Prof. Dr.

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

Pragmatik von Programmiersprachen

Programmierung in C. Grundlagen. Stefan Kallerhoff

Vorkurs Informatik WiSe 16/17

2. Programmierung in C

Graphic Coding. Klausur. 9. Februar Kurs A

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

IT-Basics 2. DI Gerhard Fließ

Datenbanksysteme SS 2007

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Propädeutikum zur Programmierung

Programmiervorkurs. Organisation: Steffen Gebert, Alexander Wolff. Tutoren: Jürgen Zöller, Jonathan Stoll. Wintersemester 2012/2013

II.1.1. Erste Schritte - 1 -

Programmiervorkurs Einführung in Java Tag 1

Transkript:

Institut für Telematik Universität zu Lübeck 5-2 Überblick Programmieren Kapitel 5: Java (5.1 bis 5.6) 1. Einführung (Warum Java?) 2. Compiler und Laufzeitumgebung, IDEs 3. Das erste eigene Java-Programm 4. Elementare Datentypen und Variablen 5. Elementare Operatoren 6. Kontrollstrukturen Wintersemester 2008/2009 Prof. Dr. Christian Werner 5-3 Warum Java? (1/5) 5-4 Warum Java? (2/5) Es gibt unterschiedliche Programmiersprachenkonzepte : Funktionale Programmiersprachen - Grundprinzip: Termersetzung - Beispiele: Lisp, HOPE, Miranda, SML, Haskell Logikbasierte Programmiersprachen - Grundprinzip: Prädikatenlogik - Beispiel: Prolog Imperative Programmiersprachen - Grundprinzip: Folge von Variablenzuweisungen - Beispiele: Algol, Fortran, Cobol, Pascal, C, Basic Spezialfall v. IP: Objektorientierte Programmierung - Grundprinzip: Interaktionen zwischen Objekten - Beispiele: SmallTalk, Java, C++ Besonderheiten von Java: Sprache i. W. neu entworfen, nur wenige Altlasten d.h. vergleichsweise einfach zu erlernen! Write once, run everywhere (WORE) Technische Realisierung: Programm Programm Compiler Compiler Interpreter Maschinencode Bytecode Maschinencode

5-5 Warum Java? (3/5) 5-6 Warum Java? (4/5) Byte-Code ist Maschinencode für eine virtuelle Maschine, die auf jeder realen Maschine simuliert werden kann. Vorteil: Ist für eine reale Rechnerarchitektur eine VM vorhanden, kann darauf jedes Java-Programm laufen (ohne erneut zu compilieren!) Vorteil: WORE Nachteil: Langsamer als echter Maschinencode Aber: Inzwischen wurden sog. Just-in-Time-Compiler entwickelt, welche den Geschwindigkeitsnachteil in vielen Bereichen kompensieren können! ab 1991: J. Gosling und Kollegen entwickeln auf der Basis von C++ eine Sprache namens Oak (Object Application Kernel). Einsatzbereich: Haushalts- und Konsumelektronik. Ziele: Plattform-Unabhängigkeit, Erweiterbarkeit der Systeme und Austauschbarkeit von Komponenten. 1993: Oak wird wegen rechtlicher Probleme in Java umbenannt. Zu diesem Namen wurden die Entwickler beim Kaffeetrinken inspiriert. 1994: Java entwickelt sich wegen der Applet-Technologie zur Sprache des WWW. seit 1995: Sun bietet sein Java-Programmiersystem JDK (Java Development Kit) mit einem Java-Compiler und Interpreter kostenlos an. 5-7 Warum Java? (5/5) 5-8 Compiler und Laufzeitumgebung (1/2) Typische Einsatzbereich für Java heute: Sog. Applets, das sind kleine Java-Programme, die direkt im Web-Browser laufen. Technik für Web-Server: Servlets, JSPs Mittel zur Implementierung dynamischer Web-Seiten Geschäftsanwendungen Inzwischen sehr mächtig und performant! Direkte Konkurrenz: Microsoft C# Ein Java-Entwickler benötigt zwei wesentliche Komponenten: Byte-Code-Compiler Virtual Maschine (auch genannt: Laufzeitumgebung ) Beides wird von der Firma Sun Microsystems kostenlos angeboten: http://java.sun.com/javase/downloads/ Empfohlener Download: JDK 6 ohne weiteres Zubehör

5-9 Compiler und Laufzeitumgebung (2/2) 5-10 IDEs Das JDK stellt bereit Compiler: javac VM: java Zur Erstellung des Programms (genauer: des Quellcodes), benötigen wir weiterhin einen sog. Text-Editor: Unix: vi, vim, nano, pico, nedit, emacs, Windows: edit, PSPad, UltraEdit, werner@pinot:~> edit MeinProgramm.java werner@pinot:~> javac MeinProgramm.java werner@pinot:~> java MeinProgramm Alternative: Integrated Development Environment (IDE) Integriert Editor, Compiler und VM Viele Zusatzfunktionen: Syntax Highlighting, Debugger, Plug-Ins für Spezialanwendung usw. Aber: Für das Erlernen von Java nicht hilfreich! Entscheiden Sie selbst, ab wann Sie eine IDE einsetzen wollen! Empfehlung: Nutzen sie eine IDE nur bei Projekten mit mehr als drei Klassen 5-11 Ein erstes Java-Programm 5-12 Nächste Schritte Programmname (muss mit Dateinamen übereinstimmen!) public class MeinProgramm { public static void main(string[] args) { System.out.println("42"); Anweisung zum Ausgeben von Text Grundgerüst steht Weitere Fragen, die geklärt werden müssen: Welche Datentypen gibt es in Java? Wie deklariere ich Variablen? Welche Operatoren stellt Java bereit? Wie steuere ich den Programmablauf? (Schleifen, bedingte Anweisungen usw.) Rest: Grundgerüst, welches wir für jedes Java-Programm benötigen!

5-13 (primitive) Datentypen in Java (1/3) Ganze Zahlen: byte: The byte data type is an 8-bit signed two's complement integer. It has a minimum value of -128 and a maximum value of 127 (inclusive). The byte data type can be useful for saving memory in large arrays, where the memory savings actually matters. They can also be used in place of int where their limits help to clarify your code; the fact that a variable's range is limited can serve as a form of documentation. short: The short data type is a 16-bit signed two's complement integer. It has a minimum value of -32,768 and a maximum value of 32,767 (inclusive). As with byte, the same guidelines apply: you can use a short to save memory in large arrays, in situations where the memory savings actually matters. int: The int data type is a 32-bit signed two's complement integer. It has a minimum value of -2,147,483,648 and a maximum value of 2,147,483,647 (inclusive). For integral values, this data type is generally the default choice unless there is a reason (like the above) to choose something else. This data type will most likely be large enough for the numbers your program will use, but if you need a wider range of values, use long instead. long: The long data type is a 64-bit signed two's complement integer. It has a minimum value of -9,223,372,036,854,775,808 and a maximum value of 9,223,372,036,854,775,807 (inclusive). Use this data type when you need a range of values wider than those provided by int. 5-14 (primitive) Datentypen in Java (2/3) Fließkommazahlen: float: The float data type is a single-precision 32-bit IEEE 754 floating point. Its range of values is beyond the scope of this discussion, but is specified in section 4.2.3 of the Java Language Specification. As with the recommendations for byte and short, use a float (instead of double) if you need to save memory in large arrays of floating point numbers. This data type should never be used for precise values, such as currency. For that, you will need to use the java.math.bigdecimal class instead. Numbers and Strings covers BigDecimal and other useful classes provided by the Java platform. double: The double data type is a double-precision 64-bit IEEE 754 floating point. Its range of values is beyond the scope of this discussion, but is specified in section 4.2.3 of the Java Language Specification. For decimal values, this data type is generally the default choice. As mentioned above, this data type should never be used for precise values, such as currency. 5-15 (primitive) Datentypen in Java (3/3) Sonstiges: boolean: The boolean data type has only two possible values: true and false. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its "size" isn't something that's precisely defined. char: The char data type is a single 16-bit Unicode character. It has a minimum value of '\u0000' (or 0) and a maximum value of '\uffff' (or 65,535 inclusive). 5-16 Deklaration von Variablen Eine Variable ist ein Speicherplatz für einen Wert aus einem bestimmten Wertebereich, welcher durch den verwendeten Datentyp festgelegt wird. Eine Variable wird deklariert (d.h. erzeugt): <Typ> <Name>; Beispiele: int myint; short myshort, myshort2; char c1; boolean flag; Usw.

5-17 Spezialfall: Arrays Wir benötigen zehn Integer-Variablen. int i0, i1, i2, i3, i4, i5, i6, i7, i8 i9; Geht das auch einfacher? Ja, mit einem Array: int[] i = new int[10]; Zugriff über: i[0], i[1],, i[9] 5-18 Operatoren (1/7) Was können wir nun mit Variablen und deren Werten anfangen? Werte zuweisen Werte vergleichen Werte Addieren Werte Subtrahieren Usw. Dies alles geschieht über Operatoren! Vollständige Übersicht: http://java.sun.com/docs/books/tutorial/java/nutsandbolt s/operators.html 5-19 Operatoren (2/7) 5-20 Operatoren (3/7) Zuweisungsoperator: = Weist einer Variablen einen Wert zu. int myint; myint = 10; Alternative und kürzere Schreibweise: int myint = 10; Andere Beispiele: byte b = 10; short s = 20; int i = 30; long l = 11111111111; float f = 10.001f; double d = 10.001d; boolean flag = false; flag = true; char c = 'f'; Operatoren für Zahlenvergleiche: == (gleich)!= (ungleich) > (größer) >= (größer oder gleich) < (kleiner) <= (kleiner oder gleich) Geben jeweils einen boolean-wert zurück. int i = 0; int j = 10; System.out.println(i==j); System.out.println(j<10); Ausgabe: false false

5-21 Operatoren (4/7) 5-22 Operatoren (5/7) Operatoren für Bool sche Ausdrücke: && (und-verknüpfung) (oder-verknüpfung)! (Negation) Geben jeweils einen boolean-wert zurück. System.out.println( ((false && true)!(1==2)) ); Ausgabe: true Operatoren für Zahlenarithmetik: + (Addition) - (Subtraktion) * (Multiplikation) / (Division) % (Rest-Operator) Geben jeweils einen Zahlen-Wert zurück. System.out.println(3+9.5); System.out.println(10%8); Ausgabe: 12.5 2 5-23 Operatoren (6/7) 5-24 Operatoren (7/7) Weitere Operatoren für Zahlenarithmetik: ++ (Inkrement) -- (Dekrement) Geben jeweils einen Zahlen-Wert zurück. Jeweils in zwei Varianten verfügbar: i++ (Post-Inkrement) i-- (Post-Dekrement) ++i (Prä-Inkrement) --i (Prä-Dekrement) int i = 3; i++; System.out.println(i); // "4" ++i; System.out.println(i); // "5" System.out.println(++i); // "6" System.out.println(i++); // "6" System.out.println(i); // "7" Explizite Typumwandlung ( Casting ): (Datentyp) Wert Gibt den Wert im angegebenen Datentyp zurück. Wird benötigt, weil die Java-Laufzeitumgebung Datentypen sehr strikt handhabt. Der Programmierer muss explizit angeben, wenn er eine Typkonvertierung wünscht. Falsch: int i = 3.5f * 6; (Compiler-Fehler, denn der Ausdruck auf der rechten Seite ist vom Typ float) Auch falsch (Ergebnis wäre 3*6=18): int i = (int) 3.5f * 6; Richtig: int i = (int)(3.5f * 6);

5-25 Kontrollstrukturen (1/4) 5-26 Kontrollstrukturen (2/4) If-Anweisung (bedingte Ausführung): if (i > 12 ) { System.out.println("i ist größer als 12!"); If-Else-Anweisung: if (i > 12 ) { System.out.println("i ist größer als 12!"); else { System.out.println("i ist kleiner als 12!"); Switch-Anweisung: int month = 8; switch (month) { case 1: System.out.println("January"); break; case 2: System.out.println("February"); break; case 3: System.out.println("March"); break; case 4: System.out.println("April"); break; case 5: System.out.println("May"); break; case 6: System.out.println("June"); break; case 7: System.out.println("July"); break; case 8: System.out.println("August"); break; case 9: System.out.println("September"); break; case 10: System.out.println("October"); break; case 11: System.out.println("November"); break; case 12: System.out.println("December"); break; default: System.out.println("Invalid month."); break; Sollte nach Möglichkeit anstelle von stark verschachtelten If-Else-Anweisungen verwendet werden. Der Code wird dadurch kürzer und besser verständlich! 5-27 Kontrollstrukturen (3/4) 5-28 Kontrollstrukturen (4/4) While-Schleife: Wiederhole, solange der Ausdruck wahr ist: while (i>10) { System.out.println(i); i--; Do-While-Schleife: Wiederhole, solange der Ausdruck wahr ist, mindestens jedoch einmal: do { System.out.println(i); i--; while (i > 10); For-Schleife: Durchläuft einen Wertebereich. Schleifenvariable kann dabei direkt im Kopf der Schleife mit angegeben werden. Das spart Codezeilen! for (int i=0;i<10;i++){ System.out.println(i); Initialisierung Schleifen- Bedingung Inkrement oder Dekrement

5-29 Demo 5-30 Exkurs: Einlesen von Zeichen Wir schreiben ein Java-Programm, das eine Zeichenfolge einliest und diese in umgekehrter Reihenfolge wieder ausgibt! Importiert einen InputStreamReader. Er dient zum Konvertieren eines byte-stroms in einen char-strom IOExceptions können auftreten: Dies sind hier Fehlerfälle beim Lesen eines Zeichens (z.b. Strom nicht lesbar usw.) import java.io.inputstreamreader; public class MeinProgramm throws java.io.ioexception { public static void main(string[] args) { InputStreamReader reader = new InputStreamReader(System.in); char c = (char) reader.read(); Standardeingabe Lesen eines einzelnen Zeichens Initialisierung dieses Readers 5-31 Fertiges Programm 5-32 Gültigkeitsbereich von Variablen (1/2) import java.io.inputstreamreader; public class Inverter { public static void main(string[] args)throws java.io.ioexception { InputStreamReader reader = new InputStreamReader(System.in); char[] puffer = new char[20]; char zeichen; System.out.println("Bitte geben Sie eine Zeichenfolge ein und bestätigen Sie mit <Enter>: "); zeichen = (char)reader.read(); // erstes Zeichen Lesen int index=0; while (zeichen!='\n' && zeichen!='\r' && index<=19) { // weiterlesen bis <Enter> puffer[index]=zeichen; // oder Puffer voll zeichen=(char)reader.read(); index++; System.out.println("Inverse Zeichenfolge:"); for (int i=index-1;i>=0;i--) { System.out.print(puffer[i]); System.out.println(); //Zeilenumbruch Merkregeln Eine Variablen kann grundsätzlich an jeder Position im Code deklariert werden. Gültigkeitsbereich erstreckt sich von der Position der Deklaration bis zum Ende der aktuellen Einrückungsebene.

5-33 Gültigkeitsbereich von Variablen (2/2) 5-34 Zusammenfassung und Ausblick import java.io.inputstreamreader; public class Inverter { public static void main(string[] args) throws java.io.ioexception { InputStreamReader reader = new InputStreamReader(System.in); char[] puffer = new char[20]; char zeichen; System.out.println("Bitte geben Sie eine Zeichenfolge ein und bestätigen Sie mit <Enter>: "); zeichen = (char)reader.read(); // erstes Zeichen Lesen int index=0; while (zeichen!='\n' && zeichen!='\r' && index<=19) { puffer[index]=zeichen; zeichen=(char)reader.read(); index++; System.out.println("Inverse Zeichenfolge:"); for (int i=index-1;i>=0;i--) { System.out.print(puffer[i]); System.out.println(); //Zeilenumbruch reader puffer zeichen index i Sie können bereits alle denkbaren Algorithmen in Java formulieren (vgl. Kapitel 4)! Falls Sie noch einmal genau nachlesen wollen: http://java.sun.com/docs/books/tutorial/java/ Wie strukturiert man aber Java-Programme so, dass die gut lesbar und wenig fehleranfällig sind? Restliche Magie unseres Programm- Grundgerüsts muss noch erklärt werden Nächster Schritt: Objektorientierung