Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Ähnliche Dokumente
Praktikum 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 2016/17. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2016/17. Vorbereitende Aufgaben

Praktikum 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 2015/16. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Vorbereitende Aufgaben

Vorbereitende Aufgaben

Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2018/19. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben

Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2016/17. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2016/17. Allgemeine Informationen zum Praktikum

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2016/17. Vorbereitende Aufgaben

Praktikum 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. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2018/19. Allgemeine Informationen zum Praktikum

DAP2 Praktikum Blatt 2

Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14

Eclipse Tutorial.doc

Android will doch nur spielen. Java Übung

Allgemeine Informatik II SS :30-13:30 Uhr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 10

DAP2 Praktikum Blatt 2

Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14

Technische Informatik für Ingenieure Winter 2005/2006 Übungsblatt Nr. 3

Ausgabe:

Grundlagen der OO- Programmierung in C#

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

Geoinformatik und Vermessung Prüfung 502 : Informatik (JAVA)

Technische Informatik für Ingenieure WS 2010/2011 Übungsblatt Nr. 3

Geoinformatik und Vermessung Prüfung 502 : Informatik (JAVA)

1. Aufgabe (6 Punkte): Java-Programmierung (Arrays)

Tag 4 Repetitorium Informatik (Java)

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

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

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

Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 3

einlesen n > 0? Ausgabe Negative Zahl

Informatik für Elektrotechnik und Informationstechnik

Algorithmen, Datenstrukturen und Programmieren I WS 2001/2002

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

Grundlagen der Programmierung WS 15/16 (Vorlesung von Prof. Bothe)

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

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2018/19. Allgemeine Informationen zum Praktikum

Übungen zum Bioinformatik-Tutorium. Blatt 3

Javakurs für Anfänger

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Arrays. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik

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

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

Java Einführung Klassendefinitionen

Java-Tutorium WS 09/10

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

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

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Allgemeine Informationen zum Praktikum

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

Institut fu r Informatik

Vorsemesterkurs Informatik Übungsaufgaben. Tag 4a - Python

Informatik 1 für Nebenfachstudierende Beispiele für Klausuraufgaben

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

7. Arrays. Beim Deklarieren und Initialisieren der Liste bräuchte man oft zueinander sehr ähnlichen Code:

Algorithmen und ihre Programmierung

Technische Universität Braunschweig

Martin Unold INFORMATIK. Geoinformatik und Vermessung

C/C++ Debugging mit CDT unter Eclipse

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

Javakurs für Anfänger

Algorithmen & Datenstrukturen Blatt 4

Programmiervorkurs Einführung in Java Tag 3

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

Informatik II Übung 1

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

Institut für Programmierung und Reaktive Systeme 7. Juli Programmieren II. Übungsklausur

Name: Matrikelnr : Aufgabe 1: (ca. 8 Punkte )

Name:... Matr.-Nr... Bearbeitungszeit: 120 Minuten. Lesen Sie die Aufgaben jeweils bis zum Ende durch; oft gibt es hilfreiche Hinweise!

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

Klausur zur Vorlesung Informatik 1 im Wintersemester 2014/2015 am 18. Februar Bearbeitungszeit: 90 Minuten Gesamtpunktezahl: 90 Punkte

2. Klausur zur Vorlesung Informatik 1 im Wintersemester 2014/2015 am 30. März Bearbeitungszeit: 90 Minuten Gesamtpunktezahl: 90 Punkte

Tag 4 Repetitorium Informatik (Java)

Einführung in die Java- Programmierung

Probeklausur Java Einführung in die Informatik. Wintersemester 2017/2018

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

Aufgabenblatt 3. Kompetenzstufe 2. Allgemeine Informationen zum Aufgabenblatt:

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

Arrays. Einleitung. Deklarieren einer Array Variablen

ÜBUNGS-BLOCK 7 LÖSUNGEN

Informatik Hochschule Mainz Geoinformatik und Vermessung. Wiederholung. Frohes Fest und Guten Rutsch!

Programmierkurs Java

Javakurs für Anfänger

GI Vektoren

Transkript:

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Marcel Preuß, Iman Kamehkhosh, Marc Bury, Diana Howey Übungsblatt 8 Besprechung: 04. 07.01.2016 (KW 1) Vorbereitende Aufgaben Dieses Übungsblatt beschäftigt sich mit Arrays und Sortieralgorithmen. Aufgabe 8.1: Manuelle Sortierung Gegeben ist folgendes Array: 7 12 3 2 21 9 In der Vorlesung (Kapitel 5.1) haben Sie einen Algorithmus zum Sortieren von Arrays kennengelernt. Dieser heißt Selectionsort. Sortieren Sie das Array nun mit dem Selectionsort-Verfahren. Notieren Sie dabei jede Tauschoperation: Übungsblatt 8 Seite 1 von 6

Debugging Mit Hilfe eines sog. Debuggers können Sie ein Programm zur Laufzeit analysieren. Eclipse bietet eine sehr einfache Möglichkeit dies umzusetzen. Sie können mit Hilfe von sog. Breakpoints Zeilen im Code angeben, an denen das Programm vor seiner Ausführung anhalten soll. Dazu müssen Sie nur links auf den Zeilenrand Ihres Quellcodes doppelklicken, so dass ein kleiner, blauer Punkt erscheint. Sie können den Breakpoint auf die selbe Art und Weise wieder entfernen. Der Eclipse-Debugger kann dann durch das Klicken auf den kleinen, grünen Käfer neben dem Run-Button gestartet werden. Debug-Button Wenn Sie das Programm über den Debugger starten, wird Eclipse seine Ansicht wechseln wollen, sobald ein Breakpoint erreicht wird. Akzeptieren Sie diesen Vorschlag. Ihr Quellcode wird in den unteren Teil des Bildschirms verschoben und in der oberen Hälfte des Bildschirms erscheinen Werkzeuge zum Analysieren Ihres Programmes. Zudem pausiert die Ausführung des Programmes am erreichten Breakpoint. Sie können sich in der oberen, rechten Tabelle alle lokalen Variablen mit ihren Werten ansehen. Im oberen Bereich ihrer Arbeitsumgebung können Sie durch das Klicken des grünen Pfeiles in Form eines Abspielen -Symboles den Programmfluss bis zum Erreichen des nächsten Breakpoints fortsetzen. Durch Klicken des sich rechts daneben befindenden Buttons mit dem Tooltip Step Over(F6) können Sie das Programm genau eine Anweisung durchführen lassen, um so schrittweise den Ablauf des Programmes zu beobachten. zum nächsten Breakpoint (links), schrittweise Ausführung (rechts) Wenn Sie zurück zur normalen Editor-Ansicht wechseln wollen, gibt es in der oberen, rechten Ecke des Bildschirms einen dafür vorgesehenen Reiter. Umschalten der Editor-Ansicht Übungsblatt 8 Seite 2 von 6

Präsenzaufgaben Aufgabe 8.2: Speicherverwaltung für Felder In dieser Aufgabe sollen Sie sich mit der Speicherverwaltung im Zusammenhang mit Arrays beschäftigen. Betrachten Sie das untenstehende Programmfragment. Es deklariert und initialisiert eine ganzzahlige Variable n und drei Felder von ganzen Zahlen a, b und c. Gehen Sie den Programmtext nun Zeile für Zeile durch und tragen Sie in das nebenstehende Diagramm ein, wie die einzelnen Speicherzellen im Laufe des Programms belegt und geändert werden. 1 int[] a; 2 a = new int[4]; 3 for (int i = 0; i < a.length; i++) { 4 a[i] = i; 5 } 6 int n = a.length - 1; 7 int[] b; 8 b = new int[n]; 9 for (int i = 0; i < b.length; i++) { 10 b[i] = a[i] + 10; 11 } 12 int[] c = new int[b.length]; 13 c = b; n a b c [0] [1] [2] [3] [0] [1] [2] [0] [1] [2] Aufgabe 8.3: Arrays mit variabler Länge In dieser Aufgabe sollen Sie lernen, ein Array einzulesen und auszugeben. Erstellen Sie ein neues Programm namens Lister im Paket blatt08. Das Programm Lister soll den Benutzer nach der Anzahl einzugebender Werte fragen und den Benutzer anschließend ebenso viele Zahlen eingeben lassen. Die Zahlen sollen dabei in einem Array entsprechender Größe gespeichert werden. Nachdem alle Zahlen eingelesen wurden, soll der Inhalt des Arrays in einer einzelnen Zeile auf der Konsole ausgegeben werden. Ein Programmablauf kann z. B. folgendermaßen aussehen: How many numbers do you want to list? 5 Please enter the next number: 6 Please enter the next number: 4 Please enter the next number: 2 Please enter the next number: 8 Please enter the next number: 9 You entered the following list: 6,4,2,8,9 Übungsblatt 8 Seite 3 von 6

Aufgabe 8.4: Arrays als Parameter In dieser Aufgabe sollen Sie lernen, Arrays als Parameter zu nutzen. Implementieren Sie eine Funktion printarray, die ein übergebenes int-array ausgibt. Implementieren Sie eine Funktion mit dem Namen swap, die keinen Wert zurückgibt und ein Array von Zahlen, sowie zwei Indizes entgegen nimmt und die Elemente im Array an den entsprechenden Indizes miteinander tauscht. Geben Sie das eingegebene Array im Lister-Programm mit der Funktion printarray aus. Verwenden Sie anschließend die Funktion swap um das erste mit dem letzten Element zu tauschen. Geben Sie die Liste erneut aus. Was fällt Ihnen auf, wenn Sie das mit den Erkenntnissen aus Aufgabe 6.4 vergleichen? Aufgabe 8.5: Bibliothek Erstellen In dieser Aufgabe sollen Sie eine Klasse programmieren, mit der Sie Arrays mit verschiedenen Eigenschaften erzeugen können. Erstellen Sie eine neue Klasse namens ArrayGenerator im Paket blatt08. Diese Klasse soll keine main-methode erhalten! Implementieren Sie die folgenden drei Funktionen in dieser Klasse: public static int[] generateascendingarray(int length) {...} public static int[] generatedescendingarray(int length) {...} public static int[] generaterandomarray(int length) {...} Die Funktionen generateascendingarray und generatedescendingarray sollen jeweils ein int-array erzeugen und es aufsteigend bzw. absteigend mit den Werten von 1 bis length befüllen. Für die Funktion generaterandomarray müssen Sie die Klasse Random aus dem Paket java.util importieren, so wie Sie es bereits mit dem Scanner getan haben: Mit Random random = new Random(); können Sie einen neuen Zufallsgenerator instanziieren. Mit random.nextint(bound) können Sie danach eine zufällige Zahl aus dem halboffenen Intervall [0, bound) erhalten. Verwenden Sie als bound die Länge des erzeugten Arrays. Übungsblatt 8 Seite 4 von 6

Aufgabe 8.6: Bibliothek verwenden In dieser Aufgabe sollen Sie die Funktionen der soeben definierten Klasse verwenden. Eine Klasse ohne main-methode, wie Ihre ArrayGenerator-Klasse, nennt man auch Bibliothek. Sie ist ein Ort, an dem man hilfreiche Funktionen finden kann. Verwenden Sie in der main-methode der Klasse Lister die soeben von Ihnen definierten Funktionen, um ein aufsteigendes, absteigendes und zufälliges Array der Länge 32 auszugeben. Schreiben Sie die Funktion arraymin, die das Minimum eines übergebenen int-arrays zurückgibt. Rufen Sie diese Funktion für die generierten Arrays auf. Schreiben Sie die Funktion average, die den Mittelwert eines übergebenen int-arrays berechnet und als double zurückgibt. Rufen Sie auch diese Funktion für die generierten Arrays auf. Übungsblatt 8 Seite 5 von 6

Ergänzende Aufgaben Aufgabe 8.7: Zeitmessung In dieser Aufgabe sollen Sie erneut eine bekannte Folge berechnen und Implementierungen vergleichen. In den vergangenen Aufgaben haben Sie die Fibonacci-Folge bereits kennengelernt. Hier wollen wir verschiedene Implementierungen vergleichen. a) Überlegen Sie sich eine rekursive Definition der Fibonacci-Folge. b) Implementieren Sie in der Klasse FibonacciComparison eine Funktion recfib, die einen int-wert n entgegen nimmt, die n-te Fibonacci-Zahl rekursiv berechnet und diese als long zurückgibt. c) Machen Sie aus Ihrer iterativen Implementierung der Fibonacci-Folge aus Blatt 5 eine Funktion itfib mit den selben Eigenschaften. d) Diese Implementierungen vergleichen wir nun miteinander: Die Funktion System.nanoTime() gibt einen Zeitstempel als long-wert zurück. Die Differenz zweier solcher Zeitstempel ist die zwischen den Aufrufen vergangene Zeit in Nanosekunden. Diese können wir verwenden, um Laufzeiten von Programmabschnitten zu messen. Rufen Sie in der main-funktion die rekursive und die iterative Berechnungsfunktion mit dem selben Wert auf. Messen Sie mit jeweils zwei Zeitstempeln die Laufzeit der jeweiligen Implementierung. Was fällt Ihnen auf? Was könnten Vor- und Nachteile der jeweiligen Implementierungen sein? Übungsblatt 8 Seite 6 von 6