Einführung in die Programmierung Zusammenfassung

Slides:



Advertisements
Ähnliche Präsentationen
Ziele von EINI I + II Einführen in „Informatik“
Advertisements

Objektorientierte Programmierung
der Universität Oldenburg
DES-Simulator in JAVA, objektorientiert
Klassen - Verkettete Liste -
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Einführung in die Programmierung Ausführbare Klassen
Lineare Suche Divide-and-Conquer-Suche Kombinationssuche
der Universität Oldenburg
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Erweiterte Zuweisungskompatibilität
Konstruktoren.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Sommersemester 2003 Lars Bernard
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Programmieren mit JAVA
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einführung in die Programmierung Vererbung
Einführung in die Programmierung Datensammlung
Einführung in die Programmierung Anweisungen und Datentypen
Einführung in die Programmierung Klassendefinition und Objekte
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sitzung 3: Klassen, Objekte, Arrays und Kontrollstrukturen
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
Rekursion mit Listen: Quicksort
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
2.4 Rekursion Klassifikation und Beispiele
Objektorientiertes Konstruieren
Optimale Ursprungsgerade
Parameterübergabemechanismen für den Methodenaufruf
EPROG Tutorium #5 Philipp Effenberger
EPROG Tutorium #3 Philipp Effenberger
Starten der Entwicklungsumgebung (IDE)
PI Burgenland Java und JavaScript 1. Teil
Programmiervorkurs WS 2014/15 Methoden
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Vererbung Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Einführung in die Programmierung mit Java
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 7. Vorlesung WS 2002/2003.
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Einführung in Java PING e.V. Weiterbildung Andreas Rossbacher 24. März 2005.
Objektorientierte Programmierung (OOP)
Java Programme nur ein bisschen objektorientiert.
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
Grundkurs Informatik 11-13
Implementieren von Klassen
 Präsentation transkript:

Einführung in die Programmierung Zusammenfassung Fakultät für Wirtschaftswissenschaften Einführung in die Programmierung Zusammenfassung Uwe Lämmel www.wi.hs-wismar.de/~laemmel Uwe.Laemmel@hs-wismar.de

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

? Programmiersprachen natürliche Sprache Maschinencode Programmierung Compiler Programmierung Programm Maschinencode Programmiersprache

Einführung in die Programmierung Was hat es gebracht?

Was war? Objektorientierte Programmentwicklung ~ Klassen Typische Datenbehälter Suchverfahren und einfache Sortieralgorithmen

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

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

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 Parameter public Klasse(){ /* Initialisierungen */ } // Zugriffsmethoden: getX/setX public int getNumber() { return number; } public void setNumber(int n) { number=n; } // Arbeitsmethoden … }//Klasse

Vererbung fördert Wiederverwendung bessere Wartbarkeit Unterklasse - erbt Merkmale - erweitert Oberklasse Überschreiben: dynamischer Methodenaufruf Unterklassen-Objekte auch dort wo Oberklasse erwartet ev. Casting

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

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

Methoden Methoden-Kopf (Signatur): Methoden-Körper: 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

Strukturierte Programmierung Jeder Algorithmus wird mittels Sequenz, Auswahl und Wiederholung dargestellt. 1966 BÖHM/JACOPINI: Jeder Algorithmus lässt sich so darstellen.

Struktogramme Teile und Herrsche - Divide and Conquer Schrittweise Verfeinerung

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

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

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) ?

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

Sprechende Namen Faust: Wie nennst Du Dich? Mephistopheles: Die Frage scheint mir klein Fü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 Wesen Gewöhnlich aus dem Namen lesen,

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

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)

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(nlog n) Ausgabe eines binären Suchbaums (LWR)

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)

Viel Erfolg O glücklich, wer noch hoffen kann, Aus diesem Meer des Irrtums aufzutauchen! Goethe, Faust I