Grundlagen der Modellierung und Programmierung Übung Prof. Wolfram Amme LS Softwaretechnik Prof. Birgitta König-Ries LS Verteilte Systeme Prof. Klaus Küspert Prof. Dr. Wilhelm Rossak LS Datenbanksysteme LS Softwaretechnik Dipl.-Inf. Marco Körner LS Digitale Bildverabeitung 28. Oktober 2013 Grundlagen der Modellierung und Programmierung, Übung N 1 / 21 Agenda 1 Organisatorisches 2 Algorithmusbegriff 3 Flussdiagramme und Struktogramme 4 Programmierung in Java 5 Restklassenkörper Grundlagen der Modellierung und Programmierung, Übung N 2 / 21 Organisatorisches Agenda 1 Organisatorisches 2 Algorithmusbegriff 3 Flussdiagramme und Struktogramme 4 Programmierung in Java 5 Restklassenkörper Grundlagen der Modellierung und Programmierung, Übung N 3 / 21 Organisatorisches Wer bin ich? Marco Körner Dipl.-Inf. Lehrstuhl Digitale Bildverabeitung Ernst-Abbe-Platz 2, Büro 1223 Tel.: 03641/9-46426 Mail: [email protected] Grundlagen der Modellierung und Programmierung, Übung N 4 / 21 Organisatorisches Wer seid Ihr? wissbegierige Studenten der Studiengänge Bachelor of Sciences Informatik Bachelor of Sciences Angewandte Informatik Bachelor of Sciences Bioinformatik Lehramt Gymnasium Informatik/Mathematik Grundlagen der Modellierung und Programmierung, Übung N 5 / 21 Organisatorisches Was machen wir hier? Vertiefung und praktische Anwendung der Vorlesungsinhalte Besprechung der Übungsaufgaben, Auswertung der Lösungen Probleme lösen, Verständnisfragen klären Organisatorisches Grundlagen der Modellierung und Programmierung, Übung N 6 / 21 Organisatorisches Genereller Ablauf bearbeitete Übungsserien werden bis Freitag, 12:00 Uhr (Briefkasten vor Raum 3246, Ernst-Abbe-Platz 2) Ausgabe der korrigierten Lösungen hier Besprechung möglicher Lösungsansätze ggfls. Vorarbeit zur folgenden Übungsserie Grundlagen der Modellierung und Programmierung, Übung N 7 / 21 Algorithmusbegriff Agenda 1 Organisatorisches 2 Algorithmusbegriff 3 Flussdiagramme und Struktogramme 4 Programmierung in Java 5 Restklassenkörper Grundlagen der Modellierung und Programmierung, Übung N 8 / 21 Algorithmusbegriff Eigenschaften von Algorithmen Determiniertheit Ein determinierter Algorithmus führt bei identischen Eingaben immer zur identischen Lösung. Determinismus Zu jedem Zeitpunkt der Ausführung eines deterministischen Algorithmus ist der jeweils nächste Handlungsschritt eindeutig definiert. Finitheit Länge und Speicherbedarf eines finiten/endlichen Algorithmus sind vordefiniert. Terminiertheit Der terminierender Algorithmus bricht für jede beliebige Eingabe nach einer endlichen Anzahl von Schritten ab. (Nicht algorithmisch entscheidbar!) Effektivität Jede atomare Anweisung eines Algorithmus muss ein eindeutiges Ergebnis liefern. Grundlagen der Modellierung und Programmierung, Übung N 9 / 21 Algorithmusbegriff Determiniertheit und Determinismus Es gilt: f ist deterministisch ⇒ f ist determinert f ist determinert 6⇒ f ist deterministisch (1) (2) Im Allgemeinen sind Algorithmen sowohl deterministisch, als auch determiniert. Maschinenausgeführte Algorithmen sind per Definition sowohl deterministisch, als auch determiniert. Nichtdeterminiertheit kann nur simuliert werden. Beispiele? Grundlagen der Modellierung und Programmierung, Übung N 10 / 21 Algorithmusbegriff Finitheit Grundvoraussetzuung: Jeder Algorithmus muss durch eine endlich lange Vorschrift beschrieben werden. ë statische Finitheit Schön wäre außerdem: Der vom Algorithmus benötigte Datenspeicher ist zu jedem Zeitpunkt endlich. ë dynamische Finitheit Grundlagen der Modellierung und Programmierung, Übung N 11 / 21 Flussdiagramme und Struktogramme Agenda 1 Organisatorisches 2 Algorithmusbegriff 3 Flussdiagramme und Struktogramme 4 Programmierung in Java 5 Restklassenkörper Grundlagen der Modellierung und Programmierung, Übung N 12 / 21 foo Grundlagen der Modellierung und Programmierung, Übung N 13 / 21 Programmierung in Java Agenda 1 Organisatorisches 2 Algorithmusbegriff 3 Flussdiagramme und Struktogramme 4 Programmierung in Java 5 Restklassenkörper Grundlagen der Modellierung und Programmierung, Übung N 14 / 21 Programmierung in Java Konzepte der Programmierung 1 Funktionale Programmiersprachen Grundprinzip: Termersetzung LISP, HOPE, Miranda, SML, Haskell 2 Imperative Programmiersprachen Grundprinzip: Folge von Variablenzuweisungen Algol, Fortran, Cobol, Pascal, C, Basic 3 Logikbasierte Programmiersprachen Grundprinzip: Prädikatenlogik Prolog 4 Deklarative Programmiersprachen Grundprinzip: Beschreiben der Lösungsmenge SQL 5 Objektorientierte Programmiersprachen Grundprinzip: Interaktion zwischen Objekten Java, C++, SmallTalk Grundlagen der Modellierung und Programmierung, Übung N 15 / 21 Programmierung in Java Java neu entworfene Sprache, einfach zu erlernen plattformunabhängig: write once, run everywhere Compiler-Interpreter-Konzept: Compiler erzeugt universellen Bytecode aus Quelltextformulierung Interpreter (Virtuelle Maschine) führt Bytecode maschinenspezifisch aus Nachteil: langsamere Ausführung JDK und JRE (zur Zeit) kostenlos verfügbar massiver Einsatz bei Web-Technologien: Applets, Servlets, Geschäftsanwendungen Konkurenz zu Microsofts C] Grundlagen der Modellierung und Programmierung, Übung N 16 / 21 Programmierung in Java Installation und Vorbereitung Notwendig zum Programmieren in Java: 1 Download des JDK: http://www.oracle.com/technetwork/java/javase/downloads 2 Quelltext-Editor: Notepad, (X)Emacs, KWrite, GEdit, . . . , Eclipse, NetBeans, . . . 3 Konsole/Terminal Grundlagen der Modellierung und Programmierung, Übung N 17 / 21 Programmierung in Java Erstes Java-Programm Listing 1: Quelltextdatei HelloWorld.java 1 public class HelloWorld { 2 public static void main ( String [] argv ) { System . out . printf ( " Hello World !\ n " ); } 3 4 5 6 7 ~> javac HelloWorld.java ~> java HelloWorld Hello World! ~> } Grundlagen der Modellierung und Programmierung, Übung N 18 / 21 Restklassenkörper Agenda 1 Organisatorisches 2 Algorithmusbegriff 3 Flussdiagramme und Struktogramme 4 Programmierung in Java 5 Restklassenkörper Grundlagen der Modellierung und Programmierung, Übung N 19 / 21 Restklassenkörper Restklassenring Algebraisches/Zahlentheoretisches Konstrukt zur Beschreibung des Divisionsrest Z/Zn oder Z/n oder Z/nZ: Restklassenring modulo n a + nZ ist die Äquivalenzklasse von a bezüglich der Kongruenz modulo n Ring-Eigenschaft: abgeschlossen unter Addition und Multiplikation: [a] + [b] = [a + b] [a] · [b] = [a · b] Beispiele: 0 + 2Z: Menge der geraden Zahlen 1 + 2Z: Menge der ungeraden Zahlen 1 + 7 {0, . . . , 6}: Menge aller Dienstage Grundlagen der Modellierung und Programmierung, Übung N 20 / 21 Restklassenkörper Restklassenarithmethik in Java Ganzzahlige Division: 1 2 int a = 5 , b = 2; int c = a / b ; // c = 2 Divisionsrest: 1 2 int a = 5 , b = 2; int c = a % b ; // c = 1 Grundlagen der Modellierung und Programmierung, Übung N 21 / 21