300 likes | 689 Views
Fakultät für Wirtschaftswissenschaften. Einführung in die Programmierung Wintersemester 2011. Uwe Lämmel. www.wi.hs-wismar.de/~laemmel Uwe.Laemmel@hs-wismar.de. Ablauf der LV. 1 Vorlesung + 1 Übung pro Woche (je 2 SWS) Abschluss: Klausur 120 Minuten, bestanden 50%
E N D
Fakultät für Wirtschaftswissenschaften Einführung in die ProgrammierungWintersemester 2011 Uwe Lämmel www.wi.hs-wismar.de/~laemmel Uwe.Laemmel@hs-wismar.de
Ablauf der LV • 1 Vorlesung + 1 Übung pro Woche (je 2 SWS) • Abschluss: • Klausur 120 Minuten, bestanden 50% • Vorlesung: Fragen erwünscht • Übung: Mitarbeit wichtig • Zu Hause: Training notwendig
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
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." ????
Barnes, Kölling: Java lernen mit BlueJ 4. Auflage, Pearson Studium 2009 3-86894-001-5 Objects First with Java, Pearson Education 2006, 0-13-197629-X Teil 1: Grundlagen • Objekte, Klassen und Klassendefinition • Objekt-Interaktion und Objekt-Sammlungen • Benutzen von Bibliotheksklassen • Klassenentwurf • Vererbung • Benutzungsoberflächen • Entwurf Teil 2: Anwendungsstrukturen + Suchen und Sortieren + Container-Klassen
Ergänzende Literatur – siehe Stud.IP Informatik allgemein • Duden Informatik, 4. Auflage, Mannheim 2006. • Forbrig,P.; Kerner,I.: Lehr- und Übungsbuch Informatik 1, Fachbuchverlag-Leipzig, 2003. • Ernst,H.: Grundkurs Informatik, 4. Auflage, vieweg 2008. (C,C++) Java-Programmier-Einsteiger • 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.
Semantische Lücke Unsere Weltsicht: Dinge + Handlungen Begriffswelt der Informatik: Daten + Algorithmen
Semiotisches Dreieck Kuh Begriff geistige Vorstellung von Bedeutung von Zeichen Objekt referenziert Kuh, cow, vaca, krowa, …
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
Algorithmus 1 • Lies die Zahlen p und q • Berechne die Zahl d: • Berechne die Zahl x1: • Berechne die Zahl x2: • Schreibe x1 und x2 auf
Algorithmus 2 • Lies die Zahlen p und q • Berechne p/2 und nenne das Ergebnis a • Berechne a² und nenne das Ergebnis b • Berechne b –q und nenne das Ergebnis c • Berechne c und nenne das Ergebnis d • Berechne –a und nenne das Ergebnis e • Berechne e + d und nenne das Ergebnis x1 • Berechne e – d und nenne das Ergebnis x2 • Schreibe x1 und x2 auf
Algorithmus 3 - Java class Quadratische Gleichung { publicstaticvoid 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); } } • Lies die Zahlen p und q • Berechne p/2 und nenne das Ergebnis a • Berechne a² und nenne das Ergebnis b • Berechne b –q und nenne das Ergebnis c • Berechne c und nenne das Ergebnis d • Berechne –a und nenne das Ergebnis e • Berechne e + d und nenne das Ergebnis x1 • Berechne e – d und nenne das Ergebnis x2 • Schreibe x1 und x2 auf
Algorithmus 3 - Java class Quadratische Gleichung { publicstaticvoid 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); } }
Algorithmus 4 - Java class QuadratischeGleichung { publicstaticvoid 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); } }
Programmierung Compiler Programm Programmiersprache Programmiersprachen ? natürliche Sprache Maschinencode
Objektorientierte Programmierung • Objekte beschreiben (Klassen) • Objekte erzeugen (new) • Objekte manipulieren: • senden von Methoden (mit Parametern) an die Objekte! Beispiele: • Herdenmanagement (editor,java) • Figuren / Zeichnung (BlueJ, cmd)
Grundlegende Konzepte • Objekt • Klasse • Merkmale • Methode • Parameter • Datentyp
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”
Beispiel Student class Student { // Merkmale von Studenten privateString name; // String: Zeichenkette privateint matrikel; // int: ganze Zahl privateint anzScheine; // Erzeugen eines Studenten public Student(String vollerName, int nummer){ …} // Zugriffsmethoden publicString getName( ) { return name; } publicint getMatrikel( ) { return matrikel;} publicvoid setAnzahlScheine(int n){ anzScheine=n;} … } //Student
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); Methoden-Kopf: • Ergebnis • Name • Parameter Signatur
Beobachtungen • mehre Instanzen/Objekte einer Klasse möglich • Objekt hat Attribute/Merkmale: Werte werden in Instanzen-Variablen gespeichert • Klasse definiert die Instanzen-VariablenABER: jedes Objekt speichert seine eigene Menge von Werten (Zustand des Objekts)
Student name matrikel anzScheine String getName() int getMatrikel() setScheine(int n) student2: Student "Paul" name 107891 matrikel 0 anzScheine student1: Student "Anna" name 107532 matrikel 0 anzScheine Zwei Student -Objekte Instanzvon Instanzvon
Quelltext / source code • Jede Klasse hat Quelltext (Java-Code) • definiert die Details:Merkmale und Methoden
Quelltext – Kompilation – Ausführung Kuh.java Kuh.class Compilieren CA FE BA BE 00 00 00 31 00 13 0A 00 04 00 0F 09 00 03 00 10 07 00 11 07 00 12 01 00 05 6D 69 6C 63 68 01 00 01 49 01 00 06 3C 69 6E 69 74 3E 01 00 03 28 29 56 01 00 04 43 6F 64 65 02 00 0F 4C 69 6E 65 4E 75 6D 62 65 72 54 61 62 6C 65 01 00 08 67 69 62 4D 69 6C 63 68 01 00 03 28 29 49 01 00 0A 53 6F 75 72 63 65 46 69 6C 65 01 00 08 4B 75 68 2E 6A 61 76 61 0C 00 07 00 08 0C 00 05 00 06 01 00 03 4B 75 68 01 00 10 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 00 20 00 03 00 04 00 00 00 01 00 02 00 05 00 06 00 00 00 02 00 01 00 07 00 08 00 01 00 09 00 00 00 2A 00 02 00 01 00 00 00 0A 2A B7 00 01 2A 04 B5 00 02 B1 00 00 00 01 00 0A 00 00 00 0E 00 03 00 00 00 05 00 04 00 06 00 09 00 07 00 01 00 0B 00 0C 00 01 00 09 00 00 00 1D 00 01 00 01 00 00 00 05 2A B4 00 02 AC 00 00 00 01 00 0A 00 00 00 06 00 01 00 00 00 0A 00 01 00 0D 00 00 00 02 00 0E class Kuh { private int milch; public Kuh() { milch=1; } public int gibMilch(){ return milch; } } JDK / javac • Ausführen: • JRE / java • NUR main-Methode einer Klasse • C:\Daten\Beispiel> java QuadratischeGleichung
Wie lernt man das Programmieren? • Wie lernt man schwimmen, Fahrrad fahren,Auto fahren? • Üben • Üben • Üben • Üben • Üben • Üben • Üben • ...
Wie lernt man das Programmieren? Mitdenken! • Kommunizieren • Untereinander • Stud.IP > Forum • Vorlesung nacharbeiten • Beispiele implementieren • Buchabschnitte durcharbeiten • Übungsaufgaben bearbeiten • Durchdenken und versuchen zu lösen • Fragen formulieren • weitere Aufgaben programmieren • Übungsdokument • Alltag Fragen! Probieren!
Aufgabe • Java und BlueJ installieren: • woher? • Buch-CD • download (siehe studip.hs-wismar.de) • USB-Stick vom Nachbarn • falls gar nicht anders: CD von mir • Java installieren ( nach C:\Programme\Java) • BlueJ installieren • Ausprobieren: • Aufgaben 1.1. bis 1.14. (ev. auch 15-16)