Chociaż pseudo-kod wydaje się bliższy kodowi niż algorytmowi, w praktyce pseudo-kod jest mniej formalny i jest opisem na wyższym poziomie. Na przykład możesz opisać komputer do gry w szachy jako pseudo kod taki jak ten:
- umieść początkowe elementy na swoich miejscach
- tablica pokazowa
- dopóki gra się nie skończyła
- wykonać ruch i wyświetlić planszę
- monituj użytkownika o przeniesienie
- spraw, aby użytkownicy się poruszali
Tak, jest to pseudokod, jest pomocny jako dobry punkt wyjścia, ale przeskakuje przez wiele szczegółów. Nie uwzględnia trudności i wariantów implementacji, ale największą zaletą jest to, że pozwala na konceptualizację całej sytuacji bez konieczności rozwiązywania wszystkich szczegółów.
Możesz to zmienić, dodając jeszcze jeden poziom:
- umieść początkowe elementy na swoich miejscach
- tablica pokazowa
- podczas gdy na planszy nie ma szachu ani losowania
- sporządzić listę legalnych ruchów białych
- wybierz najlepszy według niektórych kryteriów
- wykonaj ten ruch i oblicz wynikową tablicę
- sprawdź, czy nastąpił mat i remis
- wyświetlacz
- sporządzić listę legalnych ruchów czarnych
- monituj użytkownika o legalny ruch w celu wprowadzenia danych
- wykonaj ten ruch i oblicz wynikową tablicę
- sprawdź, czy nastąpił mat i remis
- wyświetlacz
Teraz możesz napisać pseudokod dla każdego z głównych kroków, na przykład „wykonaj listę legalnych ruchów czarnych”, na przykład:
- za każdy czarny kawałek
- dla typu sztuki w danej lokalizacji
- sporządzić listę następnych możliwych lokalizacji
Teraz widzisz, że moc pseudokodu polega na tym, że potrafi on pokazać całą sytuację za jednym razem, a następnie pozwala ci odnosić się do szczegółów kawałek po kawałku. Słabość polega na tym, że każdy krok nie jest zdecydowanie prostym krokiem.
Algorytm zazwyczaj wybiera jeden z tych kroków i wyszczególnia różne struktury danych w języku symbolicznym, abyś mógł skutecznie osiągnąć cel tego kroku.
Na przykład get_legal_moves(board, color)
jest wart projektowania algorytmu:
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:....
Widać, że algorytm musi być bardzo precyzyjny, aby był użyteczny.
Zapewnia kilka rzeczy: przede wszystkim osiągnięcie celów bez błędów. Kroki są bardzo szczegółowe i można je wykonać w sposób zmechanizowany, a kroki są na tyle małe, że można je zmienić ich kolejność, aby zwiększyć wydajność (szybkość), z jaką kończy się zadanie.