faecher:informatik:oberstufe:modellierung:2018a:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:modellierung:2018a:start [16.12.2021 07:13] sbelfaecher:informatik:oberstufe:modellierung:2018a:start [16.12.2021 07:31] (aktuell) – [Teil 3] sbel
Zeile 1: Zeile 1:
 ====== Schatzssuche ====== ====== Schatzssuche ======
 +((Abituraufgabe 2018 in BW, Teil A)) 
  
 Im Folgenden sollen Teile eines Spiels implementiert werden, in dem zwei Schatzsucher auf Im Folgenden sollen Teile eines Spiels implementiert werden, in dem zwei Schatzsucher auf
Zeile 14: Zeile 14:
 leeres Feld, andernfalls kann mit ''feld[i][j]'' die Figur in der ''i''-ten Zeile und ''j''-ten Spalte angesprochen werden. Eine Figur kann entweder ein Akteur oder ein Schatz sein. leeres Feld, andernfalls kann mit ''feld[i][j]'' die Figur in der ''i''-ten Zeile und ''j''-ten Spalte angesprochen werden. Eine Figur kann entweder ein Akteur oder ein Schatz sein.
  
 +===== Teil 1 =====
  
----- 
 {{:aufgabe.png?nolink  |}} {{:aufgabe.png?nolink  |}}
-=== (A1) ===+=== (T1A1) ===
  
 Übertrage die UML-Klassendiagramme  -- ohne die Attribute und die Methoden -- auf dein Lösungsblatt und ergänze die Klassenbeziehungen, indem du die gerichteten Assoziationen und Vererbungen einzeichnest. Übertrage die UML-Klassendiagramme  -- ohne die Attribute und die Methoden -- auf dein Lösungsblatt und ergänze die Klassenbeziehungen, indem du die gerichteten Assoziationen und Vererbungen einzeichnest.
Zeile 26: Zeile 26:
 ---- ----
 {{:aufgabe.png?nolink  |}} {{:aufgabe.png?nolink  |}}
-=== (A2) ===+=== (T1A2) ===
 Implementiere die Klasse ''Position'' aus dem UML-Klassendiagramm. Implementiere die Klasse ''Position'' aus dem UML-Klassendiagramm.
  
 ---- ----
 {{:aufgabe.png?nolink  |}} {{:aufgabe.png?nolink  |}}
-=== (A3) ===+=== (T1A3) ===
  
 Implementieren Sie einen Konstruktor ''Spiel(weltGroesse: int)'' so, dass eine Implementieren Sie einen Konstruktor ''Spiel(weltGroesse: int)'' so, dass eine
Zeile 44: Zeile 44:
 ----  ---- 
 {{:aufgabe.png?nolink  |}} {{:aufgabe.png?nolink  |}}
-=== (A4) ===+=== (T1A4) ===
  
  
Zeile 59: Zeile 59:
 ----  ---- 
 {{:aufgabe.png?nolink  |}} {{:aufgabe.png?nolink  |}}
-=== (A5) ===+=== (T1A5) ===
  
 Beschreibe wie die Methode ''akteurNachLinks'' jeweils abgeändert werden müsste, wenn man auf das Attribut ''position'' in der Klasse Figur bzw. das Array ''feld'' in der Klasse Welt verzichten würde. Beschreibe wie die Methode ''akteurNachLinks'' jeweils abgeändert werden müsste, wenn man auf das Attribut ''position'' in der Klasse Figur bzw. das Array ''feld'' in der Klasse Welt verzichten würde.
 +
 +===== Teil 2 =====
 +
 +
 +{{:aufgabe.png?nolink  |}}
 +=== (T2A1) ===
 +
 +
 +Die Methode ''getManhattanDistanz(p1: Position, p2: Position): int''
 +in der Klasse Welt gibt das Ergebnis von ''abs(p1.getZeile()-p2.getZeile())
 ++ abs(p1.getSpalte()-p2.getSpalte())'' zurück.
 +
 +Dabei berechnet die Methode ''abs'' den aus der Mathematik bekannten Betrag.
 +
 +  * Begründe, dass die Methode ''getManhattanDistanz'' die Anzahl der Schritte angibt, die mindestens nötig sind, um von Position ''p1'' zu Position ''p2'' zu gelangen, wenn nur waagerechte und senkrechte Bewegungen erlaubt sind.
 +  * Implementiere die Methode ''getAnzahlNaeherbei(a: Akteur, b: Akteur): int'' in der Klasse Welt,
 +die die Anzahl der Felder zurückgibt, die näher bezüglich der Manhattan-Distanz bei Akteur ''a'' als bei Akteur ''b'' liegen.
 +
 +===== Teil 3 =====
 +
 +
 +
 +{{ :faecher:informatik:oberstufe:modellierung:2018a:spieleruml.png?240|}}
 +Das Schatzsuchespiel soll um eine Highscore-Liste erweitert werden. Dazu wird eine Klasse ''Spieler''
 +eingeführt mit den Attributen ''name'' und ''punkte''. In der Klasse Spiel wird zusätzlich noch eine
 +''spielerListe'' in Form eines Arrays verwaltet.
 +
 +Nach dem Abschluss eines Spiels wird der neue Spieler an das Ende der bereits absteigend sortierten Highscore-Liste angehängt. Dann wird die Liste neu sortiert.
 +
 +Bei Punktegleichstand soll derjenige Spieler weiter vorne in der Liste stehen, der diesen Punktstand zuerst erreicht hat. Sortierverfahren, die dies gewährleisten, nennt man **stabil**.
 +
 +{{ :faecher:informatik:oberstufe:modellierung:2018a:hs.png?400 |}}
 +---- 
 +{{:aufgabe.png?nolink  |}}
 +=== (T3A1) ===
 +Für das Sortieren werden zwei Algorithmen vorgeschlagen
 +
 +**Algorithmus I**
 +<code>
 +for i = 0 ... spielerAnzahl-1
 +    for j = 1 ... spielerAnzahl-1
 +        if (spielerListe[j-1].getPunkte() < spielerListe[j].getPunkte()) then
 +            tausche Spieler j mit Spieler (j-1) in spielerListe
 +       endif
 +    endfor
 +endfor
 +</code>
 +
 +**Algorithmus II**
 +
 +<code pseudocode>
 +for i = 0 ... spielerAnzahl-1
 +    bester = i
 +    for j = i+1 ... spielerAnzahl-1
 +        if (spielerListe[bester].getPunkte() < spielerListe[j].getPunkte()) then
 +            bester = j
 +        endif
 +    endfor
 +    tausche Spieler i mit Spieler bester in spielerListe
 +endfor
 +</code>
 +
 +
 +  * Gib jeweils an, welches Sortierergebnis nach der Ausführung der Algorithmen I und II bei der Anwendung auf die Highscore-Liste "vorher" vorliegt.
 +  * Analysiere die beiden Algorithmen, und entscheide ob diese stabil sind.
 +
 +
 +
 +
  • faecher/informatik/oberstufe/modellierung/2018a/start.1639638801.txt.gz
  • Zuletzt geändert: 16.12.2021 07:13
  • von sbel