Rangierbahnhof

Werbung
Rangierbahnhof
Auf einem Güterbahnhof gibt es drei Gleise A, B, und C. Die Gleise sind nach rechts offen.
Links ist jeweils ein Puffer. Zunächst stehen alle Wagons auf Gleis A. Die Wagons tragen
Nummern, wobei man die Nummer jedoch erst dann sieht, wenn der Wagon der vorderste an
der offenen Gleisseite ist. (Zwischen den Wagons herumzuturnen, um die anderen
Wagonnummern zu lesen wäre zu gefährlich.) Ziel ist es, alle Wagons ins Gleis C zu fahren
und zwar so, dass die Nummern der Wagons vom Puffer aus aufsteigend in richtiger
Reihenfolge sind. Gleis B ist ein Abstellgleis, das zum Rangieren benutzt werden kann.
Nimm das Material (bestehend aus den nach rechts offenen Gleisen (Zeilen) A, B und C und
Papierstückchen für die Wagons 16, 11,15, 14). Zu Beginn sollen die Wagons 16,11,15,14 in
dieser Reihenfolge (von links ausgehend) auf Gleis A stehen.
a) Simuliere nun von Hand den Rangiervorgang mit dem die Wagons in die richtige
Reihenfolge auf Gleis C gebracht werden. Finde ein Verfahren für diese konkrete
Situation. Schreibe deine Lösung (schrittweise) auf.
b) Analysiere dein Vorgehen mit Aussagen wie: „Wagons werden solange von A nach C
gebracht wie ....“, „Wenn...,werden ... Wagons in B abgestellt...“.
c) Finde einen allgemeinen Algorithmus (ein allgemein mögliches Verfahren) für das
Rangieren der Wagons. Du darfst dazu auch weitere Beispiele von Hand ausprobieren,
bei denen zum Beispiel die Wagons in einer anderen Reihenfolge stehen. Du darfst
auch weitere Wagons hinzunehmen. (Tipp: Die Rollen der Gleise können getauscht
werden. Zunächst ist A das Startgleis, B das Rangiergleis und C das Zielgleis. Diese
Rollen können vertauscht werden, wenn A leer ist, kann dies das Rangiergleis
werden.)
d) Es soll ein entsprechendes Java-Projekt geschrieben werden. Welche Klassen
empfiehlst du?
e) Ergänze die Klassen RangierProgramm und Gleis der Vorlage für das RangierProgramm in Java.
Gleis A
Gleis B
Gleis C
16
11
15
14
Alternative zu Teilaufgabe c):
Teste den folgenden Rangieralgorithmus, indem du ihn schrittweise am vorgegebenen
Beispiel im Java-Projekt Handrangieren durchgehst und ausführst. Hier sind die Gleise um
90° gedreht, so dass sie nach oben statt nach rechts offen sind.
Rangierverfahren
verschiebeWagen (...a,....b,....c) {
solange (das Startgleis nicht leer ist){
solange ((Wagennummer im Ziel kleiner als Wagennummer am Start)oder(Zielgleis leer)) {
fahre vom Startgleis ins Zielgleis
}
solange ((Start nicht leer )und(Wagennummer im Ziel größer als am Start)) {
fahre wagen vom Zielgleis aufs Abstellgleis
}
}
wenn (Abstellgleis nicht leer)// Rollentausch von Start- und Abstellgleis:
verschiebeWagen(b,a,c) //b wird Startgleis, denn diese Wagen müssen noch ins Ziel,
// a wird Rangiergleis, c bleibt Ziel
}
Herunterladen