Zuverlässige Software mit GoTo Ludwig Suski
|
|
- Sara Wolf
- vor 5 Jahren
- Abrufe
Transkript
1 Zuverlässige Software mit GoTo Ludwig Suski Zuverlässige Software mit GoTo - Ludwig Suski 1
2 Gliederung Historischer Hintergrund Dijkstra: Go To Statement Considered Harmful [1] Notwendigkeit? - GoTo-Elimination Warum GoTo in höheren Sprachen? Basis für neue Kontrollstrukturen Effizienz Abschlussbemerkungen Quellen Zuverlässige Software mit GoTo - Ludwig Suski 2
3 Historischer Hintergrund 1 Dijkstra (1968): [...] the quality of programmers is a decreasing function of the density of go to statements in the programs they produce. [1] Problem: Programmierer eine neue Spezies fehlende Erfahrung bzw. Disziplin GoTo als direktes Ausdrucksmittel sehr intuitiv exzessive Nutzung verringert Lesbarkeit Zuverlässige Software mit GoTo - Ludwig Suski 3
4 Historischer Hintergrund 2 /* find Element x in A, insert if not * present yet. Increase counter at * found index in B. A[m+1] := x; i:=1; go to test; loop: i := i + 2; test: if A[i]=x then go to found fi; if A[i+1] x then go to loop fi; i := i + 1; found: if i>m then m := i; B[i] := 1; else B[i] := B[i]+1 fi; Struktur nicht intuitiv erkennbar dennoch sehr einfaches Beispiel Bsp 1: Suchalgorithmus von Knuth ([2] S. 268) Zuverlässige Software mit GoTo - Ludwig Suski 4
5 GoTo-Elimination 1 streng mechanische Lösungen kein Problem: Befehlszähler in SW aber: kompletter Strukturverlust y a := 1 a=0 n a=1 n a=2 n a=n n y y y 1 2 (n-1) n Aus: Wolf, A Case against the GOTO [5] Zuverlässige Software mit GoTo - Ludwig Suski 5
6 GoTo-Elimination 2 weitere Methoden existieren [3] Defizite in Laufzeit, Speicherverbrauch oder Textgröße GoTos nachträglich eliminieren wenig sinnvoll GoTo-frei (strukturiert) entwerfen Zuverlässige Software mit GoTo - Ludwig Suski 6
7 Warum GoTo in höheren Sprachen? Kontrollstrukturen: individuelle Lösungen Lesbarkeit in manchen Fällen besser Effizienz: detaillierte Optimierung kritischer Schleifen Fein-Tuning Vermeidung von Rekursion Zuverlässige Software mit GoTo - Ludwig Suski 7
8 Warum GoTo? - Kontrollstrukturen 1 Programmiersprachen nicht a priori ausgereift fehlende Kontrollstrukturen mittels GoTo nachempfinden /* find and print index * of x in array a for (i=0; i<max; i++) { if(a[i] == x) break; } if (i!=max) print( i:,i); else print( not found. ); /* find and print index * of x in array a for (i=0; i<max; i++) { if(a[i] == x) goto next; } next: if (i!=max) print( i:,i); else print( not found. ); Bsp 2a: for-schleife mit break verlassen Bsp 2b: for-schleife mit goto verlassen Zuverlässige Software mit GoTo - Ludwig Suski 8
9 Warum GoTo? - Kontrollstrukturen 2 zwei weitere Ansatze links: illegaler Feldzugriff möglich rechts: zusätzliche Variable nötig /* find and print index * of x in array a while (i<max && a[i]!=x) i++; if (i!=max) print( i:,i); else print( not found. ); /* find and print index * of x in array a bool found = false; while (i<max &&!found) { if (a[i++]==x) found = true; } if (found) print( i:,i 1); else print( not found. ); Bsp 2c: konjugierte Bedingung Bsp 2d: Flag zur Ablaufkontrolle Zuverlässige Software mit GoTo - Ludwig Suski 9
10 Warum GoTo? - Kontrollstrukturen 3 Weiteres Beispiel: Universalstruktur für Iteration deckt while-do und do-while ab for-schleife direkt umsetzbar /* universal loop structure * (as thought by Dahl) loop: S; while B: // leave if false T; repeat; // from loop /* universal loop structure * (simulated with goto) repeat: S; if not B then goto next; T; forever; next: Bsp 3a: universelle Schleife nach Ole-Johan Dahl ([2] S. 279) Bsp 3b: universelle Schleife Synthese mit GoTo Zuverlässige Software mit GoTo - Ludwig Suski 10
11 Warum GoTo? - Kontrollstrukturen 4 Weitere strukturierte Sprünge: Ausnahmebehandlung ( C) Beliebige Rücksprünge aus Funktionen ( Pascal) Event-Indicators (nach C. T. Zahn in [2], S. 275): loop until <event>1 or <event>2 or...or <event>n: <statement list>0; repeat; then <event>1 => <statement list>1; <event>2 => <statement list>2;... <event>n => <statement list>n; fi; Zuverlässige Software mit GoTo - Ludwig Suski 11
12 Warum GoTo? Effizienz 1 kritische Schleifen (~3%) dominieren die Programmgeschwindigkeit (Knuth, [2], S. 268) Optimierung dieser Bereiche lohnt sich! VORSICHT: Optimierung nur auf ausgereifte Schleifen anwenden! strukturiert entworfen, analysiert, debuggt, auf funktionale Korrektheit geprüft premature optimization is the root of all evil. (Knuth [2], S. 268) Zuverlässige Software mit GoTo - Ludwig Suski 12
13 Warum GoTo? - Effizienz 2 /* A[m+1] := x; i:= 1; * while A[i] x do i := i+1; * if i>m then m := i; B[i]:=1; * else B[i] := B[i]+1 fi; A[m+1] := x; i:=1; go to test; loop: i := i + 2; test: if A[i]=x then go to found fi; if A[i+1] x then go to loop fi; i := i + 1; found: if i>m then m := i; B[i] := 1; else B[i] := B[i]+1 fi; Optimierung als Folge erprobter Transformationen Bsp.: Schleifenkörper ausrollen Laufzeit: 3,5n zu 4n ([2], S. 267f) Gewinn: 12,5% betrachten wieder: Bsp 1: Suchalgorithmus von Knuth ([2] S. 267f) ^ Zuverlässige Software mit GoTo - Ludwig Suski 13
14 Warum GoTo? - Effizienz 3 Elimination von Rekursion ([2], S ) /* binary tree traversal * (print infix) procedure treeprint(t); [..] if t 0 then treeprint(l[t]); print(a[t]); treeprint(r[t]); fi; /* binary tree traversal * (print infix) procedure treeprint(t); [..] L:if t 0 then treeprint(l[t]); print(a[t]); t:=r[t]; go to L; fi; /* binary tree traversal * (print infix) procedure treeprint(t); [..] begin integer stack S;[..] L1: loop while t 0: S<=t; t:=l[t]; go to L1; L2: t<=s; print(a[t]); t:=r[t]; repeat; if nonempty(s) then go to L2 fi; end; Bsp 4a Bsp 4b Bsp 4c Zuverlässige Software mit GoTo - Ludwig Suski 14
15 Abschlussbemerkungen Dem Programmierer sein Werkzeug! er muss es verantwortungsvoll einsetzen; erst Strukturieren, dann optimieren nur spezielle Restriktionen sinnvoll in C: keine interprozeduralen Sprünge GoTo-Freiheit kein indikator für gute SW GoTo nur ein Auslöser für Debatten über Programmierstil und -disziplin? chaotische Programme auch ohne GoTo möglich! Zuverlässige Software mit GoTo - Ludwig Suski 15
16 Zuverlässige Software mit GoTo Vielen Dank für Ihre Aufmerksamkeit! Zuverlässige Software mit GoTo - Ludwig Suski 16
17 Quellen [1] Dijkstra: Go To Statement Considered Harmful Communications of the ACM, Vol. 11, No. 3, March 1968 [2] Knuth: Structured Programming with go to Statements Computing Surveys, Vol. 6, No. 4, December 1974 [3] Johnson: The Elimination of Goto-Patches? SIGPLAN Notices, Vol. 24, No. 3, 1989 [4] Hopkins: A Case for the GOTO Classics in Software Engineering, YOURDON, 1979, S [5] Wulf: A Case against the GOTO Classics in Software Engineering, YOURDON, 1979, S Zuverlässige Software mit GoTo - Ludwig Suski 17
Ablaufsteuerung. Markus Roggenbach. 2. Dezember 2002
Ablaufsteuerung Markus Roggenbach 2. Dezember 2002 Aktuelle Vorbemerkung Aktuelle Vorbemerkung 2 M.Broy, J.Siedersleben: Objektorientierte Programmierung und Softwareentwicklung, Informatik Spektrum, Februar
MehrKapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte
Elementare Schritte Ein elementarer Berechnungsschritt eines Algorithmus ändert im Allgemeinen den Wert von Variablen Zuweisungsoperation von fundamentaler Bedeutung Zuweisungsoperator In Pascal := In
MehrImperative vs. Funktionale Programmierung
Beispiel: Entwerfe eine Funktion, die testet, ob eine Zahl n eine Primzahl ist oder nicht. Beobachtung: (1) Wenn n Primzahl ist, ist die Menge der Teiler von n leer. (2) Die Menge der Teiler von n sind
MehrKV Software Engineering Übungsaufgaben SS 2005
KV Software Engineering Übungsaufgaben SS 2005 Martin Glinz, Silvio Meier, Nancy Merlo-Schett, Katja Gräfenhain Übung 1 Aufgabe 1 (10 Punkte) Lesen Sie das Originalpapier von Dijkstra Go To Statement Considered
Mehr4.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
MehrAlgorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016
Algorithmen und Datenstrukturen Übung Stefan Florian Palkovits, BSc 09 e09@student.tuwien.ac.at 9. Juni 0 Aufgabe 9: Anwenden der Spanning Tree Heuristik auf symmetrisches TSP 9 8 7 8 8 7 Bilden eines
MehrGrundlagen wissenschaftlichen Arbeitens (ws /05)
Grundlagen wissenschaftlichen Arbeitens (ws.. 2004/05) Thema: The programming language PASCAL Autor: Ratko Trajanovski 1 kurzfassung Zur Sprache PASCAL Pascal in der Ausbildung Lexikalische Elemente Programmaufbau
MehrSyntax der Sprache PASCAL
Syntax der Sprache PASCAL Buchstaben A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z Ziffern 0 1 2 3 4 5 6 7 8 9 Sonderzeichen und Wortsymbole +
MehrDie Syntax von Java. Ursprünge. Konsequenzen. Das Wichtigste in Kürze. Weiteres Vorgehen. Rund um Java. Sun Microsystems. Borland Software Corp
Ursprünge Die Syntax von Java Borland Software Corp 1995 Syntax: Pascal Objektorientierte Prorammierung optional Plattformen: Windows (Linux, Mac OS X) Sun Microsystems 1995 Syntax: C/C++ Objektorientiert
MehrEinführung in die Programmiertechnik
Einführung in die Programmiertechnik Verifikation 2 Vermeidung von Fehlern Verwendung geeigneter Werkzeuge Auswahl einer dem Problem angemessenen Programmiersprache Verwendung eines zuverlässigen Compilers
MehrUrsprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java
Ursprünge Die Syntax von Java Borland Software Corp 1995 Syntax: Pascal Objektorientierte Prorammierung optional Plattformen: Windows (Linux, Mac OS X) Sun Microsystems 1995 Syntax: C/C++ Objektorientiert
MehrINFORMATIK FÜR BIOLOGEN
Technische Universität Dresden 15012015 Institut für Theoretische Informatik Professur für Automatentheorie INFORMATIK FÜR BIOLOGEN Musterklausur WS 2014/15 Studiengang Biologie und Molekulare Biotechnologie
Mehrif ( Logischer Operator ) { } else { Anweisungen false
if ( Logischer Operator ) { Anweisungen true else { Anweisungen false Bedingte Anweisungen Operatoren verknüpfen Variable zu neuen Ausdrücken, wir unterscheiden Arithmetische Operatoren Berechnung von
MehrBedingte Ausdrücke: (a > b)? a : b (C) if a > b then a else b case x of 1 => f1(y) 2 => f2(y) => g(y) (ML)
Ausdrücke Infix-Notation Prefix-Notation Postfix-Notation a (b +c) a+bc a bc+ Operator-Assoziativität und -Preceedence: a +b c entwpricht a +(b c) (Pascal, C,... ) a =b
Mehr1 Funktionale vs. Imperative Programmierung
1 Funktionale vs. Imperative Programmierung 1.1 Einführung Programme einer funktionalen Programmiersprache (functional programming language, FPL) bestehen ausschließlich aus Funktionsdefinitionen und Funktionsaufrufen.
MehrHistorische Innovationen von Niklaus Wirth
Historische Innovationen von Niklaus Wirth Romain Schmitz 26. Januar 2006 Biografie 1934 geboren am 15. Februar, Schweiz 1959 Abschluss als Elektroingenieur 1963 Promotion, Berekley 1968 Professor an der
MehrProgramming 101. Carl Herrmann IPMB & DKFZ
Programming 101 Carl Herrmann IPMB & DKFZ Programmieren Kommandozeile Einfache Befehle Shell Skript aneinanderketten von Befehlen Schleifen Programmiersprache Komplexere Aufgaben Gemeinsamkeiten Alle Programmiersprachen
MehrInformatik II - Übung 03
Informatik II - Übung 03 Katja Wolff katja.wolff@inf.ethz.ch 15.03.2014 Besprechung Übungsblatt 2 Informatik II - Übung 03 15.03.2017 2 U2.A1 S Klammerdarstellung und eingerückter Form R P V S(R(H(K)),P(A(N,O),Q,T),V(J,F(G)))
MehrInformatik 1. Prüfung im Wintersemester 1997/98
Informatik 1 Prüfung im Wintersemester 1997/98 Fachhochschule für Technik und Wirtschaft Reutlingen, Fachbereich Elektronik Prüfungsfach/Studiengang/Semester: Informatik 1 in Elektronik 1 Prüfer: Prof.
Mehr9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion
Experiment: Die Türme von Hanoi. Rekursion Mathematische Rekursion, Terminierung, der Aufrufstapel, Beispiele, Rekursion vs. Iteration Links Mitte Rechts Mathematische Rekursion Viele mathematische Funktionen
MehrUnterprogramme. Komplexes Verhalten kann modular mit Hilfe von Unterprogrammen beschrieben werden Es gibt zwei Arten von Unterprogrammen:
Unterprogramme Dr. Wolfgang Günther Unterprogramme 2 Unterprogramme Komplexes Verhalten kann modular mit Hilfe von Unterprogrammen beschrieben werden Es gibt zwei Arten von Unterprogrammen: Prozeduren
Mehr7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt
7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 1 Kontrollfragen Rekursion Was bedeutet Rekursion? Geben Sie Beispiele
Mehr(Aufgaben zu Wertzuweisungen siehe Vorlesungsbeilage S. 49)
Anweisungen Eine Anweisung ist eine in einer beliebigen Programmiersprache abgefaßte Arbeitsvorschrift für einen Computer. Jedes Programm besteht aus einer bestimmten Anzahl von Anweisungen. Wir unterscheiden
MehrEinstieg in die Informatik mit Java
1 / 34 Einstieg in die Informatik mit Java weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung
MehrEXCEL VBA Cheat Sheet
Variable Declaration Dim As Array Declaration (Unidimensional) Dim () As Dim ( To ) As
MehrData Structures and Algorithm Design
- University of Applied Sciences - Data Structures and Algorithm Design - CSCI 340 - Friedhelm Seutter Institut für Angewandte Informatik Contents 1 Analyzing Algorithms and Problems 2 Data Abstraction
Mehr7. Optimierung. Verschiedene Hilfsmittel zur Entscheidung der Optimierungsfrage:
Verschiedene Hilfsmittel zur Entscheidung der Optimierungsfrage: abstrakte Interpretation Datenflußanalysen wie: lebendige Variablen ankommende Definitionen verfügbare Ausdrücke wichtige Ausdrücke Beispiel
MehrGliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung
Gliederung n Teil I: Einleitung und Grundbegriffe l 1. Organisatorisches l 2. Grundlagen von Programmiersprachen n Teil II: Imperative und objektorientierte Programmierung l 1. Grundelemente der Programmierung
MehrKontrollstrukturen Blöcke / Schleifen / Bedingungen
Kontrollstrukturen Blöcke / Schleifen / Bedingungen 1 Einfache Anweisungen und Blöcke einfache Anweisung abgeschlossen mit Semikolon ; typische Fälle: o Deklaration, Zuweisung, Funktionsaufruf Sonderfall
MehrArrays. Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss
Arrays FTI 41 2005-09-09 Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss z.b. Dim Werte(x) As Single. Wobei
MehrInformatik I Übung, Woche 40
Giuseppe Accaputo 2. Oktober, 2014 Plan für heute 1. Fragen & Nachbesprechung Übung 2 2. Zusammenfassung der bisherigen Vorlesungsslides 3. Tipps zur Übung 3 Informatik 1 (D-BAUG) Giuseppe Accaputo 2 Nachbesprechung
MehrRepetitive Strukturen
Repetitive Strukturen Andreas Liebig Philipp Muigg ökhan Ibis Repetitive Strukturen, (z.b. sich wiederholende Strings), haben eine große Bedeutung in verschiedenen Anwendungen, wie z.b. Molekularbiologie,
MehrKontrollstrukturen - 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,
MehrGirls Day 2017 Programmierung
Girls Day 2017 Programmierung Anke Brocker Quality Management Würselen, 27. April 2017 www.lancom-systems.de Programmierung 27.04.2017 - Übersicht Programmieren mit der Arduino IDE Die Arduino IDE Der
MehrGrundlagen der Informatik 5. Kontrollstrukturen II
5. Kontrollstrukturen II Schleifen Sprünge Grundlagen der Informatik (Alex Rempel) 1 Schleifen Schleifen allgemein und in C++ Schleifen (Loops) ermöglichen die Realisierung sich wiederholender Aufgaben
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen 2.9 Unstrukturierte Kontrollanweisungen W. Tasin, M.Sc. Fakultät 04 tasin@hm.edu Allgemeines (1) Unstrukturierte Kontrollanweisungen ermöglichen einen bedingten oder unbedingte
MehrAndroid-Apps Gegenüberstellung Delphi java
Android-Apps Gegenüberstellung 2/9 Grundsätzliches etc. Groß-/Kleinschreibung egal sensitiv! Zuweisung := = Kommentare // // { } /* */ Zeichenkettenbegrenzer: 'text' "text" Inkrementieren / Dekrementieren
MehrModula. A Language for Modular Multiprogramming
Modula A Language for Modular Multiprogramming Daniel Ivancic 0425234 email: e0425234@student.tuwien.ac.at Modula : A Language for Modular Multiprogramming Abstract: Modula wurde 1976 von Niklaus Wirth
MehrEinführung in die Programmierung mit VBA
Einführung in die Programmierung mit VBA Vorlesung vom 07. November 2016 Birger Krägelin Inhalt Vom Algorithmus zum Programm Programmiersprachen Programmieren mit VBA in Excel Datentypen und Variablen
MehrProgrammentwurf mittels strukturierter Programmierung. Programmentwurf. Nassi-Shneiderman-Diagramm [DIN ]
Programmentwurf Bevor man sich daran macht, den Quelltext eines Programmes zu schreiben, sollte man sich einen Plan der Struktur des zukünftigen Programmes machen. Diese Phase eines Softwarentwicklungsprojekts
Mehr6. Iteration (Schleifenanweisungen)
Schwerpunkte While-: "abweisende" Schleife 6. Iteration (Schleifenanweisungen) Java-Beispiel: TemperatureTable.java Do-while-: "nichtabweisende" Schleife For-: zählergesteuerte Schleife Klassifikation
MehrFunktionale Programmierung Mehr funktionale Muster
Mehr funktionale Muster Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 07.12.2017 06:56 Inhaltsverzeichnis Pattern Matching..................................
MehrKontrollfluss. man Verzweigungen und Sprünge. o bisher linear (von oben nach unten) o Für interessante Programme braucht
Kontrollanweisungen Kontrollfluss o bisher linear (von oben nach unten) o Für interessante Programme braucht man Verzweigungen und Sprünge Kontrollfluss o bisher linear (von oben nach unten) o Für interessante
MehrInformatik I Übung, Woche 40
Giuseppe Accaputo 1. Oktober, 2015 Plan für heute 1. Nachbesprechung Übung 2 2. Vorbesprechung Übung 3 3. Zusammenfassung der für Übung 3 wichtigen Vorlesungsslides Informatik 1 (D-BAUG) Giuseppe Accaputo
Mehr6. Iteration (Schleifenanweisungen)
6. Iteration (Schleifenanweisungen) Java-Beispiel: TemperatureTable.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 9. Nov. 2015 2 Schwerpunkte While-Anweisung: "abweisende"
Mehr2.5 Programmstrukturen Entscheidung / Alternative
Entscheidung, ob der folgende Anweisungsblock ausgeführt wird oder ein alternativer Block Entscheidung ob die Bedingung wahr oder falsch (True / False) ist Syntax: 2.5 Programmstrukturen 2.5.1 Entscheidung
Mehrzu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
MehrModul 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
MehrGrundlagen von C# - 2
Grundlagen von C# - 2 Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Arrays 2. Kontrollstrukturen 3. Verzweigungen Bedingte Verzweigung (if else) 4. Schleifen Kopfgesteuerte Schleife (while) Fußgesteuerte
MehrÜberblick. Typanpassungen Iteration mit Schleifen Bedingte Anweisungen. Agile Softwareentwicklung Einfaches Ratespiel.
Globalübung 2 Überblick Typanpassungen Iteration mit Schleifen Bedingte Anweisungen Agile Softwareentwicklung Einfaches Ratespiel Softwarefehler Überblick Typanpassungen Iteration mit Schleifen Bedingte
MehrAlgorithmen und Datenstrukturen Musterlösung 5
Algorithmen und Datenstrukturen Musterlösung 5 Martin Avanzini Thomas Bauereiß Herbert Jordan René Thiemann
MehrCognitive Interaction Technology Center of Excellence
Kanonische Abdeckung Motivation: eine Instanz einer Datenbank muss nun alle funktionalen Abhängigkeiten in F + erfüllen. Das muss natürlich immer überprüft werden (z.b. bei jedem update). Es reicht natürlich
MehrFORTRAN77. eine höllische Programmiersprache. Christian Sternecker. Sommersemester TU-München
FORTRAN77 eine höllische Programmiersprache Christian Sternecker TU-München Sommersemester 2010 Aufbau des Vortrags Geschichte Merkmale Höllische Konzepte Typsicherheit Programmstruktur Speicherverwaltung
MehrEinstieg in die Informatik mit Java
Vorlesung vom 6.11.07, Weitere Anweisungen Übersicht 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung 4 for Schleife 5 while Schleife 6 do Schleife 7 break Anweisung 8 continue Anweisung 9 Leere
MehrExercise 6. Compound Types and Control Flow. Informatik I für D-MAVT. M. Gross, ETH Zürich, 2017
Exercise 6 Compound Types and Control Flow Daniel Bogado Duffner Slides auf: Informatik I für D-MAVT bodaniel@student.ethz.ch n.ethz.ch/~bodaniel Agenda Recap/Quiz Structures Unions Enumerations Loops
MehrEinstieg in die Informatik mit Java
1 / 41 Einstieg in die Informatik mit Java Weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick 2 Verbundanweisung 3 Bedingte Anweisung 4 Auswahlanweisung
MehrEntscheidungen. INE1, Montag M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert
Entscheidungen INE1, Montag M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? Ablaufstrukturen bis jetzt nur Sequenzen von Code neu Auswahl (Programmverzweigung) - Code aufgrund
MehrWoche 6. Cedric Tompkin. April 11, Cedric Tompkin Woche 6 April 11, / 29
Woche 6 Cedric Tompkin April 11, 2018 Cedric Tompkin Woche 6 April 11, 2018 1 / 29 Figure: Mehr Comics Cedric Tompkin Woche 6 April 11, 2018 2 / 29 Learning Objectives Dir kennst Return-by-value und Return-by-reference.
MehrGrundbegriffe der Informatik
Grundbegriffe der Informatik Übung Simon Wacker Karlsruher Institut für Technologie Wintersemester 2015/2016 GBI Grundbegriffe der Informatik Karlsruher Institut für Technologie 1 / 13 Programmiersprachen
MehrJava. public D find(k k) { Listnode K, D n = findnode(k); if(n == null) return null; return n.data; Java
Einführung Elementare Datenstrukturen (Folie 27, Seite 15 im Skript) Java Java public D find(k k) { Listnode K, D n = findnode(k); if(n == null) return null; return n.data; } protected Listnode K, D findnode(k
MehrArbeitsblätter für Algorithmierung und Strukturierung
Prof. Dr. Ch. Wahmkow Fachbereich Maschinenbau Fachhochschule Stralsund Arbeitsblätter für Algorithmierung und Strukturierung Inhalt : Struktogramme, Beispiele und Erläuterungen - Sequenz - vollständige
Mehr10 Wiederholungsanweisungen
Dr. K. Haller Turbo-Pascal Kap. 10: Wiederholungsanweisungen 10.1 10 Wiederholungsanweisungen /until-schleifen while-schleifen for-schleifen Break und Continue Gliederung 10.1 Die /until-schleife...2 10.2
Mehr3. Sprachkonzepte und ihre Übersetzungen
Übersetzung von Wertzuweisungen: Funktion coder x p codel x p; ind T coder c p ldc T c coder (e1 = e2) p coder e1 p; coder e2 p; equ T coder (e1 / e2) p coder e1 p; coder e2 p; div N coder(-e) p coder
MehrKurs 1613 Einführung in die imperative Programmierung Musterlösung zur Nachklausur am
1 Aufgabe 1 Analysiert man das Verfahren anhand des angegebenen Beispiels, ist schnell zu erkennen, dass das erste Element von infeld2 nach outfeld an Index 2 kopiert wird, das zweite den Index 4 bekommt,
MehrSuchen und Sortieren Sortieren. Mergesort
Suchen und Mergesort (Folie 142, Seite 55 im Skript) Algorithmus procedure mergesort(l, r) : if l r then return fi; m := (r + l)/2 ; mergesort(l, m 1); mergesort(m, r); i := l; j := m; k := l; while k
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. (Sortierte) Listen 2. Stacks & Queues 3. Datenstrukturen 4. Rekursion und vollständige Induktion
MehrLösungshinweise/-vorschläge zur Altklausur Abschlussklausur 06/07
Lösungshinweise/-vorschläge zur Altklausur Abschlussklausur 06/07 Dies sind die Lösungsvorschläge zu einer Altklausur, deren Aufgabenstellung an die Inhalte der Vorlesung Grundlagen der Programmierung
MehrAlgorithmen und Programmieren II Einführung in Python
Algorithmen und Programmieren II Einführung in Python SS 2012 Prof. Dr. Margarita Esponda 1 Was ist Python? eine Skript-Sprache Anfang der 90er Jahre entwickelt. Erfinder: Guido van Rossum an der Universität
MehrBoolean Wertemenge: Wahrheitswerte {FALSE,TRUE}, auch {0,1} Deklaration:
Boolean Wertemenge: Wahrheitswerte {,}, auch {,} Deklaration: VAR present,billig,laut,gefunden : BOOLEAN; Ein-/Ausgabe: keine! Operatoren: Negation, Verneinung NOT ~ Konjunktion, logisches UND AND & Disjunktion,
MehrProgrammieren I. Kapitel 5. Kontrollfluss
Programmieren I Kapitel 5. Kontrollfluss Kapitel 5: Kontrollfluss Ziel: Komplexere Berechnungen im Methodenrumpf Ausdrücke und Anweisungen Fallunterscheidungen (if, switch) Wiederholte Ausführung (for,
MehrGrundlagen der Informatik
Grundlagen der Informatik Vorlesungsprüfung vom 13.06.2008 Gruppe B Lösung Name: Matrikelnummer: Zuerst bitte Name und Matrikelnummer auf das Titelblatt schreiben. Es sind keine Unterlagen und keine Teamarbeit
MehrE-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
Mehr2 Teil 2: Nassi-Schneiderman
2 Teil 2: Nassi-Schneiderman Wie kann man Nassi-Schneiderman in einer objektorientierten Sprache verwenden? Jedes Objekt besitzt Methoden, welche die Attribute des Objektes verändern. Das Verhalten der
MehrEinführung in die Programmierung I Systematisches Programmieren. Thomas R. Gross. Department Informatik ETH Zürich
252-0027 Einführung in die Programmierung I 10.0 Systematisches Programmieren Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013 and Thomas Gross 2016 All rights reserved. Uebersicht
MehrKnuth Morris Pratt Algorithmus
Knuth Morris Pratt Algorithmus PS: Stringmatching Algorithmen in C Dozent: Max Hadersbeck Referentinnen: Joanna Rymarska, Alfina Druzhkova Datum: 5.07.2006 Folien: www.cip.ifi.lmu.de/~droujkov Agenda Historisches
MehrSprungbefehle und Kontroll-Strukturen
Sprungbefehle und Kontroll-Strukturen Statusregister und Flags Sprungbefehle Kontrollstrukturen Das Status-Register 1 Register-Satz des ATmega128 Universal-Register (8Bit) R0..R15 16 Bit Program counter
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren Teilnehmerkreis und Voraussetzungen Studiengänge
MehrAngewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der
MehrTutorium für Fortgeschrittene
Tutorium für Fortgeschrittene Stroop Aufgabe: Die Farbe gesehener Wörter ist zu klassifizieren. Es gibt 4 Farben (rot, blau, gelb, grün) In Eprime: red, blue, yellow and green. Jeder Farbe ist einer Taste
MehrMartin Unold INFORMATIK. Geoinformatik und Vermessung
Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Anweisungen mit Variablen Wiederholung Deklaration
MehrFunktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion
Überblick über Stored Functions Funktionen Eine Funktion ist ein benannter PL/SQL- Block, der einen Wert zurückgibt. Eine Funktion kann in der Datenbank als Objekt zur wiederholbaren Ausführung gespeichert
MehrProgrammiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 5. Kontrollstrukturen Allgemein Kontrollstrukturen dienen zur Steuerung des Programmablaufs. (Bemerkung: C und C++ besitzen die selben Kontrollstrukturen.)
Mehr1 Maschinenunabhängige Optimierungen. Maschinenunabhängige Optimierungen Wintersemester 2008/09 1 / 17
1 Maschinenunabhängige Optimierungen Maschinenunabhängige Optimierungen Wintersemester 2008/09 1 / 17 Optimierungen Automatische Optimierungen sind nötig, weil unoptimierter Code meist besser lesbar ist.
MehrÜbungsstunde: Informatik 1 D-MAVT
Übungsstunde: Informatik 1 D-MAVT Daniel Bogado Duffner Übungsslides unter: n.ethz.ch/~bodaniel Bei Fragen: bodaniel@student.ethz.ch Daniel Bogado Duffner 21.03.2018 1 Ablauf Quiz und Recap Floating Point
MehrStudienseminar Koblenz - Fachseminar Informatik Visualisierung von Sortieralgorithmen
Thema: Visualisieren von Sortieralgorithmen in Delphi (am Beispiel: Bubblesort und Quicksort) Ziel ist es, eine Animation des Bubblesort- und Quicksort-Algorithmus in Delphi für die Anwung im Unterricht
MehrAlgorithmik und Programmieren
Institut für Informatik Forschungsgruppe Datenbanken und Informationssysteme (DBIS) Universität Innsbruck Algorithmik und Programmieren Martin Pichl Datenbanken und Informationssysteme (DBIS) dbis.uibk.ac.at
MehrMikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen
Mikroprozessoren Grundlagen Aufbau, Blockschaltbild Grundlegende Datentypen AVR-Controller Anatomie Befehlssatz Assembler Speicherzugriff Adressierungsarten Kontrollstrukturen Stack Input / Output (I/O)
MehrVBA-Programmierung: Zusammenfassung
VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung
MehrVor- und Nachbedingungen in imperativen Programmen OOPM, Ralf Lämmel
Wer ist denn das? Vor- und Nachbedingungen in imperativen Programmen OOPM, Ralf Lämmel Programmspezifikation mit Vor- und Nachbedingungen (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau 2 3 Gesprächsprotokoll
MehrInformatik - Übungsstunde
Informatik - Übungsstunde Jonas Lauener (jlauener@student.ethz.ch) ETH Zürich Woche 08-25.04.2018 Lernziele const: Reference const: Pointer vector: iterator using Jonas Lauener (ETH Zürich) Informatik
MehrGrundlegende Datentypen
Grundlegende Datentypen (Funktionale Programmierung) Prof. Dr. Oliver Braun Letzte Änderung: 18.03.2018 21:08 Grundlegende Datentypen 1/16 Typen in Haskell ist alles streng typisiert Haskell verfügt über
Mehr