Programmierung für Mathematik (HS13)

Ähnliche Dokumente
Einführung in die Programmierung WS 2009/10. Übungsblatt 7: Imperative Programmierung, Parameterübergabe

Klausur Grundlagen der Programmierung

Programmierkurs Java

Java Übung. Übung 3. Werner Gaulke. 2. Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

JAVA für Nichtinformatiker - Probeklausur -

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

public static void main(string[] args) {

Aufgabe 1 (12 Punkte)

Welche Informatik-Kenntnisse bringen Sie mit?

5. Tutorium zu Programmieren

Übungsstunde 3. Einführung in die Programmierung

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

AuD-Tafelübung T-B5b

Informatik B von Adrian Neumann

3. Anweisungen und Kontrollstrukturen

Klassenvariablen, Klassenmethoden

Informatik I Eprog HS12

Übungen zu Programmieren - Code-Formatierung -

Einstieg in die Informatik mit Java

Probeklausur: Programmierung WS04/05

JAVA - Methoden

Fragenkatalog ESOP WS 16/17

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

JAVA - Methoden - Rekursion

Objektorientierte Programmierung OOP Programmieren mit Java

Klausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java im Wintersemester 2015/16

Sommersemester Jewgeni Rose. Technische Universität Braunschweig

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

Nachholklausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java WS1415

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15

PROGRAMMIERUNG IN JAVA

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Einstieg in die Informatik mit Java

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Musterlösung Stand: 5. Februar 2009

Einführung in die Programmierung Vorlesungsprüfung

Programmieren I + II Regeln der Code-Formatierung

Einführung in die Programmierung

Einführung in die Programmierung für NF MI. Übung 04

Primitive Datentypen

Einfache Rechenstrukturen und Kontrollfluss II

Programmieren I + II Regeln der Code-Formatierung

Einführung in das Programmieren Probeklausur Lösungen

Einstieg in die Informatik mit Java

Einführung in C. EDV1-04C-Einführung 1

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

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

Intensivübung zu Algorithmen und Datenstrukturen

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Probeklausur Informatik 2 Sommersemester 2013

Wiederholung der Endklausur am 24. September 2013

Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben

Klausur Software-Entwicklung März 01

Übungsblatt 2. Java Vorkurs (WS 2017)

Schöner Programmieren

Aufgabenblatt 5. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt:

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Einstieg in die Informatik mit Java

Einführung in die Programmierung und Programmiersprachen (OOP)

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Programmierkurs Java

Einstieg in die Informatik mit Java

Java Cheatsheet. Mehrzeiliger Kommentar (beginnt mit /* und endet mit */)

Vorlesung Programmieren

Klausur Einführung in die Informatik I für Elektrotechniker 16. Juli 2003

Schöner Programmieren

Java: Eine kurze Einführung an Beispielen

Einstieg in die Informatik mit Java

2 Teil 2: Nassi-Schneiderman

Anweisungen zur Ablaufsteuerung

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Arbeitsblatt zu Methoden

Javakurs für Anfänger

Wissenschaftliches Rechnen

Übungsblatt 2. Java Vorkurs (WS 2015)

Abgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen:

Einführung in die Informatik 1

Transkript:

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 main-methode stehen würde: a) 1 String foo = "FOO"; 2 String bar = "bar"; 3 foo.concat(bar).tolowercase(); 4 System.out.println(foo); 5 System.out.println(bar); b) 1 int a = 1; 2 int b = a/a--; 3 System.out.println(b); c) 1 double x = 0.99; 2 int y = (int) x; 3 System.out.println(y); d) 1 double x = 0.5; 2 int y = 2; 3 System.out.println(y*x); e) 1 for (int i = 0; i <= 12; i = i+5) { 2 System.out.println(i%3); 3 } 1

f) 1 String foo = "FOO"; 2 if (foo.tolowercase() == "foo") 3 System.out.println("Equals!"); 4 else 5 System.out.println("Not equals!"); g) 1 int i = 1; 2 while (i < 5) { 3 i++; 4 if (i == 3) 5 break; 6 System.out.println(i); 7 } 2

2 Aufgabe: Richtig oder Falsch? 2.1 Aufgabenstellung Entscheiden Sie für die folgenden Aussagen, ob sie jeweils wahr oder falsch sind. Markieren Sie die wahren Aussagen. Jede for Schleife kann in eine while Schleife umgewandelt werden. Jede void Methode muss ein return Statement besitzen. In jeder Klasse muss mindestens ein Konstruktor explizit definiert werden. Jede Iteration kann in eine Rekursion umgewandelt werden und umgekehrt. 1stDigit ist ein gültiger Name für eine Klasse Statische Methoden können nicht-statische Methoden der selben Klasse aufrufen. Eine statische Methode kann eine Instanzvariable referenzieren. Um Strings zu vergleichen sollte immer die equals-methode und nicht == verwendet werden. Um einen boolschen Ausdruck der Form a && b zu evaluieren verwendet Java Short-Circuit Evaluation. Das heisst, wenn die Variable a den Wert false hat, wird b nicht mehr evaluiert. Ein switch Statement muss immer auch einen default Case haben. 3

3 Aufgabe: Algorithmus 3.1 Aufgabenstellung Schreiben Sie eine Methode, die das kleinste gemeinsame Vielfache der Zahlen zwischen 1 und einem Parameter upperbound berechnet. Hinweis: 60 ist beispielsweise das kleinste gemeinsame Vielfache der Zahlen von 1 bis inklusive 5. 4

4 Aufgabe: Recursion 4.1 Aufgabenstellung Das Pascal sche Dreieck stellt die Binomialkoeffizienten (n,k) geometrisch dar. Das Dreieck ist so angeordnet, dass jeder Eintrag die Summe der zwei darüberstehenden Einträge ist. Dieser Sachverhalt kann mit der folgenden Formel beschrieben werden: C(n, k) = C(n 1, k) + C(n 1, k 1) Wobei n als Zeilenindex und k als Spaltenindex interpretiert wird. Die Zählung beginnt bei 0. Schreiben Sie ein Programm, das mit Hilfe einer rekursiven Methode die Werte des Pascal schen Dreickecks berechnet. Eine zweite Methode wird dazu benutzt, die ersten 100 Zeilen eines Pascal schen Dreiecks auf die Kommandozeile auszugeben. 5

5 Aufgabe: Klassen-Design 5.1 Aufgabenstellung Schreiben Sie eine Klasse Triangle, welche ein Dreieck repräsentieren soll. Im Konstruktor der Klasse sollen die drei Seitenlängen eines Dreieckes als double Werte übergeben werden. Schreiben Sie eine Methode die die Fläche des Dreieckes mit Hilfe der Heron Formel berechnet. Die Heron-Formel ist folgendermassen definiert: wobei A = s(s a)(s b)(s c) s = (a + b + c)/2 Hinweis: Die Klasse java.lang.math bietet eine Methode public static double sqrt(double a), die die Quadratwurzel des Parameters a zurückgibt. 5.2 Aufgabenstellung Fügen Sie Ihrer Klasse eine Methode addtriangle(triangle anothertriangle) hinzu, mit deren Hilfe Sie die Fläche eines anderen Dreiecks addieren können. Das Resultat soll als double Wert zurückgeliefert werden. 6

6 Aufgabe: Sieb des Eratosthenes 6.1 Aufgabenstellung Das Sieb des Eratosthenes kann zur schnellen Berechnung von Primzahlen verwendet werden. Zu diesem Zweck werden zuerst alle Zahlen von 0 bis zum einem Maximalwert M aufgeschrieben. Am Anfang sind alle Zahlen markiert und potentielle Primzahlen. Danach wird die kleinste Primzahl gesucht. Ist diese gefunden, werden alle Vielfachen dieser Primzahl unmarkiert. Anschliessend wird die nächst grössere Primzahl gesucht und wiederum werden alle Vielfachen dieser Primzahl unmarkiert. Dieser Vorgang wird so lange durchgeführt, bis das Quadrat der aktuellen Primzahl grösser als der Maximalwert M ist. Die verbleibenden markierten Zahlen sind Primzahlen. Schreiben Sie ein Programm, das diesen Algorithmus implementiert. Verwenden sie dazu ein eindimensionales Array vom Typ boolean um die Markierungen der Zahlen von 0 bis 100 zu speichern. Um die markierten Zahlen darzustellen setzen Sie das entsprechende Feld im Array auf true und um unmarkierte Zahlen darzustellen auf false. Hinweis: Die kleinste Primzahl ist 2. 7

7 Aufgabe: Vererbung 7.1 Aufgabenstellung Bilden Sie folgenden Sachverhalt auf ein Interface, sowie auf Klassen, Attribute und Methoden ab. Verwenden Sie wenn möglich für Klassen-, Attribut- und Methodennamen die Begriffe, die in Klammern vorgegeben sind: Abonnenten (Subscriber), können sich bei verschiedenen News-Diensten (Newsletter) anmelden und erhalten dann stets Neuigkeiten zum Thema ihrer Wahl, sobald diese verfügbar werden (Abonnenten sollen erhaltene News einfach auf die Kommandozeile ausgeben). Jeder Dienst bietet News zu einem Thema (topic) an. News-Dienste können nun wie folgt konfiguriert werden: Dienste können sich auf ein sehr spezifisches Thema festlegen, also z.b. ein Dienst auf News zum Thema Neuerscheinungen DVDs, ein anderer zum Thema Neuerscheinungen Bücher. Dienste können sich aber auch bei mehreren anderen Diensten anmelden (d.h. sie können selber auch als Abonnenten auftreten) und senden in dem Fall ihren eigenen Abonnenten die gesammelten News zu einem breiteren Themenkreis. Ein Beispiel wäre ein Dienst mit News zum Thema Neuerscheinungen Medien, der sich sowohl bei dem Dienst mit dem Thema Neuerscheinungen DVDs, als auch jenem mit dem Thema Neuerscheinungen Bücher anmeldet und sämtliche Neuigkeiten zu den beiden Themen an seine Abonnenten weiterleitet. 8