29 Zusammenfassung und Ausblick

Größe: px
Ab Seite anzeigen:

Download "29 Zusammenfassung und Ausblick"

Transkript

1 29 Zusammenfassung und Ausblick 29.1 Zusammenfassung Wichtige Themen der funktionalen Programmierung Funktionale Abstraktion, Definitionen und Ausdrücke Semantik: Substitutionsmodell, Reduktionsstrategien Funktionen höherer Ordnung, Idiome, Funktionale Abschlüsse Rekursion: Definitionen, Prozesse, Algorithmen Kontrollabstraktion: Backtracking, pattern matching Objekte und generische Funktionen Memo-Funktionen, (Strom-orientierte Programmierung) Relationale Programmierung Programmierstil Zusammenfassung Verarbeitungsmodell und Programmierstil Scheme Prolog Java Funktional Relational Imperativ objektorientiert - objektorientiert Verarbeitungsmodell Denotationale Semantik Scheme Prolog Java Anwendung von Relationale Zustände von Funktionen Anfragen an von auf Werte eine Datenbasis Objekten Zusammenfassung: Semantik Denotational und operational 695

2 Scheme Prolog Java λ-kalkül, Logik und Anweisungen, Ausdrücke, Relationen, Vor- und Nach- Wertesemantik Anfragen bedingungen Sematik: operational Scheme Prolog Java Reduktionsstrategien: Unifikation Virtuelle Vorgezogene Auswertung, und Suche Maschine eval Zusammenfassung: Eigenschaften Bezugstransparenz und Richtungsunabhängigkeit Bezugstransparenz Scheme Prolog Java ja, aber nur ja nein ohne Modifikatoren Richtungsunabhängigkeit Scheme Prolog Java nein ja, aber nur nein ohne funktionale Auswerteumgebung Schlupflöcher, eingebettete Programmierstile Scheme Prolog Java Imperativ funktional - Zusammenfassung Typsystem und Typprüfung Typsystem 696

3 Scheme Prolog Java Latentes Latentes Manifestes Typsystem Typprüfung Scheme Prolog Java Laufzeit Laufzeit Übersetzungszeit Zusammenfassung Vor- und Nachteile Latente versus statische Typisierung Scheme Prolog Java Kurze Programme, frühzeitige Symbolverarbeitung, Fehlererkennung, einfache Metaprogrammierung wohldefinierte Codeerzeugung zur Laufzeit Schnittstellen Programmierumgebung Scheme Prolog Java Interpreter Interpreter Compiler Compiler exploratives Programmieren Wann wählen wir welchen Programmierstil? Wir haben die Stärken von zwei unterschiedlichen Verarbeitungsmodellen besprochen. Beachte: Die Verarbeitungsmodelle sind nicht disjunkt. 697

4 Die meisten Abstraktionen aus einem Verarbeitungsmodell haben Entsprechungen in anderen Modellen. Es ist Ihre Aufgabe, bei einem gegebenen Modell jeweils die treffendsten Abstraktionen zu finden. Es ist Ihre Aufgabe, bei einem gegebenen Problem jeweils ein adäquates Verarbeitungsmodell zu wählen. Be specific. Use abstractions. Be concise. Sechs Maximen für guten Programmierstil Use the provided tools. Don t be obscure. Be consistent. (nach Norvig 92) Ausblick: Vertiefungsmöglichkeiten im Bachelorstudium (SoSe 2010) Grundstudiumspraktikum (GPRAK) Bildverarbeitungspraktikum Modul: Wissensverarbeitung Modul: Interactive Visual Computing Grundlagen von Datenbanksystemen Klausur Erste Klausur: , 9-12 Uhr Audi-I Wiederholungsklausur: , 9-12 Uhr ESA-B Tutorien zur Klausurvorbereitung: , Uhr, R-030 Erlaubte Hilfsmittel: Die Prüfungsunterlagen zur Vorlesung, der Rivised Report on Scheme, keine elektronischen Hilfsmittel Ausweise: Ein Lichtbildausweis, Studentenausweis EN DE Viel Erfolg für das weitere Studium! 698

5 Aus der Einleitung von Norvig, 1992: The premise of this book is that you can only write something useful and interesting when you both understand what makes good writing and have something interesting to say. This holds for writing programs as well as for writing prose. As Kerningham and Plauger put it on the cover of Software Tools in Pascal: Good programming is not learned from generalities, but by seeing how significant programs can be made clean, easy to read, easy to maintain and modify, human-engineered, efficient, and reliable, by the application of common sense and good programming practices. Careful study and imitations of good programs leads to better writing. Kerningham and Plauger 699

6 700

7 29.2 Vorbereitung auf die Klausur Zur Vorbereitung auf die Klausur prüfen Sie sich selbst und versuchen Sie, ob Sie die folgenden Fragen beantworten können: Auf welche Grundoperationen beziehen wir uns bei der funktionalen Programmierung? Erklären Sie den special form operator lambda. Was ist die Bedeutung eines funktionalen Ausdrucks? denotationell, operational? Wann sind beide Semantikdefinitionen äquivalent, wann nicht? Was ist das Substitutionsmodell der Auswertung? Welche Reduktionsstrategien gibt es? Erklären Sie die Begriffe Striktheit, vorgezogene Auswertung, verzögerte Auswertung. Welche Rolle spielt die Umgebung bei der Auswertung? Was sind Funktionen höherer Ordnung? Welche Funktionen bilden den Werkzeugkasten für den Entwurf von Funktionen? Warum sind funktionale Abschlüsse so wichtig? Was ginge nicht so einfach, wenn es in Scheme keine closures gäbe? Wann ist eine Definition rekursiv? Welche Prozesse werden durch rekursive Funktionen ausgelöst? Was ist Endrekursion? Wie überführen Sie eine allgemeine lineare Rekursion in eine Endrekursion? Können Sie eine endrekursive Funktion definieren, die die Länge einer Liste errechnet, oder die Funktion map endrekursiv definieren? Nennen Sie ein Beispiel für eine Baumrekursion. Nennen Sie ein Problem, das durch backtracking gelöst werden kann. Nach welchem Schema geht man beim backtracking vor? Welche Probleme lassen sich mit dem in der Vorlesung behandelten backtracking- Schema nicht lösen? Warum nicht? Läßt sich die Unifikation als pattern matching Problem formulieren? Was ist nötig, den Strom-orientierten Programmierstil in Scheme einzubetten, d.h. welche Sprachelemente müssen wir nachbilden? Welche Vorteile bringt verzögerte Auswertung? Was ist ein Datentyp? Welches Typsystem verwendet Scheme? 701

8 Was ist ein rekursiver Datentyp? Nennen Sie ein Beispiel. Was ist eine Spezifikation? Was ist eine Zusicherung (assertion)? Wann ist ein Programm korrekt? Wie stellen Sie sicher (und beweisen Sie), daß eine rekursive Funktion terminiert? Für welche Algorithmen haben wir Modifikatoren (set!) verwendet? Warum war das nötig? Welche Konsequenzen hat der Einsatz von Modifikatoren für die Semantik eines Programms? Wie unterscheiden sich generische Funktionen in CLOS von der Nachrichtenmetapher in Java? Was sind Ergänzungsmethoden? Was ist Methodenkombination? Was sind Symbole (in Scheme)? Nennen Sie je ein Problem, für das Sie den Algorithmus zur Lösung lieber in Prolog oder lieber in Scheme programmieren würden und begründen Sie Ihren Vorschlag. 702

9 A Verzeichnisse 703

10 Index =, 96 E/A-Relation, 60 Church-Rosser-Eigenschaft, 159 Übungsschein, 37 8-Damen-Problem, 312 als backtracking-problem, 327 Abbilden(map), 242 Ableitungsbaum, 113 abs, 90 Abschluß, siehe closure Abstraktion Datenabstraktion, 48, 111 funktionale Abstraktion, 48 Funktionsobjekt, 54 Namensgebung, 48 acos, 90 add1, 117 Akkumulator Endrekursion, 224 Akzessoren, 84 Algorithmus Beschreibung als Programm, 12 Definition, 12, 620 determiniert, 13 deterministisch, 13 Implementation, 263 nebenläufig, 13 nicht-deterministisch, 13 sequentiell, 13 Spezifikation, 263 terminieren, 13 Alphabet, 70 and, 97 and/or-trees, 415 Animation, 290 append, 102, 109 applikativ, 165 Argument Funktion, 60 Aristoteles, 409 ASCII-Zeichensatz, 132 asin, 90 assertions, 177 assoc, 112, 127 Assoziationsliste, 112 assq, 112, 127 assv, 112, 127 atan, 90 Atome, 43 Aufrufkeller, 223 Ausdruck, 43 Konstruktion, 46 Auslöschung, 92 Auswertung Normal form, 163 verzögert, 97, 164 vorgezogen, 97, 164 Backtracking, 311 objektorientiert, 535 Suchraum, 322 Backtracking-Schema, 323 Baukastenansatz, 239 Baum Ableitungsbaum, 113 baumartig Rekursion, 210 Bezugstransparenz, 161, 690 Definition, 159 Block, 68 blocks world, 449 bottom,

11 caching, 630 car, 105, 106 catch-all, 63 cddddr, 106 cdr, 105, 106 ceiling, 90 char, 133 Church, Alonzo, 54, 56 Clobbered Sibling Goal Problem, 423 CLOS Meta-Methoden, 467 closure, 281 Common Lisp, 28 complex?, 89 cons, 104, 109 Punktnoatation, 104 cons-zellen, 106 contract Modul, 263 contract.ss, 179 cos, 90 Curry-Verfahren, 277 Datenabstraktion, 84 Datenstruktur rekursiv, 107 Datentyp, 84, siehe Typ abstrakt, 84 Datum Julianisch, 99 debugging, siehe Fehlersuche defclass, 460 define-struct, 147 deklarativ, 159 Delegation, 534 deriv, 237 Dichte, 496 digit, 140 Disjunktion, 96 dotted pair, 109 draw.ss, 214 DrScheme Aufruf, 39 Fehlermeldungen, 42 teachpacks, 37 eager evaluation, 164 Eliza, 345, 346 Endrekursion, 224 environment, siehe Umgebung eq?, 125 equal?, 96, 125 eqv?, 125 Eratosthenes, 628 Ereignisquellen, 511 Ereignisse Weckaufträge, 511 Erfolgslisten-Verfahren, 321 Ergänzungsmethoden, 483, 484 evaluation eager, 97 lazy, 97 evaluator, 38 Evaluierung, 162 exp, 90 expressions, 38 expt, 90 extent, siehe Lebensdauer Fakten, 645 Fallunterscheidungen, 61 einseitig unless, 62 when, 62 Konditional cond, 62 zweiseitig if, 62 Falten, 245 Fehlersuche, 167 Fehlervermeidung,

12 first-name, 111 floor, 90 folding, 245 for-each, 340 fractals-module.ss, 214 Frege, G., 201 Funktion E/A-Relation, 60 partielle Anwendung, 277 Definition als Abstraktion, 53 generisch, 88, 464 kombinatorisch, 306 Memo-Funktion, 631 polymorph, 88 Signatur, 60 Typ, 60 Funktionen höherer Ordnung, 234 Funktionsdefinition, 58 Funktionskomposition, 280 Definition, 280 garbage collection, 226 Genauigkeit, 91 Generische Funktion, 464 gensym, 615 Gleichheit Listen, 123 Gleichheitsprädikate, 125 Gleichverteilung, 492 goldener Schnitt, 210 GPS, 406 Repräsentation der Regeln, 411 GPS Version 2, 429 gps1, 413 graphing.ss, 235 gui.ss, 285 Hoare, 26 Hopper Grace, 167 Identität, 123 Instanziierungsvariante, 647 integer?, 89 interleave, 307 Iteration, 249 join, 654 Julianisches Datum, 99 Kalender, 99 kanonisch, 162 Kardinalität, 85 Klassenattribute, 461 Klassenpräzedenzliste, 479 Klausel, 645, 648 Kopf, 648 Körper, 648 Kleene-Stern, 120 Klötzchenwelt, 449 Kochsche Schneeflocke, 212 Kombinatorik, 306 Kommentar, 46 Konfluenz, 159, 161 Kongruenzmethode, 495 Konjunktion, 96 Konkatenation Listen, 102 Konstruktoren, 84 Kontrollabstraktion Delegation, 534 Koreferenz, 353 Korrektheit, 177 partiell, 177 total, 177 lambda-abstraktor, 54 last-name, 110 lazy evaluation, 164 Leaping Before You Look Problem, 424 Lebensdauer, 69 Leerer Wert,

13 length, 101, 103 let lambda, 66 Lexikalische Analyse, 384 Lexikalische Einheiten, 51 lilies-module.ss, 220 Lisp-Familie, 28 list, 101, 109 list-ref, 130 Liste als Menge, 103 Definition, 100 leere Liste, 101 rekursive Definition, 107 Repräsentation, 122 Unterlisten, 306 Listen als closure, 149 Konstruktion, 104 Permutationen, 308, 309 Unterlisten, 307 Verweben, 307 List of successes, 321 Literatur Kommentare, 203 Programmierung funktional, 33 logisch, 34 objektorientiert, 34 relational, 34 log, 90 M.C. Escher 3 Welten, 114 Macro Definition, 608 Effizienzsteigerung, 611 make-vector, 145 mapping, 242 max, 90 means-ends-analysis, 407 Mehrfachauswertung bei Macros, 613 Mehrfachvererbung Methodenkombination, 480 member, 103, 126 member?, 128 memoization, 630 memq?, 126 memv?, 126 Mensa-Szenario, 522 Methodenkombination, 480 Akzessorfunktion, 482 Initialisierung, 500 Operatormethodenkombination, 482 Standard-Methodenkombination, 484 Methodenkonbination, 479 min, 90 Modell dynamisch, 522 Simulation, 487 statistisch, 490 Modifikatoren, 162 Modul, 253 Modularisierung, 267 modulo, 90 Monkey and banana problem, 441 Muster Variable, 349 my-cons, 149 my-length, 128 Nachklappern, 223 Nachrichtenmetapher, 531 broadcast, 533 CLOS, 533 Name nicht atomar, 55 Namen Scheme,

14 Namenskonventionen, 80 Natürliche Zahlen, 204 Negation, 96 Newton-Verfahren, 264, 269, 270 Normalform Auswertung, 162 not, 97 Notation Kommentar, 46 null?, 101 number?, 89 one-of, 115 Operator Opratorpräzedenz, 43 Operatoren logische, 96 or, 97 Paare, 104 pair?, 104 Parameter Aktualparameter, 60 Formalparameter, 60 PARRY, 348 pattern matching, 649 pattern matching Eliza, 349 Peanosche Axiome, 204 Planen, 430 Polymorphie Formen von, 88 Funktionen, 88 leere Liste, 101 Typen, 88 Pradikate zweiter Ordnung, 660 Pragmatik, 157 Primzahlen Sieb des Eratosthenes, 626 Problemlösen, 406 process.ss, 143 Programmentwurf Phasen, 406 Programmieren explorativ, 421 Programmiersprache, 153, 157 berechnungsuniversell, 27 Common Lisp, 28 deklarativ, 159 Lisp-Familie, 28 scripting language, 29 Programmierstil, 14, 689 Programmierung, 381 applikativ, 47 funktional, siehe applikativ Grundstile der Programmierung, 14 Spaghetti-Code, 15 stromorientiert, 618 von-neumann Programmierung, 14 programmierung imperativ, 636 zustandsoroentiert, 636 Prolog, 644 Fakten, 645 Klausel, 645 Regeln, 645 Prozeß baum-rekursiv, 225, 631 iterativ, 224 linear-rekursiv, 222 Prädikat Semiprädikat, 352 Prädikate Semiprädikat, 103 Präzedenzgraph, 475 Quelltyp, 85 quotient, 90 Quotierung, 75 random,

15 random-elt, 115, 117 random-real, 117 rapid prototyping, 421 rational?, 89 real?, 89 recursive subgoal problem, 425, 426 Reduktion äußere, 163 Aufwand, 164 innere, 163 Reduktionsstrategie Scheme, 165 Referentielle Transparenz, 159 Regel deklarativ, 647 oprational, 647 prozedural, 647 Regeln, 645 Rekursion Rekursiver Abstieg, 114 rekursiver Abstieg, 114 allgemein, 208 baumartig, 210 Definition, 204 endrekursiv, 224 geschachelt, 217 indirekt, 209, 415 linear, 206 minimalrekursiv, 205 Prozesse, 221 verschränkt, 209 remainder, 90 reverse, 110 Richtungsunabhängigkeit, 690 round, 90 Rucksackproblem, 309 Running around the Block Problem, 421 Rückwärtsverkettung, 647 s-expressions Lisp, 43 Schaltjahr, 99 Scheinobjektivität, 25 Schlüsselwörter, 52 scope, siehe Sichtbarkeit Segmentvariable, 357 Seiteneffekt bei Macros, 613 Seiteneffekte, 161 Semantik, 157 denotational, 690 denotationell, 158 in hybriden Sprachen, 160 operational, 158, 690 Scheme Ausdrücke, 165 strikt, 172 Semiotik, 71 Semiprädikat, 103 Definition, 352 Sequenz, 169 Sichtbarkeit, 68 Sieb des Eratosthenes, 626 Signatur einer Funktion, 60 Simulation, 487 Ablaufschema, 502 Basissystem, 498 diskret ereignisorientiert, 489 Weckermetapher, 511 Mensa-Szenario, 522 Modell, 487 Validierung, 487 Simulationsszenario, 503 sin, 90 special form define, 50 Reduktionsstrategie, 167 special form operator, 168 special form,

16 Sprachsynthese, 143 Sprunganweisung, 15, 637 sqrt, 90, 265 stack, 466 Stapel, 466 Steuerzeichen, 133 Stilistik Scheme, 130 Stream, siehe Strom Striktheit, 172 Scheme, 173 string Konkatenation, 136 string-append, 136 string-length, 136 string=?, 125 Strings, 135 Strom Generatoren, 618 Kopfform, 620 rekursive Struktur, 619 Stromfunktion, 620 Transformatoren, 618 strong typing, 86 structure, 147 sub1, 117 Substitutionsmodell, 162 Suche nicht-deterministisch, 335 super call, 483 Symbol, 71 Scheme, 74 Symbole, 74 Mehrdeutigkeit, 71 Symboltabelle, 50 Syntax, 157 Systemaufrufe, 143 tan, 90 Tangente an eine Funktion, 270 teachpack, 262 draw.ss, 214 fractals-module.ss, 214 graphing.ss, 235 gui.ss, 285 lilies-module.ss, 220 my-vector-graphics.ss, 214 show-queen.ss, 317 tools-module.ss, 116, 248 world.ss, 298 Term, siehe Ausdruck Terminalzeichen, 113 Terminierungsbeweis mymap, 220 power, 219 Testfälle, 199 trace, 119 Traversieren eines Baumes, 392 truncate, 90 Typ, 84 einer Funktion, 60 Disjunktheit, 87 elementar, 84 Funktionstyp, 84 generisch, 84 strukturiert, 84 Typisierung dynamisch, 86 statisch, 86 Typsystem latent, 86, 691 manifest, 86, 691 Umgebung, 67 global, 67 lokal, 67, 68, 281 Umlaute, 132 und/oder-bäume, 415 Unifikation, 649 Universum der Werte, 83 untrace, 119 Validierung,

17 Variable, 50 Bindung, 51 freie, 59 gebundene, 59 Lebensdauer, 69 metalinguistisch, 113 referenzieren, 50 Sichtbarkeit, 68 vector, 145 Vektoren, 145 Verarbeitungsmodell, 13, 689 Benutzermodell, 22 funktional, 18 imperativ, 15, 16 logisch, 644 mystisch, 23, 25 objektoerientiert, 17 relational, 20, 643 stromorientiert, 21 Verbund, 147 Vereinfachung, 162 Vererbung, 466, 472 Attribute, 474 Mehrfachvererbung, 473, 474 Attribute, 473 Präzedenzgraph, 475 Veretilung Exponentialverteilung, 492 Normalverteilung, 493 Vergleichsoperatoren, 94 Vergleichsprädikate =, 96 equal?, 96 Verschatten Namen, 67 Verteilung Gleichverteilung, 492 Vierfarbenproblem, 338 weak typing, 86 Webpage zur Vorlesung, 35 Weckermetapher, 511 Wert eines Terms, 161, 162 undefiniert, 169 Wiederholung, 249 Wissensrepräsentation, 406 writeln, 117 Wurzel, 113 Zebra-Rätsel, 662 Zeichen, 70, 71 ASCII, 132 Codierung, 134 druckbar, 133 Unicode, 135 Zeichenketten, 135 Zieltyp, 85 Zufallszahlen Kongruenzmethode, 495 Transformationsmethode, 496 Zufallszahlengeneratoren, 494 Zusammensetzung Listen, 102 strings, 136 Zusicherungen, 177, 179 Wahrheitswerte, 94 Wandlung Präfix-Infix,

18 Verzeichnis der Definitionen Ableitungsbaum, 113 Algorithmus, 12 Eigenschaften, 13 Implementation, 263 Auswertung verzögert, 164 vorgezogen, 164 baumartig Rekursion, 210 berechnungsuniversell, 27 Bezugstransparenz, 159 closure, 68 Curry-Verfahren, 277 Datentyp, 84 Disjunktheit der Typen, 87 Deklarative Sprache, 159 evaluation eager, 164 lazy, 164 Funktion höherer Ordnung, 234 Funktionaler Abschluß closure, 68 Funktionskomposition, 280 Kardinalität, 85 Kopfform, 620 Korrektheit, 177 partiell, 177 total, 177 Liste, 100 Macro, 608 Natürliche Zahlen, 204 Normalform eines Terms, 162 Parameter Formale und Aktualparameter, 60 Programmiersprache, 158 Prädikat Semiprädikat, 352 Referentielle Transparenz, 159 Rekursion Definition, 204 Endrekursion, 223 geschachtelt, 217 indirekt, 209 linear, 206 minimalrekursiv, 205 verschränkt, 209 Semantik Bedeutung eines Terms, 161 strikt, 172 Semiprädikat, 352 Sichtbarkeit, 68 Striktheit einer Funktion, 172 Auswertung, 172 Stromfunktion, 620 Symbol, 71 in Scheme, 74 Typsystem latent, 86 manifest, 86 Umgebung 712

19 global, 67 lokal, 67 Variable Lebensdauer, 69 Sichtbarkeit, 68 Vearbeitungsmodell, 13 Wert eines Terms,

20 Verzeichnis der Beispiele 8-Damen-Problem, 312 alle Löungen, 319 als allgemeines Backtrackingproblem, 327 Ableitungsfunktion, 237 Ackermann-Funktion, 217 amb-collect: Summanden von Sieben, 337 Anzug Aggregat Methodenkombination, 480 Backtracking CLOS, Delegation, 535 Suche in den natürlichen Zahlen, 325 allgemeines Schema, 323 nicht-deterministisch, 342 broadcast: Nachricht an alle Objekte, 533 case, 79 CLOS Queue,Schlangen, 459 broadcast, 533 Closures als Listenrepräsentation, 149 Denksportaufgabe: Missionare auf der Hängebrücke, 330 Dialog-Werkzeug allgemein, 380 Dreiecke, 78 mit contract, 182 Eliza, 362 Fakultät, 91 Fenster mit Eingabefeld, 287 Fenster mit QUIT-button, 287 Fibonacci-Zahlen baumrekursiv, 210 Fibonaccizahlen endrekursiv, 225 GPS Version 1, 413 Version 2, 430 Klötzchenwelt, 450 Labyrinthsuche, 444 Monkey and banana problem, 441 Inhalt einer Kugel, 53 Initialisierung mittels initialize, 501 Klötzchenwelt, 450 Kunden-Bediensystem, 515 Labyrinthsuche, 444 Lazy Scheme, natürliche Zahlen, 175 Listen Unterlisten, 307 Länge einer Liste endrekursiv, 224 Länge einer Liste Nachklappern, 222 Macro Mittelwert von mehreren Zahlen, 611 my-unless, 610 my-when, 610 my-while, 610 myif,

21 quasiquote, 609 Maikatzen von Storm, 300 member funktional, 128 relational, 659 Memoization, 631 Mensa-Szenario 1, 522 Modulo-Funktion geschachtelt rekursiv, 217 Monkey and banana problem, 441 Multiplikationsalgorithmus funktional, 19 imperativ, 16 Mustervergleich (pattern matching), 349 my-if Nicht-Striktheit von Kontrollstrukturen, 174 n-tes Element einer Liste, 130 Negator, 379 Newton-Verfahren allgemeines, 270 msqrt, 265 mit contract, 266 Parsing von Namen Variante 1, 129 Parsing: Vor- und Nachname, 110 Permutationen von Listenelementen, 309 Potenzieren Induktionsbeweis, 219 Prolog in Scheme Severus Snape s Rätsel, 667 Zebra-Rätsel, 662 member, 659 Prolog: Ahnentafel, 653 Pythagoras: Mein erstes Scheme- Programm, 50 Quadratwurzel, 263 Queue CLOS, Schlangen, 459 FIFO-Queue, Warteschlange, 467 LIFO-Queue, Stack, 466 Stack, 466 Rucksackproblem: Geld wechseln, 309 Schaltjahr mit Konditional, 98 mit logischen Operatoren, 100 Severus Snape s Rätsel, 667 Sieb des Eratosthenes stromorietentiert, 626 Simulation Mensa-Szenario 1, 522 Mensa-Szenario 2: Spezialisierte Essensausgaben und Gäste, 525 Basissystem, 498 Kunden-Bediensystem, 515 Strom Natürliche Zahlen, 622 Sieb des Eratosthenes, 626 Teilstücke, 624 stream-ref, 623 abbilden, 623 filtern, 623 for-each, 624 Implemetation, 622 Test cases, 200, 718 Testfälle für my-length, 201 Textaufgaben lösen, 382 Textformatierung justify, 137 Textgenerierung Adjektive und Präpositionen, 120 rekursiver Abstieg, 114 Grammatik 715

22 endliche Sprache, 112 The Name of The Song, 77 Uhr world.ss, 292 Verweben von Listen, 307 Vierfarbenproblem mit amb, 338 Wandlung von Zahlen zu Text, 138 Zebra-Rätsel, 662 Übersetzer regelbasiert,

23 Verzeichnis der Autoren Abelson, Harold, 8, 10, 34, 203, 632 Adams, Douglas, 73, 273 Aristoteles, 408 Bauer, F. L., 12 Bird, R., 7, 33, 152, 172 Bobrow, Daniel G., 382 Brinch-Hansen, Per, 253 Carroll, Lewis, 72, 77, 155, 156 Church, Alonzo, 56 Clocksin, W.F., 641 Clocksin, W. F., 34 Conan Doyle, Sir Arthur, 641 Dijkstra, E. W., 15 Frege, G., 201 Goos, G., 12 Graham, Paul, 34, 203, 277 Hoare, C. A. R., 26, 609 Hofstadter, D. R., 203 Holyer, Ian, 202, 617 Keene, S., 34 Klaus, Heinz-Günther, 637 Knuth, Donald, 494 McCarthy, John, 19, 28 McDermott, Drew, 456 Mellish, C., 641 Meschkowski, H., 204 Norvig, Peter, 7, 29, 31, 37, 56, 109, 203, 240, 609, 636, 641 Orwell, George, 125 Page, Bernd, 488 Paul Graham, 482 Press, W. H., 494 Raphael, Bertram, 154, 643 Reiser, Martin, 459, 488, 516 Rowling, J.K., 667 Schefe, Peter, 12 Schönfinkel, M., 277 Shapiro, E., 34 Shapiro, Ehud, 641 Sterling, E., 34, 641 Storm, Theodor, 211 Strube, G., 160 Sussman, Gerald, 423 Sussman, Gerald J., 8, 10, 34, 203, 632 Sussman, Julie, 8, 10, 34, 203, 632 Wadler, P., 7, 33, 152, 172 Weigert, Alfred, 99 Weizenbaum, Joseph, 24, 345 Wirth, Niklas, 84, 459, 488, 516 Zimmermann, H., 99 Zwittlinger, H., 68 Züllighoven, Heinz, 177, 204 Nagel, H.-H., 24 Newell, Alan,

24 Verzeichnis der wörtlichen Zitate Abelson und Sussmann A computer language is not just a way of getting a computer to perform operations, 10 Adams, Douglas So long and thanks for all the fish., 73 The Ultimate Question of Life, the Universe, and Everything, 273 Aristoteles Unsere Überlegung betrifft nicht das Ziel, sondern die Mittel es zu erreichen., 408 Brinch-Hansen, Per Nesting is for Birds., 253 Carroll, Lewis Jabberwocky, 156 The name of the song is called Haddocks Eyes., 77 There s a nice knock-down argument for you, 72 Conan Doyle, Sir Arthur How, in the name of good fortune, did you know all that, Mr. Holmes?, 641 Frege, G. Die Mathematik sollte eigentlich ein Muster an logischer Klarheit sein., 201 Hoare, C. A. R. One thing the language designer should not do is to include untried ideas of his own., 609 Eine unzuverlässige Programmiersprache, aus der unzuverlässige Programme hervorgehen, 26 Klaus, Heinz-Günther Satire: Man mordet nicht nach Sprungbefehl, 637 McDermott, Drew Remember GPS?, 456 Nagel, H.-H. Wer die Ergebnisse unbesehen glaubt, sollte gar nicht erst anfangen, Informatik zu studieren, 24 Newell, Alan It is not my aim to surprise or to shock you, 405 Norvig, Peter Lisp s flexibility allows it to adapt as programming styles change, 31 The first step in writing a macro, 609 The name lambda comes from the mathematician Alonzo Church, 56 You will never become proficient in a foreign language by studying vocabulary lists.,

25 Orwell, George All animals are equal, but some animals are more equal than others., 125 Press, W. H. A working, though imprecise, definition of randomness, 494 Storm, Theodor Von Katzen, 211 Weizenbaum, Joseph It is said that to explain is to explain away.,

26 Scheme-Sprachelemente :initarg, 469 :initializer, 470 :initvalue, 469 length acc, 224 string->symbol, 74 symbol->string, 74 add, 205 always, 284 amb, 335 amb-assert, 336 and, 45 apply, 240 begin, 169 big-bang, 291 call-next-method, 484 case, 79 change-class, 527 check-error, 201, 718 check-expect, 200, 201, 718 choice-index, 286 clas-cpl, 479 class-of, 468 CLOS call-next-method, 484 defclass, 460 defgeneric, 464 defmethod, 464 tell, 533 compose, 280 cond, 62 conjoin, 284 count-change, 311 create-window, 285 current-seconds, 297 date, 297 defclass, 461 defclass*, 461 defgeneric, 464 defgeneric*, 464 define, 49, 50 defmethod, 464 delay, 621 dialog-tool, 380 disjoin, 284 dolist, 611 dotimes, 611 draw-message, 286 else, 63 empty-stream?, 622 enqueue, 466 eqv?, 74 even?, 209 filter, 244 find-all, 411 find-all-not, 411 findall, 661 force, 621 general-backtracking, 323 generic-arity, 468 generic-methods, 468 graph-fun, 235 head-stream, 622 hide-window, 285 if, initialize, 501 iterate,

27 lambda, 55 let, 64, 65, 67 letrec, 249 make, 469 make-button, 286 make-choice, 286 max, 45, 240 memo, 632 mod, 217 more-specific?, 468 my-length, 222 my-reverse, 228 mymap, 206 negate, 411 newton, 271 odd?, 209 on-key-event, 291 on-redraw, 291 on-tick-event, 291 or, 45 power, 219 push, 466 quasiquote splice, 610 queue, 459 quote, 75 reduce, 246 reduce-right, 248 reverse append, 230 reverse-akk, 232 round, 237 rule-based-translator, 378 set, 166 setf, 506 show-window, 285 sim-actor, 499 sin, 45 special form define, 50 special form operator case, 79 cond, 62 else, 63 define, 49 if, lambda, 55 let, 64, 65 unless, 62 when, 62 splice quasiquote, 610 sqrt, 43, 45 stop-when, 292 stream-ref, 623 STUDENT, 382 student, 393 subclass?, 468 subs, 306, 307 symbol?, 74 tail-stream, 622 teachpack graphing.ss, 235 text-contents, 286 truncate, 237 undefined, 170 unless, 62 until, 611 untilm, 251 void, 171 void?, 171 when, 62 while, 610,

28 722

29 B Kurzreferenz: Scheme B.1 Funktionslexikon Verknüpfung von Funktionen (curry f arg1... argn) : Partielle Anwendung von f auf arg1... argn von links nach rechts (rcurry f argm... argn) : Partielle Anwendung von f, Bindung der Argumente von rechts nach links (compose f1... fn) : Funktionskomposition, Hintereinanderausführung (f1 (... (fn x))) (conjoin p1?... pn?) : Konjunktion von Prädikaten (disjoin p1?... pn?) : Disjunktion von Prädikaten (always x) : Die konstante Funktion, deren Wert unabhängig von den Argumenten x ist Idiome der funktionalen Programmierung (apply f xs) : Anwendung einer Funktion f auf eine Liste von Argumenten xs (map f xs1... xsn) : Abbilden einer oder mehrerer Listen auf die Liste der Bilder der Elemente. Die Stelligkeit der Funktion f muß mit der Anzahl der angegebenen Listen xs1... xsn usw. übereinstimmen. (filter p? xs) : Die Liste der Elemente von xs, die p? erfüllen (reduce f xs seed) : Paarweise Verknüpfung der Elemente von xs mit f, Startwert seed, (f x1 (f x2 (... (f xn seed)))) (iterate f end? start) : Die Liste der Funktionsanwendungen, bis end? erfüllt ist, (start (f start) (f (f start))...) (untilm f end? start) : Der erste Wert der Folge start, (f start), (f (f start)),... erfüllt der end? (some p? xs) : Finde das erste Element von xs, das das Prädikat p? erfüllt, ansonsten gebe #f zurück. (every p? xs) : wahr, wenn alle Elemente von xs das Prädikat p? erfüllen. (assoc key alist) : Suche in der Assoziationsliste alist das erste Paar, daß das als Kopf den Schlüssel key enthält. (rassoc key alist) : Suche in723 der Assoziationsliste alist das erste Paar, daß das als Rest den Schlüssel key enthält.

30 B.2 CLOS Klassen ( defclass <Name der Klasse> ({ <Oberklassen> }) {( <Slot> {<Slot keys> })} {<Class keys>} ) Optionen für die Attribute (slots): :initarg keyword: <key> Schlüsselwort für den Konstruktor :initializer <func> Initialisierungsfunktion :initvalue <value> Defaultwert :reader <name> Akzessorfunktion zum Lesen des Wertes :writer <name> Akzessorfunktion zum Schreiben des Wertes :accessor <name> Akzessorfunktion zum Lesen und Schreiben des Wertes :accessor <name> Akzessorfunktion zum Lesen und Schreiben des Wertes :type <type> Typdefinition für die Klasse des slots ( defgeneric <name>( { ( <arg> <class> )} {<arg> }) {:combination <combination>} { :documentation <string> } ) ( defmethod <name> [ < q u a l i f i e r > ] ( { ( <arg> <class> )} {<arg> }) { :documentation <string> } ) Ergänzungsmethoden < q u a l i f i e r > : : = : a f t e r :before :around Methodenkombinationen generic + combination g e n e r i c l i s t c o m b i n a t i o n generic min combination generic max combination generic append combination 724

31 generic append! combination generic begin combination generic and combination generic or combination B.3 Prolog-in-Scheme-Lexikon Variable:?X : Die Namen von Variablen beginnen mit einem Fragezeichen. Anonyme Variable:? : Ein Fragezeichen bezeichnet eine anonyme Variable, die in Ausgaben unterdrückt wird. Regeln: Klauseln mit Prämissen (Zielen) : <Klausel Kopf> : <Ziel 1>... <Ziel n> Negation: not : Der not-oprator negiert eine Klausel : (not <Klausel>) Ungleichheit:!= : Das!=-Prädikat ist wahr, wenn zwei Strukturen oder Variablen nicht unifizieren : (! = <struktur1> <struktur2> ) Das assert-macro: : Trage eine Klausel in die Datenbasis ein. (< <Klausel> ) Das query-macro:?- : Anfrage, durch welche Variablenbindungen die Konjunktion der Ziele in der Anfrage erfüllt werden kann. (? <Ziel 1>... <Ziel n>) findall: findall sammelt alle Resultate des Prädikatsaufrufs <Ziel> in einer Liste <Liste> als instanziierte Varianten des Ausdrucks <Term>. ( f i n d a l l <Term> <Ziel> <Liste> ) count: count zählt die Resultate des Prädikatsaufrufs <Ziel> und bindet die Anzahl an die Variable <Var>. ( count <Var> <Ziel> ) 725

32 Funktionale Auswertung: is: Das is-prädikat bindet den Wert eines funktionalen Ausdrucks an eine Variable. Alle Variablen des Ausdrucks müssen vorher an Werte gebunden sein. ( i s <Var> <Ausdruck> ) Funktionale Auswertung: test: Das test-prädikat evaluiert einen funktionalen Ausdruck. Das Prädikat ist erfüllt, wenn der Ausdruck wahr ist. Alle Variablen des Ausdrucks müssen vorher an Werte gebunden sein. ( t e s t <Ausdruck> ) 726

33 B.4 Unterschiede zwischen den Schemedialekten, DrScheme, Version Zahl der Operanden Lehresprachen: Fortgeschritten Für +,, and, or sind mindestens zwei Operanden notwendig. Sprache: F o r t g e s c h r i t t e n ; > (+ 1) procedure + : expects at l e a s t 2 arguments, given 1 : 1 > ( and #t ) and: expected at l e a s t two expressions a f t e r and... Kombo, R5RS, Module (#lang scheme): Für +,, and, or ist die Operandenzahl beliebig. Sprache: F o r t g e s c h r i t t e n ; > (+ ) 0 > (+ 1) 1 > ( ) 4 > ( and ) #t > ( and #t ) #t Lehresprachen: Fortgeschritten eval ist undefiniert. eval Sprache: F o r t g e s c h r i t t e n ; > eval reference to an i d e n t i f i e r before i t s d e f i n i t i o n : eval > ( eval 1) reference to an i d e n t i f i e r before i t s d e f i n i t i o n : eval Kombo, R5RS, Module (#lang scheme): eval ist eine Standardfunktion. Sprache: F o r t g e s c h r i t t e n ; Sprache: Kombo ; > ( eval ( cons 1 2 ) ) (1. 2) > eval # <procedure:eval> 727

Programmierparadigmen

Programmierparadigmen Programmierparadigmen D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2011, 20. Juni 2011, c 2011 D.Rösner D. Rösner PGP 2011...

Mehr

Gliederung. Programmierparadigmen. Sprachmittel in SCHEME. Objekte: Motivation. Objekte in Scheme

Gliederung. Programmierparadigmen. Sprachmittel in SCHEME. Objekte: Motivation. Objekte in Scheme Gliederung Programmierparadigmen D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Einführung Sprachmittel Sommer 2011, 20. Juni 2011,

Mehr

Funktionale Programmierung (in Clojure)

Funktionale Programmierung (in Clojure) Funktionale Programmierung (in Clojure) Einführung Burkhardt Renz Fachbereich MNI Technische Hochschule Mittelhessen Wintersemester 2014/15 Übersicht Paradigmen von Programmiersprachen Paradigmen von Programmiersprachen

Mehr

Probe-. Klausur zu Softwareentwicklung III: Funktionale Programmierung WS 2009/2010 Leonie Dreschler-Fischer

Probe-. Klausur zu Softwareentwicklung III: Funktionale Programmierung WS 2009/2010 Leonie Dreschler-Fischer Probe-. Klausur zu Softwareentwicklung III: Funktionale Programmierung WS 2009/2010 Leonie Dreschler-Fischer Note: und Begründung: Hamburg, Unterschrift (Prüferin) Rechtsmittelbelehrung: Gegen die Bewertung

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

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

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

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 in das Programmieren Prolog Sommersemester 2006. Teil 2: Arithmetik. Version 1.0

Einführung in das Programmieren Prolog Sommersemester 2006. Teil 2: Arithmetik. Version 1.0 Einführung in das Programmieren Prolog Sommersemester 2006 Teil 2: Arithmetik Version 1.0 Gliederung der LV Teil 1: Ein motivierendes Beispiel Teil 2: Einführung und Grundkonzepte Syntax, Regeln, Unifikation,

Mehr

Was ist Logische Programmierung?

Was ist Logische Programmierung? Was ist Logische Programmierung? Die Bedeutung eines Computer-Programms kann durch Logik erklärt werden. Die Idee der logischen Programmierung besteht darin, die Logik eines Programms selber als Programm

Mehr

Methoden zur Interpretation LISPähnlicher. Programmiersprachen. Seminarvortrag / 53 FH AACHEN FACHBEREICH 9 TOBIAS STUMM MATR.-NR.

Methoden zur Interpretation LISPähnlicher. Programmiersprachen. Seminarvortrag / 53 FH AACHEN FACHBEREICH 9 TOBIAS STUMM MATR.-NR. Methoden zur Interpretation LISPähnlicher Programmiersprachen Seminarvortrag 20.01.2017 FACHBEREICH 9 TOBIAS STUMM MATR.-NR. 4012917 1 Inhalt Motivation Lisp > Definition > Scheme Interpreter > Definition

Mehr

Programmieren Lernen mit BYOB. Gerald Futschek 5. November 2012

Programmieren Lernen mit BYOB. Gerald Futschek 5. November 2012 Programmieren Lernen mit BYOB Informatiktag 2012 Gerald Futschek 5. November 2012 Erste Programmier Schritte in der Schule Sehr viele verschiedene Dinge zu lernen: Syntax und Semantik der Befehle, Algorithmen,

Mehr

Funktionale Programmierung

Funktionale Programmierung FP-1.0 Funktionale Programmierung Prof. Dr. Uwe Kastens SS 2013 Vorlesung Funktionale Programmierung SS 2013 / Folie 100 Begrüßung Functional Programming is Fun FP-1.1 Fun ctional Programming is Fun ctional

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen Grundlagen der Programmierung Prof. H. Mössenböck 3. Verzweigungen If-Anweisung n > 0? j n if (n > 0) x = x / n; ohne else-zweig x x / n j max x x > y? n max y if (x > y) max = x; else max = y; mit else-zweig

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

Revised Report on the Algorithmic Language SCHEME

Revised Report on the Algorithmic Language SCHEME Revised Report on the Algorithmic Language SCHEME Entwickler Guy Lewis Steele Jr. Gerald J. Sussman 1975 MIT Spezifikationen IEEE Standard RnRS (R5RS) LISP Scheme Common Lisp Emacs Lisp Mac Lisp InterLisp

Mehr

Fragen. f [ ] = [ ] f (x : y : ys) = x y : f ys f (x : xs) = f (x : x : xs) Wozu evaluiert f [1, 2, 3] (Abkürzung für f (1 : 2 : 3 : [ ]))?

Fragen. f [ ] = [ ] f (x : y : ys) = x y : f ys f (x : xs) = f (x : x : xs) Wozu evaluiert f [1, 2, 3] (Abkürzung für f (1 : 2 : 3 : [ ]))? Fragen f [ ] = [ ] f (x : y : ys) = x y : f ys f (x : xs) = f (x : x : xs) Wozu evaluiert f [1, 2, 3] (Abkürzung für f (1 : 2 : 3 : [ ]))? Wozu evaluiert [f [ ], f [ ]]? Weiteres Beispiel: f [ ] y = [

Mehr

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi 1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi 1 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

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

26 Hierarchisch strukturierte Daten

26 Hierarchisch strukturierte Daten Algorithmik II Peter Wilke Sommersemester 2005 Teil III Funktionale Programmierung 26 Hierarchisch strukturierte Daten Peter Wilke Algorithmik II Sommersemester 2005 1 Peter Wilke Algorithmik II Sommersemester

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

IT-Basics 2. DI Gerhard Fließ

IT-Basics 2. DI Gerhard Fließ IT-Basics 2 DI Gerhard Fließ Wer bin ich? DI Gerhard Fließ Telematik Studium an der TU Graz Softwareentwickler XiTrust www.xitrust.com www.tugraz.at Worum geht es? Objektorientierte Programmierung Konzepte

Mehr

Informatikgrundlagen (WS 2015/2016)

Informatikgrundlagen (WS 2015/2016) Informatikgrundlagen (WS 2015/2016) Klaus Berberich (klaus.berberich@htwsaar.de) Wolfgang Braun (wolfgang.braun@htwsaar.de) 0. Organisatorisches Dozenten Klaus Berberich (klaus.berberich@htwsaar.de) Sprechstunde

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

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

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

Mehr

Proseminar "Grundlagen höherer Programmiersprachen" Wintersemester 2002/03 (Kröger, Rauschmayer) Logikprogrammierung

Proseminar Grundlagen höherer Programmiersprachen Wintersemester 2002/03 (Kröger, Rauschmayer) Logikprogrammierung Proseminar "Grundlagen höherer Programmiersprachen" Wintersemester 2002/03 (Kröger, Rauschmayer) Logikprogrammierung Verfasser: Bettina Hikele 3. Semester Informatik EMail: bettyx@arcor.de Einführung in

Mehr

Was ist ein Compiler?

Was ist ein Compiler? Was ist ein Compiler? Was ist ein Compiler und worum geht es? Wie ist ein Compiler aufgebaut? Warum beschäftigen wir uns mit Compilerbau? Wie ist die Veranstaltung organisiert? Was interessiert Sie besonders?

Mehr

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell): Was bisher geschah deklarative Programmierung funktional: Programm: Menge von Termgleichungen, Term Auswertung: Pattern matsching, Termumformungen logisch: Programm: Menge von Regeln (Horn-Formeln), Formel

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

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

Funktionale Programmierung

Funktionale Programmierung Funktionale Programmierung Jörg Kreiker Uni Kassel und SMA Solar Technology AG Wintersemester 2011/2012 2 Teil II Typen mit Werten und Ausdruck, sogar listenweise 3 Haskell Programme Programm Module ein

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Einführung in die Programmiertechnik

Einführung in die Programmiertechnik Einführung in die Programmiertechnik Funktionale Programmierung: Scheme Grundlagen funktionaler Programmierung Idee: Zu lösendes Problem wird als mathematische Funktion formuliert Beispiel Rechtschreibprüfung:

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

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

E-PRIME TUTORIUM Die Programmiersprache BASIC

E-PRIME TUTORIUM Die Programmiersprache BASIC E-PRIME TUTORIUM Die Programmiersprache BASIC BASIC Beginner s All-purpose Symbolic Instruction Code symbolische Allzweck-Programmiersprache für Anfänger Design-Ziel klar: Eine einfache, für Anfänger geeignete

Mehr

The B Method. B ist eine Methode zur Spezifikation zum Entwurf zur Implementierung von Software Systemen. Bücher zur B-Methode

The B Method. B ist eine Methode zur Spezifikation zum Entwurf zur Implementierung von Software Systemen. Bücher zur B-Methode The B Method B ist eine Methode zur Spezifikation zum Entwurf zur Implementierung von Software Systemen. Bücher zur B-Methode P. Schmitt: Formal Specification and Verification of Software p.1 The B Method

Mehr

Praktische Informatik 3: Einführung in die Funktionale Programmierung Vorlesung vom 10.11.2010: Rekursive Datentypen

Praktische Informatik 3: Einführung in die Funktionale Programmierung Vorlesung vom 10.11.2010: Rekursive Datentypen Rev. 1152 1 [23] Praktische Informatik 3: Einführung in die Funktionale Programmierung Vorlesung vom 10.11.2010: Rekursive Datentypen Christoph Lüth & Dennis Walter Universität Bremen Wintersemester 2010/11

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

LISP. Eine Einführung

LISP. Eine Einführung LISP Eine Einführung 5. OBERFLÄCHLICHES Übersicht 2 5.1 Verschiedenes zum letzten Aufgabenblatt 5.2 Geschwister und Komponenten oder wie finde ich was 5.3 on-click-methoden und on-change-methoden 5.1 Musterlösung

Mehr

1 Inhalt der Vorlesung B-PS1

1 Inhalt der Vorlesung B-PS1 1 Inhalt der Vorlesung B-PS1 1.1 Tag 1 1.1.1 Vormittag Geschichte der Programmiersprachen Wie viele Programmiersprachen gibt es? https://en.wikipedia.org/wiki/list_of_programming_languages Esoterische

Mehr

Mai 2006. Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln

Mai 2006. Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln Hauptseminar: Nichtrelationale Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln Mai 2006 Was ist eine Datenbank? Erweiterung relationaler um eine Deduktionskomponente Diese

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

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

https://portal.microsoftonline.com

https://portal.microsoftonline.com Sie haben nun Office über Office365 bezogen. Ihr Account wird in Kürze in dem Office365 Portal angelegt. Anschließend können Sie, wie unten beschrieben, die Software beziehen. Congratulations, you have

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

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016 to to May 2016 to What is Programming? All computers are stupid. All computers are deterministic. You have to tell the computer what to do. You can tell the computer in any (programming) language) you

Mehr

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind

Mehr

Formale Spezialisierungstechniken. am Beispiel des binären Baums. Hybride Programmiersprachen Daniel Krompass Berlin, 2009

Formale Spezialisierungstechniken. am Beispiel des binären Baums. Hybride Programmiersprachen Daniel Krompass Berlin, 2009 Formale Spezialisierungstechniken am Beispiel des binären Baums. Hybride Programmiersprachen Daniel Krompass Berlin, 2009 Spezialisierungsarten (Typbeziehungen erster Art) X stellt Methoden und Eigenschaften

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

Grammatiken. Einführung

Grammatiken. Einführung Einführung Beispiel: Die arithmetischen Ausdrücke über der Variablen a und den Operationen + und können wie folgt definiert werden: a, a + a und a a sind arithmetische Ausdrücke Wenn A und B arithmetische

Mehr

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0 Objects First With Java A Practical Introduction Using BlueJ Mehr über Vererbung Exploring polymorphism 1.0 Zentrale Konzepte dieses Kapitels Methoden-Polymorphie statischer und dynamischer Typ Überschreiben

Mehr

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4. Agenda für heute, 4. Mai, 2006 Programmierparadigmen Imperative Programmiersprachen In Prozeduren zusammengefasste, sequentiell ausgeführte Anweisungen Die Prozeduren werden ausgeführt, wenn sie als Teil

Mehr

Logische Programmierung

Logische Programmierung Logische Programmierung B-82 Deklaratives Programmieren in Prädikatenlogik: Problem beschreiben statt Algorithmus implementieren (idealisiert). Grundlagen: Relationen bzw. Prädikate (statt Funktionen);

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

C/C++ Programmierung

C/C++ Programmierung 1 C/C++ Programmierung Grundlagen: Anweisungen Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Anweisungen (Statements)

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen. 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007 Fachhochschule Bonn-Rhein-Sieg University of Applied Sciences Fachbereich Informatik Prof. Dr. Peter Becker Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Mehr

vii 4 t.scheme: Funktionale Programmierung Funktionen als Daten erster Klasse

vii 4 t.scheme: Funktionale Programmierung Funktionen als Daten erster Klasse Inhaltsverzeichnis Einleitung 1 Kaffee oder Tee?................................ 1 Die t.sprachen.................................. 2 Die Java-Implementierung........................... 5 Ockhams Rasiermesser.............................

Mehr

Zusammenfassung. Satz. 1 Seien F, G Boolesche Ausdrücke (in den Variablen x 1,..., x n ) 2 Seien f : B n B, g : B n B ihre Booleschen Funktionen

Zusammenfassung. Satz. 1 Seien F, G Boolesche Ausdrücke (in den Variablen x 1,..., x n ) 2 Seien f : B n B, g : B n B ihre Booleschen Funktionen Zusammenfassung Zusammenfassung der letzten LV Einführung in die Theoretische Informatik Woche 6 Harald Zankl Institut für Informatik @ UIBK Wintersemester 2014/2015 Satz 1 Seien F, G Boolesche Ausdrücke

Mehr

Programmieren in COMMON LISP

Programmieren in COMMON LISP Programmieren in COMMON LISP von Prof. Dr. Otto Mayer Universität Kaiserslautern Wissenschaftsverlag Mannheim/Wien/Zürich INHALTSVERZEICHNIS 0 EINLEITUNG 0.1 Entwicklung und Bedeutung von LISP 0.2 Ziele

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

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

WAS IST DER KOMPARATIV: = The comparative

WAS IST DER KOMPARATIV: = The comparative DER KOMPATATIV VON ADJEKTIVEN UND ADVERBEN WAS IST DER KOMPARATIV: = The comparative Der Komparativ vergleicht zwei Sachen (durch ein Adjektiv oder ein Adverb) The comparative is exactly what it sounds

Mehr

Pragmatik von Programmiersprachen

Pragmatik von Programmiersprachen Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014 Szenario: IT Dienstleister Unternehmen: Produkte: Kunden: IT Dienstleistung Beratung und Software

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

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns Daniel Warneke warneke@upb.de 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des

Mehr

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland. 1 Programmierung 2 Übersetzer: Code-Erzeugung Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 Bytecodes Der Java Übersetzer erzeugt keine Maschinensprache

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Name, Vorname Matrikelnummer Probeklausur zur Vorlesung Einführung in die Programmierung WS 2008/09 Dauer: 2 Stunden Hinweise: Schreiben Sie Ihren Namen und Ihre Matrikelnummer auf dieses Deckblatt und

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

Listening Comprehension: Talking about language learning

Listening Comprehension: Talking about language learning Talking about language learning Two Swiss teenagers, Ralf and Bettina, are both studying English at a language school in Bristo and are talking about language learning. Remember that Swiss German is quite

Mehr

Programmieren Tutorium

Programmieren Tutorium Programmieren Tutorium Tom Schildhauer Tutorium 12 Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by Tom Schildhauer,

Mehr

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Datentypen. Agenda für heute, 4. März, 2010. Pascal ist eine streng typisierte Programmiersprache

Datentypen. Agenda für heute, 4. März, 2010. Pascal ist eine streng typisierte Programmiersprache Agenda für heute, 4. März, 2010 Zusammengesetzte if-then-else-anweisungen Datentypen Pascal ist eine streng typisierte Programmiersprache Für jeden Speicherplatz muss ein Datentyp t (Datenformat) t) definiert

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

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

Contents. Interaction Flow / Process Flow. Structure Maps. Reference Zone. Wireframes / Mock-Up

Contents. Interaction Flow / Process Flow. Structure Maps. Reference Zone. Wireframes / Mock-Up Contents 5d 5e 5f 5g Interaction Flow / Process Flow Structure Maps Reference Zone Wireframes / Mock-Up 5d Interaction Flow (Frontend, sichtbar) / Process Flow (Backend, nicht sichtbar) Flow Chart: A Flowchart

Mehr

Algorithmen & Datenstrukturen 1. Klausur

Algorithmen & Datenstrukturen 1. Klausur Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

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

Kapitel 11: Wiederholung und Zusammenfassung

Kapitel 11: Wiederholung und Zusammenfassung Wiederholung und Zusammenfassung 1: Begriff und Grundprobleme der Informatik Begriff Informatik Computer als universelle Rechenmaschine Grenzen der Berechenbarkeit Digitalisierung Problem der Komplexität

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Ausarbeitung des Interpreter Referats

Ausarbeitung des Interpreter Referats Ausarbeitung des Interpreter Referats Gliederung 1. Programmiersprache 1.2. Syntax 1.2.1. Konkrete Syntax 1.2.2. Abstrakter Syntax Baum (Abstrakte Syntax) 2. Parser 2.1. Syntaktische Struktur einer Sprache

Mehr

Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten.

Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten. 4.5.5 Rekursive Typen Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten. datatype IntList = Nil Cons o f ( i n t IntList ) ; Damit

Mehr

Die Kunst des Programmierens...

Die Kunst des Programmierens... Die Kunst des Programmierens... Wo die Kosten anfallen Der Mythos Wiederverwendung: Design für Wartung als eigentliches Ziel, Objekt Spektrum 4/2009 software maintainers sped 45 percent of their time seeking

Mehr

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München Kapitel 4 Dynamisches SQL Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München 2008 Thomas Bernecker, Tobias Emrich unter Verwendung der Folien des Datenbankpraktikums aus dem Wintersemester

Mehr

Robot Karol für Delphi

Robot Karol für Delphi Robot Karol für Delphi Reinhard Nitzsche, OSZ Handel I Version 0.1 vom 24. Januar 2003 Zusammenfassung Nach der Einführung in die (variablenfreie) Programmierung mit Robot Karol von Freiberger und Krško

Mehr

Mathematische Grundlagen der Informatik 2

Mathematische Grundlagen der Informatik 2 Zusammenfassung Math2I Mathematische Grundlagen der Informatik 2 Emanuel Duss emanuel.duss@gmail.com 12. April 2013 1 Zusammenfassung Math2I Mathematische Grundlagen der Informatik 2 Dieses Dokument basiert

Mehr

1. Übung zu "Numerik partieller Differentialgleichungen"

1. Übung zu Numerik partieller Differentialgleichungen 1. Übung zu "Numerik partieller Differentialgleichungen" Simon Gawlok, Eva Treiber Engineering Mathematics and Computing Lab 22. Oktober 2014 1 / 15 1 Organisatorisches 2 3 4 2 / 15 Organisatorisches Ort:

Mehr