Einführung in die Java- Programmierung



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

Diana Lange. Generative Gestaltung Operatoren

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

Einführung in die Java- Programmierung

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Einführung in die Java- Programmierung

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

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

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

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Programmierkurs Java

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

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

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

Einführung in die Programmierung

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

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

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

Java Einführung Operatoren Kapitel 2 und 3

Java: Vererbung. Teil 3: super()

Einführung in die Java- Programmierung

Mathematischer Vorbereitungskurs für Ökonomen

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Einführung in die Java- Programmierung

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

Computeranwendung und Programmierung (CuP)

Objektorientierte Programmierung

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

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

Übung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse

Elemente der Analysis I Kapitel 2: Einführung II, Gleichungen

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

7 Rechnen mit Polynomen

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 16

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Excel Funktionen durch eigene Funktionen erweitern.

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

Einführung in die Programmierung (EPR)

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

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

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

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Java Kurs für Anfänger Einheit 5 Methoden

Kontrollstrukturen und Funktionen in C

Vorlesung Informatik II

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Repetitionsaufgaben: Lineare Gleichungen

Zeichen bei Zahlen entschlüsseln

5.4 Klassen und Objekte

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Klausur in Programmieren

Delegatesund Ereignisse

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Übungen Programmieren 1 Felix Rohrer. Übungen

Deklarationen in C. Prof. Dr. Margarita Esponda

Quadratische Gleichungen

Abschlussprüfung Realschule Bayern II / III: 2009 Haupttermin B 1.0 B 1.1

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

Übungsblatt 3: Algorithmen in Java & Grammatiken

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

Dr. Monika Meiler. Inhalt

2. Programmierung in C

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace.

1 Vom Problem zum Programm

Programmierung in C. Grundlagen. Stefan Kallerhoff

Primitive Datentypen

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

Java Kurs für Anfänger Einheit 2 Datentypen und Operationen

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

Informatik Repetitorium SS Volker Jaedicke

Vorkurs Informatik WiSe 15/16

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Scala kann auch faul sein

Testklausur 1 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Hochschule München, FK 03 FA SS Ingenieurinformatik

Lehrer: Einschreibemethoden

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

FB Informatik. Fehler. Testplan

Modellierung und Programmierung 1

Schuljahreswechsel im Schul-Webportal

5. Tutorium zu Programmieren

Zählen von Objekten einer bestimmten Klasse

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

public class SternchenRechteckGefuellt {

Lineare Gleichungssysteme

Einführung in die Programmierung

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

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

Software-Engineering Grundlagen des Software-Engineering

5. Abstrakte Klassen

Einführung in das Arbeiten mit MS Excel. 1. Bearbeitungs

Operationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2

Studentische Lösung zum Übungsblatt Nr. 7

Erwin Grüner

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

Einführung in die Java-Programmierung. Tassilo Horn WiSe 2014/2015

Transkript:

Einführung in die Java- Programmierung Dr. Volker Riediger Der hat die früher handschriftlichen Folien lesbar gemacht. Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1

Heutige Themen Hello World! Unser erstes Programm Datentypen Zahlen, Wahrheitswerte, Zeichenketten Variablen Deklarationen, Zuweisungen Ausdrücke & Operationen Ein- und Ausgabe Verzweigungen Häufige Fehler 2

Demo: HelloWorld.java Ein Java-Projekt in Eclipse anlegen 1.File > New > Java Project 2.Projektname angeben 3.Finish drücken Eine Programm im Projekt anlegen 1.New > Class 2.Klassenname angeben 3.[x] bei public static void main(string[] args) 4.Finish 3

Anatomie eines Java-Programms Java-Programme bestehen aus Klassen Klassen- und Dateinamen korrespondieren: Klasse HelloWorld ==> HelloWorld.java Klassen enthalten Methoden (Funktionen, Prozeduren) Methoden enthalten die eigentlichen Anweisungen Die Programmausführung beginnt bei der Methode main() Fürs erste, ignoriert die Schlüsselworte public, static, void 4

Die drei Schritte der Java- Programmierung 5

Zahlen Aus der Mathematik kennt ihr die natürliche Zahlen: N ganze Zahlen: Z rationale Zahlen: Q reelle Zahlen: R Problem: Diese Mengen sind unendlich und Zahlen beliebig groß Extremfall: Irrationale Zahlen (z.b. PI) können mit endlichem Speicherplatz nicht repräsentiert werden 6

Datentypen in Java int long Typ Wertebereich Standardwert Beispiele double boolean ganze Zahlen, 32bit, von -2^31 bis 2^31-1 ganze Zahlen, 64bit, von -2^63 bis 2^63-1 Fließkommazahlen, 64bit, ~16 Dezimalstellen genau Wahrheitswerte: true oder false 0-100, 17, 9999 0 1000000000000l, -13l 0.0 0.0001, -117.3, 3.14159 false false, true String Zeichenketten Hallo Welt! 7

Variablen in der Mathematik In der Mathematik haben Variablen einen Namen eine Grundmenge einen evtl. unbekannten, aber nicht veränderbaren Wert 8

Variablen in der Mathematik Mathematische Variablen sind nicht änderbar, sondern sie sind Namen für eine Zahl 9

Variablen in Java Variablen in Programmen haben einen Namen einen während der Lebensdauer festen Datentyp einen über die Zeit veränderbaren Wert Wichtig: Vor der Benutzung muss eine Variable deklariert werden! 10

Variablendeklaration Eine Variablendeklaration besteht aus dem Datentyp (z.b. int, long, oder double) dem Namen optional einer initialen Wertzuweisung int x; // x hat Standardwert 0 long y = 17; Durch eine Deklaration wird Speicherplatz für genau einen Wert dieses Typs reserviert In Programmen sind Variablen Namen für einen Speicherplatz 11

Zuweisungen Der Wert einer Variable kann durch eine Zuweisung (=) verändert werden Erst wird der Wert der rechten Seite berechnet und dann der Variablen auf der linken Seite zugewiesen int x = 17; // Deklaration & Zuweisung x = 18; // Erneute Zuweisung int x = 19: // Fehler, Typ darf nicht // erneut angegeben werden! 12

Datentypen 13

Ausdrücke Ein Ausdruck ist ein Literal, eine Variable oder eine Folge von Operationen auf Literalen/Ausdrücken, die ein Ergebnis liefern int x = 11; // Deklaration 17 // Ausdruck: Literal x // Ausdruck: Variable x + 19 // Ausdruck: Operation 14

Einfache Ausgabe Zur Ausgabe beliebiger Werte auf der Standardausgabe (System.out) gibt es in Java die Methoden: // Wert von <Ausdruck> ausgeben System.out.print(<Ausdruck>) // Wert von <Ausdruck> gefolgt von // einem Zeilenumbruch ausgeben System.out.println(<Ausdruck>) 15

Operationen auf Zahlen Auf allen Zahlentypen definiert: Addition, Subtraktion, Multiplikation und Division 17 + 4 // 21 (int) 17 + 4l // 21l (long) 11 21 // -10 (int) 3 * 10 // 30 (int) 10 / 3 // 3 (int, Ganzzahldivision) 10.0 / 3 // 3.33333333333335 (double) 16

Operationen auf Zahlen Auf Zahlen (int, long, double) definiert: Rest einer Division (Modulo) 17 % 4 // 1 (int) -4 % 3 // -1 (int) 18 % 4l // 2 (long) -18l % 4 // -2 (long) 18.5 % 4 // 2.5 (double) -16.5 % 2.5 // -1.5 (double) 17

Automatische Konvertierung Der größte Zahlentyp in einem Ausdruck bestimmt den Typ des Wertes Regel: double > long > int 1 + 1 // int + int => int 1 + 1l // int + long => long 1.0 + 1 // double + int => double 3 / 2 // int / int => int 3.0 / 2 // double / int => double 18

Demo: ZahlOps.java Aufgabe: Lasst uns ein Programm schreiben, das jeweils 2 Variablen der Typen int, long und double definiert für verschiedene Kombinationen der Variablen die Zahlenoperationen benutzt die Werte der Ausdrücke auf der Konsole ausgibt 19

Operationen auf Zeichenketten Auf Zeichenketten (String) definiert: Verkettung (Konkatenation) "Hallo" + " Welt" // "Hallo Welt" Werte anderer Typen werden automatisch in String konvertiert "Bitte " + 3 + " Bier!" // "Bitte 3 Bier" 20

Operationen auf Wahrheitswerten Für Wahrheitswerte (boolean) definiert: NOT (!), AND (&&) und OR ( ) // NOT:!true // false!false // true 21

Vergleichsoperationen Für alle Zahlen definiert, liefern einen Wahrheitswert (boolean): 22

Vergleichsoperationen für Strings Vergleich zweier Zeichenketten: Hallo.equals( Hallo ) ==> true hallo.equals( Hallo ) ==> false Vergleich ohne Berücksichtigung der Groß-/Kleinschreibung Hallo.equalsIgnoreCase( Hallo ) ==> true hallo.equalsignorecase( Hallo ) ==> true hi!.equalsignorecase( Hallo ) ==> false 23

Nochmal Zuweisungen & Ausdrücke Der Ausdruck auf der rechten Seite einer Zuweisung darf die Variable der linken Seite enthalten Der Ausdruck wird dann mit dem aktuellen (alten) Wert berechnet und danach als neuer Wert zugewiesen x = 2; x = x * x; // x = 2 * 2 24

Zuweisungskurzformen int x = 10; x += 5; // x = x + 5:? x -= 7; // x = x 7:? x *= 2; // x = x * 2:? x /= 2; // x = x / 2:? x++; // x = x + 1:? x--; // x = x 1:? 25

Demo: ZahlOps.java Aufgabe: Lasst uns ZahlOps.java erweitern, um Operationen auf Zeichenketten Operationen auf Wahrheitswerten Vergleichsoperationen Zuweisungskurzformen 26

Operatorpräzedenzen Java kennt die üblichen Rechenregeln wie Punkt- vor Strichrechnung Die Auswertung von binären Operatoren ist linksassoziativ (von links nach rechts) Ratschlag: Macht trotzdem durch Klammerung die Reihenfolge deutlich 1 + 2 * 3 // 1 + (2 * 3) ==> 7 2 * 2 9 / 3 // (2 * 2) (9 / 3) // ==> 7 27

Ein- und Ausgabe mit JConsole JConsole ermöglich die einfache Ein- und Ausgabe von Zahlen und Strings: // JConsole starten JConsole.start(); // Eingabe (Benutzer fragen) int i = JConsole.readInt( Ein int: ); long l = JConsole.readLong( Ein long: ); double d = JConsole.readDouble( Ein double: ); String s = JConsole.readString( Ein String: ); // Ausgabe System.out.println( i = + i +, l = + l, d = + d +, s = + s); 28

Demo: Greeting.java Aufgabe: Lasst uns ein Programm schreiben, welches den Benutzer nach seinem Namen fragt und ihn dann persönlich begrüßt Vorüberlegung: EVA Was ist die Eingabe? Wie erfolgt die Verarbeitung? Was ist die gewünschte Ausgabe? 29

Mathematische Funktionen Die in Java enthaltene Klasse Math enthält mathematische Konstanten und viele Funktionen Math.PI Math.E // Approx. PI // Approx. e (Basis des nat. Log.) Math.sqrt(9) // Wurzel: 3.0 Math.round(1.5) // Runden: 2 Math.round(1.49) // Runden: 1 Math.pow(2, 3) // Exponent: 8 Math.abs(-18) // Absolutwert: 18 30

Methoden-Signaturen lesen Eine Methoden-Signatur legt den Datentyp des Ausgabewerts (A), den Methodennamen (N) und die Datentypen der Eingabewerte (E) fest: // A: double, N: sqrt, E: double double sqrt(double a) // A: double, N: pow, E: double, double double pow(double a, double b) 31

Demo: Pythagoras.java Aufgabe: Lasst uns ein Programm schreiben, welches die Länge der Katheten a und b vom Benutzer abfragt und dann die Länge der Hypotenuse berechnet und ausgibt a 2 + b 2 =c 2 c= a 2 + b 2 32

Demo: QuadGleichung.java Aufgabe: Lasst uns ein Programm schreiben, welches eine quadratische Gleichung löst. (Nullstellenbestimmung der Parabel) ax 2 + bx+ c=0, (a 0) Lösung mit p q Formel : x 2 + px+ q=0, p= b a, q= c a x= p 2 ± D, D=( p 2 ) 2 q 33

Demo: QuadGleichung.java Eine quadratische Gleichung kann zwei, eine, oder gar keine reelle Lösung haben, je nach Wert der Diskriminante D. Statt tue dies tue das tue jenes brauchen wir: 2 Lsg.... berechne D eine Lsg. keine Lsg. 34

Verzweigungen Für Fallunterscheidungen gibt es die if- Anweisung: if (<Test-Ausdruck>) { // Anweisungen für true } else { // Anweisungen für false // (der else-teil ist optional) } 35

Verzweigungen Beispiel: Was wird ausgegeben? if (1 < 2) { System.out.println("Math works!"); } else { System.out.println("Math broken!"); } 36

Verzweigungen Beispiel: Was wird ausgegeben? if ((1 >= 2) (7 % 4 == 3)) { System.out.println("Ja!"); } else { System.out.println("Nein!"); } 37

Verzweigungen Beispiel: Was wird ausgegeben? if (!((9 <= 10) && (8 > 4))) { System.out.println("Ja!"); } System.out.println("Fertig"); 38

Blöcke Eine von { } eingeschlossene Sequenz von Anweisungen bezeichnet man als einen Block Variablen, die in einen Block deklariert wurden, sind nur in diesem Block sichtbar int x = 10; int y = 5; if (x > y) { int z = x + y; } System.out.println(z); // Fehler! 39

Demo: QuadGleichung.java Aufgabe: Lasst uns ein Programm schreiben, welches eine quadratische Gleichung löst. (Nullstellenbestimmung der Parabel) ax 2 + bx+ c=0, (a 0) Lösung mit p q Formel : x 2 + px+ q=0, p= b a, q= c a x= p 2 ± D, D=( p 2 ) 2 q 40

Fehler & Fallstricke Viele Fehler im Programm werden schon beim Kompilieren gefunden und in Eclipse rot unterkringelt Syntaxfehler, Datentypfehler, etc. Wenn man mit der Maus auf die Unterkringelung zeigt, dann wird eine genaue Fehlermeldung angezeigt 41

Syntaxfehler <something> cannot be resolved Ihr versucht auf eine nicht deklarierte Variable, Klasse oder Methode zuzugreifen int x1 = 10, x2 = 20; x = x1 + x2; 42

Syntaxfehler Duplicate variable <something> Ihr versucht eine schon existierende Variable nochmal zu deklarieren int x1 = 10, x2 = 20; int x1 = x1 + x2; 43

Typfehler The operator <x> is undefned for the argument type(s) boolean, int Ihr wendet einen Operator auf falsche Typen an int a = 10, b = 20, c = 30; if (a < b < c) { // irgendwas } 44

Typfehler Type mismatch: cannot convert from <x> to <y> In einer Zuweisung ist der Typ der Variable (x) kleiner als der des Werts des zugewiesenen Ausdrucks Ihr verwendet eine Zuweisung (=) und wollt eigentlich einen Vergleich (==) machen long a = 1; int b = a + 1; if (a = 2) { } ;; irgendwas 45

Böse Fehler Manche Fehler werden nicht vom Compiler erkannt, sondern sie drücken sich nur in (aus Sicht des Programmierers) falschen Ergebnissen aus Ohne Erfahrung schwer zu finden Z.B. Typkonvertierungen, Überläufe, Rundungsfehler 46

Demo: BoeseFehler.java Bei Zuweisungen wird zuerst der Wert des Ausdrucks auf der rechten Seite berechnet und erst danach der Variable auf der linken Seite zugewiesen und ggf. konvertiert Zahlen können nicht beliebig groß sein: siehe auch BigInteger, BigDecimal Gleitkommazahlen sind nicht immer genau 47