1 / 24

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

quito
Download Presentation

Einführung in die Programmierung Zusammenfassung

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

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

  4. Einführung in die ProgrammierungWas hat es gebracht?

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

  6. 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

  7. 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

  8. Klasse - Bauplan class Klasse [extends Klasse1] { // Eigenschaften: Instanzen-Variablen (meist private) privateint number; // Klassen-Variablen( static ) private static int anzahl; // Konstruktor(en) mit/ohne Parameter public Klasse(){ /* Initialisierungen */ } // Zugriffsmethoden: getX/setX publicint getNumber() { return number; } publicvoid setNumber(int n) { number=n; } // Arbeitsmethoden … }//Klasse

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

  10. Klasse als Bibliothek von Methoden class MaFkt { // Klassen-Methoden (static) publicstaticintfakultaet(intn) ... publicstatic intfibonacci(inta) ... publicstatic intueber(intn,intk) ... ... }//MaFkt

  11. Ausführbare Klasse class Klasse [ throws Exception ] { // weitere Klassen-Methoden (static) möglich // main-Methode: publicstaticvoid main(String[ ] args) { IntIO io = new Intio(); // Ein-Ausgabeobjekt // Verarbeitung: // Objekt-Erzeugung, Methoden-Auffrufe, … }//main }//Klasse

  12. Methoden publicstaticint[ ] 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) … (StringderName,intscheine) … Methoden-Körper: • lokale Variablen • Anweisungen, die einen Algorithmus beschreiben • Rückgabe des Ergebnis: returnerg;// falls nicht void

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

  14. Struktogramme • Teile und Herrsche - Divide and Conquer • Schrittweise Verfeinerung

  15. 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

  16. 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

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

  18. 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

  19. 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,

  20. 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

  21. 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)

  22. 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)

  23. 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)

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

More Related