Grundlagen der Programmierung I

Werbung
Universität Paderborn
Prof. Dr. Heike Wehrheim
Grundlagen der
Programmierung I
Prof. Dr. Heike Wehrheim
[email protected]
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
([email protected])
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
Herunterladen