Methode an einem Pap erklären?

2 Antworten

Dieses Programm macht tatsächlich nur das, was es im Startknoten schon verrät, wobei ich einmal anmerken möchte: Der Name des Programms gehört eigentlich nicht in den Startknoten und auch die Inhalte der anderen Knoten sind etwas unkonventionell gewählt.

Zurück zum Programmablauf: An sich soll eine Liste an Objekten auf der Konsole ausgegeben werden. Bei diesen Objekten handelt es sich um Panzer (tank).

System.out.println ist eine Ausgabemethode in Java, um eine Zeichenkette in der Konsole auszugeben. Aus der Liste an Panzern wird der aktuelle Panzer (i) geholt (via get) und dann dessen toString-Methode aufgerufen. Die toString-Methode gibt an sich eine Repräsentation des Panzers in Form einer Zeichenkette zurück. Das könnte bspw. der Name des Panzers sein oder eine Kurzbeschreibung. Konkret wird es hier nicht definiert.

Zu den Symbolen:

Start- und Endknoten sollten klar sein. Bei dem Rechteck handelt es sich um den Aufruf eines Subprogramms (also im Java-Jargon der println-Methode).

Die Raute ist eigentlich dazu gedacht, eine einfache Verzweigung zu präsentieren (Ist eine Aussage wahr? Wenn ja, tu dies, sonst das). In diesem PAP wird das Symbol aber missbraucht bzw. falsch eingesetzt. Eigentlich sollte der Ablauf so aussehen:

  Start
    |
  i = 0 (Anweisung)
    |
--> i < tankListe.size() -----
|   |                        |
|   | ja                     | nein
|   |                        |
|  println (Subprogramm)     |
|   |                        |
-- i = i + 1                Ende

Meine Zeichnung ist an dieser Stelle natürlich etwas primitiv, vergleiche am besten mit der Auflistung von hier.

Die Variable i müsste jedenfalls in einer eigenen Anweisung ganz am Anfang erstellt werden. Die Raute prüft nur ihren Zustand und je nachdem geht es weiter in den Pfad ja / nein. Im positiven Fall wird die println-Methode ausgeführt, dann i um 1 erhöht und danach folgt der Sprung zurück zur Raute. Im negativen Fall wird das Programm beendet.

Start sollte klar sein , genauso wie ende

der diamant ist ein IF bzw WENN

WENN Bedingung Wahr DANN ja SONST nein

die FOR SCHLEIFE . Itteriert über die variable this.tank.Liste.size() , aufsteigend +1

bei WAHR (gibts also) soll tank i als string ausgegeben werden

bei FALSCH gehts zum ende.