You are on page 1of 20

MQUINAS UNIVERSAIS

TEORIA DA COMPUTAO

Introduo
MQUINA UNIVERSAL Torna possvel representar qualquer algoritmo como um programa

Evidncias
Evidncias:
Evidncia Interna: demonstrao de que qualquer extenso das capacidades da mquina no aumenta o seu poder computacional.
a)

Evidncia Externa: exame de outros modelos que definem a noo de algoritmo, juntamente com a prova de que so, no mximo, computacionalmente equivalentes.
a)
3

MQUINA NORMA (Mquina de Registradores)


Richard Bird

Possui como memria um conjunto infinito de registradores naturais e trs instrues sobre cada registrador:

adio do valor um subtrao do valor um teste se o valor armazenado zero


4

MQUINA NORMA (Mquina de Registradores)


Richard Bird

uma mquina extremamente simples, de tal forma que parece difcil acreditar que o seu poder computacional , no mnimo, o de qualquer computador moderno.

MQUINA NORMA (Mquina de Registradores)


Richard Bird
Algumas caractersticas de mquinas reais que podem ser simuladas:
a)

Operaes e Testes. Definio de operaes e testes mais complexos como adio, subtrao, multiplicao e diviso de dois valores e tratamento de valores diversos como os nmeros primos; Valores Numricos. Armazenamento de tratamento de valores numricos de diversos tipos como inteiros (negativos e nonegativos) e racionais; Dados Estruturados. Armazenamento de tratamento de dados estruturados como em arranjos (vetores uni e multidimensionais), pilhas, etc; Endereamento Indireto e recurso. Desvio para uma instruo determinada pelo contedo de um registrador; Cadeia de Caracteres. Definio e manipulao de cadeias de caracteres.

b)

c)

d)

e)

a) Operaes e Testes
Exemplos de operaes e testes no definidos na Mquina Norma: Atribuio de um Valor Natural a um Registrador
A macro de atribuio de um valor natural n a um registrador A, A := n, a generalizao do programa abaixo.

Programa Iterativo n := 3 A := 0; A := A+1; A := A+1; A := A+1

a) Operaes e Testes
Atribuio do Valor Zero a um Registrador A Programa Iterativo A := 0 at A = 0 faa(A := A 1)
pode-se

tratar a operao A := 0 como uma macro, ou seja, um trecho de programa que substitudo pela sua definio sempre que referenciado. Usando a macro A := 0, fcil construir macros para definir operaes de atribuio de um valor qualquer.

a) Operaes e Testes
Atribuio do Valor de um Registrador para outro Programa Iterativo A := B A := 0 at B = 0 faa(A := A + 1; B:=B - 1)

deve-se tratar a operao A := B como uma macro

a) Operaes e Testes
Atribuio do Valor de um Registrador para outro, Preservando o primeiro Programa Iterativo A := B usando C A := 0 C := 0; at B = 0 faa(A := A + 1; C := C + 1; B := B - 1); at C = 0 faa(B := B + 1; C := C - 1)

deve-se tratar a operao A := B usando C como uma macro


10

a) Operaes e Testes
Adio de Dois Registradores A macro correspondente operao de adio do valor do registrador B ao do registrador A, denotada por: A:=A+B Programa Iterativo A : = A + B at B = 0 faa(A := A + 1; B := B - 1)
Obs.: ao somar o valor de B em A, o registrador B zerado!

11

a) Operaes e Testes
Adio de Dois Registradores, Preservando B A macro correspondente esta operao necessita usar um registrador auxiliar C Programa Iterativo A := A + B usando C C := 0; at B = 0 faa(A := A + 1; C := C + 1; B := B - 1); at C = 0 faa(B := B + 1; C := C - 1)
como este programa no preserva o contedo original do registrador de trabalho C, faz-se necessrio explicitar o uso deste registrador.
12

b) Valores Numricos
Exemplo de tipos de dados numricos no definidos na Mquina Norma: Inteiros Um valor inteiro m pode ser representado como um par ordenado: (s, ) m = magnitude dada pelo valor absoluto de m; m s = sinal de m: se m < 0, ento s = 1 (negativo) seno s = 0 (positivo)

13

b) Valores Numricos
Inteiros (cont.) Como representar pares ordenados em Norma? usando codificao de conjuntos estruturados; usando dois registradores, o primeiro referente ao sinal, e o segundo, magnitude.

14

b) Valores Numricos
Inteiros (cont.) Representao de Inteiros utilizando dois registradores Supor que o registrador inteiro A representado pelo par A1 (sinal) e A2 (magnitude ). Programa Iterativo A := A + 1: (se A1 = 0 (sinal positivo) ento A2 := A2 + 1 seno A2 := A2 - 1; (se A2 = 0 ento A1 := A1 1 seno ) )

15

b) Valores Numricos
Inteiros Programa Iterativo A := B * C: A1:=0; A2:=0; (se B2=0 ento (multiplicao por zero) seno se C2=0 ento (multiplicao por zero) seno (A2:=B2*C2; (multiplicao de naturais) se B1 = 0 (sinal positivo) ento (se C1= 0 ento (ambos positivos) seno A1:=A1+1) (sinais ) seno (se C1 = 0 ento A1:=A1+1 (sinais ) seno ) )) (ambos negativos)
16

c) Dados Estruturados
Exemplo de dados estruturados no definidos na Mquina Norma: Arranjo Unidimensional Esta estrutura pode ser definida por um nico registrador A usando codificao de Conjuntos Estruturados.
Indexao Direta adA(n) usando C (Prog. Interativo) C := pn; A := A X C A(n) = posio do arranjo A Indexao Indireta adA(B) usando C (Prog. Interativo) C := primo (B); A := A X C A(B) = posio do arranjo A b = contedo do registrador B
17

c) Endereamento Indireto e Recurso


Exemplo de definio de desvios indireto: usando endereamento

Endereamento Indireto usando Prog. Monoltico Uma operao com endereamento indireto da seguinte forma, onde A um registrador: r: faa F v_para A pode ser definida pelo seguinte programa monoltico: r: faa F v_para End_A
18

c) Endereamento Indireto e Recurso


partida

Programa Monoltico End_A


A:=A-1

f A=0

v 0

f A:=A-1 A=0

v A:=A+1

A macro End_A, trata o endereamento indireto de A (cada circunferncia rotulada representa um desvio incondicional para a correspondente instruo).

...
f A:=A-1 A=0 v A:=A+1

parada

19

c) Cadeia de caracteres
Cadeia de caracteres outro tipo de dado no prdefinido na Mquina Norma. O tratamento da definio e da manipulao de cadeias de caracteres ser realizado atravs de outra Mquina Universal, a Mquina de Turing, a qual equivalente Turing Norma.

20

You might also like