Vorkurs: Java-Einführung

Ähnliche Dokumente
Primitive Datentypen

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

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

Einführung in die Programmierung mit VBA

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

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

Einführung in die Programmierung 1

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

JAVA - Methoden

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Einstieg in die Informatik mit Java

Informatik I - Einstiegskurs

JAVA-Datentypen und deren Wertebereich

Wie entwerfe ich ein Programm?

Grundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel Problem

3. Anweisungen und Kontrollstrukturen

Einstieg in die Informatik mit Java

System.out.println("TEXT");

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

Kapitel 3: Variablen

Welche Informatik-Kenntnisse bringen Sie mit?

Ein erstes Java-Programm

Übungen zu Algorithmen

Elementare Konzepte von

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

Javakurs für Anfänger

Einstieg in die Informatik mit Java

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

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

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Erster Kontakt mit Java und Pseudocode

Repetitorium Informatik (Java)

Einstieg in die Informatik mit Java

Unterlagen. CPP-Uebungen-08/

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

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

JAVA - Methoden - Rekursion

Beispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Programmierkurs Java

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Blöcke. Beispiel: Variablen in Blöcken

Programmierkurs Java

Die Programmiersprache C Eine Einführung

Grundlagen von C# - 1

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

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

Java: Eine kurze Einführung an Beispielen

Grundlagen der Programmierung Teil1 Einheit III Okt. 2009

Werkzeuge zur Programmentwicklung

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Tag 3 Repetitorium Informatik (Java)

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Algorithmen zur Datenanalyse in C++

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

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

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

Wertebereich und Genauigkeit der Zahlendarstellung

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

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Vorkurs Informatik WiSe 16/17

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Java Einführung Objekt-Datentypen und Strings. Kapitel 8 und 9

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Kapitel 3. Programmierkurs. Arten von Anweisungen. 3.1 Was sind Anweisungen?

String-Konkatenation

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

Programmieren I + II Regeln der Code-Formatierung

Programmiertechnik Kontrollstrukturen

Programmieren I. Kapitel 5. Kontrollfluss

1 Polymorphie (Vielgestaltigkeit)

Die einfachsten Anweisungen

1. Der Einstieg in Java. Was heißt Programmieren?

Einstieg in die Informatik mit Java

Vorlesung Programmieren

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung:

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

3. Grundanweisungen in Java

Einführung in die Programmierung mit Java

Java-Schulung Grundlagen

Einführung in die Java- Programmierung

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

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

3. Algorithmenentwurf und JAVA. Informatik II für Verkehrsingenieure

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Kontrollstrukturen

Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben

Einführung in die C-Programmierung

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

Transkript:

1 Vorkurs: Java-Einführung Dr. Hui Shi 11. Oktober 2017

Überblick 1 Organisatoriches 2 Von Algorithmen zu Programmen Intuitiver Algorithmusbegriff 3 Grundlegende Konzepte der Programmiersprache Java Syntax und Semantik Datentypen in Java und API Steuerungs-Anweisungen in Java 4 Java Programme Einfache Java-Programme Attribute Konstruktoren Methoden Verwendung von Klassen

Veranstalterin Dr. Hui Shi: MZH 3230, Tel. 218-64260 shi@informatik.uni-bremen.de Literaturempfehlung (optional) R. Sedgewick und K. Wayne: Einführung in die Programmierung mit Java. Pearson Verlag 2011. ISBN 978-3-86894-067-3

4 Termine Termin Datum Zeit Raum T1 11.10. 8-10 MZH 1090 T2 11.10. 12-14 MZH P1 (Windows) T3 12.10. 10-12 MZH P1 (Windows) T4 12.10. 12-14 MZH P1 (Windows) T5 12.10. 14-16 MZH P1 (Windows) T6 13.10. 12-14 MZH P1 (Windows) T7 13.10. 14-16 MZH P1 (Windows)

Von Algorithmen zu Programmen 5

6 Inhalt Intuitiver Algorithmusbegriff Beispiele für Algorithmen Bausteine der Programmiersprache Java

7 Intuitiver Algorithmusbegriff Algorithmen sind Vorschriften zur Ausführung einer Tätigkeit. Beispiele sind Bedienungsanleitungen, Bauanleitungen, Kochrezepte Definition Ein Algorithmus ist eine präzise (d.h. in einer festgelegten Sprache abgefasste) endliche Beschreibung eines allgemeinen Verfahrens unter Verwendung ausführbarer elementarer Verarbeitungsschritte.

8 Primzahl-Test Test, ob eine gegebene natürliche Zahl eine Primzahl ist Definition: Eine Primzahl ist eine natürliche Zahl mit genau zwei verschiedenen natürlichen Teilern, nämlich 1 und sich selbst. Natürliche Zahlen (Bsp.) 1 2 31 1029 1031 Primzahl?

Ein Algorithmus 1 Sei x eine natürliche Zahl, b eine Variable vom Wert wahr oder falsch. 2 Initialisiere b mit wahr. 3 Falls x kleiner als 2, dann weise b false zu. Gehe zu 5. 4 Sonst Sei i eine Variable von natürlicher Zahlen. Initialisiere i mit 2. Solange i kleiner als x ist, führe Schritte i und ii aus. 1 Falls x durch i teilbar ist, weise b false zu. Gehe zu 5. 2 Sonst erhöhe i um 1. 5 Falls b falsch ist, ist x keine Primzahl, sonst ist x eine Primzahl.

Ein Java-Programm: PrimeTest p u b l i c c l a s s PrimeTest { p u b l i c v o i d i s P r i m e ( i n t x ) { b o o l e a n b = t r u e ; i f ( x <2) { b = f a l s e ; e l s e { i n t i = 2 ; w h i l e ( i <x ) { i f ( x%i ==0) { b = f a l s e ; b reak ; e l s e { i = i + 1 ; i f (! b ) { System. out. p r i n t l n ( x + i s not a prime number. ) ; e l s e { System. out. p r i n t l n ( x + i s a prime number. ) ;

Bausteine der Programmiersprache Java Typen, z.b. int: natürliche Zahl boolean: Wahrheitswert Variablen, z.b., x, b und i Konstanten, z.b., 1, 2, true und false Operationen, z.b. <: kleiner als, x < 2 und i < x +: Plus, i + 1 %: Restberechnung, x%i ==: Vergleich, x%i == 0 Deklarationen, z.b., int : x, i und boolean : b Anweisungen, z.b. =: Zuweisung, b = true, b = false, i = 2 und i = i + 1 while: solang, while (i < x) if-else: falls-sonst, if ((x%i) == 0) else, if (!b) else break: hier für gehe zu System.out.println: hier für die Ausgabe des Ergebnisses 11

12 Binärsystem Berechnung der binären Darstellung einer dezimalen Zahl Dezimale Zahl 10-10 123-123 Binäre Darstellung (Bsp. 8-Bit)

Binärsystem Berechnung der dezimalen Darstellung einer binären Zahl Binäre Zahl (Bsp. 8-Bit) 00000000 00000001 00000010 01111111 11110000 Dezimale Darstellung

Übung ueb1.pdf

Grundlegende Konzepte der Programmiersprache Java 15

Inhalt Syntax und Semantik Programmiersprache Java Primitive Typen in Java Zeichenfolgen: String Bibliotheken und API Steuerungs-Anweisungen in Java

Syntax und Semantik Syntax Die Syntax gibt formale Regeln vor, welche Satzmuster gebildet werden können. Beispiel Die Kinder spielen mit dem Ball. (syntaktisch korrekt) Die Kinder spielen dem Ball mit. (syntaktisch falsch) Semantik Die Semantik legt die Bedeutung fest. Beispiel Die Kinder spielen mit dem Ball. (semantisch korrekt, sinnhaft) Der Ball spielt mit den Kindern. (semantisch falsch, sinnlos)

18 Programmiersprache Java Ausdrucksmittel zur Formulierung von Algorithmen Kommunikation zwischen Menschen und Maschinen verständlich für Menschen und verarbeitbar für Maschinen Generationen maschinenorientierte Sprachen (assembler) prozedurale Sprachen (imperative Sprachen) objektorientierte Sprachen Java: eine objektorientierte Programmiersprache

Erstes Java-Programm c l a s s HelloWorld { p u b l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] ) { System. out. p r i n t l n ( H e l l o, World ) ; Java-Programmierung mit BlueJ Projekt erstellen Klasse erzeugen Programm kompilieren programm ausführen Editor Compiler JVM HelloWorld.java HelloWorld.class "Hello, World"

Einige Java-Standardbegriffe Klasse: HelloWorld Hauptmethode: public static void main(string args[]) Anweisung: System.out.println( Hello, World ) Programme mit Parametern c l a s s H e l l o { p u b l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] ) { S t r i n g t i t l e = a r g s [ 0 ] ; // d e r e r s t e Parameter S t r i n g nachname = a r g s [ 1 ] ; // d e r z w e i t e Parameter S t r i n g vorname = a r g s [ 2 ] ; // d e r d r i t t e Parameter System. out. p r i n t l n ( H e l l o, + t i t l e + + vorname + + nachname ) ; Ausführung: { Mr., Mustermann, Max Übung: Ein BlueJ-Projekt für das Hello-Programm erstellen, übersetzten und ausführen.

Datentypen in Java Datentypen legen die zu bearbeitenden Informationseinheiten fest. Ein Datentyp hat einen Wertebereich und einen dazugehörigen Satz an Operationen. Es gibt zwei Arten von Datentypen in Java: primitive Typen und Referenztypen oder Klassen. Java ist eine stark typisierte Programmiersprache. Der Typ jeder Variable und jedes Ausdrucks ist in der Übersetzungszeit bekannt. Der Typ einer Variable beschränkt die Werte, die die Variable speichern darf. Der Typ eines Ausdrucks beschränkt den Wert, den der Ausdruck produzieren darf. Typen beschränken auch die Operationen und deren Bedeutungen in Ausdrücken.

22 Primitive Datentypen Die primitive Datentypen sind die in der Sprache eingebauten Typen zur Speicherung von Werten Numerische Typen für Ganzzahlen, z.b. int Numerische Typen für Gleitkommazahlen, z.b. double Zeichen-Datentyp: char boolescher Datentyp: boolean Beispiele primitiver Datentypen in Java Datentyp Werte (Bsp.) Operation (Bsp.) int 3, 0, -24 +, -, *, /, <, >, == double 345.7, 3.14 +, -, *, /, <, >, == char a, c, 1 <, >, == boolean true, false ==,!=, &&,,!

Einige weitere Java-Standardbegriffe Literale/Werte: 1234, 99.0f, Hallo Variablen: a, b, c Ausdruck: a + b Deklaration: int a, b Zuweisungen: a = 1234; b = 99 Deklaration mit Initialisierung: int c = a + b 23

24 Zweites Java-Programm c l a s s BasicTypes { p u b l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] ) { i n t a, b ; a = 1234; b = 9 9 ; i n t c = a + b ; System. out. p r i n t l n ( c = + c ) ;

Zeichenfolgen: String String ist ein Beispiel-Referenztyp Beispiel: Hello, World Konkatenationsoperator + hängt Zeichenketten aneinander: Hello, + Shi, c = + c Gleichheit von Zeichenfolgen == vergleicht die Referenzen zweier Zeichenfolgen s1 = 1234 ; s2 = s1; s1 == s2? equals(string s) vergleicht die Inhalte zweier Zeichenfolgen s1 = 1234 ; s3 = ; s3 = s3 + 1234 ; s1 == s3? s3.equals(s1)?

Zeichenfolgen: String (Beispiel) Der Operator == vergleicht nur Referenzen (Identität). Die Methode equals vergleicht das Objekt (Gleichheit). Beispiel: c l a s s S t r i n g E q { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { S t r i n g a = So g e h t s, b = So, c = a ; b = b + g e h t s ; System. out. p r i n t l n ( a, c == > + ( a==c ) ) ; System. out. p r i n t l n ( a, b == > + ( a==b ) ) ; System. out. p r i n t l n ( a, b e q u a l s > + a. e q u a l s ( b ) ) ; Welche Ausgaben liefert das Programm?

27 API Bibliotheken API Applications Programming Interface Klassen, deren Attribute und Methoden primär dafür gedacht sind, in anderen Programmen eingesetzt zu werden. Web-Adresse: API Dokumentation unter http://download.oracle.com/javase/ Java-APIs sind durch Pakete organisiert, z.b. java.lang, java.io Beispiel-Klassen in java.lang und java.io Klasse PrintStream public void println(string x) Klasse Integer public static int parseint(string s, int radix) throws NumberFormatException Klasse Math public static final double PI Klasse Object boolean equals(object o)

Anwendungsbeispiele System.out.println( Hello, World ) Integer.parseInt(args[0]) Double.parseDouble(args[0]) s3.equals(s1) Math.PI 28

Steuerungs-Anweisungen in Java Sequenzielle Ausführung Die zeitliche Abfolge von Schritten Beenden von Anweisungen durch ; Beispiel: Zubereitung einer Tasse grüner Tee / A t e a r e c i p e. @author S h i @ v e r s i o n 1. 0 / p u b l i c c l a s s GreenTea { p u b l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] ) { S t r i n g step1, step2, step3, step4, r e c i p e ; s t e p 1 = Koche Wasser ; s t e p 2 = Gib e i n e n h a l b e n TL Tee i n e i n e Tasse ; s t e p 3 = Warte, b i s das Wasser a u f 80 Grad a b g e k u e h l t i s t ; s t e p 4 = G i e s s e das Wasser i n d i e Tasse ; r e c i p e = s t e p 1+ ; \ n + s t e p 2+ ; \ n + s t e p 3+ ; \ n + s t e p 4 ; System. out. p r i n t l n ( r e c i p e ) ;

Beispiele y = x; if (x<0) { if (x<0) { y = -x; y = -x; else { y = x; 30 Bedingte Ausführungen Auswahl von Schritten aufgrund einer zu testenden Bedingung Variante 1 Variante 2 if (condition) { if (condition) { step(s) step1(s) else { step2(s) Flussdiagramme ja condition nein ja condition nein step(s) step1(s) step2(s)

Schleifen: Wiederholung von Schritten aufgrund einer zu testenden Bedingung for-schleifen Syntax for (init; condition; update) { step(s) Begriffe Initialisierung von Schleifenvariablen Boolscher Ausdruck als Bedingung, oder Schleifenabbruchbedingung Inkrementierung von Schleifenvariablen Schleifenrumpf Beispiel z = 0; for (i=0; i<10; i++) { z = z + i; 31

while-schleifen Syntax while (condition) { step(s) Beispiel z = 0; i = 0; while (i<10) { z = z + i; i = i + 1; Flussdiagramm condition ja step(s) nein

33 do-while-schleifen Syntax do { step(s) while (condition); Beispiel z = 0; i = 0; do { z = z + i; i = i + 1; while (i<10); Flussdiagramm step(s) ja condition nein

34 Diskussion Verschachtelte if-anweisungen if (cond1) if (cond2) step1 else step2 if (cond1) {if (cond2) step1 else step2 Was ist der Unterschied zwischen ++i, i++ und i = i+1? Gibt es Fälle, in denen eine for-schleife statt einer while-schleife (beziehungsweise umgekehrt) verwendet werden muss? Was ist der Unterschied zwischen while- und do-while-schleife?

Übung ueb2.pdf

Java Programme 36

Inhalt Einfache Java-Programme Attribute Konstruktoren Methoden

38 Ganzzahlige Wurzelberechnung z = x z z x < (z + 1) (z + 1), wobei x N Ein Lösungsansatz Sei x eine positive Zahl vom Typ Integer und z eine Variable vom Typ Integer. Initialisiere z mit 0. Solange (z + 1) (z + 1) x ist, addiere eine 1 zu z. z ist die Wurzel von x.

Ein Programm / The c l a s s c o n t a i n s a method which computes the r o o t o f a p o s i t i v e i n t e g e r number. @author S h i / p u b l i c c l a s s Root { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { i n t x ; x = I n t e g e r. p a r s e I n t ( a r g s [ 0 ] ) ; i n t z = 0 ; i f ( x <0) System. out. p r i n t l n ( E r r o r! ) ; e l s e { w h i l e ( ( z +1) ( z+1)<=x ) { z=z +1; System. out. p r i n t l n ( Die Wurzel von + x + i s t + z +. ) ; 39

Fragen Was macht die while-anweisung? Was ist der Unterschied von + in x + y und x + + + y? Wie läuft die Berechnung ab? Wie oft wird die Zuweisung z = z + 1 durchgeführt? Ist das Programm für eine beliebige Zahl x korrekt? 40

Attribute Eine Klasse mit zwei Attributen c l a s s A r t i k e l P r e i s 1 { S t r i n g a r t i k e l ; // Name des A r t i k e l s i n t c e n t ; // P r e i s i n Euro Cent Diskussion Die Klasse ArtikelPreis1 enthält Attribute artikel und cent Mit new() kann Objekte der Klasse erzeugt werden.

42 Konstruktoren Konstruktoren dienen der Erzeugung von Objekten c l a s s A r t i k e l P r e i s 2 { A r t i k e l P r e i s 2 ( S t r i n g a, i n t c ) { // K o n s t r u k t o r a r t i k e l = a ; c e n t = c ; S t r i n g a r t i k e l ; // Name des A r t i k e l s i n t c e n t ; // P r e i s i n Euro Cent Diskussion Konstruktor: ArtikelPreis2(String a, int c) Erzeugung eines Objekts mit konkreten Werten für die Attribute, z.b. ArtikelPreis2 apfel = new ArtikelPreis2( Apfel, 200) Objekt-Zustände

Methoden Methoden dienen der Verarbeitung von Attributen c l a s s A r t i k e l P r e i s 3 { A r t i k e l P r e i s 3 ( S t r i n g a, i n t c ) { // K o n s t r u k t o r a r t i k e l = a ; c e n t = c ; S t r i n g a r t i k e l ; // Name des A r t i k e l s i n t c e n t ; // P r e i s i n Euro Cent d o u b l e umrechnen ( d o u b l e k u r s ) { r e t u r n c e n t k u r s ; b o o l e a n v e r g l e i c h e n ( A r t i k e l P r e i s 3 ap ) { i f ( a r t i k e l. e q u a l s ( ap. a r t i k e l ) && c e n t==ap. c e n t ) { r e t u r n ( t r u e ) ; e l s e { r e t u r n ( f a l s e ) ; v o i d ausgeben ( ) { System. out. p r i n t l n ( a r t i k e l + : + c e n t ) ; Diskussion Methode hat direkten Zugriff auf Attribute Objekt-Referenzen

Verwendung von Klassen p u b l i c c l a s s E i n k a u f e n { p r i v a t e A r t i k e l P r e i s 3 [ ] warenkorb ; p r i v a t e i n t count ; p u b l i c E i n k a u f e n ( ) { count = 0 ; warenkorb = new A r t i k e l P r e i s 3 [ 1 0 ] ; p u b l i c v o i d e i n k a u f e n ( A r t i k e l P r e i s 3 a ) { warenkorb [ count ] = a ; count = count + 1 ; p u b l i c d o u b l e p r e i s B e r e c h n e n ( ) { d o u b l e summe = 0. 0 ; f o r ( i n t i =0; i <count ; i ++) { summe += warenkorb [ i ]. umrechnen ( 0. 0 1 ) ; r e t u r n summe ; p u b l i c v o i d p r i n t W a r e n k o r b ( ) { f o r ( i n t i =0; i <count ; i ++) { warenkorb [ i ]. ausgeben ( ) ;

Übung ueb3.pdf