Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
in einer Altklausur geht es darum, eine Methode (void fuegeEin (int w)) zu erstellen, die Einträge in eine sortierte Liste einfügt, so dass die Liste weiterhin aufsteigend sortiert ist.
In meinem Skript gibt es dann die u.g. rekursive Methode in der Klasse SortedList, die als einziges Attribut einen "head" vom Typ ListNode hat. Ich denke ich muss nicht weiter auf die Klasse ListNode eingehen. Weiter unten findet sich dann die Lösung aus der Altklausur, die ich mich stark verwundert, weil sie total von der Methode aus dem Skript abweicht und ich mir jetzt unsicher bin, warum hier eine ganz andere Methodendeklaration gewählt wird als im Skript angegeben.
Skript:
Java:
public class SortedList {
//Attribute
private ListNode head;
//Konstruktor
public SortedList() {
this.head = null;
}
//Methoden
public void add(int value) {
this.head = add(this.head, value);
}
private ListNode add(ListNode node, int value) {
if (node == null) {
return new ListNode (value, node);
}
if (node.getEntry() > value) {
return new ListNode(value, node);
}
node.setNext(add(node.getNext(), value));
return node;
}
}
Altklausur:
Java:
public class SortierteListe {
//Attribute
public ListNode head;
//Methoden
public void add (int w) {
ListNode newNode = new ListNode(w);
if (head == null) {
this.head = newNode;
}
if (this.head.value > w) {
newNode.next = this.head;
this.head = newNode;
return;
}
ListeNode current = head;
while (current.next != null && current.next.value < w) {
current = current.next;
}
newNode.next = current.next;
current.next = newNode;
}
}
Weiter unten findet sich dann die Lösung aus der Altklausur, die ich mich stark verwundert, weil sie total von der Methode aus dem Skript abweicht und ich mir jetzt unsicher bin, warum hier eine ganz andere Methodendeklaration gewählt wird als im Skript angegeben.
Vermutlich wollen die LVA-Leiter, dass ihr selbstständig eine Methode programmiert und nicht, dass ihr die Methoden aus dem Skript auswendig lernt. Es geht bei einer Programmieren Prüfung nun mal vor allem darum, Wissen anzuwenden und nicht auswendig Gelerntes wiederzugeben. Das sollte bei allen Prüfungen gelten, bei Programmieren ist das aber umso wichtiger.
Was wäre jetzt genau deine Frage?
Dass man selber Programme schreiben soll ist ja sicherlich richtig, aber für diese Klausur darf man einen Spickzettel mitnehmen. Ich hätte also einfach die Methode von dem Zettel abschreiben können. Trotzdem wird hier eine völlig andere Methode in der Lösung dargestellt.
Worauf ich hinaus will - die Lösung aus dem Skript tut es doch auch? Ich finde die Lösung aus dieser Klausur wesentlich unschöner! Mir geht's hier wie gesagt nicht, an der Lösung zu meckern sondern ich möchte wissen, ob sie der Methode aus dem Skript irgendwie überlegen ist.
Ich gehe mal davon aus, dass dabei stand, dass man die komplette Einfügelogik in der gefragten Methode schreiben sollte? Sprich: man soll/darf keine Hilfsmethode programmieren? Das wäre sinnvoll, sonst kann man tatsächlich einfach abschreiben. Wenn das so gewollt ist, finde ich das bedenklich.
Falls das allerdings nicht dabei stand nehme ich an, dass Skript und Referenzlösung von verschiedenen Personen geschrieben wurde, daher kommen verschiedene Ansätze raus. Nicht jeder programmiert schließlich gleich...
Was ich viel schlimmer finde, ist die Sprache.
Im Skript ist der Code auf Englisch und man gewöhnt sich natürlich daran. ListNode, next, head, getter und setter etc.
Die Lösung und der Code in der Altklausur ist auf Deutsch und ich habe das oben schon übersetzt, weil es sonst furchtbar ist.
Dabei fällt mir auch gerade auf, dass 'next' (welches dazu dient auf den nächsten Knoten zu verweisen) in der Altklausur als 'naechstes' genutzt wird. Gleichzeitig nutzt man 'naechstes' auch als getter für 'getNext()'.
Absolut furchtbar und da ich komplett neu bin und per Glück an diese Klausuren gekommen bin, kann ich mich an diesen Unfug für die Klausur gewöhnen. Hätte ich davon nichts gewusst, dann wäre ich mit diesen deutschen Codes in dee Klausur total verwirrt.