Universität Paderborn
Prof. Dr. Heike Wehrheim
Grundlagen der
Programmierung I
Prof. Dr. Heike Wehrheim
wehrheim@upb.de
WS 08/09
WS ´08/09
1
Herzlich Willkommen!
Universität Paderborn
Prof. Dr. Heike Wehrheim
zur Vorlesung Grundlagen der
Programmierung I
zum Studium der Informatik
zur Universität Paderborn
WS ´08/09
2
Heute
Universität Paderborn
Prof. Dr. Heike Wehrheim
Einführung in die Vorlesung
H. Wehrheim
Morgen
Einführung in die Programmierumgebung
B. Cramer
WS ´08/09
3
Was ist Informatik?
Universität Paderborn
Prof. Dr. Heike Wehrheim
Tipps und Tricks für Webseiten?
WS ´08/09
4
Was ist Informatik?
Universität Paderborn
Prof. Dr. Heike Wehrheim
Windows/Vista in- und auswendig?
WS ´08/09
5
Was ist Informatik?
Universität Paderborn
Prof. Dr. Heike Wehrheim
Ein Wegweiser durch‘s Wirrwarr der
Abkürzungen?
XMI, UML, HTML, XML, CSS, MC, MDA, QVT,
ATL, CTL, LTL, BDD, RAM, ROM, PROM,
CAD, UDDI, AJAX, DCOM, SAX, DOM,
BPEL4WS, DME, SOA, EMF, GMF,
ECORE, …
WS ´08/09
6
Universität Paderborn
Prof. Dr. Heike Wehrheim
WS ´08/09
7
Was denn?
Universität Paderborn
Prof. Dr. Heike Wehrheim
Software-Technik:
Modellierung, Software-Entwicklung, Software-Entwurf, Entwurf von
Informationssystemen (Datenbanken), Projektmanagement,
Softwaretechnikpraktikum, …
Eingebettete Systeme und Systemsoftware:
Konzepte und Methoden der Systemsoftware, Rechnerarchitektur,
Eingebettete Systeme, Rechnernetze, Software/Hardware-Codesign, …
Theoretische Informatik, Wissenschaftliche Grundlagen und
Methoden:
Methoden der Informatik, Modellierung, Praxis der Systemgestaltung,
Möglichkeiten und Grenzen der Informatik
Algorithmen
Berechenbarkeit, Komplexität, formale Sprachen, viel Mathematik
Schlüsselqualifikationen:
Arbeiten im Team, Moderation von Diskussionen, Präsentation von
Ergebnissen, Studieren und Arbeiten im Ausland (Auslandsstudium)
WS ´08/09
8
Informatik in Paderborn
WS ´08/09
Universität Paderborn
Prof. Dr. Heike Wehrheim
9
Universität Paderborn
Prof. Dr. Heike Wehrheim
Bachelorstudiengang
Bachelorstudiengang Informatik - Tabellarische Übersicht (S = Semester)
S1
Programmiertechnik:
Grundlagen der
Programmierung 1 (8)
Modellierung (10)
Studium
Generale (4)
Mathematik
Grundlagen:
Mathematik 1 (8)
S2
Grundlagen der
Programmierung 2 (4)
Grundlagen der
Programmiersprachen (4)
Datenstrukturen und
Algorithmen (8)
Technische Informatik:
Grundlagen
der TI (5)
Mathematik 2 (8)
S3
Softwaretechnik:
Softwareentwurf (4)
Einführung in
Berechenbarkeit, formale
Sprachen und Komplexität (8)
Grundlagen der
Rechnerarchitektur (5)
Stochastik (4)
Mathematik 3
Nebenfach (8)
Softwaretechnikpraktikum (10)
Datenbanken
Grundlagen (4)
Konzepte und Methoden der
Systemsoftware (8)
Studium
Generale (2)
Nebenfach (8)
S4
Auslandssemester oder Tätigkeit (8 Wochen)
S5
S6
Softwaretechnik und
Informationssysteme:
Wahl 1 (3)
Modelle und
Algorithmen:
Wahl 1 (3)
Eingebettete Systeme
und Systemsoftware:
Wahl 1 (3)
Mensch-Maschine
Wechselwirkung:
Wahl 1 (3)
Softwaretechnik und
Informationssysteme:
Wahl 2 (3)
Modelle und
Algorithmen:
Wahl 2 (3)
Eingebettete Systeme
und Systemsoftware:
Wahl 2 (3)
Mensch-Maschine
Wechselwirkung:
Wahl 2 (3)
Informatik im
Kontext (5)
Nebenfach (8)
Nebenfach (8)
Abschlussarbeit
Arbeitsplanung (3)
WS ´08/09
Bachelorarbeit (12)
10
Modul I.1.1
Universität Paderborn
Prof. Dr. Heike Wehrheim
Vorlesung GP1 gehört zu Modul
„Programmiertechnik“
Pflichtmodul im Gebiet „Softwaretechnik und
Informationssysteme“
Ziel des Moduls „Programmiertechnik“:
Das Modul vermittelt einführende und grundlegende
Kenntnisse und Fähigkeiten in der Programmierung
Modul I.1.1 besteht aus
Grundlagen der Programmierung 1 (GP1)
Grundlagen der Programmierung 2 (GP2)
Grundlagen der Programmiersprachen (GPS)
Prüfungsmodalitäten
Endnote für Modul I.1.1: 4 : 2 : 3
WS ´08/09
11
Diese Vorlesung
Universität Paderborn
Prof. Dr. Heike Wehrheim
Vorlesungen mit Folienpräsentation
(Vorversion vorab im Netz)
Folien und Übungsblätter im Internet abrufbar
Präsenzübungen in Kleingruppen
Übungen unter Anleitung an Rechnern
(ab 2. Woche)
Zentralübungen zur allg. Besprechung der
Hausübungen (Musterlösungen)
(ab 3. Woche)
Korrekturen von abgegebenen Hausübungen
WS ´08/09
12
Material
Universität Paderborn
Prof. Dr. Heike Wehrheim
Informationen auf unserer Webseite
http://www.cs.uni-paderborn.de/fachgebiete/agwehrheim/lehre/ws0809/gp1.html
Literatur:
Unzählige Bücher
Christian Ullenboom: Java ist auch eine Insel, Galileo
Computing
Reinhard Schiedermeier: Programmieren mit Java,
Pearson Studium
Java Tutorial:
http://java.sun.com/docs/books/tutorial/java/index.html
WS ´08/09
13
Und Sie??
Universität Paderborn
Prof. Dr. Heike Wehrheim
Anwesenheit in Vorlesung
Nacharbeit der Vorlesung !!!
Anwesenheit bei Übung
Mitarbeit bei Präsenzübungen
Durchführung und Abgabe von Hausaufgaben
Teilnahme an 2 Klausuren für GP1
Üben, üben, üben, …
Programmieren lernt man nur durch Programmieren!
WS ´08/09
14
Klausuren
Universität Paderborn
Prof. Dr. Heike Wehrheim
Achtung!!
Zwischenklausur nach circa 6 - 7 Wochen
Endklausur: 1. Termin: Februar
2. Termin: März
Zwischenklausur – 30% für Endnote
Endklausur – 70% für Endnote
Zwischenklausur wird nicht wiederholt, zählt für beide
Termine der Endklausur, verfällt danach
WS ´08/09
15
Vorlesung und Zentralübung
Universität Paderborn
Prof. Dr. Heike Wehrheim
Vorlesung:
Di, 14 – 16 (c.t.) Audimax (evtl. HS G)
Mi, 14 – 16 (c.t.) Audimax
Zentralübung:
Di, 13 – 14 (c.t.)
WS ´08/09
Audimax (evtl. HS G)
16
Übungsbetrieb
Universität Paderborn
Prof. Dr. Heike Wehrheim
Drei – vier Hausaufgaben pro Woche
Ausgabe: montags (freitags), Abgabe: montags, 13.00
darauffolgender Woche, Besprechung in Zentralübung
Hilfe dazu in den wöchentlichen Übungen
Bearbeitung in Gruppe bis max. 4
Abgabe als Zettel in die Kästen auf Ebene D3,
Programmieraufgaben online
2 Übungsgruppen für Anfänger (je 2 Termine pro Woche!)
Mi, 9 - 11 und Do, 9 - 11, Björn Metzler
Mi, 16 – 18 und Do, 14 – 16, Frederic Beister
2 Übungsgruppen für Fortgeschrittene/Experten
Mo, 14 – 16, Florian Rittmeier
Di, 9 – 11, Nils Hachmeister
Und weitere „normale“ Gruppen
Fr, 14 – 17 Uhr, D3.301, Tutor Anwesenheit für Fragen
WS ´08/09
17
Diese Woche!!
Universität Paderborn
Prof. Dr. Heike Wehrheim
Login beim IMT besorgen
Freischalten für Informatik
(wie: siehe Webseiten)
Seitenkontingent zum Drucken erwerben
(Fachschaft)
Anmelden in StudInfo und für Übung eintragen
Ab heute Nachmittag, aber erst nach VL
Alles erklärt auf:
http://www.cs.uni-paderborn.de/fachgebiete/agwehrheim/lehre/ws0809/gp1.html
WS ´08/09
18
Bonussystem
Universität Paderborn
Prof. Dr. Heike Wehrheim
50% der Punkte (der Übungsaufgaben)
Verbesserung um einen Notenschritt
80% der Punkte
Verbesserung um zwei Notenschritte
(Voraussetzung: Klausuren insgesamt bestanden)
Abschreiben:
0 Punkte für Abschreiber sowie
Abschreibenlasser
WS ´08/09
19
Team GP1
Universität Paderborn
Prof. Dr. Heike Wehrheim
Christian Lucas, Florian Rittmeier, Dennis
Bokermann, Steffen Henning, Nils
Hachmeister, Hannes Riechmann,
Alexander Setzer, Benjamin Bulk, Björn
Metzler, Benedict Blomen, Sebastian Micus,
Frederic Beister, Yannick Martin, Simon Titz,
Bastian Cramer, Simon Waloschek, Michael
Knopf, Heike Wehrheim
Fragen zu StudInfo: Björn Metzler
(bmetzler@upb.de)
WS ´08/09
20
Vorlesungsinhalt
Universität Paderborn
Prof. Dr. Heike Wehrheim
GP1:
Einführung in die Entwicklung von Java Programmen
Grundlegende imperative Programmiertechniken
-- Zwischenklausur -
Klassen und Grundlagen objektorientierter
Programmierung
Einführung in dynamische (rekursive) Datenstrukturen
Objektorientierte Programmierung - Vertiefung
-- Endklausur –
GP2 im SS 09 (voraussichtlich):
Graphische Benutzungsschnittstellen
Ereignisbehandlung und Applets
Parallele Prozesse, Synchronisation, Monitore
-- Klausur -WS ´08/09
21
Ziele der Vorlesung
Universität Paderborn
Prof. Dr. Heike Wehrheim
Die Studierenden sollen
die Programmentwicklung von Grund auf
erlernen;
lernen, Sprachkonstrukte sinnvoll und mit
Verständnis anzuwenden;
grundlegende Konzepte der
objektorientierten Programmierung
verstehen und anzuwenden lernen;
lernen, Software aus objektorientierten
Bibliotheken wieder zu verwenden.
WS ´08/09
22
Universität Paderborn
Prof. Dr. Heike Wehrheim
Programmiersprachen
g
g
g
p
950
Fortran
Lisp
960
970
Cobol
Algol 60
PL/1
Algol 68
Simula
Pascal
Prolog
Smalltalk
ML
C
Ada
980
C++
Miranda
Eiffel
Haskell
990
Java
imperative Sprachen
objektorientierte Sprachen
funktionale
Sprachen
logische
Sprache
ach D. A. Watt: Programmiersprachen, Hanser, 1996; Seite 5
WS ´08/09
23
Klassifikation
Universität Paderborn
Prof. Dr. Heike Wehrheim
imperativ (prozedural):
Variable, Zuweisungen, Ablaufstrukturen
z. B. Pascal, C (vor ´80), Ada (um ´80), Modula,
FORTRAN (vor ´50), BASIC, COBOL (´60)
objektorientiert:
abstrakte Datentypen (ADTn), Klassen, Objekte,
Vererbung
z. B. Simula (um ´70), Smalltalk (um ´70), C++
(nach ´80), Java (nach ´90)
funktional:
rekursive Funktionen (höherer Ordnung)
z. B. LISP (vor ´60), Scheme, ML, Miranda, Haskell
logisch (prädikativ):
Prädikate, Regeln, Termersetzung
z. B. Prolog (um ´70)
WS ´08/09
24
Hello world!
Universität Paderborn
Prof. Dr. Heike Wehrheim
Lisp
(defun helloworld ()
(print “Hello world!“)
)(helloworld)
Cobol
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
ENVIRONMENT DIVISION.
MAIN SECTION.
DISPLAY „Hello world!“.
STOP RUN.
Prolog
? – write(‘Hello world!‘) , nl .
WS ´08/09
25
Alle lernen?
Universität Paderborn
Prof. Dr. Heike Wehrheim
Nein.
Aber:
in der Lage sein, schnell eine neue Sprache
zu lernen
Modul I.1.1
WS ´08/09
26
Was ist Java?
Universität Paderborn
Prof. Dr. Heike Wehrheim
Eine Insel?
WS ´08/09
27
Warum Java?
Universität Paderborn
Prof. Dr. Heike Wehrheim
konsequent objektorientiert, klassenbasiert
statisch typisiert:
Übersetzer prüft typkorrekte Benutzung der
Sprachkonstrukte (wie z. B. in Pascal, C++)
Java ist weit verbreitet und leicht verfügbar; JavaProgramme sind portabel
Übersetzung in die Zwischensprache (Java Bytecode) einer
abstrakten Maschine (JVM: Java Virtual Machine).
Sie interpretiert das Programm (wie in Smalltalk). Das ist
portabel aber weniger effizient als die Ausführung von
Maschinen-Code.
Umfangreiche Klassenbibliotheken (Graphik, Mathematik,
Benutzungsschnittstellen, Datenbanken, WWW, …).
Programmierung für das WWW
WS ´08/09
28
Warum OO?
Universität Paderborn
Prof. Dr. Heike Wehrheim
Objektorientierter Programmentwurf ist nahe an der
Problemanalyse und der Modellierung
Professionelle Software wird heute und in absehbarer
Zukunft objektorientiert entwickelt.
Objektorientierte Programmiersprachen haben mächtige
Konzepte zur Abstraktion und Strukturierung: Klassen als
abstrakte Datentypen, Vererbung zur Typspezialisierung
und zur Schnittstellendefinition.
Objektorientierte Bibliotheken mit wiederverwendbaren
Komponenten
Gut geplante Wiederverwendung
steigert Produktivität bei der Software-Entwicklung
verbessert die Software-Qualität
vereinfacht die Wartung
WS ´08/09
29
Java “Hello world!“
Universität Paderborn
Prof. Dr. Heike Wehrheim
class HelloWorld {
/* Mein erstes Java-Programm */
public static void main
(String [] args){
System.out.println(”Hello world!”);
}
}
WS ´08/09
30
Universität Paderborn
Prof. Dr. Heike Wehrheim
Bestandteile
Rahmen:
HelloWorld.java
class HelloWorld {
...
}
Kommentar
/* Mein erstes Java-Programm */
Aufruf einer Ausgabefunktion
System.out.println(”Hello World!”);
Hauptprogramm
public static void main (String [] args) {
...
}
WS ´08/09
31
Ausführung von Java Programmen
Quellmodul
Universität Paderborn
Prof. Dr. Heike Wehrheim
m1.java
Compiler
m3.class
m1.class
m2.class
Zielmodul
Java Bytecode
Eingabe
WS ´08/09
Java-Bytecode Interpreter
Ausgabe
32
Weiteres Java Programm
Universität Paderborn
Prof. Dr. Heike Wehrheim
Name der Klasse
class Java2 {
public static void main (String [] args) {
int zahl1;
int zahl2;
Variablendeklaration
int summe;
zahl1 = 12;
zahl2 = 3;
Zuweisung
summe = zahl1 + zahl2;
System.out.println(summe);
Ausgabe
}
}
(Bedeutung des blau Markierten kommt später)
WS ´08/09
33
Was passiert hier?
Universität Paderborn
Prof. Dr. Heike Wehrheim
int zahl1;
int zahl2;
int summe;
zahl1 = 12;
zahl2 = 3;
summe = zahl1 + zahl2;
12
zahl1
WS ´08/09
3
zahl2
15
summe
34
Variable und Zuweisung
Universität Paderborn
Prof. Dr. Heike Wehrheim
Eine Variable ist ein Name im Programm für eine Stelle im
Speicher, die einen Wert enthält.
Eine Zuweisung bestimmt oder ändert den Wert einer
Variablen.
Name:
seitenzahl
Wert:
17
Zuweisung:
seitenzahl = 17;
Eine Deklaration bindet Namen an neue Variable.
Sie können nur Werte des angegebenen Typs aufnehmen.
Die Bindung gilt nur in einem bestimmten Bereich des
Programms (Gültigkeitsbereich).
Typ:
Deklaration:
WS ´08/09
ganze Zahl (int, von „integer“)
int seitenzahl;
35
Universität Paderborn
Prof. Dr. Heike Wehrheim
Variablen
Wichtig: Sprechende Namen wählen!
Gut: summe, zinssatz, esRegnet, istLeer, person
Nicht gut: a,b,c, x23, aufgabe1
Gültige Namen:
kleine und große Buchstaben, Dezimalziffern, Unterstrich _
erstes Zeichen keine Ziffer (z.B. nicht: 12Kartoffeln)
Reservierte Wörter schon besetzt (z.B. class, public )
Formen von Variablendeklarationen:
Typ name;
Typ name1, name2;
Typ name = initialwert;
int zahl;
int summe, produkt;
int zins = 5;
WS ´08/09
36
Zuweisungen
Universität Paderborn
Prof. Dr. Heike Wehrheim
Variable = Ausdruck;
cDegree = 10.0;
fDegree = cDegree * 9 / 5 + 32;
cDegree = cDegree + 10;
Variable und Zuweisungen sind das Grundprinzip
imperativer Sprachen:
Der Programmzustand wird bestimmt durch eine
Menge von Variablen mit ihren Werten.
Zuweisungen im Programmablauf verändern den
Zustand.
WS ´08/09
37
Beispiel
Universität Paderborn
Prof. Dr. Heike Wehrheim
int zahl1 = 5;
int zahl2;
zahl1 = zahl1 + zahl1;
zahl2 = 7;
zahl1 = zahl1 + zahl2;
zahl1 = 42;
zahl2 = zahl1 + 10;
Welchen Wert haben zahl1 und zahl2 am
Ende?
WS ´08/09
38
Universität Paderborn
Prof. Dr. Heike Wehrheim
Ausgabe
System.out.println(…)
Name einer Java-Systemklasse
Name einer Methode
In Klammern stehen
Variablennamen
z.B. System.out.println(zahl);
Zeichenketten
z.B. System.out.println(“Hallo“);
Kombinationen davon
System.out.println(“Der Wert ist“ + zahl);
WS ´08/09
39
Typische Fehler
Universität Paderborn
Prof. Dr. Heike Wehrheim
Variablen werden nicht deklariert
Variablen werden zwar deklariert, aber schon
vorher benutzt
die gleiche Variable wird zweimal deklariert
Gross- und Kleinschreibung wird verwechselt
public vs. Public vs. PUBLIC
Name der Datei ist anderer als Klassenname
Die öffnenden und schließenden Klammern
passen nicht zueinander
Klammern fehlen
Semikolon zwischen Anweisungen fehlt
WS ´08/09
40
Und nun …
Universität Paderborn
Prof. Dr. Heike Wehrheim
Viel Spass und Erfolg beim
Informatikstudium!
(und bei der Bearbeitung des ersten
Übungszettels)
WS ´08/09
41