Date post: | 05-Apr-2015 |
Category: |
Documents |
Upload: | reto-lehmann |
View: | 114 times |
Download: | 7 times |
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
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
Einführung in die Programmierung Folie 3Uwe Lämmel
Programmiersprachen
Maschinencode
natürliche Sprache
CompilerProgrammierung
Programm
Programmiersprache
?
Einführung in die Programmierung Folie 4Uwe Lämmel
Einführung in die ProgrammierungWas hat es gebracht?
Einführung in die Programmierung Folie 5Uwe Lämmel
Was war?
Objektorientierte Programmentwicklung ~ Klassen
Typische Datenbehälter
Suchverfahren und einfache Sortieralgorithmen
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
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
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
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
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
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
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
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.
Einführung in die Programmierung Folie 14Uwe Lämmel
Struktogramme
Teile und Herrsche - Divide and Conquer Schrittweise Verfeinerung
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
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
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) ?
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
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,
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
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)
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)
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)
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