MMProg:WiSe2014:Praktikum:Probeprüfung: Unterschied zwischen den Versionen

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 3: Zeile 3:
'''Anmerkung:''' Die Probeprüfung bildet nur den ersten Teil des tatsächlichen Prüfungspraktikums ab.
'''Anmerkung:''' Die Probeprüfung bildet nur den ersten Teil des tatsächlichen Prüfungspraktikums ab.
Der zweite Teil besteht darin ein Spiel zu vervollständigen, welches nach dem MVC-Paradigma programmiert wurde.
Der zweite Teil besteht darin ein Spiel zu vervollständigen, welches nach dem MVC-Paradigma programmiert wurde.
Der Aufbau der Aufgabe orientiert sich stark an den Praktikumsaufgaben, insbesondere Aufgaben 5, 6 und 7.


==Vorbereitung==
 
 
==Teil 1==
 
 
 
===Vorbereitung===


Speichern Sie zunächst die für die Probeprüfung notwendigen
Speichern Sie zunächst die für die Probeprüfung notwendigen
[https://praktikum.multimedia.hs-augsburg.de/svn/lawrence/praktikum/probepruefung/vorlage/ Dateien]
[https://praktikum.multimedia.hs-augsburg.de/svn/lawrence/praktikum/probepruefung/vorlage/ Dateien]
auf Ihrem Rechner ab.
auf Ihrem Rechner ab.
==Aufgaben==


Bearbeiten Sie die nachfolgenden Aufgaben, indem Sie ausschliesslich die Datei "index.js" entsprechend modifizieren.
Bearbeiten Sie die nachfolgenden Aufgaben, indem Sie ausschliesslich die Datei "index.js" entsprechend modifizieren.
Zeile 17: Zeile 22:
Nutzen Sie die in der Datei "log.js" definierte global verfügbare Funktion <code>log()</code> um Ihre Nachrichten auszugeben.
Nutzen Sie die in der Datei "log.js" definierte global verfügbare Funktion <code>log()</code> um Ihre Nachrichten auszugeben.
Öffnen Sie zu gegebenen Zeitpunkten die Datei "index.html" im Browser um die Korrektheit Ihres Codes zu überprüfen.
Öffnen Sie zu gegebenen Zeitpunkten die Datei "index.html" im Browser um die Korrektheit Ihres Codes zu überprüfen.


===Aufgabe 1===
===Aufgabe 1===


Geben Sie den String "MMProg Probeprüfung WiSe 2014/2015" (ohne Anführungszeichen) aus.
Geben Sie den String "MMProg Probeprüfung WiSe 2014/2015" (ohne Anführungszeichen) aus.




===Aufgabe 2===
===Aufgabe 2===


Erzeugen Sie die Variable "reason"und weisen Sie ihr den String "Vorbereitung auf die Prüfung" als Wert zu.
Erzeugen Sie die Variable "reason" und weisen Sie ihr den String "Vorbereitung auf die Prüfung" als Wert zu.
Geben Sie dann die zuvor erzeugte Variable "resason" aus, vorangestellt durch die Zeichenkette "Zweck: ".
Geben Sie dann die zuvor erzeugte Variable "reason" aus, vorangestellt durch die Zeichenkette "Zweck: ".
 




Zeile 36: Zeile 45:
* Name: number, Wert: 2
* Name: number, Wert: 2


Geben Sie dann die Eigenschaften aus in der Reihenfolge building, floor, number, wobei nach floor ein Punkt stehen soll.
Geben Sie dann die Eigenschaften aus in der Reihenfolge "building", "floor", "number", wobei nach "floor" ein Punkt stehen soll.
 




===Aufgabe 4===
===Aufgabe 4===


Erzeugen Sie die Variable "topics" und weisen Sie ihr ein Array zu mit den Werten "Variablen", "Objekte" und "Funktionen".
Erzeugen Sie die Variable "topics" und weisen Sie ihr ein dreistelliges Array zu mit den Werten "Variablen", "Objekte" und "Funktionen".


Geben Sie zunächst die Länge des Arrays "topics" aus, vorangestellt durch den String "Anzahl der Themen: ".
Geben Sie zunächst die Länge des Arrays "topics" aus, vorangestellt durch den String "Anzahl der Themen: ".
Geben Sie außerdem noch das erste Element des Arrays aus, vorangestellt durch den String "Erstes Thema: ".
Geben Sie außerdem noch das erste Element des Arrays aus, vorangestellt durch den String "Erstes Thema: ".




Zeile 54: Zeile 65:
Folgende Logik soll dazu implementiert werden:
Folgende Logik soll dazu implementiert werden:
* Ist die Zahl kleiner als 10, wird die Kombination aus dem String "0" und dem String-Wert der Zahl zurückgegeben
* Ist die Zahl kleiner als 10, wird die Kombination aus dem String "0" und dem String-Wert der Zahl zurückgegeben
* Ist die Zahl größer/gleich als 10, wird ihr String-Wert" zurükgegeben
* Ist die Zahl größer/gleich als 10, wird ihr String-Wert zurükgegeben


'''Tipp:''' Nutzen Sie die Funktion <code>toString()</code> von "roomNumber" um den String-Wert zu erhalten.
'''Tipp:''' Sie können auf einer Variable die Funktion <code>toString()</code> aufrufen um ihren String-Wert zu erhalten.


Beispielausgaben:
Beispielausgaben:
* 2  => "02"
* 2  => "02"
* 10 => "10"
* 10 => "10"




===Aufgabe 6===
===Aufgabe 6===


In dieser Aufgabe sollen eine Prüfung mit zwei Aufgaben als stark vereinfachtes Objektmodell abgebildet werden.
In dieser Aufgabe sollen Sie eine Prüfung mit zwei Aufgaben als stark vereinfachtes Objektmodell abgebildet werden.


Erzeugen Sie die Objekte "exerciseObject1" und "exerciseObject1" mit den Eigenschaften "task" und "solution".
Erzeugen Sie zunächst die Objekte "exerciseObject1" und "exerciseObject1" mit den Eigenschaften "task" und "solution".


Objekt 1 erhält folgende Werte:
Objekt 1 erhält folgende String-Werte:
* Für "task" den Wert "Define the variable "greeting" with value 'Hello World'"
* "task" => "Define the variable 'greeting' with value 'Hello World'"
* Für "solution" den Wert "var greeting = "Hello World";"
* "solution" => "var greeting = 'Hello World';"
Objekt 2 erhält folgende Werte:
Objekt 2 erhält folgende String-Werte:
* Für "task" den Wert "Define the array "numbers" with the values 1, 2, 3"
* "task" => "Define the array 'numbers' with the values 1, 2, 3"
* Für "solution" den Wert "var numbers = [1, 2, 3];"
* "solution" => "var numbers = [1, 2, 3];"


Erzeugen Sie dann das Objekt "examObject" welches die beiden Eigenschaften "title" und "exercises" erhält.
Erzeugen Sie dann das Objekt "examObject" welches die beiden Eigenschaften "title" und "exercises" erhält.
"title" wird mit dem Wert "Probeprüfng" belegt, "exercises" mit einem Array welches die beiden Aufgaben-Objekte enthält.
"title" wird mit dem Wert "Probeprüfng" belegt, "exercises" mit einem Array welches die beiden Aufgaben-Objekte enthält.


Das Prüfungsobjekt erhält die Funktion "getTasks", welche die Eigenschaft "task" der enthaltenden Aufgaben als Array zurückgeben soll.
Das Prüfungsobjekt erhält außerdem eine Funktion namens "getTasks", welche ein neues Array erzeugt,
dieses mit der Eigenschaft "task" '''aller''' enthaltenen Aufgaben befüllt und das Array zurückgibt.
Dabei gilt es die Funktion so zu implementieren, dass sie immer korrekt funktioniert,
unabhängig davon wieviele und welche Aufgaben das Prüfungsobjekt aktuell enthält.


Rufen Sie die Funktion "getTasks" des Prüfungsobjekts auf und geben Sie das Ergebnis mit der <code>log()</code>-Funktion aus.
Rufen Sie die Funktion "getTasks" des Prüfungsobjekts auf und geben Sie das Ergebnis mit der <code>log()</code>-Funktion aus.
Die Ausgabe sollte in diesem Fall aus einem Array mit zwei String-Einträgen bestehen.




Zeile 88: Zeile 105:
In dieser Aufgabe sollen Sie den oben beschriebenen Sachverhalt nun mithilfe von Konstruktorfunktionen abbilden.
In dieser Aufgabe sollen Sie den oben beschriebenen Sachverhalt nun mithilfe von Konstruktorfunktionen abbilden.
Dabei gilt es eine Konstruktorfunktion namens "Exercise" und eine namens "Exam" zu implementieren.
Dabei gilt es eine Konstruktorfunktion namens "Exercise" und eine namens "Exam" zu implementieren.
"Exercise" akzeptiert die Argumente "question" und "solution" und weist diese der jeweiligen Instanz zu.
"Exercise" akzeptiert die Argumente "task" und "solution" und weist diese der jeweiligen Instanz zu.
"Exam" akzeptiert die beiden Argumente "title" und "exercises" und weist diese ebenso der jeweiligen Instanz zu.
"Exam" akzeptiert die beiden Argumente "title" und "exercises" und weist diese ebenso der jeweiligen Instanz zu.


Zeile 99: Zeile 116:


Rufen Sie die Funktion "getTasks" ebenso auf der erzeugten Instanz auf und geben Sie die Rückgabewerte aus.
Rufen Sie die Funktion "getTasks" ebenso auf der erzeugten Instanz auf und geben Sie die Rückgabewerte aus.
Die Ausgabe sollte in diesem Fall aus einem Array mit zwei String-Einträgen bestehen.




Zeile 108: Zeile 126:


Wenn Sie die Seite nun im Browser betrachten sollten die ausgegebenen Nachrichten leicht grau hinterlegt sein.
Wenn Sie die Seite nun im Browser betrachten sollten die ausgegebenen Nachrichten leicht grau hinterlegt sein.




Zeile 118: Zeile 137:
Erzeugen Sie dann einen *geeigneten* und sich wiederholenden Timer welcher ungefähr jede Sekunde die Funktion aufruft.
Erzeugen Sie dann einen *geeigneten* und sich wiederholenden Timer welcher ungefähr jede Sekunde die Funktion aufruft.
Begründen Sie kurz in einem Code-Kommentar warum die Ausgabe der vergangenen Sekunden nie ganz korrekt sein wird.
Begründen Sie kurz in einem Code-Kommentar warum die Ausgabe der vergangenen Sekunden nie ganz korrekt sein wird.




Zeile 123: Zeile 143:


Erzeugen Sie einen globalen Event-Listener für das "keyup"-Event auf dem <code>document</code>-Objekt.
Erzeugen Sie einen globalen Event-Listener für das "keyup"-Event auf dem <code>document</code>-Objekt.
In der Callback-Funktion soll überprüft werden ob der "keycode" den Wert 32 besitzt.
In der Callback-Funktion soll überprüft werden ob der "keycode" des Events den Wert 32 besitzt.
Ist dies der Fall, so soll die Variable "pastSeconds" auf 0 zurückgesetz werden und die Nachricht
Ist dies der Fall, so soll die Variable "pastSeconds" wieder auf 0 zurückgesetzt werden und die Nachricht
"Timer wurde zurückgesetzt" ausgegeben werden.
"Timer wurde zurückgesetzt" mithilfe von <code>log()</code> ausgegeben werden.
 





Aktuelle Version vom 12. Januar 2015, 19:26 Uhr

MMProg Probeprüfung WiSe 2014/2015

Anmerkung: Die Probeprüfung bildet nur den ersten Teil des tatsächlichen Prüfungspraktikums ab. Der zweite Teil besteht darin ein Spiel zu vervollständigen, welches nach dem MVC-Paradigma programmiert wurde. Der Aufbau der Aufgabe orientiert sich stark an den Praktikumsaufgaben, insbesondere Aufgaben 5, 6 und 7.


Teil 1

Vorbereitung

Speichern Sie zunächst die für die Probeprüfung notwendigen Dateien auf Ihrem Rechner ab.

Bearbeiten Sie die nachfolgenden Aufgaben, indem Sie ausschliesslich die Datei "index.js" entsprechend modifizieren. Fügen Sie den Code für die einzelnen Aufgaben der Übersichtlichkeit halber immer nach den zugehörigen Kommentaren ein.

Nutzen Sie die in der Datei "log.js" definierte global verfügbare Funktion log() um Ihre Nachrichten auszugeben. Öffnen Sie zu gegebenen Zeitpunkten die Datei "index.html" im Browser um die Korrektheit Ihres Codes zu überprüfen.


Aufgabe 1

Geben Sie den String "MMProg Probeprüfung WiSe 2014/2015" (ohne Anführungszeichen) aus.


Aufgabe 2

Erzeugen Sie die Variable "reason" und weisen Sie ihr den String "Vorbereitung auf die Prüfung" als Wert zu. Geben Sie dann die zuvor erzeugte Variable "reason" aus, vorangestellt durch die Zeichenkette "Zweck: ".


Aufgabe 3

Erzeugen Sie die Variable "room" und weisen Sie dieser ein Objekt mit den folgenden Eigenschaften zu:

  • Name: building, Wert: "M"
  • Name: floor, Wert: 3
  • Name: number, Wert: 2

Geben Sie dann die Eigenschaften aus in der Reihenfolge "building", "floor", "number", wobei nach "floor" ein Punkt stehen soll.


Aufgabe 4

Erzeugen Sie die Variable "topics" und weisen Sie ihr ein dreistelliges Array zu mit den Werten "Variablen", "Objekte" und "Funktionen".

Geben Sie zunächst die Länge des Arrays "topics" aus, vorangestellt durch den String "Anzahl der Themen: ". Geben Sie außerdem noch das erste Element des Arrays aus, vorangestellt durch den String "Erstes Thema: ".


Aufgabe 5

Erzeugen Sie eine Funktion namens "formatRoomNumber" welche eine Raumnummer für die Anzeige entsprechend formatieren soll. Die Funktion akzeptiert ein numerisches Argument namens "roomNumber" und gibt die formatierte Nummer als String zurück.

Folgende Logik soll dazu implementiert werden:

  • Ist die Zahl kleiner als 10, wird die Kombination aus dem String "0" und dem String-Wert der Zahl zurückgegeben
  • Ist die Zahl größer/gleich als 10, wird ihr String-Wert zurükgegeben

Tipp: Sie können auf einer Variable die Funktion toString() aufrufen um ihren String-Wert zu erhalten.

Beispielausgaben:

  • 2 => "02"
  • 10 => "10"


Aufgabe 6

In dieser Aufgabe sollen Sie eine Prüfung mit zwei Aufgaben als stark vereinfachtes Objektmodell abgebildet werden.

Erzeugen Sie zunächst die Objekte "exerciseObject1" und "exerciseObject1" mit den Eigenschaften "task" und "solution".

Objekt 1 erhält folgende String-Werte:

  • "task" => "Define the variable 'greeting' with value 'Hello World'"
  • "solution" => "var greeting = 'Hello World';"

Objekt 2 erhält folgende String-Werte:

  • "task" => "Define the array 'numbers' with the values 1, 2, 3"
  • "solution" => "var numbers = [1, 2, 3];"

Erzeugen Sie dann das Objekt "examObject" welches die beiden Eigenschaften "title" und "exercises" erhält. "title" wird mit dem Wert "Probeprüfng" belegt, "exercises" mit einem Array welches die beiden Aufgaben-Objekte enthält.

Das Prüfungsobjekt erhält außerdem eine Funktion namens "getTasks", welche ein neues Array erzeugt, dieses mit der Eigenschaft "task" aller enthaltenen Aufgaben befüllt und das Array zurückgibt. Dabei gilt es die Funktion so zu implementieren, dass sie immer korrekt funktioniert, unabhängig davon wieviele und welche Aufgaben das Prüfungsobjekt aktuell enthält.

Rufen Sie die Funktion "getTasks" des Prüfungsobjekts auf und geben Sie das Ergebnis mit der log()-Funktion aus. Die Ausgabe sollte in diesem Fall aus einem Array mit zwei String-Einträgen bestehen.


Aufgabe 7

In dieser Aufgabe sollen Sie den oben beschriebenen Sachverhalt nun mithilfe von Konstruktorfunktionen abbilden. Dabei gilt es eine Konstruktorfunktion namens "Exercise" und eine namens "Exam" zu implementieren. "Exercise" akzeptiert die Argumente "task" und "solution" und weist diese der jeweiligen Instanz zu. "Exam" akzeptiert die beiden Argumente "title" und "exercises" und weist diese ebenso der jeweiligen Instanz zu.

"Exam" weist der erzeugten Instanz auch eine Funktion "getTasks" zu, welche sich genauso wie oben beschrieben verhält.

Erzeugen Sie dann mittels dem "Exercise"-Konstruktor die beiden Objekte "exerciseInstance1" und "exerciseInstance2". "exerciseInstance1" erhält die gleichen Werte wie "exerciseObject1", "exerciseInstance2" wie "exerciseObject2".

Erzeugen Sie mittels dem "Exam"-Konstruktor das Objekt "examInstance" als Pendant zu "examObject".

Rufen Sie die Funktion "getTasks" ebenso auf der erzeugten Instanz auf und geben Sie die Rückgabewerte aus. Die Ausgabe sollte in diesem Fall aus einem Array mit zwei String-Einträgen bestehen.


Aufgabe 8

Suchen Sie im ersten Schritt das DOM-Element mit der Klasse "messages" aus dem aktuellen Dokument. Weisen Sie dessen CSS-Objektmodell dann als Hintergrundfarbe den Wert "#EEE" zu.

Wenn Sie die Seite nun im Browser betrachten sollten die ausgegebenen Nachrichten leicht grau hinterlegt sein.


Aufgabe 9

Erzeugen Sie eine Variable namens "pastSeconds" und initialisieren Sie diese mit dem Wert 0. Erzeugen Sie die Funktion "updateAndLogPastSeconds", welche die Variable "pastSeconds" um eins erhöht und deren aktuellen Wert vorangestellt durch den String "Vergangene Sekunden" ausgibt.

Erzeugen Sie dann einen *geeigneten* und sich wiederholenden Timer welcher ungefähr jede Sekunde die Funktion aufruft. Begründen Sie kurz in einem Code-Kommentar warum die Ausgabe der vergangenen Sekunden nie ganz korrekt sein wird.


Aufgabe 10

Erzeugen Sie einen globalen Event-Listener für das "keyup"-Event auf dem document-Objekt. In der Callback-Funktion soll überprüft werden ob der "keycode" des Events den Wert 32 besitzt. Ist dies der Fall, so soll die Variable "pastSeconds" wieder auf 0 zurückgesetzt werden und die Nachricht "Timer wurde zurückgesetzt" mithilfe von log() ausgegeben werden.


Musterlösung

Vergleichen Sie Ihre Lösungen der Aufgaben mit der Musterlösung.