Você está na página 1de 7

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.

 A máquina possui 2 operações e um teste:


 Somar 1 em b
 Subtrair 1 em a (quando a > 0)
 Testar se a = 0

 Sendo dois registradores em ℕ, o conjunto dos valores


possíveis da memória será dado pelo produto
cartesiano ℕ×ℕ, ou ℕ².
 Os valores de a serão representados pelo primeiro elemento
do par ordenado e os de b pelo segundo elemento
EXEMPLO: MÁQUINA DE DOIS REGISTRADORES
 Representação:
Dois_reg = (ℕ², ℕ, ℕ, armazena_a, retorna_b, { adiciona_b,
subtrai_a}, {a_zero})
 Onde:
 ℕ², ℕ, ℕ são os conjuntos dos valores de memória, entrada e
saída
 Armazena_a: função de entrada, tal que ∀n ∈ ℕ, armazena_a(n)
= (n, 0)
 Retorna_b: função de saída, tal que ∀(n, m) ∈ ℕ², retorna_b(n,
m) = m
 Adiciona_b: função tal que ∀(n, m) ∈ ℕ², adiciona_b(n, m) = (n,
m+1)
 Subtrai_a: função tal que ∀(n, m) ∈ ℕ², subtrai_a(n, m) = (n-1,
m) se n≠0; subtrai_a(0, m) = (0, m)
 A_zero: é interpretado pela função tal que ∀(n, m) ∈ ℕ²,
a_zero(0, m) = verdadeiro; a_zero (n, m) = falso (n > 0)
PROGRAMAS PARA UMA MÁQUINA
 Um programa P será válido para a máquina M se e
somente se cada identificador de operação e de
teste em P estiver associado à uma
correspondente função de operação ou de teste em
M.
 A máquina M pode ter operações ou testes que não
constem em P.
 A operação vazia () pode ser interpretada em
qualquer máquina.
EXEMPLOS PARA A MÁQUINA DE 2
REGISTRADORES
 1 – Programa monolítico
L1 faça armazena_a(4) vá para L2
L2 se a_zero então vá para L5 senão vá para L3
L3 faça subtrai_a vá para L4
L4 faça adiciona_b vá para L2
L5 faça retorna_b vá para L6

 2 – Programa iterativo
armazena_a(3)
até a_zero faça
(subtrai_a,
adiciona_b)
retorna_b

 3- Programa recursivo rec_ba


rec_ba é R onde
R def (se a_zero então ✓ senão S;R)
S def (subtrai_a; adiciona_b)

Você também pode gostar