vorkurs: java-einf uhrung - uni bremenshi/lehre/eso/eso_handout.pdf · uberblick 1 organisatoriches...
Post on 09-Sep-2019
0 Views
Preview:
TRANSCRIPT
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
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
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
top related