35
Vorkurs: Java-Einf¨ uhrung Dr. Hui Shi 10. Oktober 2019 1

Vorkurs: Java-Einf uhrung - Uni Bremenshi/Lehre/eso/eso_handout.pdf · Uberblick 1 Organisatoriches 2 Von Algorithmen zu Programmen Intuitiver Algorithmusbegri Beispiele von Algorithmen

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Vorkurs: Java-Einfuhrung

Dr. Hui Shi

10. Oktober 2019

1

Uberblick

1 Von Algorithmen zu ProgrammenIntuitiver AlgorithmusbegriffBeispiele von AlgorithmenBausteine der Programmiersprache Java

2 Grundlegende Konzepte der Programmiersprache JavaSyntax und SemantikProgrammiersprache JavaDatentypen in Java und APISteuerungs-Anweisungen in Java

2

Termine

Termin Datum Zeit Raum

T1 10.10. 8:30-10:00 MZH 1090 Plenum

T2 10.10. 10:00-12:00 MZH P1 (Windows) Ubung

T3 10.10. 12:30-14:00 MZH P1 (Windows) Plenum

T4 11.10. 8:30-10 MZH P1 (Windows) Ubung

T5 11.10. 10-12 MZH P1 (Windows) Ubung

3

Von Algorithmen zu Programmen

4

Inhalt

Intuitiver Algorithmusbegriff

Beispiele fur Algorithmen

Bausteine der Programmiersprache Java

5

Intuitiver Algorithmusbegriff

Algorithmen sind Vorschriften zur Ausfuhrung einer Tatigkeit.Beispiele sind Bedienungsanleitungen, Bauanleitungen, Kochrezepte

Definition (Informatik)Ein Algorithmus ist eine prazise (d.h. in einer festgelegten Spracheabgefasste) endliche Beschreibung eines allgemeinen Verfahrens unterVerwendung ausfuhrbarer elementarer Verarbeitungsschritte.

6

Primzahl-Test

Test, ob eine gegebene naturliche Zahl eine Primzahl istDefinition: Eine Primzahl ist eine naturliche Zahl mit genau zweiverschiedenen naturlichen Teilern, namlich 1 und sich selbst.

Naturliche Zahlen (Bsp.) Primzahl?

1

2

31

1029

1031

7

Ein Algorithmus

1 Sei x eine naturliche 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 naturlicher Zahlen.Initialisiere i mit 2.Solange i kleiner als x ist, fuhre Schritte i und ii aus.

1 Falls x durch i teilbar ist, weise b false zu. Gehe zu 5.2 Sonst erhohe i um 1.

5 Falls b falsch ist, ist x keine Primzahl, sonst ist x eine Primzahl.

8

Ein Java-Programm: PrimeTest

p u b l i c c l a s s Pr imeTest{

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 r e a k ;

} e l s e { i = i + 1 ;}}

}i f ( ! b ){ System . out . p r i n t l n ( x + ” i s not a pr ime number . ” ) ;} e l s e {System . out . p r i n t l n ( x + ” i s a pr ime number . ” ) ; }

}}

9

Bausteine der Programmiersprache Java

Typen, z.B.int: naturliche Zahlboolean: Wahrheitswert

Variablen, z.B., x , b und i

Konstanten, z.B., 1, 2, true und falseOperationen, 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 : bAnweisungen, z.B.

=: Zuweisung, b = true, b = false, i = 2 und i = i + 1while: solang, while (i < x)if-else: falls-sonst, if ((x%i) == 0) · · · else · · · , if (!b) · · · else · · ·break: hier fur gehe zuSystem.out.println: hier fur die Ausgabe des Ergebnisses

10

Binarsystem

Berechnung der binaren Darstellung einer dezimalen Zahl

Dezimale Zahl Binare Darstellung (Bsp. 8-Bit)

10

-10

123

-123

11

Binarsystem

Berechnung der dezimalen Darstellung einer binaren Zahl

Binare Zahl (Bsp. 8-Bit) Dezimale Darstellung

00000000

00000001

00000010

01111111

11110000

12

Ubung

ueb1.pdf

13

Grundlegende Konzepteder Programmiersprache Java

14

Inhalt

Syntax und Semantik

Programmiersprache Java

Primitive Typen in Java

Zeichenfolgen: String

Bibliotheken und API

Steuerungs-Anweisungen in Java

15

Syntax und Semantik

Syntax

Die Syntax gibt formale Regeln vor, welche Satzmuster gebildet werdenkonnen.BeispielDie Kinder spielen mit dem Ball. (syntaktisch korrekt)Die Kinder spielen dem Ball mit. (syntaktisch falsch)

Semantik

Die Semantik legt die Bedeutung fest.BeispielDie Kinder spielen mit dem Ball. (semantisch korrekt, sinnhaft)Der Ball spielt mit den Kindern. (semantisch falsch, sinnlos)

16

Programmiersprache Java

Ausdrucksmittel zur Formulierung von Algorithmen

Kommunikation zwischen Menschen und Maschinenverstandlich fur Menschen und verarbeitbar fur Maschinen

Generationen

maschinenorientierte Sprachen (assembler)prozedurale Sprachen (imperative Sprachen)objektorientierte Sprachen

Java: eine objektorientierte Programmiersprache

17

Erstes Java-Programm

/∗∗∗ Bes ch r e i b en S i e h i e r d i e K l a s s e He l loWor ld .∗∗ @author Sh i∗ @ve r s i on 12 .10 . 2017∗/

p u b l i c c l a s s H e l l o W o r l d{

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

HelloWorld.class

Editor

HelloWorld.java

Klasseerzeugen

Projekterstellen

Programmkompilieren

programmausführen

Compiler JVM

"Hello, World"18

Einige Java-StandardbegriffeKlasse: HelloWorldHauptmethode: public static void main(String args[])Anweisung: System.out.println(“Hello, World”)

Programme mit Parametern

/∗∗∗ Bes ch r e i b en S i e h i e r d i e K l a s s e He l l o .∗∗ @author Sh i∗ @ve r s i on 12 .10 . 2017∗/

p u b l i c 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 ] ;S t r i n g nachname = a r g s [ 1 ] ;S t r i n g vorname = a r g s [ 2 ] ;System . out . p r i n t l n ( ” H e l l o , ” + t i t l e + ” ” + vorname + ” ”+ nachname ) ;

}}

Ausfuhrung: {“Mr.”, “Mustermann”, “Max”}Ubung: Ein BlueJ-Projekt fur das Hello-Programm erstellen,ubersetzten und ausfuhren.

19

Datentypen in Java

Datentypen legen die zu bearbeitenden Informationseinheiten fest. EinDatentyp hat einen Wertebereich und einen dazugehorigen Satz anOperationen.

Es gibt zwei Arten von Datentypen in Java: primitive Typen undReferenztypen oder Klassen.

20

Primitive Datentypen

Die primitive Datentypen sind die in der Sprache “eingebauten”Typen zur Speicherung von Werten

Numerische Typen fur Ganzzahlen, z.B. int

Numerische Typen fur 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 ==, !=, &&, ||, !

21

Einige weitere Java-Standardbegriffe

Literale/Werte: 1234, 99.0f, “Hallo“Variablen: a, b, cAusdruck: a + bDeklaration: int a, bZuweisungen: a = 1234; b = 99Deklaration mit Initialisierung: int c = a + b

22

Zweites Java-Programm

c l a s s Bas icTypes {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 = 1 2 3 4 ;b = 9 9 ;i n t c = a + b ;System . out . p r i n t l n ( ” c = ” + c ) ;

}}

23

Zeichenfolgen: String

String ist ein Beispiel-Referenztyp

Beispiel: “Hello, World”Konkatenationsoperator “+” hangt Zeichenketten aneinander:“Hello, “ + “Shi”, “c = “ + c

Gleichheit von Zeichenfolgen

“==” vergleicht die Referenzen zweier Zeichenfolgens1 = “1234”;s2 = s1;

s1 == s2 ?

“equals(String s)” vergleicht die Inhalte zweier Zeichenfolgens1 = “1234”;s3 = “”; s3 = s3 + “1234”;s1 == s3 ?

s3.equals(s1) ?

24

Zeichenfolgen: String (Beispiel)

Der Operator == vergleicht nur Referenzen (Identitat).

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 ) ) ;System . out . p r i n t l n ( ”a , c e q u a l s −> ” + a . e q u a l s ( c ) ) ;

} }

Welche Ausgaben liefert das Programm?

25

Java ist eine stark typisierte Programmiersprache.

Der Typ jeder Variable und jedes Ausdrucks istin der Ubersetzungszeit bekannt.Der Typ einer Variable beschrankt die Werte,die die Variable speichern darf.Der Typ eines Ausdrucks beschrankt den Wert,den der Ausdruck produzieren darf.Typen beschranken auch die Operationen undderen Bedeutungen in Ausdrucken.

26

API – Bibliotheken

API – Applications Programming Interface

Klassen, deren Attribute und Methoden primar dafur gedacht sind, inanderen Programmen eingesetzt zu werden.

Web-Adresse: API Dokumentation unterhttp://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)

27

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 AusfuhrungDie zeitliche Abfolge von SchrittenBeenden von Anweisungen durch “;”Beispiel: Zubereitung einer Tasse gruner Tee

/∗∗∗ A tea r e c i p e .∗ @author Sh i @ve 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 , s tep2 , s tep3 , s tep4 , 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 ) ;

} }

29

Bedingte AusfuhrungenAuswahl von Schritten aufgrund einer zu testenden BedingungVariante 1 Variante 2if (condition) { if (condition) {

step(s) step1(s)} } else {

step2(s)}

Flussdiagramme

condition

step(s)

neinja neinjacondition

step2(s)step1(s)

Beispiele

y = x; if (x<0) {if (x<0) { y = -x;

y = -x; } else {} y = x;

}30

Schleifen: Wiederholung von Schritten aufgrund einer zu testendenBedingung

for-SchleifenSyntax

for (init; condition; update) {step(s)

}Begriffe

Initialisierung von SchleifenvariablenBoolscher Ausdruck als Bedingung, oder SchleifenabbruchbedingungInkrementierung von SchleifenvariablenSchleifenrumpf

Beispiel

z = 0;for (i=0; i<10; i++) {

z = z + i;}

31

while-SchleifenSyntax

while (condition) {step(s)

}Beispiel

z = 0; i = 0;while (i<10) {

z = z + i; i = i + 1;}Flussdiagramm

ja

neincondition

step(s)

32

do-while-SchleifenSyntax

do {step(s)

} while (condition);

Beispiel

z = 0; i = 0;do {

z = z + i; i = i + 1;} while (i<10);

Flussdiagramm

step(s)

condition

neinja

33

Diskussion

Verschachtelte if-Anweisungen

if (cond1) if (cond2) step1 else step2if (cond1) {if (cond2) step1} else step2

Was ist der Unterschied zwischen ++i, i++ und i = i+1?

Gibt es Falle, in denen eine for-Schleife statt einer while-Schleife(beziehungsweise umgekehrt) verwendet werden muss?

Was ist der Unterschied zwischen while- und do-while-Schleife?

34

Ubung

ueb2.pdf

35