Grundlagen der Modellierung und Programmierung

Werbung
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
Herunterladen