You are on page 1of 28

Maquina Norma

Maquina Norma

Maquina Norma

Nocao de Maquina Norma

Innitos registrados (para numeros grandes) Tres instrucoes sobre cada registrador:

1. Adicao do valor um; 2. Subtracao do valor um; 3. Teste se o valor e zero ou nao.

N - denota o conjunto de todas as uplas de numeros naturais


(innitos, mas contaveis).

Maquina Norma

Exemplos de uplas

(0, 1, 2, 3, . . .); (5, 5, 5, 5, . . .); (0, 2, 4, 6, . . .)


letras maiusculas (A, B , X , Y , . . .)

Essas uplas sao os registradores da maquina Norma, denotadas por

As uplas podem ser vistas como funcoes, f

:NN (0, 1, 2, 3, . . .), pela funcao identidade, id (n) = n (5, 5, 5, 5, . . .), pela funcao constante 5, const (n) = 5 (0, 2, 4, 6, . . .), pela funcao par, g (n) = 2n

Maquina Norma

Denicao da Maquina Norma (1)

E uma 7-upla da forma Norma = (N , N, N, in, out , {adk , subk }, {zerok }), onde : N - cada elemento dos valores de memoria denota uma conguracao dos innitos registradores (A, B , X , Y , . . .). In - funcao de entrada (in : N N ) que carrega no

registrador, denotado por X , o valor de entrada e inicializa os demais com valor zero; Out - funcao de sada (out : N N) que retorna o valor corrente do registrador denotado por Y ;

Maquina Norma

Denicao da Maquina Norma (2)


Operacoes - Para cada registrador k ,
adk

correspondente ao registrador k , deixando os demais com valores inalterados. subk : N N , subtrai o valor um da componente correspondente ao registrador k , se o seu valor for maior que zero (senao mantem valor zero), deixando os demais com valores inalterados. Testes - Para cada registrador k ,
zerok

` : N N , adiciona o valor um a componente

verdadeiro se a componente correspondente ao registrador k for zero, e resulta falso caso contrario.

: N {verdadeiro, falso}, resulta em

Maquina Norma

Instrucoes basicas

Em suma, temos:

adk , subk , zerok denotados por: 1. k:=k+1; 2. k:=k-1; 3. k=0;

Maquina Norma

Maquina Norma como maquina Universal

Simulacoes efetuadas por uma Maquina Norma:

1. Operacoes e testes mais complexos: entre dois valores (mult, div, etc). 2. Valores numericos: armazenamento e tratamento de valores numericos. 3. Dados estruturados: estruturas de arranjos, pilhas, etc. 4. Enderecamento indireto e recursao: realiza o desvio para uma instrucao de acordo com o conteudo de um registrador e simulacao de recursao. 5. Cadeia de caracteres: manipulacao de cadeia de caracteres.

Maquina Norma

Operacao e testes (1)

Atribuicao do valor zero a um registrador pode ser representada por um

programa iterativo (A := 0): ate A=0 faca (A:=A-1)


Logo,

:= 0pode ser visto como uma macro

Maquina Norma

Operacao e testes (2)

Atribuicao de um valor natural a um registrador A macro A := n, com n natural Veja o exemplo para n = 3

A:=0; (usando a macro de atribuicao zero) A:=A+1; A:=A+1; A:=A+1;

Maquina Norma

Operacao e testes (3)

Adicao de dois registradores, A := A + B

ate B=0 faca (A:=A+1; B:=B-1)

Maquina Norma

Operacao e testes (4)

Adicao de dois registradores mantendo o conteudo original (usar

registrador auxiliar) C:=0 ate B=0 faca (A:=A+1; C:=C+1; B:=B-1) ate C=0 faca (B:=B+1; C:=C-1)
Macro denotada por A:=A+B usando C (C nao e usado em outra parte

do programa)

Maquina Norma

Operacao e testes (5)

Atribuicao do conteudo de um registrador, A:=B usando C

A:=0; A:=A + B usando C

Maquina Norma

Operacao e testes (6)

Multiplicacao de dois registradores, denotada por A:=A x B usando C, D

C:=0 ate A=0 faca (C:=C+1; A:=A-1); ate C=0 faca (A:=A + B usando D; C:= C - 1)

Maquina Norma

Operacao e testes (7)


Testar se o valor de um registrador e primo, teste primo(A) usando C

(se A = 0 entao falso senao C:=A; C:=C-1; (se C = 0 entao verdadeiro senao ate mod(A,C) faca (C := C-1) C:=C-1; (se C=0 entao verdadeiro senao falso)))

Maquina Norma

Operacao e testes (8)


Atribuicao do n-esimo numero primo a um registrador, A:= primo(B)

usando D
Supondo 1 como sendo o 0-esimo numero primo:

A:=1; D:=B ate D=0 faca (D:=D- 1; A:=A+1; ate teste primo(A) faca (A:=A+1))

Maquina Norma

Exerccios

mod (A, C) fatorial potenciacao teste de menor e menor ou igual

Maquina Norma

Valores Numericos (1)

Inteiros (negativos e nao negativos) Dado pelo par ordenado (s , |m|), onde m denota a magnitude (valor

absoluto) e s o sinal

Se m < 0, entao s

= 1 senao s = 0

Ha duas formas de representar o par ordenado em Maquina Norma:

1. codicacao n-upla vista (conjuntos estruturados); 2. usando dois registradores, um para o sinal, e o outro para a magnitude.

Maquina Norma

Valores Numericos: Exemplo

A:=A+1 como sendo uma operacao de inteiros O A denota o par de registradores A1 (sinal) e A2 (valor) Isso pode ser feito pelo programa iterativo

(se A1 = 0 entao A2 := A2 + 1 senao A2 := A2 1;

(se A2 = 0 entao A1 := A1 1 senao ))

Maquina Norma

Valores Numericos (2)

Racionais Dado pelo par ordenado (a, b ), tal que b

> 0 e r = a/b

A representacao nao e unica: 0,75 e igual a (3, 4) e (6, 8) As operacoes sao denidas como se segue:

(a, b) + (c, d) = (a*d + b*c, b*d) (a, b) - (c, d) = (a*d - b*c, b*d) (a, b) * (c, d) = (a*c, b*d) (a, b) / (c, d) = (a*d, b*c), com c = 0 (a, b) = (c, d), se e somente se, a*d = b*c

Maquina Norma

Dados Estruturados (1)

Arranjo unidimensional: A(1), A(2), . . ., pode ser denido por um unico

registrador, usando codicacao n-upla


Consideracoes

arranjo e implementado por um registrador, A; pn e o n-esimo numero primo; usar o teste, teste div (A, C ), se for verdadeiro C e divisor do conteudo de A, falso caso contrario; a macro de divisao de dois registradores, A := A/C abreviar A := A B usando C, D, para A := A B

Maquina Norma

Dados Estruturados (2)


Indexacao direta (com naturais) Macros com programas iterativos, onde A(n) e a n-esima posicao do

arranjo A 1. adA(n) usando C C := pn ; A := A C 2. subA(n) usando C C := pn ; se teste div(A,C) entao A := A/C senao ) 3. zeroA(n) usando C C := pn ; se teste div(A,C) entao falso senao verdadeiro)

Maquina Norma

Dados Estruturados (3)

Indexacao indireta (com naturais) Macros com programas iterativos, onde A(B) e a b-esima posicao do

arranjo A, onde b e o conteudo do registrador B 1. adA(B ) usando C C := primo(B ); A := A C

Maquina Norma

Dados Estruturados (4)


subA(B ) usando C

C := primo(B ); se teste div(A,C) entao A := A/C senao )


zeroA(B ) usando C

C := primo(B ); se teste div(A,C) entao falso senao verdadeiro)

Maquina Norma

Exerccio

Implementar a estrutura de pilha com as operacoes


empilha (adiciona o conteudo de um registrador ao topo da pilha), e desempilha (retira o valor do topo e armazena-o em um registrador)

Maquina Norma

Enderecamento Indireto (1)

Enderecamento indireto em programa monoltico

Uma operacao, onde A e um registrador, r: faca F va para A pode ser denida como r: faca F va para End A

End A e o programa monoltico que trata o enderecamento indireto de

Maquina Norma

Fluxograma para enderecamento indireto


partida Programa Monolitico End_A A:=A1 A=0 0

A:=A1

A=0

A:=A+1

...

A:=A1

A=0

A:=A+1

parada

Maquina Norma

Enderecamento Indireto (2)

O teste e feito de forma similar para

r: se T entao va para A senao va para B

Maquina Norma

Recursao e Caractere

Recursao: pode ser simulada por um programa monoltico, usando

enderecamento indireto
Caractere: nao e pre-denada em Norma, mas existe em M.T. que e

equivalente