Aunque el pseudocódigo parece más cercano al código que un algoritmo, en la práctica, el pseudocódigo es menos formal y es una descripción de más alto nivel. Por ejemplo, puede describir una computadora que juega ajedrez como un pseudocódigo como este:
- colocar piezas iniciales en sus ubicaciones
- mostrar tablero
- mientras el juego no ha terminado
- hacer movimiento y tablón de anuncios
- solicitar al usuario que se mueva
- hacer que los usuarios se muevan
Sí, este es un seudocódigo, es útil como un buen punto de partida, pero pasa por alto muchos detalles. No tiene en cuenta las dificultades y variaciones de implementación, pero el mayor beneficio es que le permite conceptualizar toda la situación sin tener que resolver todos los detalles.
Puede revisarlo, agregando un nivel más de esta manera:
- colocar piezas iniciales en sus ubicaciones
- mostrar tablero
- mientras el tablero no es jaque mate o sorteo
- hacer una lista de los movimientos legales de las blancas
- elige el mejor según algunos criterios
- hacer ese movimiento y calcular el tablero resultante
- ver si ha ocurrido jaque mate o empate
- tablero de visualización
- hacer una lista de los movimientos legales de las negras
- solicitar al usuario movimiento legal para la entrada
- hacer ese movimiento y calcular el tablero resultante
- ver si ha ocurrido jaque mate o empate
- tablero de visualización
Ahora puede escribir un pseudocódigo para cada uno de los pasos principales, como "hacer una lista de los movimientos legales de las negras", así:
- por cada pieza negra
- para tipo de pieza en una ubicación determinada
- hacer una lista de las siguientes ubicaciones posibles
Ahora puede ver que el poder del pseudocódigo está realmente en su capacidad de mostrar toda la situación de una vez y luego le permite abordar los detalles pieza por pieza. La debilidad es que cualquier paso no es un paso simple definido.
Un algoritmo generalmente recoge uno de estos pasos y detalla varias estructuras de datos en un lenguaje simbólico para que pueda cumplir eficientemente el objetivo del paso.
Por ejemplo, get_legal_moves(board, color)
es digno de un diseño de 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:....
Puede ver que el algoritmo tiene que ser muy preciso para ser útil.
Asegura varias cosas: que los objetivos se cumplirán sin errores, ante todo. Los pasos son muy detallados y ejecutables de forma mecanizada y los pasos son lo suficientemente pequeños como para que pueda reordenarlos para aumentar la eficiencia (velocidad) con la que finaliza la tarea.