Obwohl Pseudocode dem Code näher zu sein scheint als ein Algorithmus, ist Pseudocode in der Praxis weniger formal und eine Beschreibung auf höherer Ebene. Zum Beispiel können Sie einen Schachspielcomputer wie folgt als Pseudocode beschreiben:
- Platziere die ersten Stücke an ihren Orten
- Anzeigetafel
- während das Spiel noch nicht vorbei ist
- bewegen und Anzeigetafel
- Benutzer zum Verschieben auffordern
- Benutzer bewegen
Ja, dies ist ein Pseudocode, der als guter Ausgangspunkt hilfreich ist, aber viele Details überdeckt. Implementierungsschwierigkeiten und -variationen werden nicht berücksichtigt. Der größte Vorteil besteht jedoch darin, dass Sie die gesamte Situation konzipieren können, ohne alle Details lösen zu müssen.
Sie können es überarbeiten und eine weitere Ebene hinzufügen:
- Platziere die ersten Stücke an ihren Orten
- Anzeigetafel
- während das Brett nicht schachmatt oder unentschieden ist
- Machen Sie eine Liste der legalen Schritte von Weiß
- Wählen Sie die besten nach bestimmten Kriterien
- Mach diesen Zug und berechne die resultierende Karte
- Sehen Sie nach, ob ein Schachmatt oder ein Unentschieden stattgefunden hat
- Anzeigetafel
- Machen Sie eine Liste der legalen Züge von Schwarz
- Eingabeaufforderung für den legalen Schritt
- Mach diesen Zug und berechne die resultierende Karte
- Sehen Sie nach, ob ein Schachmatt oder ein Unentschieden stattgefunden hat
- Anzeigetafel
Jetzt können Sie für jeden der Hauptschritte Pseudocode schreiben, z. B. "Liste der legalen Schritte von Schwarz erstellen":
- für jedes schwarze Stück
- für Stückart in einem gegebenen Standort
- Machen Sie eine Liste der nächsten möglichen Standorte
Jetzt können Sie sehen, dass die Stärke von Pseudocode darin besteht, die gesamte Situation auf einmal darzustellen und dann Details Stück für Stück zu adressieren. Die Schwäche ist, dass jeder Schritt kein bestimmter einfacher Schritt ist.
Ein Algorithmus greift normalerweise einen dieser Schritte auf und beschreibt verschiedene Datenstrukturen in einer symbolischen Sprache, damit Sie das Ziel des Schritts effizient erreichen können.
Ist zum Beispiel get_legal_moves(board, color)
eines Algorithmusentwurfs würdig:
get_legal_moves(board, color):
for i,j in board_dimensions
if piece_at i,j is of color
if piece type is KNIGHT
add the following to the next moves list:
location i+1 j+2, i-1 j+2... etc
if piece type is rook
add locations:....
Sie können sehen, dass der Algorithmus sehr genau sein muss, um nützlich zu sein.
Es stellt mehrere Dinge sicher: dass die Ziele in erster Linie fehlerfrei erreicht werden. Die Schritte sind sehr detailliert und mechanisiert ausführbar und so klein, dass Sie sie neu anordnen können, um die Effizienz (Geschwindigkeit) zu erhöhen, mit der Sie die Aufgabe abschließen.