Anche se lo pseudo-codice sembra più vicino al codice di un algoritmo, in pratica lo pseudo-codice è meno formale ed è una descrizione di livello più elevato. Ad esempio, puoi descrivere un computer che gioca a scacchi come uno pseudo codice come questo:
- posizionare i pezzi iniziali nelle loro posizioni
- mostra bordo
- mentre il gioco non è finito
- fare mossa e tabellone
- richiedere all'utente di spostarsi
- far muovere gli utenti
Sì, questo è pseudocodice, è utile come un buon punto di partenza, ma ripercorre molti dettagli. Non tiene conto delle difficoltà e delle variazioni di implementazione, ma il vantaggio maggiore è che consente di concettualizzare l'intera situazione senza dover risolvere tutti i dettagli.
Puoi rivederlo, aggiungendo un altro livello in questo modo:
- posizionare i pezzi iniziali nelle loro posizioni
- mostra bordo
- mentre la tavola non è scacco matto o pareggio
- fare una lista delle mosse legali del bianco
- scegli il meglio secondo alcuni criteri
- fai quella mossa e calcola la scheda risultante
- vedere se si è verificato scacco matto o pareggio
- tabellone
- fai una lista delle mosse legali del nero
- richiedere all'utente una mossa legale per l'input
- fai quella mossa e calcola la scheda risultante
- vedere se si è verificato scacco matto o pareggio
- tabellone
Ora puoi scrivere pseudocodice per ciascuno dei passaggi principali come "fai un elenco delle mosse legali del nero", in questo modo:
- per ogni pezzo nero
- per il tipo di pezzo in una data posizione
- fare un elenco delle prossime posizioni possibili
Ora puoi vedere che il potere dello pseudocodice è davvero nella sua capacità di mostrare l'intera situazione in una volta sola e quindi permetterti di affrontare i dettagli pezzo per pezzo. Il punto debole è che ogni passo non è un semplice passo definito.
Un algoritmo in genere rileva uno di questi passaggi e descrive in dettaglio varie strutture di dati in un linguaggio simbolico in modo da poter raggiungere in modo efficiente l'obiettivo del passaggio.
Ad esempio, get_legal_moves(board, color)
è degno di un design di algoritmo:
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:....
Puoi vedere che l'algoritmo deve essere molto preciso per essere utile.
Garantisce diverse cose: che gli obiettivi vengano raggiunti senza errori, innanzitutto. I passaggi sono molto dettagliati ed eseguibili in modo meccanizzato e i passaggi sono abbastanza piccoli da poterli riordinare per aumentare l'efficienza (velocità) con cui si termina l'attività.