Escolar Documentos
Profissional Documentos
Cultura Documentos
Máquinas
Máquinas
CONSIDERAÇÕES INICIAIS
A máquina fornece todas as informações necessárias para
que se possa descrever a computação de um programa.
No programa: identificadores das operações e dos testes;
Na máquina: o significado de cada identificador e teste a ser
executado.
Cada identificador (operação ou teste) significa uma
transformação na estrutura da memória da máquina.
Essa transformação estará associada a uma função verdade,
e deve ser considerado que:
algumas operações ou testes podem não ser definidas em uma
máquina
operações válidas em uma máquina podem não o ser em outras.
a função verdade associada é única para cada operação ou
teste.
Além das operações e testes, a máquina deve descrever a
manipulação em sua memória (armazenamento ou
recuperação de informações).
DEFINIÇÃO FORMAL DE MÁQUINA
Uma máquina M é uma 7-upla da forma:
M=(V, X, Y, πX, πY, ∏F, ∏T)
Onde
V = conjunto dos valores de memória
X = conjunto dos valores de entrada
Y = conjunto dos valores de saída
πX = função de entrada (X→ V) (valores de entrada geram valores na
memória)
πY = função de saída (V→ Y) (valores na memória geram valores de
saída)
∏F = conjunto de interpretações de operações
a interpretação de uma operação F pela máquina M é uma função única IF tal
que IF = V→ V (valores de memória serão transformados em outros valores)
∏T = conjunto de interpretações de testes
a interpretação de um teste T pela máquina M é uma função IT única de forma
que IT = V → {verdadeiro/falso} (um teste em um valor de memória retornará
verdadeiro ou falso)
Observar que as funções associadas à máquina são totais
(nenhum elemento do domínio (entrada) ficará sem ter seu valor
de saída da função).
EXEMPLO: MÁQUINA DE DOIS REGISTRADORES
Dois registradores, a e b, como posições de memória.
Os registradores podem receber números naturais (ℕ).
Valores de entrada armazenados em a (b fica zerado);
Função de saída retorna o valor de b.
2 – Programa iterativo
armazena_a(3)
até a_zero faça
(subtrai_a,
adiciona_b)
retorna_b