allgemeine Eigenschaften von Algorithmen (zur Erinnerung): Terminierung: Ergebnis liegt nach endlich vielen Schritten vor

Größe: px
Ab Seite anzeigen:

Download "allgemeine Eigenschaften von Algorithmen (zur Erinnerung): Terminierung: Ergebnis liegt nach endlich vielen Schritten vor"

Transkript

1 Kapitel A := α ω λ Programmierung A.1 Programm und Algorithmus A.2 Algorithmusdarstellungen A.3 Eigenschaften von Algorithmen O 2007 Andreas Behrend Informatik I 1 Eigenschaften von Algorithmen (1) allgemeine Eigenschaften von Algorithmen (zur Erinnerung): Terminierung: Ergebnis liegt nach endlich vielen Schritten vor Effizienz: "Wirtschaftlichkeit" des Aufwands relativ zu einem vorgege- benen Massstab (z.b. Laufzeit, Speicherplatzverbrauch) Determinismus: Ablauf des Verfahrens an jedem Punkt fest vorgeschrieben (keine Wahlfreiheit) Determinierheit: Identische Eingaben führen f stets zu identischen Ergebnissen Andreas Behrend Informatik I 2

2 Eigenschaften von Algorithmen (2) Eigenschaften von Algorithmen können k wie folgt klassifiziert werden: problemunabhängige Eigenschaften beziehen sich ausschließlich lich auf den betrachteten Algorithmus, nicht jedoch auf das Problem oder dessen Spezifikation (z.b. Endlichkeit, Determiniertheit, Rekursivität, t,...). problembezogene Eigenschaften sind dagegen für f r einen Algorithmus in Bezug auf die entsprechende Problemspezifikation erklärt rt (z.b. Effizienz, Korrektheit,...) Andreas Behrend Informatik I 3 Effizienz (1) Effizienz von Algorithmen a) Sequentielle Suche Eine geordnete Folge wird soweit von links nach rechts durchlaufen, bis der Vergleichsschlüsselwert sselwert k erstmalig kleiner oder gleich dem aktuellen Element k i ist. Dann ist k entweder an der betreffenden Stelle einzufügen oder der gesuchte Schlüsselwert k wurde gefunden. b) Binäre Suche Die Idee des Verfahrens besteht darin, das mittlere Element k M des zu durch- suchenden sortierten Intervalls zu bestimmen und je nach Ausgang des Vergleichs mit dem zu suchenden Wert k, die weitere Suche auf eines der entstandenen Teilintervalle (links bzw. rechts von Wert k M ) zu beschränken Andreas Behrend Informatik I 4

3 Effizienz (2) Sequentielle Suche ALGORITHMUS seq_suche; BEGIN Eingabe: k1,..., kn, k; i := 0; REPEAT i := i + 1 UNTIL (k ki) ) oder (i = n + 1); Ausgabe: i END; Folge [k 1,...k n ] wird im Mittel halb durchlaufen, bis man die gesuchte Position gefunden hat. Bei 1 Mio. Schlüsselwerte sind somit im Durchschnitt Schlüsselwerte zu inspizieren. Binäre Suche ALGORITHMUS bin_suche; BEGIN Eingabe: k1,..., kn, k; li := 0; re := n + 1; WHILE li < re - 1 DO M := (li( + re) ) DIV 2; IF k k M THEN re := M ELSE li := M END (* IF *) END (* WHILE *); Ausgabe: re END; Mit jedem Durchlauf wird die betrachtete Teilfolge halbiert. Bei 1 Mio. Schlüsselwerte würde das ca. 20 Durchläufe ufe implizieren Andreas Behrend Informatik I 5 Effizienz (3) Offenbar ist die binäre Suche deutlich effizienter als die sequentielle Suche. Dafür r kann die sequentielle Suche auch auf unsortierte Listen angewendet werden. Man kann den Effizienzunterschied mit Hilfe der Größ öße e der Eingabe auch allgemein verdeutlichen: Für r eine Folge [k 1,..., k n ] mit n > 0 benötigt sequentielle Suche im Durchschnitt n/2 aber die binäre Suche nur log 2 (n) Schritte. Genauere Effizienzuntersuchungen von Algorithmen erfolgt in Informatik III. Trotzdem ist die Effizienz eines Verfahrens i.a.. stark subjektiv und abhängig von der Problemspezifikation: - n Schritte sind relativ schlecht bei Suchproblemen - n Schritte wären super bei Sortieraufgaben 2007 Andreas Behrend Informatik I 6

4 Terminierung (1) Terminiertheit eines Algorithmus Ein Algorithmus heißt terminierend,, wenn er für f r jede Eingabe nach endlich vielen Schritten hält. h Beispiel eines nicht-terminierenden terminierenden Algorithmus: BEGIN Eingabe: n; REPEAT n := n + 1 UNTIL n = 50; Ausgabe: "fertig"; END; Der Algorithmus terminiert nur für ganzzahlige Eingaben n, die kleiner als 50 sind Andreas Behrend Informatik I 7 Terminierung (2) Die Eigenschaft der Terminiertheit impliziert, dass... 1) jede Anweisung in endlicher Zeit ausführbar sein muß. Beispiel: Eine nicht zulässige Operation wäre z. B. "Berechne Grenzwert der (unbeschränkten) Folge n (1 + 1/n)" 2) alle beteiligte Größ ößen endlich beschreibbar sind. Beispiel: Die Verwendung der rationalen Zahl 0.3 ist in dieser Form unzulässig. Aber: Ein hinreichend genaue Annäherung oder die Darstellung (1,3) als Bruchinterpretation kann als Alternative verwendet werden Andreas Behrend Informatik I 8

5 Terminierung (3) Oft ist mit der Korrektheit von Programmen die Terminiertheit verbunden! Aber: Der Nachweis der Terminiertheit ist i. A. nicht möglich. (bekannt als Halteproblem für f r Programme) Effizienz impliziert nicht Terminiertheit! Terminiertheit impliziert keine Praktikabilität! Beispiel: Auf eine DIN A4 Seite passen mindestens 2000 Zeichen und für jedes Zeichen kann man aus 256 Möglichkeiten wählen (Zeichen, Zahlen, Sonderzeichen und Umlaute). Insgesamt ergibt das =(2 8 ) 2000 = = mögliche Texte, die mit einem terminierenden Algorithmus systematisch erzeugt werden könnten. Das würde aber z.b. die geschätzte Zahl an möglichen Atomen im All (ca ) deutlich übertreffen, mit entsprechenden Konsequenzen für Platz- und Zeitaufwand des terminierenden Algorithmus Andreas Behrend Informatik I 9 Eindeutigkeit (1) Determinierte und Deterministische Algorithmen globale Eindeutigkeit: Ein Algorithmus heißt determiniert, falls er eine eindeutige Abhängigkeit der Ausgabedaten von den Eingabedaten garantiert. lokale Eindeutigkeit: Ein Algorithmus heißt deterministisch, falls die Wirkung bzw. das Ergebnis jeder einzelnen Anweisung eindeutig ist und an jeder einzelnen Stelle des Ablaufs festgelegt ist, welcher Schritt als nächstes auszuführen ist. Folgerung: Jeder deterministische Algorithmus ist determiniert Andreas Behrend Informatik I 10

6 Eindeutigkeit (2) nicht-deterministisches Verhalten von Algorithmen entsteht durch: Nicht-Determinismus in den Elementaroperationen, d.h. die Wirkung bzw. das Ergebnis einer Operation ist nicht eindeutig festgelegt. Nicht-Determinismus in den Ablaufstrukturen, d.h. die Ausführungsreihenfolge von Anweisungen ist nicht eindeutig festgelegt Andreas Behrend Informatik I 11 Eindeutigkeit (3) Im folgenden Algorithmus zur binären Suche wird die Mitte der betrachteten Teilfolge nicht berechnet, sondern nicht-deterministisch aus {li+1,..., re-1} gewählt: ALGORITHMUS bin_suche_ndet BEGIN Eingabe: k1,..., kn, k; li := 0; re := n + 1; WHILE li < re - 1 DO "Wähle M {li + 1,...,re - 1}"; IF k k M THEN re := M ELSE li := M END (* IF *) END (* WHILE *); Ausgabe: re END; 2007 Andreas Behrend Informatik I 12

7 Eindeutigkeit (4) Der Algorithmus bin_suche_ndet ist nicht-deterministisch! ("Auswahl" ist elementare Operation ohne eindeutig bestimmtes s Ergebnis) Der Algorithmus bin_suche_ndet ist determiniert! (Ausgabe hängt h in eindeutiger Weise von Eingabe ab) weiteres Beispiel für Nicht-Determinismus: Randomisierte Algorithmen IF B1 THEN F1 /B2 THEN F2... /Bn THEN Fn ELSE Fn+1 END (* IF *) B i : boolesche Bedingungen, potentiell mehrere gleichzeitig wahr F j : Anweisungen wird beliebig für f r eine wahres B i gewählt 2007 Andreas Behrend Informatik I 13 Eindeutigkeit (5) Motivation für f r die Verwendung nicht-deterministischer Algorithmen: Nichtdeterminismus spielt ein wichtige Rolle bei Komplexitäts ts- abschätzungen von Algorithmen (wird im Rahmen der Info III- Veranstaltung genauer betrachtet). Randomisierte Algorithmen sind in vielen Fällen F einfacher zu implementieren und effizienter als deterministische Versionen zum Lösen des gleichen Problems (z.b. Primzahltest nach Soloway/Strassen) Andreas Behrend Informatik I 14

8 Rekursion (1) Rekursive Algorithmen Ein Algorithmus heißt rekursiv, wenn er sich selbst wieder verwendet. direkte Rekursion: Algorithmus ruft sich selbst wieder auf indirekte Rekursion: geg. mehrere Algorithmen A 1,...,A n (n > 1) und A 1 calls A 2 A 2 calls A 3... A n-1 calls A n A n calls A Andreas Behrend Informatik I 15 Rekursion (2) Beispiel: indirekte Rekursion für den Test, ob eine Zahl gerade oder ungerade ist ALGORITHMUS ungerade (n) BEGIN IF n = 0 THEN RETURN FALSE ELSE RETURN gerade(n-1) END (* IF *) END; ALGORITHMUS gerade (n) BEGIN IF n = 0 THEN RETURN TRUE ELSE RETURN ungerade(n-1) END(* IF *) END 2007 Andreas Behrend Informatik I 16

9 Rekursion (3) Beispiel: direkte Rekursion für die binären Suche ALGORITHMUS bin_suche_rek (Li, Re) (* durchsucht k Li+1,...,k Re-1 nach Schlüsselwert k *) BEGIN IF Li < Re - 1 THEN M := (Li + Re) DIV 2; IF k k M THEN RETURN bin_suche_rek (M,Re) ELSE RETURN bin_suche_rek (Li,M) END (* IF *) ELSE RETURN Re END (* IF *) END Erster Aufruf: bin_suche_rek (0, n+1) 2007 Andreas Behrend Informatik I 17 Rekursion (4) jeder rekursive Algorithmus iterativ dargestellbar (z.b.: bin_suche_rek(x,y) mittels iterativen bin_suche) rekursive Lösungen oft eleganter (kürzer) und verständlicher rekursive Algorithmen aber nicht zwangsläufig effizienter (wegen des Verwaltungsaufwands für die rekursiven Aufrufe) rekursiv definierte Funktionen / Prädikate wichtig bei der funktionalen / logischen Programmierung 2007 Andreas Behrend Informatik I 18

10 Parallelität (1) Paralelle Algorithmen ein Prozessor => streng sequentielle Ausführung mehrere Prozessoren => gleichzeitige Ausführung verschiedener Teile eines Algorithmus eventuell möglich Ein Algorithmus heißt parallel, wenn er so in Teilaufgaben aufgeteilt ist, dass diese gleichzeitig durch verschiedene Prozessoren ausgeführt werden können. sequentiell Prozessor 1: x := SQRT(3); y := log 2 (53); Prozessor 1: x := SQRT(3); parallel Prozessor 2: y := log 2 (53); 2007 Andreas Behrend Informatik I 19 Parallelität (2) Beispiel: Sequentielles Suchen in einer sortierten Liste (parallel) Beispiel: parallele Organisation einer lineare Suche in sortierter Liste Start Eingabe: k 1,..., k n, k m := n DIV 2 i := 0 j := m Parallelphase i := i + 1 j := j + 1 nein k k i nein oder i = m + 1 k k j oder j = n + 1 ja ja hier Vorteile bei der Visualisierung mittels Programmablaufplan nein i = m + 1 ja Ausgabe: i Ausgabe: j Stop Start 2007 Andreas Behrend Informatik I 20

11 Kapitel B λ := Funktionale Programmierung Kapitel B O O 2007 Andreas Behrend Informatik I 21 Prinzip des funktionalen Programmierens Programm Funktionsdefinition n! = 1 falls n = 0 n (n-1)! falls n > 0 2! 2 (2-1)! 2 1! 2 1 (1-1)! 2 1 0! 2 (1 1) vordefinierte Operatoren Fakultätsfunktion tsfunktion Eingabe: : auszuwertender Term (wiederholte) Funktionsanwendung Ausgabe: : resultierender Funktionswert 2007 Andreas Behrend Informatik I 22

12 Ideal der deskriptiven Programmierung Funktionale Programmierung ist eine spezielle Form der deskriptiven Programmierung??? Was? Problem Prozess- spezifikation Problem- spezifikation menschliche Intelligenz maschinelle Intelligenz deskriptiv Prozess imperativ Wie? 2007 Andreas Behrend Informatik I 23 Wichtige funktionale Sprachen im historischen Überblick 1960 LISP 1959, McCarthy (MIT/USA) 1970 Scheme 1975, Sussman/Steele (MIT/USA) ML Miranda Haskell 1980, Milner (Edinburgh/GB) 1985, Turner (Canterbury/GB) 1987, Hudak/Wadler (Yale/USA) 2000 Haskell Andreas Behrend Informatik I 24

13 Haskell: die modernste funktionale Sprache in dieser Vorlesung verwendete Sprache: Haskell Haskell ist zur Zeit die modernste funktionale Programmiersprache: erste Entwürfe 1987 vorgelegt aktueller Sprachstandard: Haskell 98 gemeinsame Initiative vieler führender f Wissenschaftler zahlreiche Spracherweiterungen verfügbar Haskell ist gut dokumentiert und in leistungsfähigen "Freeware"- Implementierungen verfügbar Haskell-Interpretierer: Hugs Haskell-Compiler: GHC viele weitere nützliche n Informationen auf der Haskell-Homepage Homepage: //haskell.org 2007 Andreas Behrend Informatik I 25 Literatur zu Haskell Lehrbücher cher: R. Bird: "Introduction to Functional Programming using Haskell", Prentice Hall, 1998 A. Davie: : "Introduction to Functional Programming Systems using Haskell", Cambridge University Press, 1992 P. Hudak: "The Haskell School of Expression", Cambridge University Press, 2000 S. Thompson: "Haskell - The Craft of Functional Programming", Addison Wesley, 1999 einführender Artikel: P. Hudak: "A Gentle Introduction to Haskell" 2007 Andreas Behrend Informatik I 26

14 Wofür steht "Haskell"? Namen von Programmiersprachen sind oft Akronyme (z.b. COBOL, FORTRAN, BASIC) Der Name "Haskell" dagegen leitet sich von einer Person her: Haskell B. Curry ( ) amerikanischer Logiker 2007 Andreas Behrend Informatik I 27 Was bedeutet das Lambda-Symbol? Alonzo Church (1941): "The Calculi of Lambda-Conversion" Churchs "Lambda-Kalk Kalkül" l" bildet die theoretische Basis aller heutigen funktionalen Sprachen λ - Ausdr zentrales Konzept: Ausdrücke bezeichnen namenlose Funktionen z.b.: λ (x) : x + 1 λ "diejenige (unäre)) Funktion, die ihren einzigen Parameter um eins erhöht" ht" Bezeichner "λ"" ähnelt anderen neuen Konzepten der Logik im frühen 20. Jahrhundert Hilbert'sches η (eta): "irgendein Objekt, welches..." Russell'sches ι (iota): "dasjenige Objekt, welches..." 2007 Andreas Behrend Informatik I 28

15 Hugs - ein Interpretierer für Haskell Hugs (Haskell Users Gofer System) eine andere funktionale Sprache Haskell "Befehle" Befehle" lassen sich ausführen mit Hilfe eines Software- systems, das eingegebene Befehle sofort ausführt ("interpretiert interpretiert") Hugs ist ein Interpretierer für r Haskell Hugs kennt viele vordefinierte Funktionen und kann zudem mit Haskell- Programmen "programmiert" werden, eine Vielzahl von Funktionen auszuführen hren,, die ein Haskell-Nutzer (engl.: user) im Sinn hat Andreas Behrend Informatik I 29 Hugs - Hauptfenster (in der Windows-Version) 2007 Andreas Behrend Informatik I 30

16 "Taschenrechnerprinzip" In seiner einfachsten Form kann der Haskell-Interpretierer als "intelligenter Taschenrechner" genutzt werden: Eingabe: : auszuwertender Ausdruck > 3 ( ) Ausgabe: : resultierender Wert Haskells Strategie 3 ( ) => 3 9 => 27 => 27? verschiedene "Abarbeitungsalgorithmen" Abarbeitungsalgorithmen" denkbar 3 ( ) => ( 3 4 ) + ( 3 5) => 12 + ( 3 5) => => 27 => 2007 Andreas Behrend Informatik I 31 Hugs als "Taschenrechner" 2007 Andreas Behrend Informatik I 32

17 Eine erste selbstdefinierte Funktion! Formulierung des selben Berechnungsprinzips für f beliebige Grössen x, y und z durch Einführen einer neuen Funktion: mal_plus ( x, y, z ) = x ( y + z ) Die neu eingeführte Funktion "mal_plus" abstrahiert das Berechungsschema vom Einzelfall auf den allgemeinen Fall. Anwendung der neuen Funktion auf unterschiedliche konkrete Parameterkombinationen: > mal_plus ( 3, 4, 5 ) 27 > mal_plus ( -7, -2, 12 ) Andreas Behrend Informatik I 33 Hugs als programmierbarer Taschenrechner Laden der Datei Malplus.hs Anwenden der Funktion mal_plus 2007 Andreas Behrend Informatik I 34

18 Funktionsdefinition prinzipieller Aufbau einer (einfachen) Funktionsdefinition definition: Name der definierten Funktion zu lesen als: = def mal_plus ( x, y, z ) = x ( y + z ) formale Parameter (hier: 3 Variablen) definierender Ausdruck 2007 Andreas Behrend Informatik I 35 Korrekte und inkorrekte Funktionsdefinitionen Das Prinzip des Aufbaus von Funktionsdefinitionen sieht sehr einfach aus. Aber... 1) gibt es viel kompliziertere Definitionsarten 2) gibt es einige grundsätzliche Einschränkungen nkungen fürf zulässige/korrekte F.definitionen in Haskell Hier zwei der wichtigsten: Auf der linken Seite einer definierenden Gleichung dürfen d keine auswertbaren Ausdrücke vorkommen, sondern nur Variablen und Konstanten. f(1, x y) ) = x 3 falsch f(x,1) = x 3 richtig Auf der rechten Seite einer definierenden Gleichung dürfen d nur Variablen vorkommen, die auch links vorkommen. f(x) = x y falsch f(x,y) = x y richtig 2007 Andreas Behrend Informatik I 36

19 Funktionsapplikation Funktionen werden aktiviert durch Eingabe eines Ausdrucks, der ausgewertet werden sollen: Funktionsapplikation generelles Format von Applikationen: (wörtlich: F.anwendung anwendung) mal_plus ( 3, 4, 5 ) anzuwendende Funktion aktuelle Parameter Andreas Behrend Informatik I 37 Korrekte und inkorrekte Funktionsapplikationen Auch für f r Funktionsapplikationen gibt es "Spielregeln". Die wichtigste ist: i In Funktionsapplikationen dürfen d keine Variablen auftreten. mal_plus(1, 2, x y) falsch mal_plus(1, 2, 4 3) richtig Aber Applikationen dürfen d andere Applikationen als Parameter enthalten (Schachtelung von Applikationen), z.b.: mal_plus(1, 2, mal_plus(5, 4, 3)) richtig 2007 Andreas Behrend Informatik I 38

20 Reduktion elementarer Auswertungsschritt für f r Applikationen: Reduktion Reduzieren eines auszuwertenden Ausdrucks bedeutet Anwenden einer Funktionsdefinition auf diesen Ausdruck mal_plus ( 3, 4, 5 ) Parameterübergabe mal_plus ( x, y, z ) = x ( y + z ) 3 ( ) 2007 Andreas Behrend Informatik I 39 Operatoren in der Mathematik: : verschiedene Notationsformen für f r Ausdrücke Präfix - Notation sin(5) Infix - Notation (nur für f r binäre Funktionen) Postfix - Notation n! in der funktionalen Programmierung: : nur Präfix fix- und Infixnotation üblich, z.b. Präfix mal_plus ( x, y, z ) = x ( y + z ) Infix Bezeichnung für f r Funktionen, die in Infixnotation verwendet werden können: Operatoren 2007 Andreas Behrend Informatik I 40

21 Eine "komplizierte" Funktionsdefinition Eine Funktion zum Approximieren von reellen Zahlen: approxrational :: RealFrac a => a -> > a -> > Rational approxrational x eps = simplest (x-eps)) (x+eps( x+eps) where simplest x y y < x = simplest y x x == y = xr x > 0 = simplest' ' n d n' d' y < 0 = - simplest' ' (-n')( d' (-n)( d otherwise = 0 :% 1 where xr@(n:%d) ) = torational x (n':%d') = torational y simplest' ' n d n' d' -- assumes 0 < n%d < n'%d' r == 0 = q :% 1 q /= q' = (q+1) :% 1 otherwise = (q*n''+d'') :% n'' where (q,r) = quotrem n d (q',r') = quotrem n' d' (n'':%d'') = simplest' ' d' r' d r 2007 Andreas Behrend Informatik I 41 Fakultätsfunktion in Haskell in "mathematischer Notation" n! = 1 falls n = 0 n (n-1)! falls n > 0 Fakultätsfunktion tsfunktion fakultät(n t(n) n==0 = 1 n > 0 = n fakultät(n t(n-1) in Haskell "Wächter" (engl.: "guards) Boolesche (ja/nein)-ausdr Ausdrücke 2007 Andreas Behrend Informatik I 42

22 Varianten der Notation der Fakultätsfunktion fakultät(n t(n) n==0 = 1 n > 0 = n fakultät(n t(n-1) ist eine Abkürzung für f r die Notation fakultät(n t(n) n==0 = 1 fakultät(n t(n) n > 0 = n fakultät(n t(n-1) noch eine Notationsvariante: fakultät(0) t(0) = 1 fakultät(n t(n) n > 0 = n fakultät(n t(n-1) 2007 Andreas Behrend Informatik I 43 Funktionsdefinition mit mehreren Fällen fakultät(0) t(0) = 1 fakultät(n t(n) n > 0 = n fakultät(n t(n-1) Die Definition von 'fakult' fakultät' ist ein erstes Beispiel für eine Funktions- definition mit mehreren Fällen. Hugs arbeitet die Fälle von oben nach unten ab und versucht,, den ersten "passenden"" (engl( engl.: "to match") Fall zu finden ("pattern matching") "Passt" ein Fall, dann wird die "Wächterbedingung" ausgewertet. Ergibt sich 'wahr', dann wird dieser Fall gewählt und der Funktions- wert berechnet. Ansonsten sucht Hugs weiter - findet er keinen Fall, der zutrifft (partielle Funktion) liefert Hugs eine Fehlermeldung ab. Funktionsdefinitionen sind nur dann zulässig ssig, wenn es für jede mögliche Applikation der Funktion nur genau einen Fall gibt, der auf diese Appli- lation "zutrifft""! (Funktionseigenschaft( Funktionseigenschaft: eindeutige Bilder) 2007 Andreas Behrend Informatik I 44

23 Fakultätsfunktion - Wachstum Die Fakultätsfunktion tsfunktion wächst w relativ rasch: n fakultät(n t(n) Andreas Behrend Informatik I 45 Zwei "klassische" Funktionen, die mit Vorsicht zu geniessen sind Die Fibonacci-Funktion Funktion - benannt nach dem italienischen Mathematiker Fibonacci (13. Jahrhundert): fib(0) = 1 fib(1) = 1 fib(n) = fib(n-1) + fib(n-2) Die Ackermann-Funktion - "erfunden" von den deutschen Mathematikern Hilbert und Ackermann anfang des 20. Jahrhunderts: ack(0, n) = n+1 ack(m,, 0) = ack((m-1), 1) ack(m,, n) = ack((m-1), (ack(m( ack(m,, (n-1))) 2007 Andreas Behrend Informatik I 46

24 Ulam's Funktion - eine noch "gefährlichere" Funktion Eine "harmlose" numerische Funktion, die es "in sich hat" - vorgeschlagen von dem Mathematiker S. Ulam: ulam(1) = 1 ulam(n) even(n) = ulam(n 'div'' 2) otherwise = ulam(3*n + 1) even (engl.): gerade - vordefinierte Funktion, die testet, ob eine ganze Zahl gerade oder ungerade ist div: : vordefinierter Operator zur ganzzahligen Division (mit Rest, der unterdrückt wird) otherwise (engl.): sonst - vordefinierte Testfunktion, die immer wahr ist (dient zum "lesbaren" Beenden von Fallunterscheidungen) 2007 Andreas Behrend Informatik I 47

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) Wintersemester 2007/08 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät für Informatik Lehrstuhl

Mehr

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Überblick. Lineares Suchen

Überblick. Lineares Suchen Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 15: Reguläre Ausdrücke und rechtslineare Grammatiken Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009 1/25 Was kann man mit endlichen

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens 1 Organisatorisches Freitag, 05. Mai 2006: keine Vorlesung! aber Praktikum von 08.00 11.30 Uhr (Gruppen E, F, G, H; Vortestat für Prototyp)

Mehr

Kontrollstrukturen - Universität Köln

Kontrollstrukturen - Universität Köln Kontrollstrukturen - Universität Köln Mario Manno Kontrollstrukturen - Universität Köln p. 1 Was sind Sprachen Auszeichnungssprachen HTML, XML Programmiersprachen ASM, Basic, C, C++, Haskell, Java, Pascal,

Mehr

Programmieren Formulierung eines Algorithmus in einer Programmiersprache

Programmieren Formulierung eines Algorithmus in einer Programmiersprache Zum Titel der Vorlesung: Programmieren Formulierung eines in einer Programmiersprache Beschreibung einer Vorgehensweise, wie man zu jedem aus einer Klasse gleichartiger Probleme eine Lösung findet Beispiel:

Mehr

Numerische Verfahren und Grundlagen der Analysis

Numerische Verfahren und Grundlagen der Analysis Numerische Verfahren und Grundlagen der Analysis Rasa Steuding Hochschule RheinMain Wiesbaden Wintersemester 2011/12 R. Steuding (HS-RM) NumAna Wintersemester 2011/12 1 / 16 4. Groß-O R. Steuding (HS-RM)

Mehr

Funktionale Programmierung mit Haskell

Funktionale Programmierung mit Haskell Funktionale Programmierung mit Haskell Dr. Michael Savorić Hohenstaufen-Gymnasium (HSG) Kaiserslautern Version 20120622 Überblick Wichtige Eigenschaften Einführungsbeispiele Listenerzeugung und Beispiel

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

Einführung in die Informatik I

Einführung in die Informatik I Einführung in die Informatik I Algorithmen und deren Programmierung Prof. Dr. Nikolaus Wulff Definition Algorithmus Ein Algorithmus ist eine präzise formulierte Handlungsanweisung zur Lösung einer gleichartigen

Mehr

Whitebox-Tests: Allgemeines

Whitebox-Tests: Allgemeines -Tests: Allgemeines Andere Bezeichnungen Logic driven, Strukturelles Der Tester entwickelt Testfälle aus einer Betrachtung der Ablauflogik des Programms unter Berücksichtigung der Spezifikation Intuitiv

Mehr

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1 3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)

Mehr

Algorithmik II. SS 2003 Prof. Dr. H. Stoyan Lehrstuhl für Informatik 8 ( Künstliche Intelligenz) Email: stoyan@informatik.uni-erlangen.

Algorithmik II. SS 2003 Prof. Dr. H. Stoyan Lehrstuhl für Informatik 8 ( Künstliche Intelligenz) Email: stoyan@informatik.uni-erlangen. Algorithmik II SS 2003 Prof. Dr. H. Stoyan Lehrstuhl für Informatik 8 ( Künstliche Intelligenz) Email: stoyan@informatik.uni-erlangen.de Homepage der Vorlesung Vorbemerkungen I http://www8.informatik.uni-erlangen.de/immd8

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

Kostenmaße. F3 03/04 p.188/395

Kostenmaße. F3 03/04 p.188/395 Kostenmaße Bei der TM nur ein Kostenmaß: Ein Schritt (Konfigurationsübergang) kostet eine Zeiteinheit; eine Bandzelle kostet eine Platzeinheit. Bei der RAM zwei Kostenmaße: uniformes Kostenmaß: (wie oben);

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt 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 - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

Computerarithmetik ( )

Computerarithmetik ( ) Anhang A Computerarithmetik ( ) A.1 Zahlendarstellung im Rechner und Computerarithmetik Prinzipiell ist die Menge der im Computer darstellbaren Zahlen endlich. Wie groß diese Menge ist, hängt von der Rechnerarchitektur

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Konzepte der Informatik Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 16.10.2015 Technische Universität Braunschweig, IPS Inhaltsverzeichnis Suchen Binärsuche Binäre Suchbäume 16.10.2015 Dr. Werner

Mehr

Semantik von Formeln und Sequenzen

Semantik von Formeln und Sequenzen Semantik von Formeln und Sequenzen 33 Grundidee der Verwendung von Logik im Software Entwurf Syntax: Menge von Formeln = Axiome Ax K ist beweisbar Formel ϕ beschreiben Korrektkeit Vollständigkeit beschreibt

Mehr

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Inhalt SWP Funktionale Programme (2. Teil) Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Interpreter für funktionale Sprache

Mehr

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung Kapitel 6 Komplexität von Algorithmen 1 6.1 Beurteilung von Algorithmen I.d.R. existieren viele Algorithmen, um dieselbe Funktion zu realisieren. Welche Algorithmen sind die besseren? Betrachtung nicht-funktionaler

Mehr

Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder

Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder Hinweise zur Übung Benötigter Vorlesungsstoff Ab diesem Übungskomplex wird die Kenntnis und praktische Beherrschung der Konzepte

Mehr

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele. 1. Einführung in die Informatik Inhalt 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele Peter Sobe 1 Darstellung von Algorithmen Aus den Einführungsbeispielen und

Mehr

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung. Lineare Gleichungen mit einer Unbekannten Die Grundform der linearen Gleichung mit einer Unbekannten x lautet A x = a Dabei sind A, a reelle Zahlen. Die Gleichung lösen heißt, alle reellen Zahlen anzugeben,

Mehr

Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie

Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie Wintersemester 2009/10, Prof. Dr. Udo Hahn, Erik Fäßler Übungsblatt 3 vom 19.11.2009 Abgabe bis 26.11.2009, 14:30 Uhr; per

Mehr

Grundlagen der Künstlichen Intelligenz

Grundlagen der Künstlichen Intelligenz Grundlagen der Künstlichen Intelligenz 27. Aussagenlogik: Logisches Schliessen und Resolution Malte Helmert Universität Basel 28. April 2014 Aussagenlogik: Überblick Kapitelüberblick Aussagenlogik: 26.

Mehr

Abschnitt: Algorithmendesign und Laufzeitanalyse

Abschnitt: Algorithmendesign und Laufzeitanalyse Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher

Mehr

Tangentengleichung. Wie lautet die Geradengleichung für die Tangente, y T =? Antwort:

Tangentengleichung. Wie lautet die Geradengleichung für die Tangente, y T =? Antwort: Tangentengleichung Wie Sie wissen, gibt die erste Ableitung einer Funktion deren Steigung an. Betrachtet man eine fest vorgegebene Stelle, gibt f ( ) also die Steigung der Kurve und somit auch die Steigung

Mehr

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen 1. Quadratische Gleichungen Quadratische Gleichungen lassen sich immer auf die sog. normierte Form x 2 + px + = 0 bringen, in

Mehr

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes. Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel

Mehr

Wirtschaftsinformatik I

Wirtschaftsinformatik I Wirtschaftsinformatik I - Tutorium 6/ 7 (April 2010) Zusatzinformationen - Lösungsvorschläge Wirtschaftsinformatik I Tutorium Jochen Daum (4.Semester BWL) Universität Mannheim Rechtshinweis: Diese Präsentation

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

V 2 B, C, D Drinks. Möglicher Lösungsweg a) Gleichungssystem: 300x + 400 y = 520 300x + 500y = 597,5 2x3 Matrix: Energydrink 0,7 Mineralwasser 0,775,

V 2 B, C, D Drinks. Möglicher Lösungsweg a) Gleichungssystem: 300x + 400 y = 520 300x + 500y = 597,5 2x3 Matrix: Energydrink 0,7 Mineralwasser 0,775, Aufgabenpool für angewandte Mathematik / 1. Jahrgang V B, C, D Drinks Ein gastronomischer Betrieb kauft 300 Dosen Energydrinks (0,3 l) und 400 Liter Flaschen Mineralwasser und zahlt dafür 50, Euro. Einen

Mehr

Eine Logikschaltung zur Addition zweier Zahlen

Eine Logikschaltung zur Addition zweier Zahlen Eine Logikschaltung zur Addition zweier Zahlen Grundlegender Ansatz für die Umsetzung arithmetischer Operationen als elektronische Schaltung ist die Darstellung von Zahlen im Binärsystem. Eine Logikschaltung

Mehr

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter 2 Inhaltsverzeichnis 1 Web-Kürzel 4 1.1 Einführung.......................................... 4 1.2 Web-Kürzel.........................................

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Algorithmen mit Python

Algorithmen mit Python Algorithmen mit Python Vorbesprechung zum Proseminar im Sommersemester 2009 http://www.python.org 1 Sie lernen in DAP Java und C/C++: 80% Syntax, 20% Algorithmen-Design Idee Schon ein einfaches Hello World

Mehr

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können. 6. Bäume Lernziele 6. Bäume Lernziele: Definition und Eigenschaften binärer Bäume kennen, Traversierungsalgorithmen für binäre Bäume implementieren können, die Bedeutung von Suchbäumen für die effiziente

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5) Einführung 3 Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Univ.-Prof. Dr. Christoph Meinel Hasso-Plattner-Institut Universität Potsdam, Deutschland Hatten den Reduktionsbegriff

Mehr

Grundlagen der Programmierung (Vorlesung 14)

Grundlagen der Programmierung (Vorlesung 14) Grundlagen der Programmierung (Vorlesung 14) Ralf Möller, FH-Wedel Vorige Vorlesung Verifikation von Anweisungen und Anweisungsfolgen Schleifen Inhalt dieser Vorlesung Funktionen und Prozeduren Lernziele

Mehr

Programmieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff

Programmieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff Programmieren in C Rekursive Funktionen Prof. Dr. Nikolaus Wulff Rekursive Funktionen Jede C Funktion besitzt ihren eigenen lokalen Satz an Variablen. Dies bietet ganze neue Möglichkeiten Funktionen zu

Mehr

Grundlagen der Theoretischen Informatik, SoSe 2008

Grundlagen der Theoretischen Informatik, SoSe 2008 1. Aufgabenblatt zur Vorlesung Grundlagen der Theoretischen Informatik, SoSe 2008 (Dr. Frank Hoffmann) Lösung von Manuel Jain und Benjamin Bortfeldt Aufgabe 2 Zustandsdiagramme (6 Punkte, wird korrigiert)

Mehr

Programmieren in Haskell Einführung

Programmieren in Haskell Einführung Programmieren in Haskell Einführung Peter Steffen Universität Bielefeld Technische Fakultät 16.10.2009 1 Programmieren in Haskell Veranstalter Dr. Peter Steffen Raum: M3-124 Tel.: 0521/106-2906 Email:

Mehr

Programmiertechnik II

Programmiertechnik II Analyse von Algorithmen Algorithmenentwurf Algorithmen sind oft Teil einer größeren Anwendung operieren auf Daten der Anwendung, sollen aber unabhängig von konkreten Typen sein Darstellung der Algorithmen

Mehr

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r ) Definition B : Menge der binären Bäume, rekursiv definiert durch die Regeln: ist ein binärer Baum sind t l, t r binäre Bäume, so ist auch t =, t l, t r ein binärer Baum nur das, was durch die beiden vorigen

Mehr

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Zählen und Zahlbereiche Übungsblatt 1 1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Für alle m, n N gilt m + n = n + m. in den Satz umschreiben:

Mehr

Entwurf von Algorithmen - Kontrollstrukturen

Entwurf von Algorithmen - Kontrollstrukturen Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer

Mehr

Einführung in. Logische Schaltungen

Einführung in. Logische Schaltungen Einführung in Logische Schaltungen 1/7 Inhaltsverzeichnis 1. Einführung 1. Was sind logische Schaltungen 2. Grundlegende Elemente 3. Weitere Elemente 4. Beispiel einer logischen Schaltung 2. Notation von

Mehr

Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt

Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt AMPEL-Steuerung(en) Die Beschreibung und Programmierung der Ampel (vor allem Ampel_5) können sehr kompliziert

Mehr

Austausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen

Austausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen Austausch- bzw. Übergangsrozesse und Gleichgewichtsverteilungen Wir betrachten ein System mit verschiedenen Zuständen, zwischen denen ein Austausch stattfinden kann. Etwa soziale Schichten in einer Gesellschaft:

Mehr

7 Rechnen mit Polynomen

7 Rechnen mit Polynomen 7 Rechnen mit Polynomen Zu Polynomfunktionen Satz. Zwei Polynomfunktionen und f : R R, x a n x n + a n 1 x n 1 + a 1 x + a 0 g : R R, x b n x n + b n 1 x n 1 + b 1 x + b 0 sind genau dann gleich, wenn

Mehr

1.4.12 Sin-Funktion vgl. Cos-Funktion

1.4.12 Sin-Funktion vgl. Cos-Funktion .4. Sgn-Funktion Informatik. Semester 36 36.4.2 Sin-Funktion vgl. Cos-Funktion Informatik. Semester 37 37 .4.3 Sqr-Funktion Informatik. Semester 38 38.4.4 Tan-Funktion Informatik. Semester 39 39 .5 Konstanten

Mehr

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis Unterrichtsmaterialien in digitaler und in gedruckter Form Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis Das komplette Material finden Sie hier: Download bei School-Scout.de

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 28 Einstieg in die Informatik mit Java Algorithmen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 28 1 Überblick 2 Algorithmus 3 Grundalgorithmen in Java 4 Flussdiagramme

Mehr

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität

Mehr

Lineare Gleichungssysteme

Lineare Gleichungssysteme Lineare Gleichungssysteme 1 Zwei Gleichungen mit zwei Unbekannten Es kommt häufig vor, dass man nicht mit einer Variablen alleine auskommt, um ein Problem zu lösen. Das folgende Beispiel soll dies verdeutlichen

Mehr

Suche in Spielbäumen Spielbäume Minimax Algorithmus Alpha-Beta Suche. Suche in Spielbäumen. KI SS2011: Suche in Spielbäumen 1/20

Suche in Spielbäumen Spielbäume Minimax Algorithmus Alpha-Beta Suche. Suche in Spielbäumen. KI SS2011: Suche in Spielbäumen 1/20 Suche in Spielbäumen Suche in Spielbäumen KI SS2011: Suche in Spielbäumen 1/20 Spiele in der KI Suche in Spielbäumen Spielbäume Minimax Algorithmus Alpha-Beta Suche Einschränkung von Spielen auf: 2 Spieler:

Mehr

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapiteltests zum Leitprogramm Binäre Suchbäume Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 Bäume robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische Grundprinzipien 3. Sortierverfahren 4. Halden

Mehr

Theoretische Informatik SS 04 Übung 1

Theoretische Informatik SS 04 Übung 1 Theoretische Informatik SS 04 Übung 1 Aufgabe 1 Es gibt verschiedene Möglichkeiten, eine natürliche Zahl n zu codieren. In der unären Codierung hat man nur ein Alphabet mit einem Zeichen - sagen wir die

Mehr

Übung Theoretische Grundlagen

Übung Theoretische Grundlagen Übung Theoretische Grundlagen Berechenbarkeit/Entscheidbarkeit Nico Döttling November 26, 2009 INSTITUT FÜR KRYPTOGRAPHIE UND SICHERHEIT KIT University of the State of Baden-Wuerttemberg and National Laboratory

Mehr

der Eingabe! Haben Sie das Ergebnis? Auf diesen schwarzen Punkt kommen wir noch zu sprechen.

der Eingabe! Haben Sie das Ergebnis? Auf diesen schwarzen Punkt kommen wir noch zu sprechen. Medizintechnik MATHCAD Kapitel. Einfache Rechnungen mit MATHCAD ohne Variablendefinition In diesem kleinen Kapitel wollen wir die ersten Schritte mit MATHCAD tun und folgende Aufgaben lösen: 8 a: 5 =?

Mehr

Softwarelösungen: Versuch 4

Softwarelösungen: Versuch 4 Softwarelösungen: Versuch 4 Nichtstun in Schleife wird ersetzt durch zeitweilige Zurücknahme der Anforderung, um es anderen Prozessen zu erlauben, die Ressource zu belegen: /* Prozess 0 */ wiederhole flag[0]

Mehr

4. Übungsblatt zu Mathematik für Informatiker I, WS 2003/04

4. Übungsblatt zu Mathematik für Informatiker I, WS 2003/04 4. Übungsblatt zu Mathematik für Informatiker I, WS 2003/04 JOACHIM VON ZUR GATHEN, OLAF MÜLLER, MICHAEL NÜSKEN Abgabe bis Freitag, 14. November 2003, 11 11 in den jeweils richtigen grünen oder roten Kasten

Mehr

Einführung in die C++ Programmierung für Ingenieure

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

Mehr

Im Jahr t = 0 hat eine Stadt 10.000 Einwohner. Nach 15 Jahren hat sich die Einwohnerzahl verdoppelt. z(t) = at + b

Im Jahr t = 0 hat eine Stadt 10.000 Einwohner. Nach 15 Jahren hat sich die Einwohnerzahl verdoppelt. z(t) = at + b Aufgabe 1: Im Jahr t = 0 hat eine Stadt 10.000 Einwohner. Nach 15 Jahren hat sich die Einwohnerzahl verdoppelt. (a) Nehmen Sie lineares Wachstum gemäß z(t) = at + b an, wobei z die Einwohnerzahl ist und

Mehr

Gleichungen Lösen. Ein graphischer Blick auf Gleichungen

Gleichungen Lösen. Ein graphischer Blick auf Gleichungen Gleichungen Lösen Was bedeutet es, eine Gleichung zu lösen? Was ist überhaupt eine Gleichung? Eine Gleichung ist, grundsätzlich eine Aussage über zwei mathematische Terme, dass sie gleich sind. Ein Term

Mehr

Programmieren I. Kapitel 7. Sortieren und Suchen

Programmieren I. Kapitel 7. Sortieren und Suchen Programmieren I Kapitel 7. Sortieren und Suchen Kapitel 7: Sortieren und Suchen Ziel: Varianten der häufigsten Anwendung kennenlernen Ordnung Suchen lineares Suchen Binärsuche oder Bisektionssuche Sortieren

Mehr

Dialognetze. Ziel : Beschreibung von Methoden und Beschreibungstechniken für den Entwurf und die Dokumentation von Dialogabläufen

Dialognetze. Ziel : Beschreibung von Methoden und Beschreibungstechniken für den Entwurf und die Dokumentation von Dialogabläufen Dialognetze Ziel : Beschreibung von Methoden und Beschreibungstechniken für den Entwurf und die Dokumentation von Dialogabläufen Dialogabläufe auf Fensterebene "grobe Dialogabläufe" d.h. Wechsel zwischen

Mehr

1. LPC - Lehmanns Programmier Contest - Lehmanns Logo

1. LPC - Lehmanns Programmier Contest - Lehmanns Logo Aufgabe ist die Entwicklung einer vereinfachten Variante der beliebten Programmiersprache Logo. Die Aufgabe ist in drei Stufen zu erledigen, von der wir zunächst nur die erste Stufe bekannt geben. Die

Mehr

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen Programmieren 10. Tutorium 4./ 5. Übungsblatt Inhalt I. Übungsblatt 4 II. III. - Rückgabe und Besprechung - Vorbereitung auf Wiederholung/ Nachtrag - Operatorpräzedenzen IV. Übungsblatt 5 - Vorstellung

Mehr

Analysis I für Studierende der Ingenieurwissenschaften

Analysis I für Studierende der Ingenieurwissenschaften Fachbereich Mathematik der Universität Hamburg WiSe 2015/16 Prof. Dr. M. Hinze Dr. P. Kiani Analysis I für Studierende der Ingenieurwissenschaften Lösungshinweise zu Blatt 2 Aufgabe 1: (12 Punkte) a) Beweisen

Mehr

Binäre Suchbäume (binary search trees, kurz: bst)

Binäre Suchbäume (binary search trees, kurz: bst) Binäre Suchbäume (binary search trees, kurz: bst) Datenstruktur zum Speichern einer endlichen Menge M von Zahlen. Genauer: Binärbaum T mit n := M Knoten Jeder Knoten v von T ist mit einer Zahl m v M markiert.

Mehr

Terme stehen für Namen von Objekten des Diskursbereichs (Subjekte, Objekte des natürlichsprachlichen Satzes)

Terme stehen für Namen von Objekten des Diskursbereichs (Subjekte, Objekte des natürlichsprachlichen Satzes) Prädikatenlogik Man kann den natürlichsprachlichen Satz Die Sonne scheint. in der Prädikatenlogik beispielsweise als logisches Atom scheint(sonne) darstellen. In der Sprache der Prädikatenlogik werden

Mehr

TREND SEARCH VISUALISIERUNG. von Ricardo Gantschew btk Berlin Dozent / Till Nagel

TREND SEARCH VISUALISIERUNG. von Ricardo Gantschew btk Berlin Dozent / Till Nagel von Ricardo Gantschew btk Berlin Dozent / Till Nagel 01 IDEE Einige kennen vielleicht GoogleTrends. Hierbei handelt es sich um eine Anwendung, bei der man verschiedenste Begriffe auf die Häufigkeit ihrer

Mehr

Mathematik. UND/ODER Verknüpfung. Ungleichungen. Betrag. Intervall. Umgebung

Mathematik. UND/ODER Verknüpfung. Ungleichungen. Betrag. Intervall. Umgebung Mathematik UND/ODER Verknüpfung Ungleichungen Betrag Intervall Umgebung Stefan Gärtner 004 Gr Mathematik UND/ODER Seite UND Verknüpfung Kommentar Aussage Symbolform Die Aussagen Hans kann schwimmen p und

Mehr

Kurs 1613 Einführung in die imperative Programmierung

Kurs 1613 Einführung in die imperative Programmierung Aufgabe 1 Gegeben sei die Prozedur BubbleSort: procedure BubbleSort(var iofeld:tfeld); { var hilf:integer; i:tindex; j:tindex; vertauscht:boolean; i:=1; repeat vertauscht := false; for j := 1 to N - i

Mehr

Lineare Gleichungssysteme

Lineare Gleichungssysteme Brückenkurs Mathematik TU Dresden 2015 Lineare Gleichungssysteme Schwerpunkte: Modellbildung geometrische Interpretation Lösungsmethoden Prof. Dr. F. Schuricht TU Dresden, Fachbereich Mathematik auf der

Mehr

8. Quadratische Reste. Reziprozitätsgesetz

8. Quadratische Reste. Reziprozitätsgesetz O Forster: Prizahlen 8 Quadratische Reste Rezirozitätsgesetz 81 Definition Sei eine natürliche Zahl 2 Eine ganze Zahl a heißt uadratischer Rest odulo (Abkürzung QR, falls die Kongruenz x 2 a od eine Lösung

Mehr

Informationsblatt Induktionsbeweis

Informationsblatt Induktionsbeweis Sommer 015 Informationsblatt Induktionsbeweis 31. März 015 Motivation Die vollständige Induktion ist ein wichtiges Beweisverfahren in der Informatik. Sie wird häufig dazu gebraucht, um mathematische Formeln

Mehr

Übungen zu C++ Kapitel 1

Übungen zu C++ Kapitel 1 Übungen zu C++ Kapitel 1 Aufgabe 1 Ergänze den Text. a) Die sechs logischen Einheiten eines Computers sind Eingabe-Einheit, Ausgabe-Einheit, RAM, ALU, CPU, Plattenspeicher. b) Die Programme, welche Hochsprachenprogramme

Mehr

Nichtlineare Optimierung ohne Nebenbedingungen

Nichtlineare Optimierung ohne Nebenbedingungen Kapitel 2 Nichtlineare Optimierung ohne Nebenbedingungen In diesem Abschnitt sollen im wesentlichen Verfahren zur Bestimmung des Minimums von nichtglatten Funktionen in einer Variablen im Detail vorgestellt

Mehr

Theoretische Grundlagen des Software Engineering

Theoretische Grundlagen des Software Engineering Theoretische Grundlagen des Software Engineering 11: Abstrakte Reduktionssysteme schulz@eprover.org Reduktionssysteme Definition: Reduktionssystem Ein Reduktionssystem ist ein Tupel (A, ) Dabei gilt: A

Mehr

Grundlagen Theoretischer Informatik I SoSe 2011 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de

Grundlagen Theoretischer Informatik I SoSe 2011 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de Grundlagen Theoretischer Informatik I SoSe 2011 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Grundlagen Theoretischer Informatik I Gesamtübersicht Organisatorisches; Einführung Logik

Mehr

Leichte-Sprache-Bilder

Leichte-Sprache-Bilder Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen

Mehr

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg. Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 Klausurteilnehmer Name: Matrikelnummer: Wichtige Hinweise Es sind keinerlei Hilfsmittel zugelassen auch keine Taschenrechner! Die Klausur dauert

Mehr

Diana Lange. Generative Gestaltung Operatoren

Diana Lange. Generative Gestaltung Operatoren Diana Lange Generative Gestaltung Operatoren Begriffserklärung Verknüpfungsvorschrift im Rahmen logischer Kalküle. Quelle: google Operatoren sind Zeichen, die mit einer bestimmten Bedeutung versehen sind.

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Kapitel 6: Induktives Vorgehen Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für Theoretische

Mehr

Bitte wenden. Name: KURSARBEIT NR. 4 (10 DIFF GA) 18.06.2002. Seite 1

Bitte wenden. Name: KURSARBEIT NR. 4 (10 DIFF GA) 18.06.2002. Seite 1 Aufgabe 1: Gegeben ist das folgende Programm: PR figur :n :Länge WH 3 [ VW :Länge WENN :n>1 DANN ( RE 90 figur :n-1 :Länge/2 RW :Länge Seite 1 Zeichne das Bild, welches beim Aufruf der Prozedur mit figur

Mehr

183.580, WS2012 Übungsgruppen: Mo., 22.10.

183.580, WS2012 Übungsgruppen: Mo., 22.10. VU Grundlagen digitaler Systeme Übung 2: Numerik, Boolesche Algebra 183.580, WS2012 Übungsgruppen: Mo., 22.10. Aufgabe 1: Binäre Gleitpunkt-Arithmetik Addition & Subtraktion Gegeben sind die Zahlen: A

Mehr

Informatik-Sommercamp 2012. Mastermind mit dem Android SDK

Informatik-Sommercamp 2012. Mastermind mit dem Android SDK Mastermind mit dem Android SDK Übersicht Einführungen Mastermind und Strategien (Stefan) Eclipse und das ADT Plugin (Jan) GUI-Programmierung (Dominik) Mastermind und Strategien - Übersicht Mastermind Spielregeln

Mehr

Rente = laufende Zahlungen, die in regelmäßigen Zeitabschnitten (periodisch) wiederkehren Rentenperiode = Zeitabstand zwischen zwei Rentenzahlungen

Rente = laufende Zahlungen, die in regelmäßigen Zeitabschnitten (periodisch) wiederkehren Rentenperiode = Zeitabstand zwischen zwei Rentenzahlungen 1 3.2. entenrechnung Definition: ente = laufende Zahlungen, die in regelmäßigen Zeitabschnitten (periodisch) wiederkehren entenperiode = Zeitabstand zwischen zwei entenzahlungen Finanzmathematisch sind

Mehr