Embora o pseudo-código pareça mais próximo do código do que um algoritmo, na prática, o pseudo-código é menos formal e é uma descrição de nível mais alto. Por exemplo, você pode descrever um computador jogando xadrez como um pseudo-código como este:
- coloque as peças iniciais em seus locais
- show board
- enquanto o jogo ainda não acabou
- fazer mover e exibir placa
- prompt de usuário para mover
- faça os usuários se moverem
Sim, esse é um pseudocódigo, é útil como um bom ponto de partida, mas encobre muitos detalhes. Ele não leva em consideração as dificuldades e variações de implementação, mas o maior benefício é que permite conceituar toda a situação sem precisar resolver todos os detalhes.
Você pode revisá-lo, adicionando mais um nível, assim:
- coloque as peças iniciais em seus locais
- show board
- enquanto o conselho não é xeque-mate ou empate
- faça uma lista dos movimentos legais das brancas
- escolha o melhor de acordo com alguns critérios
- faça esse movimento e calcule a placa resultante
- veja se ocorreu xeque-mate ou empate
- placa de exposição
- faça uma lista dos movimentos legais do preto
- prompt de usuário para mover legalmente a entrada
- faça esse movimento e calcule a placa resultante
- veja se ocorreu xeque-mate ou empate
- placa de exposição
Agora você pode escrever pseudocódigo para cada uma das principais etapas, como "faça uma lista dos movimentos legais do preto", da seguinte forma:
- para cada peça preta
- para o tipo de peça em um determinado local
- faça uma lista dos próximos locais possíveis
Agora você pode ver que o poder do pseudocódigo é realmente capaz de mostrar toda a situação de uma só vez e, em seguida, permitir que você lide com detalhes, peça por peça. O ponto fraco é que qualquer passo não é um passo simples e definitivo.
Um algoritmo geralmente seleciona uma dessas etapas e detalha várias estruturas de dados em uma linguagem simbólica, para que você possa cumprir com eficiência o objetivo da etapa.
Por exemplo, get_legal_moves(board, color)
é digno de um design 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:....
Você pode ver que o algoritmo precisa ser muito preciso para ser útil.
Ele garante várias coisas: que os objetivos sejam alcançados sem erros, em primeiro lugar. As etapas são muito detalhadas e executáveis de maneira mecanizada e são pequenas o suficiente para que você possa reordená-las para aumentar a eficiência (velocidade) com a qual você termina a tarefa.