Übungsblatt 5. Thema: Algorithmen: Rekursion vs Iteration, O-Notation, Korrektheit
|
|
- Tristan Acker
- vor 5 Jahren
- Abrufe
Transkript
1 Informatik I WS 05/06 Prof. Dr. W. May Dipl.-Inform. Oliver Fritzen Dipl.-Inform. Christian Kubczak Übungsblatt 5 Ausgegeben am: Abgabe bis: (Theorie) (Praktisch) Thema: Algorithmen: Rekursion vs Iteration, O-Notation, Korrektheit Die Theorieaufgaben auf diesem Blatt sind bis zum Dienstag, Dezember um Uhr - pünktlich! - in die Info-I-Briefkästen im Erdgeschoss der NAM einzuwerfen. Die Kästen sind nach Übungsgruppen geordnet. Achten Sie bitte darauf dass Sie Ihren Zettel in den richtigen Kasten werfen, und dass Name und Gruppe auf jedem Blatt stehen! Falls Ihre mehrere Blätter umfasst, heften Sie diese bitte zusammen! Die Praxis-Aufgaben auf diesem Zettel bearbeiten Sie bitte am Rechner und führen Sie in der Abgabewoche in der Gruppenübung ihrem Tutor am Rechner vor (bzw. dem Dienst habenden Tutor in der Freiübung). Eine Bearbeitung in Zweier-Teams innerhalb Ihrer Übungsgruppe ist möglich. Aufgabe 1 (Theorie: 20 Punkte): Korrektheit von iterativen Algorithmen Gegeben sei folgendes Programmstück: z0; btrue; do { zz+1; b!b; while(z! x) wobei x und z int-variablen sind, x>0. Beweisen Sie folgende Behauptung: Nach Beendigung des Programms ist btrue genau dann wenn x gerade ist. Erklären Sie außerdem, warum die Schleife terminiert. Korrektheit:
2 Vorbedingung: Nachbedingung: Abbruchbedingung: z0 UND btrue (x ist gerade UND btrue) ODER (x ist ungerade und bfalse) xz Invariante(noch zu bew.): (z ist gerade UND btrue) ODER (z ist ungerade und bfalse) Für den Korrektheitsnachweis müssen folgende Regeln erfüllt sein: 1. Vorbedingung Invariante 2. Abbruchbedingung + Invariante Nachbedingung 3. Die Invariante ist tatsächlich eine, d.h. falls die Invariante vor dem Schleifendurchlauf gilt, gilt sie auch nach dem Schleifendurchlauf. Dass 1. und 2. gelten, sieht man direkt. Invariante: Vor dem Schleifendurchlauf gilt nach Vor.: (z ist gerade UND btrue) ODER (z ist ungerade und bfalse). Nach dem Schleifendurchlauf wurden b und z verändert. Einsetzen liefert: ((z+1) ist gerade UND (not b)true) ODER ((z+1) ist ungerade und (not b)false). Umformen liefert: (z ist ungerade UND bfalse) ODER (z ist gerade und btrue), was genau die Ausgangsbedingung ist. Die Bedingung ist also invariant, wird also von einem Schleifendurchlauf nicht verändert. Und damit ist man fertig. Aufgabe 2 (Theorie: 30 Punkte): Mystery Gegeben sei folgendes Programme: public class Mystery { public static int compute(int n) { return computeinternal(n,1,1); private static int computeinternal(int n, int i, int res) { if(i n) return res; return computeinternal(n, i+1, res+i+i+1); 1. Betrachten Sie den Aufruf Mystery.compute(5);. Vollziehen Sie die Berechnung von Hand nach und geben Sie die Variablenwerte im Aufruf von computeinternal(n, i+1, res+i+i+1) an. 2. Was berechnet Mystery (als Funktion von n)? Beweisen Sie Ihre Aussage. 3. Re-formulieren Sie Mystery iterativ (auf Papier) und beweisen Sie die Korrektheit mit Hilfe der Schleifeninvariante. 1. Aufruf von Hand:
3 compute(5) computeinternal(5,1,1) computeinternal(5,1+1, ) computeinternal(5,2,4) computeinternal(5,2+1, ) computeinternal(5,3,9) computeinternal(5,3+1, ) computeinternal(5,4,16) computeinternal(5,4+1, ) computeinternal(5,5,25) n5,i1,res1 n5,i2,res4 n5,i3,res9 n5,i4,res16 n5,i5,res25 (Abbruchbedingung ni ist erfüllt!) Was berechnet compute(n)? Anscheinend gilt: compute(n) n 2. Beweis durch Induktion über n: n1: compute(1) computeinternal(1,1,1) n n+1 : Leider nicht ganz so einfach. Probieren wir es anders. Beobachtung aus Teilaufgabe 1: Anscheinend hat "res" im i-ten Aufruf von computeinternal(n,i,res) stets den Wert i 2. Beweis (Induktion über die Aufruftiefe i): i1: compute(n) computeinternal(n,1,1) (1. Aufruf). n?, i1, res i 2. i i+1: Zu zeigen ist: falls im i-ten Aufruf von computeinternal (also computeinternal(n,i,res) ) gilt dass res i 2 (Induktionsvoraussetzung oder IV), dann gilt auch im (i+1)-ten Aufruf (also computeinternal(n,i+1,res neu ) ) dass res neu (i+1) 2. Beweis: Es gilt laut IV im i-ten Aufruf: computeinternal(n, i, res) computeinternal(n,i,i 2 ). Dadurch sieht der (i+1)-te Aufruf so aus: computeinternal(n, i, i 2 ) computeinternal(n, i+1, i 2 + i + i + 1) computeinternal(n, i+1, i 2 + 2*i + 1) (1. Binomische Formel) computeinternal(n, i+1, (i+1) 2 ). Es gilt also: res (i+1) 2 im (i+1)-ten Aufruf. Wir wissen nun: im i-ten Aufruf von computeinternal(n,i,res) gilt stets: res i 2. compute(n) startet die Berechnung von computeinternal(n,1,1). computeinternal ruft sich jedesmal selbst auf, i wird jedesmal um 1 vergrößert, solange bis in. computeinternal wird also n-mal aufgerufen (einmal von compute, (n-1)-mal von sich selbst). Und im n-ten Durchgang (wo, wie wir wissen, res den Wert n 2 hat), brechen wir ab und liefern res n 2 zurück. Also gilt: compute(n) n Mystery iterativ:
4 public class Mystery { public static int compute(int n) { int i1; int res1; while(i!n) { resres+i+i+1; ii+1; return res; Korrektheit: Vorbedingung: i1 und res1 Nachbedingung: res n 2 Abbruchbedingung: in Invariante(noch zu bew.): res i 2 Für den Korrektheitsnachweis müssen folgende Regeln erfüllt sein: 1. Vorbedingung Invariante 2. Abbruchbedingung + Invariante Nachbedingung 3. Die Invariante ist tatsächlich eine, d.h. falls die Invariante vor dem Schleifendurchlauf gilt, gilt sie auch nach dem Schleifendurchlauf. 1. VB INV: i1, res1 res i AB + INV NB: in, resi 2 resn 2 3. INV ist Invariante: Vorher: resi 2. Schleifendurchgang: i neu i+1; res neu res+i+i+1; Nachher: (i neu ) 2 (i+1) 2 i 2 + 2*i + 1 (siehe "vorher") res + i + i + 1. Aufgabe 3 (Theorie: 20 Punkte): O-Notation Gegeben sei folgendes Programm(stück), wobei n beliebig ist: int summe 0; for (int i1; i< n; i++) { for (int j1; j<n; j++) { summe summe + j; if(summe % 2 0) { summe summe +17; else { for (int i1; i<n; i++) { summe summe-1;
5 Bestimmen Sie den Gesamtaufwand in Abhängigkeit von n mit Hilfe dero-notation. Jedes Programm / jeder Algorithmus ist zusammengesetzt aus den Primitiven Anweisung/Zuweisung, Sequenz, Alternative und Schleife: Zuweisung Prog Zuweisung Sequenz Prog Prog 1 ;Prog 2 ;Prog 3 ;... Prog n ; Auswahl einer Alternative Prog if(bedingung) Prog 1 ; else Prog 2 Schleife Prog for(i0;i<k;i++) Prog 1 ; Wir nehmen hier ein einfaches Kostenmaß an, das für eine einfache Anweisung 1 Schritt berechnet, für eine Sequenz von Programmen die Summe ihrer Schritte, für eine Alternative das Maximum der möglichen Schritte und für eine Schleife die Anzahl der Schleifendurchläufe multipliziert mit der Anzahl der Schritte im Schleifen-Inneren: T(Prog)? Zuweisung Prog Zuweisung 1 Sequenz Prog Prog 1 ;Prog 2 ;Prog 3 ;... Prog n ; T(Prog 1 ) T(Prog n ) Auswahl einer Alternative Prog if(bedingung) Prog 1 ; else Prog 2 max( T(Prog 1 ), T(Prog 2 ) ) Schleife Prog for(i0;i<k;i++) Prog 1 ; k * T(Prog 1 ) Für die einfachen Anweisungen int summe 0, summe summe + j, summe summe +17 und summe summe-1 ergibt sich jeweils 1 Schritt. Jede for-schleife wird n-mal durchlaufen, die Schachtelung der oberen beiden Schleifen führt für diese zu einem n * n * T(Schleifeninhalt). Die untere Schleife bekommt ein n * T(Schleifeninhalt). Die Auswahl if(summe % 2 0) {.. else {... liefert das Maximum von Alternative 1 und Alternative 2: max( T(Alt1), T(Alt2) ). Das ergibt eine Gesamtlaufzeit von 1 + ( n * ( n * 1 ) ) + max ( 1, ( n * 1 ) ) 1 + n 2 + max ( 1, n ) n 2 + n + 1 O(n 2 ). Aufgabe 4 (Praktisch: 30 Punkte): Permutationen Schreiben Sie eine Java-Klasse Permutation mit einer Methode permute, die ein char-array der Länge n als Eingabe hat und alle Permutationen der Zeichen im Array ausgibt. Als Permutationen einer Menge bezeichnet man Vertauschungen der einzelnen Elemente. Beispiel:
6 public class PermutationTest { public static void main(string[] args) { char[] k { a, b, c ; Permutation.permute(k); Die main-methode soll alle Kombinationen von Vertauschungen der Zeichen a, b und c auf den Bildschirm ausgeben: a b c a c b b a c b c a c b a c a b Sie können davon ausgehen, dass die einzelnen Zeichen paarweise verschieden sind (d.h. sie brauchen sich nicht um Duplikate zu kümmern). Testen Sie Ihr Programm mit den Werten { a, b, c und { a, b, c, d. Hinweis: Für ein Array x enthält x.length die Länge des Arrays x. Anmerkung: Sie sollten in der Lage sein, ihr Programm beim Testieren erklären zu können, wie sie auf die Idee gekommen sind, welche Eigenschaft der Permutation sie ausgenutzt haben, etc. Wem es nur um die Punkte geht, der sollte sich besser auf die Aufgaben 1-3 konzentrieren, wo die Punkte deutlich einfacher zu holen sind als hier. svariante 1 mit quadratischen Arrays: public class Permutation1 { public static char[][] permute(char[] array) { if (array.length 0) return new char[0][0]; char[][] perms new char[fakultaetrek.berechnen(array.length)][array.length]; int currentpermindex 0; for (int i 0; i < array.length; i++) { perms[currentpermindex][0] array[i]; char[] copy new char[array.length-1]; int arrayindex 0; int copyindex 0; // kopiere array ohne pos i nach copy while(arrayindex<array.length) { if(arrayindexi) arrayindex++; else copy[copyindex++] array[arrayindex++]; char[][] subperms permute(copy); for(int j0; j<subperms.length;j++) { perms[currentpermindex][0] array[i]; for(int k0; k<subperms[j].length;k++) { perms[currentpermindex][k+1] subperms[j][k]; currentpermindex++; return perms; svariante 2 mit direkter Ausgabe:
7 public class Permutation2 { public static void permute(char[] number) { permute(number, 0); public static void permute(char[] number, int from) { char[] new_number new char[number.length]; for (int i from; i < number.length; i++) { /* * kopiere das number nach new_number (noetig, da die alte ordnung * VOR dem vertauschen noch fuer den rek. aufruf benoetigt wird) */ for (int j 0; j < number.length; j++) new_number[j] number[j]; // tausche new_number[i] und new_number[from] char temp new_number[i]; new_number[i] new_number[from]; new_number[from] temp; // rekursiver aufruf permute(new_number, from + 1); // ausgabe des arrays nur dann wenn die rekursion am zeilenende angekommen ist if (from number.length) output(number); // Ausgaberoutine static void output(char[] number) { for (int i 0; i < number.length; i++) System.out.print(number[i] + " "); System.out.println(); Testmethode für beide Alternativen: public class PermutationTest { private static void printmatrix(char[][] array) { for (int i 0; i < array.length; i++) { for (int j 0; j < array[i].length; j++) System.out.print(array[i][j]); System.out.println(); public static void main(string[] args) { char[] k1 { a, b, c ; char[] k2 { a, b, c, d ; char[][] perms1 Permutation1.permute(k1); char[][] perms2 Permutation1.permute(k2); printmatrix(perms1); System.out.println("---"); printmatrix(perms2); Permutation2.permute(k1); Permutation2.permute(k2);
Übungsblatt 4. Thema: Imperative Konstrukte und Speicherorganisation in Java, Algorithmen und Rekursion
Informatik I WS 05/06 Prof. Dr. W. May Dipl.-Inform. Oliver Fritzen Dipl.-Inform. Christian Kubczak Übungsblatt 4 Ausgegeben am: Abgabe bis: 18.11.2005 29.11.2005 (Theorie) 2.12.2005 (Praktisch) Thema:
MehrÜbungsblatt 6. Thema: BubbleSort, MergeSort, Divide&Conquer, Master-Theorem
Informatik I WS 05/06 Prof. Dr. W. May Dipl.-Inform. Oliver Fritzen Dipl.-Inform. Christian Kubczak Übungsblatt 6 Ausgegeben am: Abgabe bis: 2.12.2005 13.12.2005 (Theorie) 15.12.2005 (Praktisch) Thema:
MehrÜbungsblatt 2. Thema: Formale Sprachen & Grammatiken, Boolesche Logik, Zahlendarstellung, Java
Informatik I WS 05/06 Prof. Dr. W. May Dipl.-Inform. Oliver Fritzen Dipl.-Inform. Christian Kubczak Übungsblatt 2 Ausgegeben am: 04.11.2005 Abgabe bis: 15.11.2005 Thema: Formale Sprachen & Grammatiken,
MehrÜbungsblatt 3. Thema: Logik, Zahlendarstellung in Java, Objektorientierung in Java
Inormatik I WS 05/06 Pro. Dr. W. May Dipl.-Inorm. Oliver Fritzen Dipl.-Inorm. Christian Kubczak Übungsblatt 3 Ausgegeben am: Abgabe bis: 11.11.2005 22.11.2005 (Theorie) 25.11.2005 (Praktisch) Thema: Logik,
MehrInformatik I Tutorium WS 07/08
Informatik I Tutorium WS 07/08 Vorlesung: Prof. Dr. F. Bellosa Übungsleitung: Dipl.-Inform. A. Merkel Tutorium: 12 Tutor: Jens Kehne Tutorium 6: Dienstag, 04. Dezember 2007 Agenda des heutigen Tutoriums
Mehr2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung:
2.4 Schleifen Schleifen beschreiben die Wiederholung einer Anweisung bzw. eines Blocks von Anweisungen (dem Schleifenrumpf) bis eine bestimmte Bedingung (die Abbruchbedingung) eintritt. Schleifen unterscheiden
Mehr1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.4. Verifikation - 1 -
1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - 4. Verifikation Spezifikation: Angabe, was ein Programm tun
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
Mehr! 1. Erste Schritte! 2. Einfache Datentypen! 3. Anweisungen und Kontrollstrukturen! 4. Verifikation! 5. Reihungen (Arrays) II.1.4. Verifikation - 1 -
! 1. Erste Schritte! 2. Einfache Datentypen! 3. Anweisungen und Kontrollstrukturen! 4. Verifikation! 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - 4. Verifikation! Spezifikation: Angabe, was ein Programm
Mehrn 1. Erste Schritte n 2. Einfache Datentypen n 3. Anweisungen und Kontrollstrukturen n 4. Verifikation n 5. Reihungen (Arrays)
n 1. Erste Schritte n 2. Einfache Datentypen n 3. Anweisungen und Kontrollstrukturen n 4. Verifikation n 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - 4. Verifikation n Spezifikation: Angabe, was ein
Mehr1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.4. Verifikation - 1 -
1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - 4. Verifikation Spezifikation: Angabe, was ein Programm tun
MehrÜbungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor
Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2013 PD Dr. Cyrill Stachniss Dr. Rainer Kümmerle Übungsblatt 13 Abgabe / Besprechung in Absprache
MehrErste Java-Programme (Scopes und Rekursion)
Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Scopes und Rekursion) Tutorium Bioinformatik (WS 18/19) Konstantin: Konstantin.pelz@campus.lmu.de Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/
MehrRekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Rekursion Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Aufgabe 1: Potenzfunktion Schreiben Sie eine Methode, die
MehrÜbungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor
Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2018 Prof. Dr. Wolfram Burgard Andreas Kuhner Daniel Büscher Übungsblatt 13 Abgabe / Besprechung
MehrÜbungsblatt 7. Thema: Sortieren, Objektorientierung
Informatik I WS 05/06 Prof. Dr. W. May Dipl.-Inform. Oliver Fritzen Dipl.-Inform. Christian Kubczak Übungsblatt 7 Ausgegeben am: Abgabe bis: 9.12.2005 6.1.2006 (Theorie) 6.1.2006 (Praktisch) Thema: Sortieren,
MehrRekursion. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung
Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung https://www.sosy-lab.org/teaching/2017-ws-infoeinf/ WS17/18 Divide et Impera im Römischen
MehrKlassenvariablen, Klassenmethoden
Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07 Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion Klassenmethoden
MehrRekursion. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung
Dr. Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung WS18/19 https://www.sosy-lab.org/teaching/2018-ws-infoeinf/ Divide et Impera im Römischen
MehrDatenstrukturen. Mariano Zelke. Sommersemester 2012
Datenstrukturen Mariano Zelke Sommersemester 2012 Mariano Zelke Datenstrukturen 2/19 Das Teilfolgenproblem: Algorithmus A 3 A 3 (i, j bestimmt den Wert einer maximalen Teilfolge für a i,..., a j. (1 Wenn
MehrÜbungsblatt 10. Thema: Abstrakte Datentypen, Datenstrukturen in Java
Informatik I WS 05/06 Prof. Dr. W. May Dipl.-Inform. Oliver Fritzen Dipl.-Inform. Christian Kubczak Übungsblatt 10 Ausgegeben am: Abgabe bis: 13.01.2006 24.1.2006 (Theorie) 27.1.2006 (Praktisch) Thema:
MehrÜbungsblatt 9. Thema: Methoden-Dispatching, Datenstrukturen, Abstrakte Datentypen
Informatik I WS 05/06 Prof. Dr. W. May Dipl.-Inform. Oliver Fritzen Dipl.-Inform. Christian Kubczak Übungsblatt 9 Ausgegeben am: Abgabe bis: 06.01.2006 17.1.2006 (Theorie) 20.1.2006 (Praktisch) Thema:
MehrPraktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand Übungsblatt 7 Besprechung: 4. 8.12.2017 (KW 49) Vorbereitende
MehrEinführung in die Programmierung. (K-)II/Wb17
Probeklausur Hochschule Zittau/Görlitz, Prüfer: Prof. Dr. Georg Ringwelski Einführung in die Programmierung (K-)II/Wb17 Matrikelnummer: Punkte: 1 2 3 4 5 6 Gesamt /21 /19 /20 /20 /20 /20 /120 Spielregeln:
MehrPraktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2016/17. Vorbereitende Aufgaben
Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Alexander Lochmann, Iman Kamehkhosh, Marcel Preuß, Dominic Siedhoff Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester
MehrÜbungspaket 22 Rekursive Funktionsaufrufe
Übungspaket 22 Rekursive Funktionsaufrufe Übungsziele: Skript: 1. Technische Voraussetzungen für rekursive Funktionsaufrufe 2. Umsetzung mathematisch definierter Rekursionen in entsprechende C-Programme
MehrRekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"
MehrTutoraufgabe 1 (Verifikation):
Prof. aa Dr. M. Müller C. Aschermann, J. Hensel, J. Protze, P. Reble Allgemeine Die Hausaufgaben sollen in Gruppen von je 3 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet werden.
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
MehrCoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.
CoMa 04 Java II Paul Boeck Humboldt Universität zu Berlin Institut für Mathematik 7. Mai 2013 Paul Boeck CoMa 04 7. Mai 2013 1 / 13 Verzweigungen Wenn-Dann Beziehungen if (BEDINGUNG) { else if (BEDINGUNG2)
MehrEinführung in die Programmierung WS 2009/10. Übungsblatt 7: Imperative Programmierung, Parameterübergabe
Ludwig-Maximilians-Universität München München, 04.12.2009 Institut für Informatik Prof. Dr. Christian Böhm Annahita Oswald, Bianca Wackersreuther Einführung in die Programmierung WS 2009/10 Übungsblatt
MehrPraktische Informatik I WS 1999/2000
Universität Mannheim Lehrstuhl für Praktische Informatik IV Prof. Dr. W. Effelsberg Christoph Kuhmünch, Gerald Kühne Praktische Informatik I WS 999/2 Übungsblatt 2 Ausgabe: Mi, 26.. Abgabe: Di,.2., 8 Uhr
MehrProgrammiertechnik Übungen zu Klassen & -methoden
Programmiertechnik Übungen zu Klassen & -methoden Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Übung 1 Ein Verfahren, den größten gemeinsamen Teiler (ggt) zweier Zahlen a und b, a
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
MehrGrundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel Problem
Grundzüge der Wirtschaftsinformatik WS 2002/03 Wiederholung Java Heiko Rossnagel www.m-lehrstuhl.de accelerate.com Grundzüge der Wirtschaftsinformatik WS 2002/03 1 Programmierzyklus Problem Formulierung
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Wintersemester 2013/14 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a
MehrAbschnitt 11: Korrektheit von imperativen Programmen
Abschnitt 11: Korrektheit von imperativen Programmen 11. Korrektheit von imperativen Programmen 11.1 11.2Testen der Korrektheit in Java Peer Kröger (LMU München) in die Programmierung WS 16/17 931 / 961
Mehr1. Die rekursive Datenstruktur Liste
1. Die rekursive Datenstruktur Liste 1.3 Rekursive Funktionen Ideen zur Bestimmung der Länge einer Liste: 1. Verwalte ein globales Attribut int laenge. Fügt man ein Element zur Liste oder löscht es, wird
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 Welche Arten von Anweisungen gibt es? Anweisungen
MehrProgrammieren, Wintersemester 13/14 Übungsleiter: Sebastian Ebers Aufgabenblatt 3
Übung zur Vorlesung Programmieren, Wintersemester 13/14 Übungsleiter: Sebastian Ebers Allgemeines Aufgabenblatt 3 Abgabe: 10.12.2013, vor der Vorlesung (14:15 Uhr, AM 1) Max.
Mehr1. Teilklausur. Name:... Vorname:... Matrikel-Nummer:...
ALP II Objektorientierte Programmierung SS 2012 Prof. Dr. Margarita Esponda 1. Teilklausur Name:... Vorname:... Matrikel-Nummer:... Ich bin mit der Veröffentlichung der Klausurergebnisse mit Matrikel-Nummer
MehrGrundlagen der Programmierung WS 15/16 (Vorlesung von Prof. Bothe)
Humboldt-Universität zu Berlin Institut für Informatik Grundlagen der Programmierung WS 15/16 (Vorlesung von Prof. Bothe) Übungsblatt 4: Felder und Rekursion Abgabe: bis 9:00 Uhr am 14.12.2015 über Goya
MehrMethoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom
Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon
Mehr5.3 Korrektheit und Verifikation
5.3 Korrektheit und Verifikation Korrektheit bedeutet, dass ein Algorithmus oder ein Programm das in der Spezifikation beschriebene Problem für beliebige Eingabedaten korrekt löst. Die Korrektheit kann
MehrTutoraufgabe 1 (Pilze):
Prof. aa Dr. J. Giesl Programmierung WS14/15 C. Aschermann, F. Frohn, J. Hensel, T. Ströder Tutoraufgabe 1 (Pilze): In dieser Aufgabe beschäftigen wir uns mit dem berühmten Gaunerpärchen Bonnie und Clyde.
MehrJAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)
JAVA BASICS 2. Primitive Datentypen 1. Warum Java? weit verbreitet einfach und (relativ) sicher keine Pointer (?) keine gotos kein Präprozessor keine globalen Variablen garbage collection objekt-orientiert
MehrArrays. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik
Arrays Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Inhalte der heutigen Vorlesung: Arraytypen Speicherdarstellung von Arrays Auswertung
MehrEinstieg in die Informatik mit Java
1 / 18 Einstieg in die Informatik mit Java Klassenvariablen, Klassenmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 18 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden
MehrKapitel 10. Komplexität von Algorithmen und Sortieralgorithmen
Kapitel 10 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
MehrWS 05/06 mod Verifikation
3.3 Verifikation WS 05/06 mod 351 Verifikation ist der Beweis der Korrektheit eines Algorithmus relativ zu seiner Spezifikation. Die Aussagen gelten für alle Ausführungen des Algorithmus. Sie werden statisch
MehrFormale Systeme Logik: Verifikation von Aussagen über Algorithmen. Ana Sokolova statt Robert Elsässer
Formale Systeme Logik: Verifikation von Aussagen über Algorithmen 20.12.2012 Ana Sokolova statt Robert Elsässer Verifikation von Aussagen über Algorithmen Hoaresche Logik: Kalkül zum Beweisen von Aussagen
MehrElementare Konzepte von
Elementare Konzepte von Programmiersprachen Teil 2: Anweisungen (Statements) Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Anweisungen (statements) in Java Berechnung (expression statement)
MehrTutoraufgabe 1 (Hoare-Kalkül):
Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet
MehrKomplexität von Algorithmen
Komplexität von Algorithmen Ziel Angabe der Effizienz eines Algorithmus unabhängig von Rechner, Programmiersprache, Compiler. Page 1 Eingabegröße n n Integer, charakterisiert die Größe einer Eingabe, die
MehrVorkurs Informatik WiSe 17/18
Java Rekursion Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 10.10.2017 Technische Universität Braunschweig, IPS Überblick Einleitung Türme von Hanoi Rekursion Beispiele 10.10.2017 Dr. Werner Struckmann
MehrKlausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2009/10
Klausur zur Lehrveranstaltung Technische Informatik für Ingenieure WS 2009/10 22. Februar 2010 Aufgabe 1 2 3 4 5 6 7 Summe mögliche Punkte 15 15 20 15 20 20 15 120 erreichte Punkte Note: Hinweise: Diese
MehrJava 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8
Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen
MehrStand der Vorlesung Komplexität von Algorithmen (Kapitel 3)
Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Technische Universität München Motivation: IT gestützte Steuerung, Überwachung, Fertigung, Produktion,. : erfordert effiziente Berechnungsvorschriften
Mehr(08 - Einfache Sortierverfahren)
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (08 - Einfache Sortierverfahren) Prof. Dr. Susanne Albers Sortieren Motivation, Einführung Datenbestände müssen sehr oft sortiert werden, etwa um
MehrProgrammieren und Problemlösen
Dennis Komm Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 27. Februar 2019 Komplexität von Algorithmen Aufgabe Primzahltest Schreibe ein Programm, das eine ganze Zahl x als Eingabe
MehrProgrammierstarthilfe SS 2009 Fakultät für Ingenieurwissenschaften und Informatik 4. Blatt Für die Woche vom bis zum 22.5.
Programmierstarthilfe SS 2009 Fakultät für Ingenieurwissenschaften und Informatik 4. Blatt Für die Woche vom 18.5. bis zum 22.5.2009 (KW 21) Organisatorisches Die Webseiten zur Veranstaltung sind unter
Mehr5.3 Korrektheit und Verifikation
5.3 Korrektheit und Verifikation Korrektheit bedeutet, dass ein Algorithmus oder ein Programm das in der Spezifikation beschriebene Problem für beliebige Eingabedaten korrekt löst. Die Korrektheit kann
Mehr4.3 Verifikation von Aussagen über Algorithmen
4.3 Verifikation von Aussagen über Algorithmen Hoaresche Logik: Kalkül zum Beweisen von Aussagen über Algorithmen und Programme, Programm-Verifikation, [C.A.R. Hoare, 1969]. Mod - 4.51 Statische Aussagen
MehrKapitel 9. Komplexität von Algorithmen und Sortieralgorithmen
Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
Mehr11. Rekursion, Komplexität von Algorithmen
11. Rekursion, Komplexität von Algorithmen Teil 2 Java-Beispiele: Power1.java Hanoi.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 23. Nov. 2015 Anwendung der Rekursion Rekursiv
MehrIntensivübung zu Algorithmen und Datenstrukturen
Intensivübung zu Algorithmen und Datenstrukturen Silvia Schreier Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht Programmierung Fallunterscheidung Flussdiagramm Bedingungen Boolesche
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 06: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von
MehrProgrammierung für Mathematik HS11
software evolution & architecture lab Programmierung für Mathematik HS11 Übung 8 1 Aufgabe: Codeverständnis (Repetition) 1.1 Lernziele 1. Code verstehen können. 2. Fehler im Code finden und korrigieren
MehrAufgabenblatt: Methoden - rekursiv
Aufgabenblatt: Methoden - rekursiv- Seite 1 Aufgabenblatt: Methoden - rekursiv (1.) Wird noch erstellt! Lösen Sie die folgenden Aufgaben indem Sie: - Basis und Rekursive Bedingung formulieren! - die vorgegebene
MehrOOP Aufgabenblatt 7 6. Dezember 2013
1 Prof. Dr. Th. Letschert OOP Aufgabenblatt 7 6. Dezember 2013 Aufgabe 1 Hausaufgabe Nr. 4 (Klein) Implementieren Sie, ohne Arrays oder eine sonstige Kollektion zu nutzen, folgende Fingerübungen zu Rekursion
MehrSchwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen
Schwerpunkte 10. Felder (Arrays) Teil 1 Java-Beispiele: Echo.java Primzahlen.java Monate.java Klassifikation von Typen in Programmiersprachen Array: einziger strukturierter Typ in Java Deklaration, Erzeugung
MehrInformatik I WS 07/08 Tutorium 24
Info I Tutorium 24 Informatik I WS 07/08 Tutorium 24 06.12.07 Bastian Molkenthin E-Mail: infotut@sunshine2k.de Web: http://infotut.sunshine2k.de Vollständige Induktion Vollständige Induktion ist ein Beweisverfahren
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2016 Patrick Schäfer, Humboldt-Universität zu Berlin Organisation Vorlesung: Montag 11 13 Uhr Marius Kloft RUD 26, 0 115 Mittwoch 11 13 Uhr Marius Kloft
MehrJAVA - Methoden - Rekursion
Übungen Informatik I JAVA - Methoden - Rekursion http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 1 Methoden Methoden sind eine Zusammenfassung von Deklarationen und Anweisungen
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
MehrEinführung in die Programmierung
Einführung in die Programmierung Prüfung HS16 Eprog HS 16 21.12.2017 1 Aufgabe 1 Theorie Nachfolgend sind die Operatoren in absteigender Reihenfolge ihrer Präzedenz aufgelistet: Treten mehrere Operatoren
Mehr( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)
Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Motivation: IT gestützte Steuerung, Überwachung, Fertigung, Produktion,. : erfordert effiziente Berechnungsvorschriften Ziel: Methoden kennen
MehrProgrammierstarthilfe SS 2010 Fakultät für Ingenieurwissenschaften und Informatik 6. Blatt Für die Woche vom bis zum 4.6.
Programmierstarthilfe SS 2010 Fakultät für Ingenieurwissenschaften und Informatik 6. Blatt Für die Woche vom 31.5. bis zum 4.6.2010 (KW 22) Organisatorisches Diese Woche führen wir Methoden ein und behandeln
MehrAufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen.
Aufgabe 8 Betrachten Sie den folgenden Algorithmus namens Bubble-Sort. Bubble-Sort(A[1..n]): 1 for i 1 to length(a) 1 2 do for j length(a) downto i + 1 3 do if A[j 1] > A[j] 4 then A[j 1] A[j] 1 Arbeitsweise
MehrAlgorithmen und Programmierung
Prof. Andreas Goerdt TU Chemnitz M. Pippig, M. Riedel, U. Schönke Wintersemester 2003/2004 1. Aufgabe: Algorithmen und Programmierung Der erste Teil der Invariante 9. Übung Lösungsvorschläge ggt(a,b) =
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Wintersemester 2012/13 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a
MehrC. A. R. Hoare. An Axiomatic Basis for Computer Programming. Nicolas Schelp. Proseminar Assertions SS 2007
C. A. R. Hoare An Axiomatic Basis for Computer Programming Nicolas Schelp Proseminar Assertions SS 2007 Inhalt Motivation Kurze Biographie Der Hoare-Kalkül Axiome und Inferenzregeln des Hoare-Kalküls Die
MehrVorbereitende Aufgaben
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2018/19 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand Übungsblatt 4 Besprechung: 19. 23.11.2018 (KW 47) Vorbereitende
MehrKontrollstrukturen: Wiederholungsanweisungen
Kontrollstrukturen: Wiederholungsanweisungen Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung https://www.sosy-lab.org/teaching/2017-ws-infoeinf/
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 04: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von
MehrStandardkonstrukte in Java
Robert Buchholz, Sven Schneider JavaKurs 2006 1. Tag Freitagsrunde / Tutoren 03. April 2006 Was lernen wir heute noch kennen? 1 Methoden Definition einer Methode Aufruf einer Methode 2 Datenstruktur Array
MehrÜbungen zum Bioinformatik-Tutorium. Blatt 3
Institut für Informatik Wintersemester 2018/19 Praktische Informatik und Bioinformatik Prof. Dr. Ralf Zimmer Übungen zum Bioinformatik-Tutorium Blatt 3 Termin: Dienstag, 6.11.2018, 11 Uhr 1. Hello World
Mehr2.2 Allgemeine (vergleichsbasierte) Sortierverfahren
. Allgemeine (vergleichsbasierte) Sortierverfahren Vergleichsbaum: Der Aufbau des Verbleichsbaum ist für jeden Algorithmus und jede Eingabelänge n gleich. Jede Permutation der Eingabe, muss zu einem anderen
MehrÜbung zu Algorithmen und Datenstrukturen (für ET/IT)
Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Rüdiger Göbl, Mai Bui Computer Aided Medical Procedures Technische Universität München Administratives Zentralübung (Mittwoch, 09:45
MehrNachklausur Bitte in Druckschrift leserlich ausfüllen!
Übungen zur Vorlesung Informatik für Informationsmanager WS 2005/2006 Universität Koblenz-Landau Institut für Informatik Prof. Dr. Bernhard Beckert Dr. Manfred Jackel Nachklausur 24.04.2006 Bitte in Druckschrift
MehrJAVA - Methoden
Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 sind eine Zusammenfassung von Deklarationen und Anweisungen haben einen Namen und können
Mehrhue12 January 24, 2017
hue12 January 24, 2017 1 Abgabehinweise Beachten Sie unbedingt diese Hinweise, sonst erhalten Sie keine Punkte aus dieser Abgabe! Für Details siehe z.b. Folien der nullten Zentralübung 1.1 Namen und Matrikelnummern
MehrPK-Einstufungstest. 1. Allgemeine Multiple-Choice-Aufgaben
PK-Einstufungstest 34 / 100 Punkte Alle Aufgaben beziehen sich auf Java. 1. Allgemeine Multiple-Choice-Aufgaben 4 / 15 Punkte Bitte wählen Sie ALLE zutreffenden Antwortmöglichkeiten aus. Es können beliebig
Mehr1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)
1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.3. Anweisungen und Kontrollstrukturen - 1 - Anweisung Anweisung Zuweisung Methodenaufruf
MehrTheoretische Informatik 1
Theoretische Informatik 1 Search - Beweis der Korrektheit David Kappel Institut für Grundlagen der Informationsverarbeitung TU Graz SS 2013 Algemeine Anmerkungen zur Übung 9 Aufgabenblätter, 3 Abgabetermine
MehrInformatik 1 für Nebenfachstudierende Beispiele für Klausuraufgaben
Informatik 1 für Nebenfachstudierende Beispiele für Klausuraufgaben Aufgabe 1: Zahlensysteme a) Stellen sie die Zahl Z als allgemeine Formel mittels eines polyadischen Zahlensystems zur Basis B dar. b)
MehrProblem: Gegeben Spezifikation (P,Q) und Implementierung S Gesucht formaler (automatisierbarer?) Beweis, dass S (P,Q) erfüllt.
Formale Verifikation von Algorithmen 1.3 Verifikation Problem: Gegeben Spezifikation (P,Q) und Implementierung S Gesucht formaler (automatisierbarer?) Beweis, dass S (P,Q) erfüllt. Bisher nicht möglich
Mehr