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

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

1. Klausur zu Softwareentwicklung III: Funktionale Programmierung WS 2009/2010 Leonie Dreschler-Fischer 1. 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

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

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

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

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

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

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

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

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

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

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 Funktionales Programmieren. Stephan Kreutzer

Proseminar Funktionales Programmieren. Stephan Kreutzer Proseminar Funktionales Programmieren Die Programmiersprache LISP Stephan Kreutzer Teil I: Funktionales Programmieren Imperative Sprachen Imperative Sprachen: Befehlsorientiert Imperative Sprachen orientieren

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

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

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

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

Grundprinzipien der funktionalen Programmierung

Grundprinzipien der funktionalen Programmierung Grundprinzipien der funktionalen Programmierung Funktionen haben keine Seiteneffekte Eine Funktion berechnet einen Ausgabewert der nur von den Eingabewerten abhängt: 12 inputs + output 46 34 2 Nicht nur

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

Informatik I. Grundlagen der systematischen Programmierung. Peter Thiemann WS 2008/09. Universität Freiburg, Germany

Informatik I. Grundlagen der systematischen Programmierung. Peter Thiemann WS 2008/09. Universität Freiburg, Germany Informatik I Grundlagen der systematischen Programmierung Peter Thiemann Universität Freiburg, Germany WS 2008/09 Organisatorisches Vorlesung Di und Do, 11-13 Uhr, HS 101-00-036 Dozent Prof. Dr. Peter

Mehr

Übung - Modellierung & Programmierung II

Übung - Modellierung & Programmierung II 1 Übung - Modellierung & Programmierung II Mathias Goldau, Stefan Koch, Wieland Reich, Dirk Zeckzer, Stefan Philips, Sebastian Volke math@informatik.uni-leipzig.de stefan.koch@informatik.uni-leipzig.de

Mehr

Dynamische Programmiersprachen. David Schneider david.schneider@hhu.de STUPS - 25.12.02.50

Dynamische Programmiersprachen. David Schneider david.schneider@hhu.de STUPS - 25.12.02.50 Dynamische Programmiersprachen David Schneider david.schneider@hhu.de STUPS - 25.12.02.50 Organisatorisches Aufbau: Vorlesung 2 SWS Übung Kurzreferat Projekt Prüfung Übung wöchentliches Aufgabenblatt in

Mehr

Die Programmiersprache Scheme... DrRacket: Die Programmierumgebung http://www.racket-lang.org/ Sprache: Semantik. Sprache: Syntax

Die Programmiersprache Scheme... DrRacket: Die Programmierumgebung http://www.racket-lang.org/ Sprache: Semantik. Sprache: Syntax Informatik I 21. Oktober 2010 2. Informatik I 2. Jan-Georg Smaus 2.1 2.2 Albert-Ludwigs-Universität Freiburg 21. Oktober 2010 Jan-Georg Smaus (Universität Freiburg) Informatik I 21. Oktober 2010 1 / 40

Mehr

Funktionale Konzepte in objektorientierten Sprachen LAMBDAS / CLOSURES

Funktionale Konzepte in objektorientierten Sprachen LAMBDAS / CLOSURES Funktionale Konzepte in objektorientierten Sprachen LAMBDAS / CLOSURES Motivation Überblick Was macht Funktionale Programmierung aus? Sind Funktionale Programmierung und Objektorientierte Programmierung

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

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

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

Hansa-Gymnasium Scheme-Einführung Uwe Debacher 2007-1 -

Hansa-Gymnasium Scheme-Einführung Uwe Debacher 2007-1 - - 1 - Alle heute gebräuchlichen Computer-Sprachen fallen unter den Oberbegriff problemorientierte Sprachen, womit eine weitgehende Unabhängigkeit gekennzeichnet wird von der Maschine auf der die Software

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java Einführung in die Programmierung mit Martin Wirsing 2 Ziele Begriffsbildungen: Informatik, Algorithmus, Programm... Warum als Programmiersprache verwenden? Ein einfaches -Programm erstellen, übersetzen

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

Programmierung in Python

Programmierung in Python Programmierung in Python imperativ, objekt-orientiert dynamische Typisierung rapid prototyping Script-Sprache Funktionales und rekursives Programmieren P raktische Informatik 1, W S 2004/05, F olien P

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

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

Entwicklung eines korrekten Übersetzers

Entwicklung eines korrekten Übersetzers Entwicklung eines korrekten Übersetzers für eine funktionale Programmiersprache im Theorembeweiser Coq Thomas Strathmann 14.01.2011 Gliederung 1 Einleitung

Mehr

Informatik für Ingenieure

Informatik für Ingenieure Informatik für Ingenieure Eine Einführung Von Prof. Dr. rer. nat. Wolfgang Merzenich Universität-Gesamthochschule Siegen und Prof. Dr.-Ing. Hans Christoph Zeidler Universität der Bundeswehr Hamburg B.

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 21. Oktober 2015 Automat versus Computer Ein Automat ist eine Maschine,

Mehr

Lernumgebungen fürs Programmieren: Karas... und Turtles

Lernumgebungen fürs Programmieren: Karas... und Turtles Lernumgebungen fürs Programmieren: Karas und die Turtles Raimond Reichert raimond.reichert@acm.org beta Eine Kernidee der Informatik: Computer formales System Intuition Formale Beschreibung Das Ziel: Algorithmisches

Mehr

Organisatorisches/Einstieg

Organisatorisches/Einstieg 1/31 Organisatorisches/Einstieg Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/31 Outline 1 Motivation Theoretische Grundlagen

Mehr

4.Grundsätzliche Programmentwicklungsmethoden

4.Grundsätzliche Programmentwicklungsmethoden 4.Grundsätzliche Programmentwicklungsmethoden 1.1 Grundlage strukturierter und objektorientierter Programmierung Begriff Software Engineering - umfaßt den gezielten Einsatz von Beschreibungsmitteln, Methoden

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

Inhaltsverzeichnis. Vorwort...XIII. Aufbau des Buches...

Inhaltsverzeichnis. Vorwort...XIII. Aufbau des Buches... Inhaltsverzeichnis Vorwort...XIII Aufbau des Buches............................................... XV 1 Von der Idee zur Software..................................... 1 1.1 Beispielanwendung... 1 1.2 Schritte

Mehr

Verträge für die funktionale Programmierung Design und Implementierung

Verträge für die funktionale Programmierung Design und Implementierung 1 Verträge für die funktionale Programmierung Design und Implementierung RALF HINZE Institut für Informatik III, Universität Bonn Römerstraße 164, 53117 Bonn, Germany Email: ralf@informatik.uni-bonn.de

Mehr

Patrick Simianer Visualisierung regulärer Ausdrücke

Patrick Simianer Visualisierung regulärer Ausdrücke Patrick Simianer Visualisierung regulärer Ausdrücke Patrick Simianer 2010-06-28 Endliche Automaten HS bei Dr. Karin Haenelt Universitiät Heidelberg im Sommersemester 2010 1 Einleitung Überlegungen Protoypisches

Mehr

Interpreter - Gliederung

Interpreter - Gliederung Institut für Informatik Ludwig-Maximilian Universität Interpreter - Gliederung Programmiersprache Syntax Konkrete Syntax Abstrakter Syntax Baum (Abstrakte Syntax) Parser Syntaktische Struktur einer Sprache

Mehr

1 Syntax von Programmiersprachen

1 Syntax von Programmiersprachen 1 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ): formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmier-Sprache Festlegung, wie Programme

Mehr

Übersicht. Einführung in die Funktionale Programmierung: Einleitung & Motivation. Klassifizierung von Programmiersprachen (1)

Übersicht. Einführung in die Funktionale Programmierung: Einleitung & Motivation. Klassifizierung von Programmiersprachen (1) Motivation Funktionale Programmiersprachen Haskell Übersicht Einführung in die Funktionale Programmierung: Einleitung & Motivation Prof Dr. Manfred Schmidt-Schauß 1 Motivation Übersicht Programmierparadigmen

Mehr

1. Einführung und Unit Testing Programmieren / Algorithmen und Datenstrukturen 2

1. Einführung und Unit Testing Programmieren / Algorithmen und Datenstrukturen 2 1. Einführung und Unit Testing Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013 1 Agenda Organisation Unit Testing

Mehr

Funktionale Programmierung mit C++

Funktionale Programmierung mit C++ Funktionale Programmierung mit C++ Überblick Programmierung in funktionaler Art Warum funktionale Programmierung? Was ist funktionale Programmierung? Charakteristiken funktionaler Programmierung Was fehlt

Mehr

Einführung in PROLOG. Christian Stocker

Einführung in PROLOG. Christian Stocker Einführung in PROLOG Christian Stocker Inhalt Was ist PROLOG? Der PROLOG- Interpreter Welcher Interpreter? SWI-Prolog Syntax Einführung Fakten, Regeln, Anfragen Operatoren Rekursion Listen Cut Funktionsweise

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 1. Einführung und Grundbegriffe

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 1. Einführung und Grundbegriffe 1 Kapitel 1 2 Ziele Begriffsbildungen: Informatik, Algorithmus, Programm, Compiler, Einordnung von Java Ein einfaches Java-Programm erstellen, übersetzen und ausführen Java-Programme dokumentieren 3 Informatik

Mehr

Der λ-kalkül. Frank Huch. Sommersemester 2015

Der λ-kalkül. Frank Huch. Sommersemester 2015 Der λ-kalkül Frank Huch Sommersemester 2015 In diesem Skript werden die Grundlagen der Funktionalen Programmierung, insbesondere der λ-kalkül eingeführt. Der hier präsentierte Stoff stellt einen teil der

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

4 Ausklang. ALP 2, Hannes Federrath, Sommersemester 2001

4 Ausklang. ALP 2, Hannes Federrath, Sommersemester 2001 ALP 2, Hannes Federrath, Sommersemester 2001 4 Ausklang Inhalt des Kapitels im Überblick: In diesem Kapitel sollen zum Ausklang der Vorlesung folgende Schwerpunkte behandelt werden: Software-Entwicklungsprozess

Mehr

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann 1 Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann

Mehr

Algorithms for graph visualization

Algorithms for graph visualization Algorithms for graph visualization Project - Orthogonal Grid Layout with Small Area W INTER SEMESTER 2013/2014 Martin No llenburg KIT Universita t des Landes Baden-Wu rttemberg und nationales Forschungszentrum

Mehr

There are 10 weeks this summer vacation the weeks beginning: June 23, June 30, July 7, July 14, July 21, Jul 28, Aug 4, Aug 11, Aug 18, Aug 25

There are 10 weeks this summer vacation the weeks beginning: June 23, June 30, July 7, July 14, July 21, Jul 28, Aug 4, Aug 11, Aug 18, Aug 25 Name: AP Deutsch Sommerpaket 2014 The AP German exam is designed to test your language proficiency your ability to use the German language to speak, listen, read and write. All the grammar concepts and

Mehr

Module Angewandte Informatik 1. Semester

Module Angewandte Informatik 1. Semester Module Angewandte Informatik 1. Semester Modulbezeichnung Betriebswirtschaftslehre 1 BWL1 Martin Hübner Martin Hübner, Wolfgang Gerken Deutsch Kreditpunkte 6 CP (= 180h) - Rechtliche, finanzielle und organisatorische

Mehr

Ruby. Programmieren mit Zucker. Thomas Kühn

Ruby. Programmieren mit Zucker. Thomas Kühn Ruby Programmieren mit Zucker Thomas Kühn Gliederung Geschichte Philosophie Syntax mit Zucker Sprachkonzepte Pakete und Frameworks Ausblick Beispiele Yukihiro Matz Matsumoto Geboren am 14.April 1965 Geschichte

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

Softwareschnittstellen

Softwareschnittstellen P4.1. Gliederung Rechnerpraktikum zu Kapitel 4 Softwareschnittstellen Einleitung, Component Object Model (COM) Zugriff auf Microsoft Excel Zugriff auf MATLAB Zugriff auf CATIA Folie 1 P4.2. Einleitung

Mehr

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Kontrollstrukturen, Pseudocode und Modulo-Rechnung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1

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

Extract of the Annotations used for Econ 5080 at the University of Utah, with study questions, akmk.pdf.

Extract of the Annotations used for Econ 5080 at the University of Utah, with study questions, akmk.pdf. 1 The zip archives available at http://www.econ.utah.edu/ ~ ehrbar/l2co.zip or http: //marx.econ.utah.edu/das-kapital/ec5080.zip compiled August 26, 2010 have the following content. (they differ in their

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

5 Logische Programmierung

5 Logische Programmierung 5 Logische Programmierung Logik wird als Programmiersprache benutzt Der logische Ansatz zu Programmierung ist (sowie der funktionale) deklarativ; Programme können mit Hilfe zweier abstrakten, maschinen-unabhängigen

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

Funktionale Programmierung mit Haskell

Funktionale Programmierung mit Haskell Funktionale Programmierung mit Haskell Prof. Dr. Hans J. Schneider Lehrstuhl für Programmiersprachen und Programmiermethodik Friedrich-Alexander-Universität Erlangen-Nürnberg Sommersemester 2011 I. Die

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008 PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik

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

Kapitel 3 Programmierung Lernen mit Scheme. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Kapitel 3 Programmierung Lernen mit Scheme. Xiaoyi Jiang Informatik I Grundlagen der Programmierung Kapitel 3 Programmierung Lernen mit Scheme 1 3.1 Wie lehrt man Programmierung? Klassischer Ansatz: Es wird die Syntax einer (modischen) Programmiersprache beigebracht Es wird eine komplexe, kommerzielle

Mehr

Quellen: Towards a Human Computer InteractionPerspective. Übersicht. Warum visuelle Sprachen? Begriffsdefinitionen: Hinderungsgründe bisher:

Quellen: Towards a Human Computer InteractionPerspective. Übersicht. Warum visuelle Sprachen? Begriffsdefinitionen: Hinderungsgründe bisher: Quellen: Towards a Human Computer InteractionPerspective von B.K. & B.K. LV: Visuelle Sprachen (03-763) Universität Bremen WS 2001/02 Visual Language Theory: Towards a Human- Computer Perspective; N. Hari

Mehr

Einführung in ActionScript

Einführung in ActionScript Fachbereich Mathematik und Informatik Softwareprojekt: Spieleprogrammierung Einführung in ActionScript Do, Hoang Viet(do@mi.fu-berlin.de) Freie Universität Berlin, SoSe 2012 Agenda Allgemeine Einführung

Mehr

-Which word (lines 47-52) does tell us that Renia s host brother is a pleasant person?

-Which word (lines 47-52) does tell us that Renia s host brother is a pleasant person? Reading tasks passend zu: Open World 1 Unit 4 (student s book) Through a telescope (p. 26/27): -Renia s exchange trip: richtig falsch unkar? richtig falsch unklar: Renia hat sprachliche Verständnisprobleme.

Mehr

Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm

Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm Studienanforderungen Studiengang Maschinenbau Programmieren Begleitende Übungen zu Veranstaltungen Umsetzen des Algorithmus in ein lauffähiges Programm Studiengang Bauingenieurwesen Programmieren Begleitende

Mehr

Funktionale Programmierung

Funktionale Programmierung Schleifen 1 Funktionale Programmierung Jörg Kreiker Uni Kassel und SMA Solar Technology AG Wintersemester 2011/2012 3 Teil I Jedem Anfang wohnt ein Zauber inne 4 Über mich Diplom in Informatik in Saarbrücken

Mehr

Einführung in die Theoretische Informatik

Einführung in die Theoretische Informatik Einführung in die Theoretische Informatik Woche 10 Harald Zankl Institut für Informatik @ UIBK Wintersemester 2014/2015 Zusammenfassung Zusammenfassung der letzten LV Satz Sei G = (V, Σ, R, S) eine kontextfreie

Mehr

Knasmüller.book Seite vii Mittwoch, 28. März 2001 11:11 11. vii. Inhaltsverzeichnis

Knasmüller.book Seite vii Mittwoch, 28. März 2001 11:11 11. vii. Inhaltsverzeichnis Knasmüller.book Seite vii Mittwoch, 28. März 2001 11:11 11 vii 1 Einführung 1 1.1 Motivation.................................... 1 1.2 Vorteile der neuen Techniken...................... 3 1.3 Aufbau des

Mehr

SELF-STUDY DIARY (or Lerntagebuch) GER102

SELF-STUDY DIARY (or Lerntagebuch) GER102 SELF-STUDY DIARY (or Lerntagebuch) GER102 This diary has several aims: To show evidence of your independent work by using an electronic Portfolio (i.e. the Mahara e-portfolio) To motivate you to work regularly

Mehr

Sprachen/Grammatiken eine Wiederholung

Sprachen/Grammatiken eine Wiederholung Sprachen/Grammatiken eine Wiederholung Was sind reguläre Sprachen? Eigenschaften regulärer Sprachen Sprachen Begriffe Symbol: unzerlegbare Grundzeichen Alphabet: endliche Menge von Symbolen Zeichenreihe:

Mehr

Formale Systeme. Prof. P.H. Schmitt. Winter 2007/2008. Fakultät für Informatik Universität Karlsruhe (TH) Voraussetzungen

Formale Systeme. Prof. P.H. Schmitt. Winter 2007/2008. Fakultät für Informatik Universität Karlsruhe (TH) Voraussetzungen Formale Systeme Prof. P.H. Schmitt Fakultät für Informatik Universität Karlsruhe (TH) Winter 2007/2008 Prof. P.H. Schmitt Formale Systeme Winter 2007/2008 1 / 12 Übungen und Tutorien Es gibt wöchentliche

Mehr

Programmentwicklung ohne BlueJ

Programmentwicklung ohne BlueJ Objektorientierte Programmierung in - Eine praxisnahe Einführung mit Bluej Programmentwicklung BlueJ 1.0 Ein BlueJ-Projekt Ein BlueJ-Projekt ist der Inhalt eines Verzeichnisses. das Projektname heißt wie

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

Gliederung. Programmierparadigmen. Einführung in Prolog: Einführung in Prolog: Programmieren in Prolog. Einführung Syntax Regeln Listen Relationen

Gliederung. Programmierparadigmen. Einführung in Prolog: Einführung in Prolog: Programmieren in Prolog. Einführung Syntax Regeln Listen Relationen Gliederung Programmierparadigmen Programmieren in Prolog D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Sommer 2011, 26. April

Mehr

Einführung in die Programmiertechnik

Einführung in die Programmiertechnik Einführung in die Programmiertechnik Programmiersprachen Algorithmen und Programme Computer führt Berechnungen auf deterministische Weise aus bei gleicher Eingabe und gleichem inneren Zustand erzeugt er

Mehr

Roberto lerusalimschy. Programmieren mit Lua

Roberto lerusalimschy. Programmieren mit Lua Roberto lerusalimschy Programmieren mit Lua \ Vorwort 13 1 Die Sprache 21 1 Einführung/ 23 1.1 Chunks 24 1.2 Einige lexikalische Konventionen 26 1.3 Globale Variablen 27 1.4 DerStand-alone-Interpreter

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

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

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

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B. C-Crash-Kurs Eine kurze, keinesfalls erschöpfende Einführung in die Sprache C für Studierende, die eine strukturierte imperative Programmiersprache beherrschen. Die Vorstellung erfolgt am Beispiel von

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C Marcel Arndt arndt@ins.uni-bonn.de Institut für Numerische Simulation Universität Bonn Der Anfang Ein einfaches Programm, das Hello World! ausgibt: #include

Mehr

Programmieren I + II

Programmieren I + II Programmieren I + II Werner Struckmann Institut für Programmierung und Reaktive Systeme Wintersemester 2015/2016 Sommersemester 2016 Was ist Informatik? Die Informatik ist die Wissenschaft von Aufbau,

Mehr

Geometrie und Bedeutung: Kap 5

Geometrie und Bedeutung: Kap 5 : Kap 5 21. November 2011 Übersicht Der Begriff des Vektors Ähnlichkeits Distanzfunktionen für Vektoren Skalarprodukt Eukidische Distanz im R n What are vectors I Domininic: Maryl: Dollar Po Euro Yen 6

Mehr

August Macke 1887-1914 Abschied, 1914 Museum Ludwig, Köln

August Macke 1887-1914 Abschied, 1914 Museum Ludwig, Köln August Macke 1887-1914 Abschied, 1914 Museum Ludwig, Köln Ideas for the classroom 1. Introductory activity wer?, was?, wo?, wann?, warum? 2. Look at how people say farewell in German. 3. Look at how people

Mehr

Inequality Utilitarian and Capabilities Perspectives (and what they may imply for public health)

Inequality Utilitarian and Capabilities Perspectives (and what they may imply for public health) Inequality Utilitarian and Capabilities Perspectives (and what they may imply for public health) 1 Utilitarian Perspectives on Inequality 2 Inequalities matter most in terms of their impact onthelivesthatpeopleseektoliveandthethings,

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 4 Anweisungen... 4-2 4.1 Strukturierte Programmierung... 4-2 4.1.1 Geschichte... 4-2 4.1.2 Strukturierung im Kleinen... 4-2 4.2 Einige Beispielanwendungen... 4-4 4.2.1 Addierer (do-schleife)...

Mehr

Modul 122 VBA Scribt.docx

Modul 122 VBA Scribt.docx Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval

Mehr

Kapitel 5: Applikative Programmierung

Kapitel 5: Applikative Programmierung Kapitel 5: Applikative Programmierung In der applikativen Programmierung wird ein Programm als eine mathematische Funktion von Eingabe-in Ausgabewerte betrachtet. Das Ausführen eines Programms besteht

Mehr

Standardstufe 6: Interkulturelle kommunikative Kompetenz

Standardstufe 6: Interkulturelle kommunikative Kompetenz Lernaufgabe Let s make our school nicer Your task: Let s make our school nicer Imagine the SMV wants to make our school nicer and has asked YOU for your help, because you have learnt a lot about British

Mehr

Assertions (Zusicherungen)

Assertions (Zusicherungen) April 10, 2005 Oberseminar Software-Entwicklung Inhalt 1. Einführung (Motivation, Tony Hoare, Programmverifikation) 2. Design by Contract (Idee, Eiffel) 3. Praxis: Programming by Contract for Python 4.

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr