einführung in die programmierung folie 1 uwe lämmel einführung in die programmierung...

24
Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenscha ften www.wi.hs-wismar.de/ ~laemmel [email protected]

Upload: reto-lehmann

Post on 05-Apr-2015

116 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 1Uwe Lämmel

Einführung in die ProgrammierungZusammenfassung

Uwe Lämmel

Fakultät für Wirtschaftswissenschaften

www.wi.hs-wismar.de/~laemmel

[email protected]

Page 2: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 2Uwe Lämmel

Was ist Informatik?

"Wissenschaft von der automatischen Informationsverarbeitung mit Hilfe von Computern, insbesondere dem Entwurf und der Formulierung von Algorithmen in angemessenen Sprachen sowie ihrer physikalischen Realisation."

Meyers Neues Lexikon, 1993

Unsere Weltsicht: Dinge + Handlungen Begriffswelt der Informatik: Daten + Algorithmen

Page 3: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 3Uwe Lämmel

Programmiersprachen

Maschinencode

natürliche Sprache

CompilerProgrammierung

Programm

Programmiersprache

?

Page 4: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 4Uwe Lämmel

Einführung in die ProgrammierungWas hat es gebracht?

Page 5: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 5Uwe Lämmel

Was war?

Objektorientierte Programmentwicklung ~ Klassen

Typische Datenbehälter

Suchverfahren und einfache Sortieralgorithmen

Page 6: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 6Uwe Lämmel

Was war? Programmentwicklung

Bauplan-Klasse – Instanzvariable, Konstruktor, Zugriffsmethode– Vererbung (class A extends B ... )– realisieren eines Interfaces

(class A implements C …)

Methoden-Bibliothek (Bibliotheksklasse)– statische Methoden

ausführbare Klasse– main-Methode

Page 7: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 7Uwe Lämmel

Was war? Programmierkonzepte Einfache Datentypen: int, double, boolean,

char

Referenz – Datentypen– eigene Klassen: Person, Student, Rechnung,…– Array, – vordefinierte Klassen: String, ArrayList

Einfache Anweisungen – Zuweisung, Methoden-Aufruf, return, break

Strukturierte Anweisungen– if, switch, – for-each, for , do, while

Methoden– formale / aktuelle Parameter– Ergebnis

Rekursion

Page 8: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 8Uwe Lämmel

Klasse - Bauplan

class Klasse [extends Klasse1] {// Eigenschaften: Instanzen-Variablen (meist private)private int number;

// Klassen-Variablen( static )private static int anzahl;// Konstruktor(en) mit/ohne Parameterpublic Klasse(){ /* Initialisierungen */ }

// Zugriffsmethoden: getX/setXpublic int getNumber() { return number; }public void setNumber(int n) { number=n; }

// Arbeitsmethoden…

}//Klasse

Page 9: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 9Uwe Lämmel

Vererbung fördert

Wiederverwendung bessere Wartbarkeit

Unterklasse - erbt Merkmale - erweitert Oberklasse

Überschreiben:dynamischer Methodenaufruf

Unterklassen-Objekte auch dort wo Oberklasse erwartet

ev. Casting

Page 10: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 10Uwe Lämmel

Klasse als Bibliothek von Methoden

class MaFkt {

// Klassen-Methoden (static)

public static int fakultaet(int n) ...

public static int fibonacci(int a) ...

public static int ueber(int n, int k) ...

...

}//MaFkt

Page 11: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 11Uwe Lämmel

Ausführbare Klasse

class Klasse [ throws Exception ] {

// weitere Klassen-Methoden (static) möglich

// main-Methode: public static void main(String[ ] args) {

IntIO io = new Intio(); // Ein-Ausgabeobjekt

// Verarbeitung: // Objekt-Erzeugung, Methoden-Auffrufe, …

}//main

}//Klasse

Page 12: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 12Uwe Lämmel

Methoden

public static int[ ] bubbleSort(int[ ] folge, int anf, int ende) { int temp;

… } // bubbleSort

Methoden-Kopf (Signatur):– Sichtbarkeit (public, private , leer)– statisch (static) oder dynamisch (an Objekt)– void oder Ergebnis-Typ: int, String, Person[ ], …– Parameter-Liste: leer () oder Folge aus Typ und

Name:(String[ ] args) … (String derName, int scheine)

Methoden-Körper:– lokale Variablen– Anweisungen, die einen Algorithmus beschreiben– Rückgabe des Ergebnis: return erg; // falls nicht void

Page 13: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 13Uwe Lämmel

Strukturierte Programmierung

Jeder Algorithmus wird mittels– Sequenz, – Auswahl und – Wiederholung dargestellt.

1966 BÖHM/JACOPINI:– Jeder Algorithmus lässt sich so darstellen.

Page 14: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 14Uwe Lämmel

Struktogramme

Teile und Herrsche - Divide and Conquer Schrittweise Verfeinerung

Page 15: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 15Uwe Lämmel

Programmentwicklung

Man zerlege eine Aufgabe in so viele Teile als es notwendig ist,bis man zu Teilen gelangt, die zu lösen sind.

Descartes

Diese Regel Descartes ist von geringem Nutzen, solange die Art der Zerlegung nicht erklärt wird.Der ungeübte Problemlöser kann durch falsche Zerlegung das Problem eher vergrößern

Leibniz

Page 16: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 16Uwe Lämmel

Programmierstil

Programm muss Problemlösung widerspiegeln;– erkennbare Programmgliederung– aufeinanderfolgende Anweisungen auf eine Zeile,

wenn sie logisch zusammengehören:name=““; nr=0; zf=max; // Initialisierungen

Anweisungen eines Niveaus beginnen immer in derselben Spalte

Einrücken von Unteranweisungen:2-4 Leerzeichen gegenüber der strukturierten Anweisung:

while(a<b) {

a=2*a;

} // while

Page 17: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 17Uwe Lämmel

Kommentare

Schnittstelle des Programms/ der Klasse/ Methode– WAS macht das Programm?– WELCHE Daten müssen bereitgestellt werden?– WO finde ich das Programm?– WER hat es erstellt ?– WANN wurde es erstellt ? (neueste Variante?)– WIE wird die Lösung erzielt(grob) ?

Page 18: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 18Uwe Lämmel

Erklärung lokaler Daten

problembezogene Bezeichner (sprechende Namen)double radius; // millimeter

ergänzende Kommentare über zugelassene Werte:int code ; // Werte : -1 - Fehler; 2 - ...

Bedeutung der Indizes in Arrays:– Höhe, Breite, Tiefe

verwendete Maßeinheiten

Page 19: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 19Uwe Lämmel

Sprechende Namen

Faust: Wie nennst Du Dich?

Mephistopheles: Die Frage scheint mir kleinFür einen, der das Wort so sehr verachtet,Der, weit entfernt von allem Schein,Nur in der Wesen Tiefe trachtet.

Faust: Bei Euch, ihr Herrn, kann man das WesenGewöhnlich aus dem Namen lesen,

Page 20: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 20Uwe Lämmel

Programmierstil!

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

Page 21: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 21Uwe Lämmel

Was war? Datenbehälter

Container, Abstrakte Datentypen, Collection … Sammlungen mit definierten Zugriffsmethoden

– Trennung Interface und Implementation Keller, Stack, Stapel: LIFO (push, pop, peek, …) Schlange, Queue: FIFO (insert, delete, front, …) Baum: getLeft, setLeft, …

– binärer Suchbaum: Suchen und Sortieren (Tabelle: Zugriff über Index) Implementation mittels:

– Array– ArrayList– verkette Liste (rekursive Datenstruktur)

Page 22: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 22Uwe Lämmel

Was war? Suchen und Sortieren

Suchverfahren – Lineare Suche: unsortierte Folge, Aufwand: O(n)– binäre Suche: sortierte Folge, O(log n)– Suche im binären Suchbaum O(log n)– Maximum (Minimum)

einfache Sortieralgorithmen– SelectSort: immer O(n²), Teilfolgen fertig– BubbleSort: O(c) .. O(n²), erkennt sortierte

Folge – InsertSort: O(n²), Einfügen neuer Elemente – Quicksort: O(nlog n)– Ausgabe eines binären Suchbaums (LWR)

Page 23: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 23Uwe Lämmel

Was war nicht?

– Programmentwicklung– Analyse, Spezifikation, Entwurf,

Codierung, Test

– Java - Konzepte, die nicht betrachtet wurden:– Dateiarbeit, (java.io.*)– Oberflächen, (java.awt.*; javax.swing.*)– Einbindung in HTML (Applets: java.applet)– Parallele Prozesse (Threads:

java.lang.Thread)

Page 24: Einführung in die Programmierung Folie 1 Uwe Lämmel Einführung in die Programmierung Zusammenfassung Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Einführung in die Programmierung Folie 24Uwe Lämmel

Viel Erfolg

O glücklich, wer noch hoffen kann,Aus diesem Meer des Irrtums aufzutauchen!

Goethe, Faust I