Fakultät für
Wirtschaftswissenschaften
Einführung in die Programmierung
Wintersemester 2014
Uwe Lämmel
www.wi.hs-wismar.de/~laemmel
[email protected]
Uwe Lämmel
Einführung in die Programmierung
Folie 1
Ablauf der LV
Uwe Lämmel
–
–
1 Vorlesung + 1 Übung pro Woche (je 2 SWS)
Abschluss:
– Klausur 120 Minuten, bestanden  50%
–
–
–
Vorlesung
Übung
Zu Hause
Probleme klären, Themen ansprechen
Aufgaben bearbeiten mit Hilfe
eigenständig Aufgaben bearbeiten
Einführung in die Programmierung
Folie 2
Motto
Anstatt anzunehmen, unsere Aufgabe sei es,
dem Computer zu lehren, was er zu tun hat, sollten
wir uns lieber darauf konzentrieren,
dem Menschen zu erklären,
was wir vom Computer wollen.
Knuth, 1984
Uwe Lämmel
Einführung in die Programmierung
Folie 3
Problem
"When I wrote the software
only God and I knew how the software worked.
Now a year later only God knows how it works."
????
Uwe Lämmel
Einführung in die Programmierung
Folie 4
Barnes, Kölling: Java lernen mit BlueJ
Pearson Studium
5. Auflage
Objects First with Java, Pearson Education
Teil 1: Grundlagen
1.
2.
3.
4.
Objekte, Klassen und Klassendefinition
Objekt-Interaktion und Objekt-Sammlungen
Benutzen von Bibliotheksklassen
Klassenentwurf
Teil 2: Anwendungsstrukturen
1. Vererbung
2. Benutzungsoberflächen
3. Entwurf
Uwe Lämmel
+ Container-Klassen
+ Suchen und Sortieren
Einführung in die Programmierung
Folie 5
Ergänzende Literatur – siehe Stud.IP
Informatik allgemein
– Duden Informatik, 4. Auflage, Mannheim 2006.
– Herold, H.; Lurz, B.; Wohlrab, J.: Grundlagen der
Informatik, Praktisch, technisch, theoretisch,
Pearson Studium München 2006.
Java-Programmier-Einsteiger
– Louis, Dirk; Müller, Peter: Java, eine Einführung in die
Programmierung, Hanser. 2014.
– Rauh, Otto: Objektorientierte Programmierung in Java,
3. Auflage, Vieweg-Verlag, 2002.
– Braun u.a.: Einführung in die Programmierung,
Springer 2006.
Java-Programmierung:
– Eubanks, Brian D.: Echt cooles Java. Hanser, 2006.
Uwe Lämmel
Einführung in die Programmierung
Folie 6
Wozu Programmieren?
Semantische Lücke
Unsere Weltsicht:
Dinge + Handlungen
Uwe Lämmel
Begriffswelt der Informatik:
Daten + Algorithmen
Einführung in die Programmierung
Folie 7
Semiotisches Dreieck
Begriff
Zeichen
Kuh, cow,
vaca, krowa,
…
Uwe Lämmel
referenziert
Kuh
Objekt
Einführung in die Programmierung
Folie 8
Semiotisches Dreieck
Begriff
Zeichen
referenziert
Elke
Objekt
person = [(‘Anna‘,1982),
(‘Bernd‘,1979),
(‘Elke‘,1990),
(‘Tom‘,1989) ]
Uwe Lämmel
Einführung in die Programmierung
Folie 9
Semantische Lücke
– unterschiedlicher Sprache von Mensch und Maschine
– Komplexitätsabstand zwischen
– Anforderungen einer Anwendung (Nutzer)
– umsetzbare Möglichkeiten (Basismaschine)
Beispiel: Lösung quadratischer Gleichung
x² + 8x + 7 = 0
Uwe Lämmel
Einführung in die Programmierung
Folie 10
p
x1, 2   
2
Algorithmus 1
p2
q
4
1. Lies die Zahlen p und q
2. Berechne die Zahl d:
3. Berechne die Zahl x1:
4. Berechne die Zahl x2:
d
p2
q
4
p
x1    d
2
p
x2    d
2
5. Schreibe x1 und x2 auf
Uwe Lämmel
Einführung in die Programmierung
Folie 11
Algorithmus 2
1.
2.
3.
4.
5.
6.
7.
8.
9.
Uwe Lämmel
Lies die Zahlen p und q
Berechne p/2 und nenne das
Berechne a²
und nenne das
Berechne b – q und nenne das
Berechne c
und nenne das
Berechne –a
und nenne das
Berechne e + d und nenne das
Berechne e – d und nenne das
Schreibe x1 und x2 auf
p
x1, 2   
2
Ergebnis
Ergebnis
Ergebnis
Ergebnis
Ergebnis
Ergebnis
Ergebnis
p2
q
4
a
b
c
d
e
x1
x2
Einführung in die Programmierung
Folie 12
p
x1, 2   
2
Algorithmus 3 - Java
1. Lies die Zahlen p und q
2.
3.
4.
5.
6.
7.
8.
9.
Berechne p/2
Berechne a²
Berechne b – q
Berechne c
Berechne –a
Berechne e + d
Berechne e – d
Schreibe x1 und
Uwe Lämmel
und nenne das
und nenne das
und nenne das
und nenne das
und nenne das
und nenne das
und nenne das
x2 auf
Ergebnis
Ergebnis
Ergebnis
Ergebnis
Ergebnis
Ergebnis
Ergebnis
a
b
c
d
e
x1
x2
p2
q
4
class Quadratische Gleichung {
public static void main(String[ ] args){
int p = 8;
// Schritt 1
int q = 7;
double a = p/2.0;
// Schritt 2
double b = a*a;
// Schritt 3
double c = b – q;
// Schritt 4
double d = Math.sqrt(c); // Schritt 5
double e = – a;
// Schritt 6
double x1= e + d;
// Schritt 7
double x2= e – d;
// Schritt 8
System.out.println(
// Schritt 9
"x1= "+x1+", x2= "+x2);
}
}
Einführung in die Programmierung
Folie 13
Algorithmus 3 - Java
p
x1, 2   
2
p2
q
4
class Quadratische Gleichung {
public static void main(String[ ] args){
int p = 8;
// Schritt 1
int q = 7;
double a = p/2.0;
// Schritt 2
double b = a*a;
// Schritt 3
double c = b – q;
// Schritt 4
double d = Math.sqrt(c);
// Schritt 5
double e = – a;
// Schritt 6
double x1= e + d;
// Schritt 7
double x2= e – d;
// Schritt 8
System.out.println("x1= "+x1+", x2= "+x2);
}
}
Uwe Lämmel
Einführung in die Programmierung
Folie 14
Algorithmus 4 - Java
p
x1, 2   
2
p2
q
4
class QuadratischeGleichung {
public static void main(String[ ] args){
int p = 8;
int q = 7;
double x1 = – p/2.0 + Math.sqrt( p * p / 4 – q);
double x2 = – p/2.0 – Math.sqrt( p * p / 4 – q);
System.out.println("x1= "+x1+", x2= "+x2);
}
}
Uwe Lämmel
Einführung in die Programmierung
Folie 15
Berechnung der Nullstellen
– Vier verschiedene Darstellungen des Algorithmus
– Welche Variante verstehen Sie am besten?
Uwe Lämmel
Einführung in die Programmierung
Folie 16
Programmiersprachen
Maschinencode
Compiler
?
natürliche
Sprache
Programmierung
Programm
Programmiersprache
Uwe Lämmel
Einführung in die Programmierung
Folie 17
Objektorientierte Programmierung
– Objekte beschreiben (Klassen)
– Objekte erzeugen (new)
– Objekte manipulieren:
– senden von Methoden (mit Parametern) an die Objekte!
Beispiele:
– Figuren / Zeichnung (BlueJ, cmd)
Uwe Lämmel
Einführung in die Programmierung
Folie 18
Grundlegende Konzepte
–
–
–
–
–
–
Uwe Lämmel
Objekt
Klasse
Merkmale
Methode
Parameter
Datentyp
Einführung in die Programmierung
Folie 19
Objekte und Klassen
 Objekt
– repräsentiert ‘Dinge’ der realen Welt
oder aus Problembereich (virtuelle Welt)
Beispiel:
“Dieser Computer hier auf dem Tisch.”
 Klasse
– repräsentiert alle Objekte einer Bauart / eines Typs:
Beispiel: “Computer”
Uwe Lämmel
Einführung in die Programmierung
Folie 20
Beispiel Student
class Student {
// Merkmale von Studenten
private String name;
private int matrikel;
private int ects;
// String: Zeichenkette
// int: ganze Zahl
// Erzeugen eines Studenten
public Student(String vollerName, int nummer){
…
}
// Zugriffsmethoden
public String getName( ) { return name; }
public int
getMatrikel( ) { return matrikel;}
public void setPunkte(int n){ ects=n;}
…
} //Student
Uwe Lämmel
Einführung in die Programmierung
Folie 21
Methoden und Parameter
– Objekte besitzen Operationen (in Java: Methoden)
– mittels Methoden werden Objekte bearbeitet
– Methoden können Parameter benötigen:
– zusätzliche Information für die Bearbeitung
– Methoden können Ergebnis liefern: return ergebnis;
public String getName( ) { return name;}
public void setAnzahlScheine (int n) …
student1.setAnzahl(3);
Uwe Lämmel
Methoden-Kopf:
• Ergebnis
• Name
• Parameter
 Signatur
Einführung in die Programmierung
Folie 22
Beobachtungen
– mehre Instanzen/Objekte einer Klasse möglich
– Objekt hat Attribute/Merkmale:
Werte werden in Instanzen-Variablen gespeichert
– Klasse definiert die Instanzen-Variablen
ABER:
jedes Objekt speichert seine eigene Menge von Werten
(Zustand des Objekts)
Uwe Lämmel
Einführung in die Programmierung
Folie 23
Zustand
Uwe Lämmel
Einführung in die Programmierung
Folie 24
Zwei Student -Objekte
Student
name
matrikel
anzScheine
String getName()
int getMatrikel()
setScheine(int n)
Instanz von
student1: Student
Instanz von
student2: Student
name
"Anna"
name
matrikel
122532
matrikel
anzScheine
Uwe Lämmel
0
"Paul"
anzScheine
122891
0
Einführung in die Programmierung
Folie 25
Quelltext / source code
– Jede Klasse hat Quelltext (Java-Code)
– definiert die Details:
Merkmale und Methoden
Uwe Lämmel
Einführung in die Programmierung
Folie 26
Quelltext – Kompilation – Ausführung
Kuh.java
Kuh.class
class Kuh {
private int milch;
public Kuh() {
milch=1;
}
public int gibMilch(){
return milch;
}
}
Compilieren
JDK / javac
CA
00
63
00
69
08
00
75
06
61
00
00
00
00
00
00
AC
0A
FE
03
68
03
6E
67
0A
68
01
6E
00
07
00
01
06
00
00
00
BA
00
01
28
65
69
53
2E
00
67
00
00
00
00
00
00
00
01
BE
10
00
29
4E
62
6F
6A
03
2F
01
08
0A
0A
09
1D
00
00
00
07
01
56
75
4D
75
61
4B
4F
00
00
2A
00
00
00
01
0D
00
00
49
01
6D
69
72
76
75
62
02
01
B7
00
07
01
00
00
00
11
01
00
62
6C
63
61
68
6A
00
00
00
00
00
00
0A
00
31
07
00
04
65
63
65
0C
01
65
05
09
01
0E
01
01
00
00
00
00
06
43
72
68
46
00
00
63
00
00
2A
00
00
00
00
02
13
12
3C
6F
54
01
69
07
10
74
06
00
04
03
0B
00
00
00
0A
01
69
64
61
00
6C
00
6A
00
00
00
B5
00
00
00
06
0E
00
00
6E
65
62
03
65
08
61
20
00
2A
00
00
0C
05
00
04
05
69
02
6C
28
01
0C
76
00
00
00
02
00
00
2A
01
00
6D
74
00
65
29
00
00
61
03
02
02
B1
05
01
B4
00
0F
69
3E
0F
01
49
08
05
2F
00
00
00
00
00
00
00
00
09
6C
01
4C
00
01
4B
00
6C
04
01
01
00
04
09
02
00
Ausführen:
• JRE / java
• NUR main-Methode einer Klasse
• C:\Daten\Beispiel> java QuadratischeGleichung
Uwe Lämmel
Einführung in die Programmierung
Folie 27
Wie lernt man das Programmieren?
 Wie lernt man
schwimmen,
Fahrrad fahren,
Auto fahren?
Uwe Lämmel
–
–
–
–
–
–
–
–
Üben
Üben
Üben
Üben
Üben
Üben
Üben
...
Einführung in die Programmierung
Folie 28
Wie lernt man das Programmieren?
Mitdenken!
 Kommunizieren
– Untereinander
– Stud.IP > Forum
 Vorlesung mitarbeiten
– Beispiele implementieren
– Buchabschnitte durcharbeiten
Fragen!
 Übungsaufgaben bearbeiten
– Durchdenken und versuchen zu lösen
– Fragen formulieren
 weitere Aufgaben programmieren
– Übungsdokument
– Alltag
Uwe Lämmel
Probieren!
Einführung in die Programmierung
Folie 29
Aufgabe
 Java und BlueJ installieren
 Ausprobieren
– Beispiel Quadratische Gleichung
– Übung 1.1. bis 1.15. aus dem Buch
Uwe Lämmel
Einführung in die Programmierung
Folie 30