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