Informatik 1 ( ) D-MAVT F2011. Rekursion, Signaturen. Yves Brise Übungsstunde 8
|
|
- Nelly Hartmann
- vor 7 Jahren
- Abrufe
Transkript
1 Informatik 1 ( ) D-MAVT F2011 Rekursion, Signaturen
2 Nachbesprechung Blatt 5 & 6 Blatt 5 Sortieren Pseudocode Vektoren Verschlüsselung Blatt 6 Zeiger, structs Listen Niederschlagsanalyse (Vorsicht int-division)
3 Initialisierung Dynamisches Feld Ein dynamisches Feld kann nicht mit geschwungenen Klammern initialisiert werden! Verwende direkten Elementzugriff, oder Konstruktoren. struct foo { ; int a, b; int main() { foo* test = new foo[3] = {{0,1,{0,2,{0,3; delete[] test; return 0; test.cpp:6: error: expected primary-expression before { token
4 Initialisierung Dynamisches Feld struct foo { ; int a, b; int main() { foo* test = new foo[3]; test[0] = {0,1; test[1] = {0,2; test[2] = {0,3; delete[] test; return 0; test.cpp:7: error: expected primary-expression before { token
5 Initialisierung Dynamisches Feld Direkter Elementzugriff struct foo { ; int a, b; int main() { foo* test = new foo[3]; test[0].a = 0; test[0].b = 1; test[1].a = 0; test[1].b = 2; test[2].a = 0; test[2].b = 3; delete[] test; return 0; OK! Aber recht umständlich...
6 Initialisierung Dynamisches Feld Direkter Elementzugriff struct foo { foo () {this->a = 0; this->b = 0; foo (int a, int b) { this->a = a; this->b = b; int a, b; ; int main() { foo* test = new foo[3]; test[0] = foo(0,1); test[1] = foo(0,2); test[2] = foo(0,3); delete[] test; return 0; Sehr komfortabel, vor allem wenn die Datentypen komplizierter werden.
7 Blatt 8, Aufgabe 1 Fibonacci Zahlen Teilaufgabe a) Definition fib(n) := 0, if n =0, 1, if n =1, fib(n 1) + fib(n 2), if n 2 Berechnung fib(2) = fib(1) + fib(0) = 1+0 = 1 Teilaufgabe b) Schaut euch die Auwertung aus a) einmal genau an...
8 Blatt 8, Aufgabe 2 Labyrinth Finden Sie einen Weg durch das Labyrith! Darstellung als char Feld, wobei X für Hindernis, S für Startpunkt, Z für Ziel und die Zeichen >,<,^,v für rechts, links, oben und unten steht. Anfangssituation Weg gefunden!
9 Blatt 8, Aufgabe 2 Das Framework Sie müssen nur die Datei labyrinth.cpp bearbeiten. Zusätzlich enthält das Verzeichnis die Datei labyrinth.map, die Karte des Labyrinths codiert. int loadlabyrinth(char *filename); void printlabyrinth(); int main(int argc, char* argv[]) { if (argc == 2) { if (!loadlabyrinth(argv[1])) { printlabyrinth(); resetlabyrinth(); return 0; Labyrith laden und ausgeben mit Kommandozeilenparameter. Alterntiv kann auch labyrinth.map als Argument an loadlabyrinth übergeben werden.
10 Blatt 8, Aufgabe 2 Die Datenstruktur struct tlab { // die wirkliche groesse des Labyrinths // diese Zahlen werden aus dem Labyrinth-File eingelesen int size_x; int size_y; // labyrinthoriginal enthaelt die original zeichen aus dem // labyrinth file. Es wird durch resetlabyrinth() in die // oeffentliche labyrinth-variable kopiert // das labyrinthoriginal hat vertauschte X und Y coordinaten! // dies macht das Einlesen einfacher char labyrinth_original[80][80]; // die "gebrauchs-version" des labyrinths. Wenn // zeichen geschrieben werden, wird diese Version veraendert char labyrinth[80][80]; lab;
11 Blatt 8, Aufgabe 2 Zeichen schreiben/lesen char zeichenanposition(int x, int y) { return lab.labyrinth[x][y]; void setzezeichenanposition(char zeichen, int x, int y) { lab.labyrinth[x][y] = zeichen; if (zeichenanposition(x,y) == 'X') {... setzezeichenanposition('s', x, y); Es wird nicht überprüft, ob die Operationen erlaubt sind. Das ist ihre Aufgabe. Zum Beispiel soll das schreiben nur in leere Felder möglich sein.
12 Blatt 8, Aufgabe 2 Die rekursive Lösung bool sucheweg(int sx, int sy, int zx, int zy) { // wir sind auf dem ziel gefunden if (sx == zx && sy == zy) { return true; // Diese Feld ist nicht leer. // Hier geht es nicht weiter. if (zeichenanposition(sx, sy)!= ' ') { return false; // versuche Schritt nach rechts setzezeichenanposition('>', sx, sy); if (sucheweg(sx+1, sy, zx, zy)) return true; // versuche Schritt nach links // versuche Schritt nach unten // versuche Schritt nach oben // nicht erfolgreich von diesem Feld aus setzezeichenanposition('.', sx, sy); // return false; Wenn wir schon am Ziel sind, können wir true zurück geben. Wenn das Startfeld nicht leer ist, können wir false zurückgeben. Danach versuchen wir alle 4 Himmelsrichtungen. Wichtig: Markiere erfolglose Felder mit. oder ähnlich, damit von da aus nicht mehr gesucht wird. Auch wichtig: Sie können annehmen, dass das Labyrinth begrenzt ist mir X.
13 Blatt 8, Aufgabe 3 Telefonbuch int main() { eintrag * buch = 0;! // Erstelle leeres Telefonbuch // Ermoeglicht dem Benutzer die naechste Aktion zu waehlen int wahl = 1; while (wahl!= 0) { // Erleutere die Wahlmoeglichkeit cout << "Was moechten Sie als naechstes tun?" << endl; cout << "0: Programmende" << endl; cout << "1: Eintrag erstellen" << endl; cout << "2: Telefonbuch ausgabe" << endl; cout << "3: Eintrag loeschen" << endl << endl; cin >> wahl; cin.ignore(); // Rufe je nach Wahl die richtige Funktion auf switch (wahl) { case 0: deletebuch(buch); break; case 1: addeintrag(buch); break; case 2: printbuch(buch); break; case 3: deleteeintrag(buch); break; default: cout << "keine gueltige Angabe" << endl; return 0; Die main Funktion hat nur zum Zweck, den Programmablauf zu bestimmen. Die eigentliche Funktionalität ist in die Fuktionen deletebuch, addeintrag, printbuch, deleteeintrag ausgelagert
14 Blatt 8, Aufgabe 3 void addeintrag(eintrag * &node); void deletebuch(eintrag * &node); void printbuch(eintrag * node); void deleteeintrag(eintrag * &node); Man beachte die Signatur mit Parameter Typ eintrag * & Traversieren der Liste notwendig void deletebuch(eintrag * &node) { eintrag * temp; // Gehe durch die verkettete Liste und loesche jeden Eintrag while (node!= 0) { temp = node; node = node->next; delete temp; Nicht vergessen, den Speicherplatz wieder freizugeben.
15 Blatt 7, Aufgabe 4 Turtle Graphics Siehe Demo!
16 Blatt 7, Aufgabe 5 Raytracing Bildebene und Objekte werden in einer 3D Darstellung modelliert. Vom Augpunkt werden dann die Schnittpunkte vieler Halbgeraden berechnet. Raytracing findet prominente Anwendung in der 3D Computergraphik.
17 Blatt 7, Aufgabe 5 Das Framework Sie müssen nur die Datei main.cpp aus dem Ordner framework bearbeiten. Die Datei framework7.zip auf der Kurshomepage enthält alles, was sie brauchen.wenn Sie alles richtig gemacht haben, dann schreibt das Programm eine Datei out.ppm. Dies ist eine Bilddatei. Sie können die.ppm Dateien mit Gimp (Windows, Linux) oder ToyViewer (OS X) anschauen. Datenstruktur für Vektoren, Farben und Strahlen typedef float[3] Vector3f; typedef Vector3f color_rgb; struct ray { Vector3f p; // Punkt Vector3f d; // Richtung ;
18 Blatt 7, Aufgabe 5 /****************************************************************************** * Funktion write_picture(color_rgb( ) * * Schreibt ein Bild(Array aus Farben) in out.ppm im PPM-Format * * Eingabeargumente: Array pic, das aus Elementen mit 3 Farben (RGB) besteht * * Rueckgabewerte: kein3e * ******************************************************************************/ void write_picture(color_rgb * pic); pic ist ein Zeiger auf ein Feld, welches das Bild darstellt (kann man eindimensional oder mehrdimensional machen). /****************************************************************************** * Funktion generate_ray() * * Generiert die den Strahl fuer den Pixel (x,y) * * Eingabeargumente: Koordinaten x, y. Kameramodel model * * Rueckgabewerte: Strahl welcher durch den Pixel verlaeuft * ******************************************************************************/ ray generate_ray(int x, int y, camera_model model); Rückgabewert ist eine Instanz von struct ray.
19 Blatt 7, Aufgabe 5 a) int main() { Vector3f pos(-4,0,1); Vector3f lookat(0,0,1); Vector3f up(0,0,1); camera_model camera; camera = init_camera(pos, lookat, up,1); color_rgb rot(1,0,0); color_rgb gruen(0,1,0); color_rgb blau(0,0,1); color_rgb gelb(1,1,0); color_rgb schwarz(0,0,0); color_rgb weiss(1,1,1); Zuerst ausprobieren ein Bild zu schreiben. Grösse des Bildes: const int res_x = 256; const int res_y = 256; color_rgb *pic =...; // Allen Bildpunkten blau zuweisen write_picture(pic); return 0;
20 Blatt 7, Aufgabe 5 b) Strahl mit Ebene schneiden. Ebene soll durch Funktion fixiert sein (xy-ebene). float int_plane(ray strahl, Vector3f &normale) { // Position der Flaeche (s. Aufgabenstellung Vector3f plane_n(0,0,1); float s=0; // Nomale ist immer die Flaechennormale normale = plane_n; // Formel (s. Aufgabenstellung) if (plane_n.dot(strahl.d) == 0) { // Schnittpunkt im unendlichen return -1e30; else { return (s-plane_n.dot(strahl.p))/plane_n.dot(strahl.d); Einzige benötigte Operation ist Vektorprodukt: Vector3f a(1,1,1); Vector3f b(1,0,0); a.dot(b); // gibt float zurück b.dot(a); // ist äquivalent
21 Blatt 7, Aufgabe 5 c) float int_sphere(ray strahl, Vector3f &normale) { // Position der Kugel Vector3f c(0,0,0.7); // Radius float r=1.2; // Vektor vom Strahlursprung zum Zentrum der Kugel Vector3f dst = strahl.p - c; // Loesen der quadratischen Gleichung // t*d + p - c ^2 - r^2 = 0 // = d ^2*t^2 +2d*(p-c)*t + p-c ^2 - r^2 = 0 // a1*t*t+b1*t+c1 // a1 = d*d = 1 // b1 = 2*d*dst // c1 = dst*dst -r*r float b1 = 2*dst.dot(strahl.d); float c1 = dst.dot(dst)-r*r; float d1 = b1*b1-4*c1; float t = d1 > 0? (- b1 - sqrt(d1))/2 : -1.1; Strahl mit Kugel schneiden. Kugel soll durch Funktion fixiert sein (c=(0,0,0), r=1.2). Normale muss berechnet werden! // Normale auf der Kugel ist der // Schnittpunkt - Zentrum normale = strahl.p + t*strahl.d - c; normale.normalize(); return t;
22 Blatt 7, Aufgabe 5 d) for(int y = 0; y < res_y; y++) for(int x = 0; x < res_x; x++) { strahl = generate_ray(x,y,camera); Endresultat: farbe = schwarz; // Hintergrund ist sehr weit weg t_closest = 1e30; t = int_sphere(strahl,normale); if (t>0.0 && t< t_closest) { // Die Kugel wird getroffen. // Die Farbe wird rot, die mit der // Beleuchtung skaliert wird. farbe = rot;//*(-1*strahl.d.dot(normale)); // AUFGABE C) farbe = rot*(-1*strahl.d.dot(normale)); // Entfernung wird gespeichert t_closest = t; t = int_plane(strahl,normale); if (t>0.00 && t< t_closest) { // Die Flaeche ist am naechsten. Farbe wird gelb farbe = gelb; // AUFGABE C) farbe = gelb*(-1*strahl.d.dot(normale)); t_closest = t; // Dem Pixel wird die Farbe zugewiesen pic[y*res_x+x] = farbe;
23 Rekursion Funktionen rufen sich selbst oder wechselseitig auf. Rekursion ist gleich mächtig wie Iteration. Abbruchbedingung wichtig Beispiel: Ackermann Funktion a(0,m) := m +1 a(n +1, 0) := a(n, 1) unsigned int a(unsigned int n, unsigned int m){ if (n == 0) return m + 1; if (m == 0) return a(n,1); return a(n, a(n + 1, m)); a(n +1,m+ 1) := a(n, a(n +1,m)) Wächst extrem schnell: a(3,13) wird auf heutigen Rechnern schon sehr lange dauern. a(4,4) grösser als die Anzahl der Atome im Uniersum.
24 Binomialkoeffizient Implementieren Sie die Funktion binom! Überlegen Sie sich mögliche Probleme und die Effizienz Ihrer Variante. A n k := n! k!(n k)! B n k := 0, if n<k, 1, if n = k or k =0, n 1 k + n 1 k 1, if n>k,k>0 C n k := 0, if n<k, 1, if n k, k =0, if n k, k > 0 n k n 1 k 1 unsigned int binom(unsigned int n, unsigned int k);
25 Binomialkoeffizient Variante A unsigned int fac(unsigned int n) { if (n == 0) return 1; return n * fac(n-1); unsigned int binom(unsigned int n, unsigned int k) { return fac(n) / fac(k) / fac(n-k); Nachteil: Die Zahlen, die als Zwischenresultate berechnet werden, sind viel grösser als das Resultat. Frühzeitiger integer-überlauf.
26 Binomialkoeffizient Variante B unsigned int binom(unsigned int n, unsigned int k) { if (n < k) return 0; if (n == k k == 0) return 1; return binom(n-1, k) + binom(n-1, k-1); Nachteil: Viele Werte werden mehrfach berechnet. Diese Rekursion ist sehr ineffizient. Verbesserung: Speichern Sie die schon berechneten Werte (Pascalsches Dreieck). Sogenanntes Dynamisches Programmieren. Dies braucht jedoch mehr Speicher...
27 Binomialkoeffizient Variante C unsigned int binom(unsigned int n, unsigned int k) { if (n < k) return 0; if (k == 0) return 1; return n * binom(n-1, k-1) / k; Vorsicht: Wir müssen zuerst multiplizieren und dann erst durch k dividieren. Ansonsten ist das Resultat sehr wahrscheinlich falsch wegen der ganzzahligen Division.
28 Prüfungsaufgabe Die Funktion kum3 soll die kumulative Summe der Argumente berechnen und zurück geben. Das erste Argument bleibt unverändert, das zweite Argument soll die Summe von a und b sein. Das dritte Argument c soll zum Ende die Summe aller Argumente zu Beginn sein. 1. Eignet sich eine gegebene Signatur für die Implementierung? 2. Falls Ja, dann implementieren Sie die entsprechende Funktion. void kum3(int * const a, int * const b, int * const c); void kum3(int a, int b, int c); void kum3(const int *a, const int *b, const int *c); void kum3(int &a, int &b, int &c);
29 Prüfungsaufgabe void kum3(int * const a, int * const b, int * const c); void kum3(int a, int b, int c); void kum3(const int *a, const int *b, const int *c); void kum3(int &a, int &b, int &c); Implementierung: void kum3(int * const a, int * const b, int * const c){ *b += *a; *c += *b; void kum3(int &a, int &b, int &c) { b += a; c += b;
Informatik 1 ( ) D-MAVT F2010. Klassen. Yves Brise Übungsstunde 9
Informatik 1 (251-0832-00) D-MAVT F2010 Klassen Aufgabennachschub Informatik für Mathematiker und Physiker (251-0847-00) von Bernd Gärtner gehalten im Wintersemester. http://www.ti.inf.ethz.ch/ew/courses/info1_09/
MehrInformatik 1 ( ) D-MAVT F2010. Rekursion, Signaturen. Yves Brise Übungsstunde 8
Informatik 1 (251-0832-00) D-MAVT F2010 Rekursion, Signaturen Nachbesprechung Blatt 6 Aufgabe 1 - Strukturen und Zeiger Genau die Variablen angeben, die sich geändert haben. Implizite Initialisierung ergänzt
MehrInformatik 1 ( ) D-MAVT F2010. Funktionen. Yves Brise Übungsstunde 7
Informatik 1 (251-0832-00) D-MAVT F2010 Funktionen Nachbesprechung Blatt 5, Aufgabe 1 Pseudocode im Allgemeinen gut gelöst. Vergleiche mit Musterlösung. Bubblesort Vergleiche der Reihe nach Paare im unsortierten
MehrInformatik 1 D-ITET Herbstsemester 2009 Übungstunde 8. Gruppe 7 ETZ F91 / 17-19h. Stefan Lienhard
Informatik 1 D-ITET Herbstsemester 2009 Übungstunde 8 Gruppe 7 ETZ F91 / 17-19h Stefan Lienhard stefalie@ee.ethz.ch Übersicht (Nachbesprechung Übung 6) (Nachbesprechung Übung 7) Theorie: Rekursion Vorbesprechung
MehrGrundlagen der Informatik
Grundlagen der Informatik Klausur 1. August 2008 1. Dynamische Datenstrukturen und objektorientierte Programmierung (45 Punkte) Gegeben sei eine Datenstruktur mit folgendem Aufbau struct lelem { int w;
MehrNachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.
Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 6 Pkt.) a) Erklären
MehrNachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.
Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 4 Pkt.) Gegeben
MehrInformatik 1 ( ) D-MAVT F2011. Klassen. Yves Brise Übungsstunde 10
Informatik 1 (251-0832-00) D-MAVT F2011 Klassen Übungsbetrieb Es gibt noch eine Übung 11 (7.5 Punkte ist trotzdem die Testatgrenze) Testate bestätige ich euch per Mail Es gibt noch 3 weitere Übungstermine,
MehrProgrammierung für Mathematik (HS13)
software evolution & architecture lab Programmierung für Mathematik (HS13) Übung 11 1 Aufgabe: Codeverständnis 1.1 Aufgabenstellung Notieren Sie, was der folgende Code ausgeben würde, wenn er so in einer
MehrGrundlagen der Informatik
Grundlagen der Informatik Musterklausur 1. Dynamische Datenstrukturen und objektorientierte Programmierung Zur Verwaltung einer digitalen Fotogalerie sollen Techniken der objektorientierten Programmierung
MehrHochschule Darmstadt Informatik-Praktikum SS 2018 EIT Bachelor 3. Aufgabenblatt Funktionen - Unterprogramme
Ziel ist die Aufteilung eines Programms in Funktionen und Dateien Aufgabe 3: Diese Aufgabe ist die Weiterentwicklung von Aufgabe 2. Es ist ein Programm zu erstellen, in welchem der Anwender aus einer Anzahl
MehrHochschule Darmstadt Informatik-Praktikum WS 2016/2017 WIng Bachelor 4. Aufgabenblatt Modularisierung, Funktionen, Unterprogramme
Ziele sind das Arbeiten mit Funktionen, sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 4: Diese Aufgabe basiert auf der Aufgabe 3.
MehrProbeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, Uhr Bearbeitungszeit: 105 Minuten
Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, 13.00-14.45 Uhr Bearbeitungszeit: 105 Minuten Schalten Sie ihr Mobiltelefon aus. Bei der Klausur ist als einziges
MehrPraxis der Programmierung
Dynamische Datentypen Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Dynamische Datentypen 2 Dynamische Datentypen
MehrEs ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.
Ziele sind das Arbeiten mit Funktionen und dem Aufzählungstyp (enum), sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 3: Diese Aufgabe
MehrInformatik 1 ( ) D-MAVT F2011. Pointer, Structs. Yves Brise Übungsstunde 6
Informatik 1 (251-0832-00) D-MAVT F2011 Pointer, Structs Organisatorisches Übungsstunde 20110413 Da ich abwesend bin, bitte Gruppe von David Tschirky besuchen. Mittwoch, 20110413, 13:15-15:00 Uhr, VAW
MehrInformatik I (D-ITET)
//009 Informatik I (D-ITET) Übungsstunde 8, 6..009 simonmayer@student.ethz.ch ETH Zürich Besprechung/Vertiefung der Vorlesung [..009] ArrayStack Ausgezeichnet Einige haben s etwas kompliziert gemacht clear()
MehrInformatik 1 ( ) D-MAVT F2010. Letzte Übungsstunde. Yves Brise Übungsstunde 12
Informatik 1 (251-0832-00) D-MAVT F2010 Letzte Übungsstunde Evaluation S3 Frage zu Assistierenden INFK Anz. Der/die Assistent/in war fachlich k.ä. 0 kompetent 1 0 2 0 3 0 4 23% 3 5 77% 10 MW = 4.8 SA =
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine
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
MehrUnterlagen. CPP-Uebungen-08/
Unterlagen http://projects.eml.org/bcb/people/ralph/ CPP-Uebungen-08/ http://www.katjawegner.de/lectures.html Kommentare in C++ #include /* Dies ist ein langer Kommentar, der über zwei Zeilen
MehrKlausur Informatik WS 2012/13
Klausur Informatik WS 2012/13 Name Gruppe 1 Vorname Dauer 90 min Matrikelnummer Hilfsmittel keine Die Klausur ist mit 50 Punkten sicher bestanden. Hinweies: Voraussetzung für die Teilnahme ist das Bestehen
MehrZiele sind das Arbeiten mit Funktionen (Modularisierung, Parameterübergabe), sowie - Reihentyp (Array)
Ziele sind das Arbeiten mit Funktionen (Modularisierung, Parameterübergabe), sowie - Aufgabe 3: Diese Aufgabe baut auf der 2. Aufgabe auf und erweitert diese. Die Funktionalität der 2. Aufgabe wird also
MehrInformatik 1 ( ) D-MAVT F2010. Pointer, Structs, Sortieren. Yves Brise Übungsstunde 6
Informatik 1 (251-0832-00) D-MAVT F2010 Pointer, Structs, Sortieren Aufgabe 1.1 Werden die Variablen später noch gebraucht? for (double d = 13, double e = 0;...) {... Ja... dann e vorher deklarieren. In
MehrEs ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.
Ziele sind das Arbeiten mit Zeigern, sowie Records und Funktionen Aufgabe 5: Diese Aufgabe basiert auf der Aufgabe 4. Es ist ein Programm zu erstellen, in welchem der Anwender aus einer Anzahl möglicher
MehrDelegates. «Delegierter» Methoden Schablone Funktionszeiger. Dr. Beatrice Amrhein
Delegates «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen 2 Definition 3 Definition Ein Delegat
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
MehrKapitel 7: Rekursion. Inhalt. Rekursion: Technik Rekursion vs. Iteration
Wintersemester 2007/08 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Inhalt Rekursion: Technik Prof. Dr. Günter Rudolph Fakultät
MehrInformatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5
Informatik 1 (251-0832-00) D-MAVT F2010 Schleifen, Felder Nachbesprechung Blatt 3 Aufgabe 1 ASCII... A > a Vorsicht: Lösen Sie sich von intuitiven Schlussfolgerungen. A ist nicht grösser als a, denn in
MehrEinführung in die Programmierung Wintersemester 2010/11
Einführung in die Programmierung Wintersemester 2010/11 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Rekursion Inhalt Rekursion: Technik Rekursion
MehrInformatik B von Adrian Neumann
Musterlösung zum 7. Aufgabenblatt vom Montag, den 25. Mai 2009 zur Vorlesung Informatik B von Adrian Neumann 1. Java I Schreiben Sie ein Java Programm, das alle positiven ganzen Zahlen 0 < a < b < 1000
MehrHS Ravensburg-Weingarten Schriftlich Prüfung Programmieren
HS Ravensburg-Weingarten Schriftlich Prüfung Programmieren Prof. Dr. M. Zeller Datum, Zeit, 08:00 10:00 Uhr (120 min) Aufgabenblätter 12 Seiten (einschl. Deckblatt) erreichbare Punktzahl 58 zugelassene
Mehr9. Vektoren. (auch Felder/array)
9. Vektoren (auch Felder/array) Motivation Hat man mehrere Objekte gleichen Datentyps, so kann man sie explizit deklarieren, wenn die Anzahl bekannt ist double x1,x2,x3,x4; Nachteile: versagt, -wenn die
MehrÜbungen zur Vorlesung EINI (WS 2010) Blatt 11
Martin Apel Informatik VI, GB5/R 431; Tel.: 4775 Nicola Beume Informatik XI, OH14/R 233; Tel.: 7704 Jürgen Mäter Informatik IV, GB5/R 402; Tel.: 2411 Dortmund, den 14. Januar 2011 Übungen zur Vorlesung
MehrDAP2 Praktikum Blatt 1
Fakultät für Informatik Lehrstuhl 11 / Algorithm Engineering Prof. Dr. Petra Mutzel, Carsten Gutwenger Sommersemester 2009 DAP2 Praktikum Blatt 1 Ausgabe: 21. April Abgabe: 22. 24. April Kurzaufgabe 1.1
MehrKlausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.
Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 12 Pkt.) Was liefert
MehrKlausur in Programmieren
Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Sommer 2009, 16. Juli 2009 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt) Name: Matrikelnr.:
MehrHS Ravensburg-Weingarten Schriftlich Prüfung Programmieren
HS Ravensburg-Weingarten Schriftlich Prüfung Programmieren Prof. Dr. M. Zeller Datum, Zeit, 08:00 10:00 Uhr (120 min) Aufgabenblätter 16 Seiten (einschl. Deckblatt) erreichbare Punktzahl 58 zugelassene
MehrSprachkonstrukte Verzweigungen und Array-Strukturen
Sprachkonstrukte Verzweigungen und Array-Strukturen Dr. Beatrice Amrhein Überblick Verzweigungen o if/else o switch/case Array-Strukturen o Vektoren und Matrizen 2 Verzweigungen 3 Verzweigungen: if/else
MehrHochschule Darmstadt Informatik-Praktikum WS 2017/2018 WIng Bachelor 6. Aufgabenblatt Zeiger, verkettete Liste, Dateieingabe und -ausgabe
Aufgabe 6: Häuser verwalten - dynamisch Für ein Schneeräumungsunternehmen soll ein Programm zur Verwaltung von Häuserlisten geschrieben werden. Das Programm soll in der Lage sein, zu einem Haus die wichtigsten
Mehr2 Programmieren in Java I noch ohne Nachbearbeitung
1 2 Programmieren in Java I noch ohne Nachbearbeitung 2.1 Was sind Programme? Eingabe = Verarbeitung = Ausgabe Die Eingabe kann sein Konstanten im Quelltext; Kommandozeilenparameter oder interaktive Eingabe
MehrInformatik I (D-ITET)
Informatik I (D-ITET) Übungsstunde 2, 5.10.2009 ETH Zürich? Übungsgruppenwechsel? Abgabe der Übungen... Bis Mo, 24:00 Theorie: Programme: per mail oder auf Papier.cpp Datei per mail Bin euch noch Demos
MehrInformatik I (D-MAVT)
Informatik I (D-MAVT) Übungsstunde 7 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich Ablauf Nachbesprechung Übung 5 Besprechung/Vertiefung der Vorlesung Vorbesprechung Übung 7 Aufgabe 1:
MehrAlgorithmen zur Datenanalyse in C++
Algorithmen zur Datenanalyse in C++ Hartmut Stadie 16.04.2012 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 1/ 39 Einführung Datentypen Operatoren Anweisungssyntax Algorithmen zur Datenanalyse in
MehrC++ Teil 5. Sven Groß. 12. Nov IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16
C++ Teil 5 Sven Groß IGPM, RWTH Aachen 12. Nov 2014 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 12. Nov 2014 1 / 16 Themen der letzten Vorlesung Eingabestrom, Verhalten von cin Namensräume Live Programming
MehrGrundlagen der Informatik 12. Strukturen
12. Strukturen Strukturen und deren Komponenten Strukturen im Projekt Dynamisch erstellte Strukturen Strukturen und Operatoren Strukturen und Funktionen Einfach verkettete Liste Grundlagen der Informatik
MehrC++ Teil 5. Sven Groß. 16. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16
C++ Teil 5 Sven Groß 16. Nov 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 16. Nov 2015 1 / 16 Themen der letzten Vorlesung Namensräume Live Programming zu A2 Gleitkommazahlen Rundungsfehler Auswirkung
MehrC++ Teil 4. Sven Groß. 30. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 16
C++ Teil 4 Sven Groß IGPM, RWTH Aachen 30. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 4 30. Apr 2015 1 / 16 Themen der letzten Vorlesung Funktionen: Definition und Aufruf Wert- und Referenzparameter,
MehrHochschule Darmstadt Informatik-Praktikum SS 2017 EIT Bachelor 5. Aufgabenblatt Datenstruktur, Dateieingabe und -ausgabe
Aufgabe 5: Bücher verwalten Für das Literaturverzeichnis einer Abschlussarbeit soll ein Programm zur Verwaltung von Bücherlisten geschrieben werden. Das Programm soll in der Lage sein, zu einem Buch die
MehrProbeklausur: Programmieren I
Probeklausur: Programmieren I WS09/10 Erlaubte Hilfsmittel: keine Lösung ist auf den Klausurbögen anzufertigen. (eventuell Rückseiten nehmen) Bitte legen Sie einen Lichtbildausweis und den Studentenausweis
MehrC/C++-Programmierung
1 C/C++-Programmierung Speicherverwaltung, 0, const Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Speicherverwaltung
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
MehrVorlesungsprüfung Programmiersprache 1
Vorlesungsprüfung Programmiersprache 1 Termin der Prüfung: 1) Di 20.03.2018 16:15 17:00 HSB 3 2) Di 15.05.2018 16:15 17:00 HSB 3 3) Di 12.06.2018 16:15 17:00 HSB 3 Stoffgebiete: 1) Ganzzahltypen: char,
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2009/0 : Technik vs. Iteration Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund 2 Definition (einfache,
MehrProgrammieren in C++
Fakultät Elektronik und Infor matik Studiengang Infor matik Programmieren in C++ Vorlesung im Sommersemester 2018 Prof. Dr. habil. Christian Heinlein 2. Übungsblatt (22. März 2018) Aufgabe 2: Lange vorzeichenlose
MehrDynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren
Dynamische Datentypen Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren Probleme mit Feldern (variabler Länge) man kann sie nicht direkt kopieren und zuweisen Probleme mit
Mehreinlesen n > 0? Ausgabe Negative Zahl
1 Lösungen Kapitel 1 Aufgabe 1.1: Nassi-Shneiderman-Diagramm quadratzahlen Vervollständigen Sie das unten angegebene Nassi-Shneiderman-Diagramm für ein Programm, welches in einer (äußeren) Schleife Integer-Zahlen
MehrHochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe
Aufgabenstellung Für ein Baumkataster sollen für maximal 500 Bäume Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Nummer Bauminfo Baumart Hoehe Baum Umfang
MehrEinführung in die Programmierung Wintersemester 2017/18
Einführung in die Programmierung Wintersemester 2017/18 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Rekursion Inhalt Rekursion: Technik Rekursion
MehrBachelorprüfung: Programmieren I
Bachelorprüfung: Programmieren I WS09/10 Erlaubte Hilfsmittel: keine Lösung ist auf den Klausurbögen anzufertigen. (eventuell Rückseiten nehmen) Bitte legen Sie einen Lichtbildausweis und den Studentenausweis
Mehr4.2 Programmiersprache C
4.2.1. Elementare Datentypen (signed) int, unsigned int, (signed) short (int), unsigned short (int), (signed) long (int), unsigned long (int) Elementare Datentypen für ganze Zahlen mit oder ohne Vorzeichen.
MehrÜbung zur Vorlesung EidP (WS 2018/19) Blatt 4
Lutz Oettershagen Jurij Kuzmic Dortmund, den 8. November 2018 Übung zur Vorlesung EidP (WS 2018/19) Blatt 4 Block gelb Es können 4 Punkte erreicht werden. Abgabedatum: 15. November 2018, 2:59 Uhr Hinweise
MehrWenn... dann... if (condition) statement. if (kontostand < 0) System.out.println("Oops..."); false. condition. true. statement
Wenn... dann... if (condition) statement condition false true statement if (kontostand < 0) System.out.println("Oops..."); 31 ... sonst... if (condition) statement1 else statement2 condition false true
MehrKlausur Programmieren 2 SS 2016
Klausur Programmieren 2 SS 2016 Name Gruppe 1 Vorname Dauer 90 min Matrikelnummer Hilfsmittel keine Die Klausur ist mit 50 Punkten sicher bestanden. Hinweise: Formulieren Sie Ihre Lösungen auf dem Aufgabenblatt
MehrNachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik
Seite 1 von 7 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 4 Pkt.) Gegeben
MehrArrays (Felder/Vektoren)
Arrays (Felder/Vektoren) Zusammenfassung mehrerer Variablen des gleichen Typs unter einem Namen im Speicher direkt hintereinander abgelegt Definition: Typname Arrayname [Größe]; Beispiel: int ar [5]; Zugriff
MehrInoffizielle Lösung zur Informatik I Prüfung Frühlingssemester 2010 Freitag, 13. August May 23, 2011
Inoffizielle Lösung zur Informatik I Prüfung Frühlingssemester 2010 Freitag, 13. August 2010 May 23, 2011 Informatik I, FS 2010, 1. Vordiplom Aufgabe 3 double sqrt(double s) double x_old,x_new; x_n initalisieren
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
MehrFunktionen: Rückgabewert
Funktionen: Rückgabewert Jede Funktion in C++ (außer Konstruktoren und Destruktoren siehe später) MUSS einen Rückgabewert-Typ vereinbaren. Gibt sie nichts zurück, muss der Rückgabetyp void sein. Jede return-anweisung
MehrLösungen Übung 5. Programmieren in C++ 1. Aufgabe. #include <iostream.h> #include <stdarg.h>
Lösungen Übung 5 1. Aufgabe #include int max(int anzarg, int a, int b,...) // Hilfsvariable für variable Parameter va_list argumente; va_start(argumente,b); // "b" letzter Parameter der Funktion,
MehrProbeklausur Name: (c)
Einführung in die Praktische Informatik 30.1.2013 Probeklausur Name: Teil I: Datentypen (20 Punkte) Lösen sie die Probleme, indem sie die korrekten Lösungen ankreuzen bzw. in die vorgesehenen Freiräume
MehrHochschule Darmstadt Informatik-Praktikum WS 2017/2018 EIT Bachelor 5. Aufgabenblatt Datenstruktur, Dateieingabe und -ausgabe
Aufgabe 5: Häuser verwalten Für ein Schneeräumungsunternehmen soll ein Programm zur Verwaltung von Häuserlisten geschrieben werden. Das Programm soll in der Lage sein, zu einem Haus die wichtigsten Informationen
MehrEinführung in die Programmierung Wintersemester 2011/12
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Kontrollstrukturen Inhalt Wiederholungen - while
MehrHochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe
Aufgabenstellung Für eine Hausverwaltung sollen für maximal 500 Wohnungen Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Art Baujahr Wohnung Whnginfo Nebenkosten
MehrKlausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: F Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.
Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 15 Pkt.) Was liefert
MehrVariablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes
Variablen Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes v ist Stück im Speicher, der 4 Bytes lang ist Speicherzugriff? Über Adressen!
MehrNachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe.
Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende
MehrKontrollfragen Mikrocontroller Programmiersprache C H1203 Felix Rohrer
Block 1 1. Welcher Wert hat w? int w = 034; 28 (Dezimal) 034 wird als Octal interpretiert 34oct = 28dec 2. Wie lauten die Ergebnisse? unsigned int a = 3, b = 5, c = 7; unsigned int x, y, z; x = a == 3;
MehrAnnehmende Schleife do while
Annehmende Schleife do while Schleife mit nachfolgender Bedingungsprüfung: annehmende Schleife B S Mit B wird eine Bedingung (logischer Ausdruck) bezeichnet, S ist ein Strukturblock. Zuerst wird S ausgeführt,
MehrC++ Notnagel. Ziel, Inhalt. Programmieren in C++
C++ Notnagel Ziel, Inhalt Ich versuche in diesem Dokument noch einmal die Dinge zu erwähnen, die mir als absolut notwendig für den C++ Unterricht und die Prüfungen erscheinen. C++ Notnagel 1 Ziel, Inhalt
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
MehrInformatik. Strukturen und Aufzählungstypen. Vorlesung
Informatik Vorlesung 06 Strukturen und Aufzählungstypen 03. Dezember 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Datentypen Die bisher benutzten Datentypen waren
MehrZeiger und dynamischer Speicher
Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Zuletzt aktualisiert: 09.12.2013, 07:49 Uhr
MehrVorsemesterkurs Informatik Übungsaufgaben. Tag 4a - Python
Vorsemesterkurs Informatik Übungsaufgaben Tag 4a - Python Aufgabe 1: Listen Mache dich im Python-Interpreter mit dem Umgang mit Listen vertraut. Kapitel 2.6 im Skript (s.40) enthält nützliche Informationen.
MehrTag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)
Tag 5 Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Methoden Deklaration
MehrInformatik 1 ( ) D-MAVT F2010. Kontrollanweisungen 1, ASCII. Yves Brise Übungsstunde 3
Informatik 1 (251-0832-00) D-MAVT F2010 Kontrollanweisungen 1, ASCII Inhalt Ziele: Prüfungsaufgabe Festigung & Repetition Kontrollstrukturen Bemerkung zu Übungsabgabe: Wenn möglich die Zeilenlänge in Dateien
MehrDynamische Datentypen
Dynamische Datentypen Tupel und Folgen o Wertebereich eines Structs / einer Klasse: T1 T2... Tk Werte sind k-tupel Tupel und Folgen o Wertebereich eines Structs / einer Klasse: T1 T2... Tk Werte sind k-tupel
MehrÜbung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil
MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches
MehrAlgorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems
4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um
MehrProgrammierkurs C++ Lösungen zum Übungsblatt 3. Nils Eissfeldt und Jürgen Gräfe. 2. November Aufgabe 5
Zentrum für Angewandte Informatik Köln Arbeitsgruppe Faigle / Schrader Universität zu Köln Lösungen zum Übungsblatt 3 Programmierkurs C++ Nils Eissfeldt und Jürgen Gräfe. November 001 Aufgabe 5 Innerhalb
MehrInformatik I (D-ITET)
Ablauf Informatik I (D-ITET) Übungsstunde 5, 26.10.2009 simonmayer@student.ethz.ch ETH Zürich Nachbesprechung Übung 3 Besprechung/Vertiefung der Vorlesung [21.10.2009] Vorbesprechung Übung 5 2.c) Test
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29
Kapitel 2 Einführung in C++ Seite 1 von 29 C++ Zeichensatz - Buchstaben: a bis z und A bis Z. - Ziffern: 0 bis 9 - Sonderzeichen: ; :,. # + - * / % _ \! < > & ^ ~ ( ) { } [ ]? Seite 2 von 29 Höhere Elemente
MehrProgrammiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 7. Funktionen Einleitung Nach dem Prinzip Divide and Conquer bietet es sich an, größere Aufgaben in kleinere Teile zu unterteilen. Anweisungsblöcke,
Mehr