Pseudocódigo é, como o nome indica, não é um código real, mas parece um código. Ajuda as pessoas a entender melhor um domínio ou solução de problema sem ter que adicionar toda a bagagem necessária ao usar um idioma real.
Em resumo: é usado apenas para fins ilustrativos.
Pseudocódigo e programação
Não há definição ou regra fixa de pseudocódigo, ele pode ser diferente a cada vez. Não é uma linguagem de programação (real) e ninguém a considerará. Ele não pode ser compilado ou usado como uma linguagem de programação real: se você puder fazer isso, deixa de ser pseudocódigo. O pseudocódigo não precisa ser determinístico (uma necessidade para os computadores compilarem), mas precisa ser entendido pelos seres humanos. Para usar o pseudocódigo, você precisará convertê-lo para sua linguagem de programação favorita. Esse processo de conversão pode ser diferente a cada vez e nenhuma regra pode ser dada, porque, novamente, o pseudocódigo é como a liberdade de expressão: pode assumir qualquer forma.
Usos
É comumente usado, especialmente na fase de design dos projetos, para ajudar a entender uma certa abordagem de um problema. Também é comumente usado no design de algoritmos, ou quando os professores desenham algo no quadro. Em todos esses casos, não é necessário compilar o código, você apenas deseja entender o problema / solução.
Tipos de pseudocódigo O pseudocódigo
pode ser, mas não precisa ser de um determinado tipo, ou seja, você pode ter um pseudocódigo baseado em pilha para ilustrar o MSIL, pode ter um pseudocódigo imperativo para ilustrar Java, C #, C ++, Python, você pode ter um pseudocódigo funcional para ilustrar F #, Haskell, SQL etc.
Exemplos
Do alto da minha cabeça, mas vale tudo, porque o pseudocódigo pode ser inventado no local:
Pseudocódigo XML, mostrando uma estrutura de cabeça + corpo que permite vários elementos p:
<head ...
<title ...
</
<body ...>
(<p>...)+
</
Pseudocódigo imperativo, mostrando o problema do diamante em idiomas que suportam herança múltipla:
class A() { readFile(); }
class B() : A {} // overrides readFile in A
class C() : A {} // overrides readFile in A
class D() : B, C {} // what definition of readFile should be used?
Os dois exemplos acima obviamente se assemelham a algum (tipo de) idioma, mas não são realmente esse idioma e não podem ser compilados. Eles ilustram algo que você deseja explicar.