Wissenschaftliches Rechnen

Ähnliche Dokumente
Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil

Objektorientierung. Programmierstarthilfe WS 2010/11 Fakultät für Ingenieurwissenschaften und Informatik

Übung Notendarstellung

Übungen zur Vorlesung EINI (WS 2010) Blatt 11

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Klausur in Programmieren

Algorithmen und Datenstrukturen Sommersemester Übung Abgabe bis , 10:00 Uhr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

Klausur: Informatik, am 11. Juli 2013 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Hochschule Darmstadt Informatik-Praktikum SS 2018 EIT Bachelor 3. Aufgabenblatt Funktionen - Unterprogramme

Ziele sind das Arbeiten mit Funktionen (Modularisierung, Parameterübergabe), sowie - Reihentyp (Array)

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Schriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 23. Januar 2017

Programmierung für Mathematik HS10

Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Klausur: Informatik, am 11. Juli 2013 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Klausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: F Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Schriftlicher Test zu C++ (90 Minuten) VU Einführung ins Programmieren für TM. 22. Juni 2012

Grundlagen der Informatik

C++ Teil 4. Sven Groß. 30. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 16

Probeklausur Java Einführung in die Informatik. Wintersemester 2014/2015

Probeklausur C/C++ Einführung in die Informatik. Wintersemester 2016/2017

Informatik. Wiederholung Felder (Arrays), string. Vorlesung

Programmierung für Mathematik (HS13)

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Schriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 25. Jänner 2016

Klausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: E Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Klausur Informatik WS 2012/13

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Übung Programmierung WS 2007/08 - Blatt 6

12 Abstrakte Klassen, finale Klassen und Interfaces

Angewandte Mathematik in OOP WS 2011/12. Abschluss-Test

Probeklausur Java Einführung in die Informatik. Wintersemester 2014/2015. Musterlösung

Semestralklausur Einführung in die Programmierung, WS 2007/08, Seite 1/5 Name, Vorname, Matrikelnummer: Gruppe A

Grundlagen der Informatik

Nachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe.

Übung zur Vorlesung EidP (WS 2018/19) Blatt 4

hue13 January 30, 2017

c) Zur Ausgabe der Transaktion soll statt print der Operator << verwendet werden.geben Sie die dazu nötigen Änderungen an.

Klausur in Programmieren

Programmierung für Mathematik HS11

Einfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Aufgabe 1. Universität Duisburg-Essen Fachbereich Mathematik Dr. O. Rheinbach

Klausur. 2. Aufgabe (3 Punkte) Ergänzen Sie die leeren Zellen derart, dass sich in einer Zeile die selben Zahlenwerte ergeben.

Projekt 3 Variablen und Operatoren

DAP2 Praktikum Blatt 1

Javakurs für Anfänger

Praktikum zur Vorlesung Einführung in die Programmierung WS 14/15 Blatt 3

Klausur: Informatik, am 13. August 2015 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Variablen, Konstanten und Datentypen

Hello World! Eine Einführung in das Programmieren Variablen

6 ZEIGER UND REFERENZEN - ALLGEMEINES

Übungskomplex Reelle Zahlen. Rechnen mit Gleitkommazahlen

Objektorientierte Anwendungsentwicklung

Info-2, Klausurvorbereitung, SS 2016

Vorlesung Objektorientierte Programmierung Klausur

Einführung in die Praktische Informatik. Übungsblatt 10. Dr. U. Köthe Heidelberg, 11. Januar 2017

Objektorientierung Grundlagen

Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Institut für Programmierung und Reaktive Systeme 7. Mai Programmieren II. 11. Übungsblatt

Einführung in die Programmierung Wintersemester 2017/18

Einführung in die Programmierung Wintersemester 2010/11

Programmieren, Wintersemester 13/14 Übungsleiter: Sebastian Ebers Aufgabenblatt 3

Hochschule Darmstadt Informatik-Praktikum WS 2016/2017 WIng Bachelor 4. Aufgabenblatt Modularisierung, Funktionen, Unterprogramme

Einführung in die Programmierung

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

Programmierung für Mathematik HS11

Abgabe: (vor 12 Uhr)

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2009/10

Abend 4 Übung : Erweitern von Klassen durch Vererbung

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik

Übung Informatik I - Programmierung - Blatt 8

Vorbereitende Aufgaben

Pseudo-Programmiersprache

Die Formel für die Standardabweichung lautet (ohne die Wurzel haben wir die Varianz):

Schriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 24. Juni 2016

Aufgabe 16. Aufgabe 17

Universität zu Lübeck Institut für Telematik. Prof. Dr. Stefan Fischer

Repetitorium Programmieren I + II

Grundlagen C und C++ Einheit 04: Weitere Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme

Prüfung Softwareentwicklung II (IB)

Institut für Programmierung und Reaktive Systeme 19. August Programmier-Labor. 1. Übungsblatt

1 Stückweise konstante Funktionen (ca =10 Punkte)

Übungspaket 12 Der Datentyp char

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

14 Abstrakte Klassen, finale Klassen, Interfaces

Informatik 1 MaVt FS Übung 10

Abschlußtest Programmieren 30. Juni 2017 Name: Punkte von 32: Gruppe: Haase-Di Haase-Do Stanek-Di Stanek-Do

Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Labor Software-Entwicklung 1

Ein kleiner Blick auf die generische Programmierung

Transkript:

Institut für Numerische und Angewandte Mathematik 11.04.2012 FB Mathematik und Informatik der Universität Münster Prof. Dr. Christian Engwer, Dipl. Math. Dipl. Inf. Sebastian Westerheide Übung zur Vorlesung Wissenschaftliches Rechnen SS 2012 Blatt 0 Abgabe: Keine Abgabe (Anwesenheitsaufgaben) Aufgabe 1 (Wertebereich von Basisdatentypen) Schreiben Sie ein Programm, welches eine positive ganze Zahl einliest und in einem short int speichert. Addieren Sie anschließend 1 auf die Zahl und geben Sie das Ergebnis aus. (a) Was passiert, wenn Sie 32.767 eingeben? (b) Was passiert, wenn Sie 65.535 eingeben? (c) Was passiert, wenn Sie statt eines short int einen unsigned short int verwenden und die Eingaben wiederholen? (d) Was passiert, wenn Sie long int verwenden und die Eingaben wiederholen? (e) Was passiert, wenn Sie stattdessen 1 addieren und Sie 0 eingeben? Aufgabe 2 (Primzahlen) Schreiben Sie ein Programm das alle Primzahlen bis n sucht und ausgibt, wobei n eine vom Benutzer festzulegende natürliche Zahl ist. Überlegen Sie sich einen einfachen Algorithmus um zu testen, ob eine Zahl prim ist Führen Sie diesen Test für alle Zahlen bis n durch Aufgabe 3 (Fakultät) Schreiben Sie ein Programm, welches die Fakultät n! = 1 2... n für alle ganzen Zahlen 0 < n 10 berechnet und ausgibt. Verlagern Sie die Fakultätsberechnung in eine Prozedur int fakultaet (int n) Das Hauptprogramm soll diese Prozedur für die gewünschten Werte von n aufrufen Hinweis: Die Prozedur fakultaet kann sowohl iterativ als auch rekusiv implementiert werden.

Aufgabe 4 (Fehlersuche) 1 #i n c l u d e <iostream > 3 // summiert a l l e Zahlen im I n t e r v a l l [ a, b ] i n t summieren ( i n t a, i n t b ) 5 { i n t summe ; 7 f o r ( i n t i=a ; i<=b ; i ++) { 9 i n t summe = summe + i ; 11 r e t u r n 0 ; 13 i n t main ( ) 15 { std : : cout << summieren ( 1, 1 0 ) << std : : endl ; 17 r e t u r n 0 ; Das obige Programm soll alle Zahlen von 1 bis 10 aufsummieren. Obwohl es syntaktisch korrekt ist, rechnet es falsch. Der Code enthält drei Fehler. Finden und reparieren Sie diese. Aufgabe 5 (Fehlersuche 2) #i n c l u d e <iostream > 2 i n t main ( ) 4 { std : : cout << " Flaeche : " << f l a e c h e ( 6. 5, 5. 5 ) << std : : endl ; 6 r e t u r n 0 ; 8 double f l a e c h e ( double laenge, double hoehe ) 10 { double e r g e b n i s ; 12 e r g e b n i s = l a e n g e hoehe ; r e t u r n e r g e b n i s ; 14 Das obige Programm soll die Fläche eines Rechtecks berechnen, kann jedoch nicht fehlerfrei übersetzt werden. Finden und korrigieren Sie den Fehler.

Institut für Numerische und Angewandte Mathematik 18.04.2012 FB Mathematik und Informatik der Universität Münster Prof. Dr. Christian Engwer, Dipl. Math. Dipl. Inf. Sebastian Westerheide Übung zur Vorlesung Wissenschaftliches Rechnen SS 2012 Blatt 0 Abgabe: Keine Abgabe (Anwesenheitsaufgaben) Aufgabe 6 (Klassen und Objekte: Quadratische Funktionen) Univariate quadratische Funktionen lassen sich allgemein durch folgende Normalform beschreiben: f(x) = ax 2 + bx + c mit a, b, c, x R. (a) Schreiben Sie eine Klasse QuadF zur Repräsentation solcher quadratischer Funktionen. Dem Konstruktor der Klasse sollen dabei die drei Koeffizienten a, b und c als Parameter übergeben werden können, welche dann in Attributen eines von Ihnen sinnvoll zu wählenden Datentyps gespeichert werden. Zusätzlich zu dem Konstruktor soll die Klasse die drei Methoden geta, getb und getc zur Verfügung stellen, mit denen die Koeffizienten einer Funktion ausgelesen werden können. Achten Sie darauf, die Attribute der Klasse QuadF vor Zugriffen aus fremden Klassen zu schützen. (b) Ergänzen Sie die Klasse QuadF um eine Methode double evaluate (double x), die den Wert der Funktion für den übergebenen Parameter x berechnet und das Ergebnis zurückgibt. (c) Jede der oben beschriebenen Funktionen (mit a 0) besitzt eine Stelle, an der die Funktion einen Extremwert (Minimum oder Maximum) annimmt. Bestimmen Sie allgemein die x-koordinate der Extremstelle einer solchen Funktion und fügen Sie der Klasse QuadF eine Methode double getextremepos () hinzu, welche die x-koordinate der Extremstelle zurückgibt. (d) Schreiben Sie ein Hauptprogramm TestQuadF, dessem Prozedur main zwei unterschiedliche Instanzen der Klasse QuadF angelegt und die Koeffizienten, die Extremstelle sowie den zugehörigen Extremwert der Funktionen auf der Konsole ausgibt.

Aufgabe 7 (Abstrakte Klassen, Vererbung, Virtuelle Methoden) (a) Schreiben Sie ein eine abstrakte Klasse Expression zur Repräsentation arithmetischer Ausdrücke in C++. Die Klasse soll eine abstrakte Methode evaluate () definieren, die zur Berechnung des Wertes eines arithmetischen Ausdrucks dient und als Ergebnis eine Zahl von Typ double zurückgibt. Außerdem soll die Klasse eine Methode int compareto (const Expression& exp2) enthalten, die den Wert des Ausdrucks mit dem des übergebenen Ausdrucks vergleicht und 1, 0 oder 1 zurückgibt, wenn der Wert kleiner, gleich oder größer als der Wert von exp2 ist. (b) Implementieren Sie die konkreten Klassen Constant, Sum und Product als Unterklassen der Klasse Expression. Die Klasse Constant dient dabei der Darstellung konstanter Zahlen vom Typ double, die vom Konstruktor in ein Attribut value gespeichert werden. Die Konstruktoren der Klassen Sum und Product zur Realisierung von Summen bzw. Produkten sollen jeweils zwei Objekte vom Typ const Expression& entgegennehmen und in geeigneten, vor Zugriffen von außen gekapselten Attributen speichern. Natürlich ist in allen drei Klassen die Methode evaluate () auf sinnvolle Weise zu implementieren. (c) Schreiben Sie ein Testprogramm ExpressionTest, welches verschiedene arithmetische Ausdrücke erzeugt und sämtliche Methoden der Klassen auf sinnvolle Weise überprüft. Bei den Tests sollen mindestens die folgenden Ausdrücke verwendet werden: ((5 8) + 2), (3 (2 + 9)) und ((2 + 4) (6 + 1)) (d) Jeder arithmetische Ausdruck soll mit Hilfe einer Methode std::string tostring () in einer lesbaren Weise dargestellt werden können. Überlegen Sie sich, wie solch eine Methode sinnvollerweise implementiert werden kann (welche Rolle spielt insbesondere die Klasse Expression), implementieren und testen Sie die Methode. Achten sie auf eine korrekte Klammerung der Ausdrücke. Aufgabe 8 (Klassen und Objekte: Zahlentripel) Die Klasse Triple soll in der Lage sein, drei ganze Zahlen in der beim Anlegen einer Instanz der Klasse festgelegten Reihenfolge in Attributen a, b und c zu speichern. (a) Realisieren Sie die Klasse Triple in C++. (b) Erweitern Sie die Klasse um eine Methode bool containszero (), die genau dann true zurückgibt, wenn mindestens einer der gespeicherten Werte in einem Triple- Objekt null ist. (c) Implementieren Sie innerhalb der Klasse Triple eine Methode getmin (), die den kleinsten der drei in einem Objekt gespeicherten Werte zurückgibt.

(d) Um große Mengen von Zahlentripeln effizienter Verwalten zu können, wird ein Kriterium benötigt, nach dem die Tripel in eine gewisse Ordnung gebracht werden können. Schreiben Sie zu diesem Zweck eine Methode bool isgreater (const Triple& t2) die überprüft, ob das Zahlentripel, dessen isgreater-methode aufgerufen wird, elementweise größer ist als das als Parameter übergebene Tripel.