Sei sulla pagina 1di 50

Mquina Norma

Number TheOretic Register MAchine Dbora Pandolfi Alves Ricardo Nabinger Sanchez
1

Mquina Norma
Number TheOretic Register MAchine
Mquina de registradores proposta por Richard Bird

Possui um conjunto infinito de registradores naturais como memria e trs intrues:

A:=A+1 A:=A-1 A=0

(adiciona um) (subtrai um) (testa se zero)

Mquin a Norma

Os registradores podem conter um elemento qualquer de , isto V= Os registradores so denotados por A,B,...,X,Y A operao A:=A-1 quando A 0 no altera seu valor Os registradores X e Y so especiais
3

Mquina Norma Definio


A mquina Norma uma 7-upla (suponha que k {A,B,X,Y...}):

Norma = ( , , , ent, sai, {ad k,subk}, {zero k}) Cada elemento do conjunto de valores de memria denota uma configurao de seus infinitos registradores que so denotados por A, B, X, Y, ...
4

onde:

Mquina Norma Definio

A funo de entrada ent: carrega no registrador X o valor de entrada e 0 nos demais A funo de sada sai: retorna o valor atual do registrador Y

Mquina Norma Definio

O conjunto de interpretaes de operaes indexada pelos registradores, onde para cada registrador k: ad k : e sub k : O conjunto de interpretaes de testes indexada pelos registradores, onde para cada registrador k: zero k : {verdadeiro,falso }

Mquina Norma: Crticas

Tese: Com o tratamento adequedo dos dados qualquer algoritmo pode ser representado como um fluxograma em NORMA Crticas:

No so definidas operaes suficientes O conjunto de memria muito restrito, sem tratamento a nmeros negativos ou de ponto flutuante O acesso memria restrito, necessrio introduzir variveis subsescritas para lidar com arrays
7

Mquina Norma: Crticas

A restrio a fluxogramas muito severa, so necessrios mecanismos como os de programas procedurais Como no h uma representao concreta dos valores da memria como strings binrias no h como manipular stringsou fazer operaes lgicas

Os exemplos tratados a seguir devem responder aos problemas citados nessas crticas.
8

Mquina Norma como Mquina Universal

Operaes e Testes

Atribuio do valor 0 a um registrador denotada por A:=0 pode se obter por:


at A=0 faa (A:=A-1)

A:=0 tratada como uma macro, o trecho de programa substitudo pela sua definio sempre que referenciado. Assim pode-se contruir outras macros para definir atribuies de um valor qualquer.

Operaes e Testes

Atribuio de um valor natural a um registrador, denotada por A:=n pode ser exemplificada para 3:
A:=0; A:=A+1; A:=A+1; A:=A+1

Adio de dois registradores, denotada por A:=A+B pode ser obtida por:
at B=0 faa (A:=A+1; B:=B-1)
10

Operaes e Testes
Esse tipo de operao ir zerar o valo de B causando um Efeito Colateral Para que o valor de B seja preservado usase um registrador auxiliar, ex: C Ento, C sofrer o Efeito Colateral Para explicitar o Efeito Colateral a operao escrita da seguinte forma: A:=A+B usando C Ao simular um programa P de outra mquina necessrio escolher um registrador de trabalho no usado em P.
11

Operaes e Testes

Adio de dois registradores deno-tada por A:=A+B usando C , preservando o contedo:


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)

12

Operaes e Testes

Atribuio do contedo de um registrador, usando a macro A:=A+B usando C , pode-se definir a macro A:=B usando C :
A:=0 A:=A+B usando C

13

Operaes e Testes

Multiplicao de dois registradores, denotada por A:=A B usando C,D , requer dois registradores de trabalho:
C:=0; at A=0 faa (C:=C+1; A:=A-1); at C=0 faa (A:=A+B usando D; C:=C-1)

14

Operaes e Testes

Teste se o valor do registrador A um nmero primo, teste_primo(A) usando C , requer um registrador de trabalho, retornando verdadeiro ou falso
(se A=0 ento falso seno C:=A; C:=C-1; (se C=0 ento verdadeiro seno at teste_mod(A, C) faa (C:=C-1) C:=C-1; (se C=0 ento verdadeiro seno falso)))

15

Operaes e Testes

Atribuio do n-simo nmero primo ao registrador A usando o registrador de trabalho D, assumindo B=n, ento A:=primo(B) usando D
(se A < 2 ento falso seno D:=A; D:=D-1; at div(D,A) faa D:=D-1; D:=D-1; (se D=0 ento verdadeiro seno falso))
16

A:=1; D:=B; at D=0 faa (D:=D-1; A:=A+1; at teste_primo(A) faa (A:=A+1))

Valores Numricos

Inteiros (negativos e no-negativos) podem ser representados pelo par ordenado (s, |m|) onde:

|m| denota a magnitude de m s denota o sinal de m: se m < 0, ento s = 1; seno s = 0 codificao de n-uplas naturais usando dois registradores, um para o sinal e outro para a magnitude (valor absoluto)
17

Representados de duas formas:


Valores Numricos

No caso de dois registradores, a simulao de A:=A+1 , supondo A 1 (sinal) e A 2 (magnitude), pode ser realizada pelo seguinte programa
(se A1 =0 ento A2 :=A 2 +1 seno A2 :=A 2 -1 (se A 2 =0 ento A 1 :=A 1 -1 seno ))
18

Valores Numricos

Racionais: um valor racional r pode ser representado por um par ordenado (a,b) tal que b > 0 e r = a/b

A representao nem sempre nica: 0,75 pode ser representado tanto por (3,4) quanto por (6,8), e assim por diante Os pares ordenados (3,4), (6,8), ..., pertencem mesma classe de equivalncia que denota o nmero racional 0,75

19

Valores Numricos

Definio das operaes

Adio
(a,b) + (c,d) = (ad + bc, bd)

Subtrao
(a,b) (c,d) = (ad bc, bd)

Multiplicao
(a,b) (c,d) = (ac, bd)

Diviso
(a,b) (c,d) = (ad, bc), c0

Igualdade
(a,b) = (c,d) se e somente se ad = bc
20

Dados Estruturados

Arranjo Unidimensional

Uma estrutura da forma A(1), A(2), ..., pode ser representada usando um nico registrador A, com a codificao de nuplas naturais No necessita ter tamanho mximo prdefinido Pode ser indexado de forma direta (nmero natural) ou indireta (contedo de um registrador)
21

Dados Estruturados

Indexao Direta

Macros

ad A(n) usando C subA(n) usando C zeroA(n) usando C onde A(n) denota a n-sima posio do arranjo A podem ser definidas pelos seguintes programas iterativos

22

Dados Estruturados

ad A(n) usando C
C:=p n ; A:=A C;

sub A(n) usando C


C:=p n ; (se teste_div(A,C) ento A:=A/C seno )
23

Dados Estruturados

zeroA(n) usando C
C:=p n ; (se teste_div(A,C) ento falso seno verdadeiro)

24

Dados Estruturados

Indexao Indireta

Macros

ad A(n) usando C subA(n) usando C zeroA(n) usando C onde A(B) denota a b-sima posio do arranjo A, e b o contedo do registrador B, podendo ser definidas pelos seguintes programas iterativos
25

Dados Estruturados

ad A(B ) usando C
C:=primo(B); A:=A C;

sub A(B ) usando C


C:=primo(B); (se teste_div(A,C) ento A:=A/C seno )
26

Dados Estruturados

zeroA(B ) usando C
C:=primo(B); (se teste_div(A,C) ento falso seno verdadeiro)

27

Arranjo Unidimensional em Norma2

possvel representar um arranjo unidimensional usando apenas 2 registradores (X e Y) Cada posio do arranjo corresponde a um registrador Para um determinado registrador k, as operaes j definidas podem ser simuladas usando-se o registrador Y como registrador de trabalho
28

Arranjo Unidimensional em Norma2

As operaes:

ad k subk zerok ad X(k) usando Y subX(k) usando Y zeroX(k) usando Y


29

Podem ser simuladas por:


Onde X(k) a k-sima posio do arranjo em X

Endereamento Indireto e Recurso


Como definir desvios usando endereamento indireto (determinado pelo contedo de um registrador)
Uma operao com endereamento indireto com A como registrador como:
r: faa F v_para A

Pode ser definida por:


r: faa F v_para End_A

Onde a macro End_A representada no fluxograma a seguir.


30

Programa Monoltico End_A


partida 0 v A=0 f A:=A-1 v f parada

A:=A+1

A=0

A:=A-1 ...

A:=A+1 ...

A:=A+1

A=0

A:=A-1

31

Programa Monoltico X Recursivo

As subrotinas e mecanismos de recurso podem ser simulados por programas monolticos, usando endereamento indireto.

32

Cadeia de Caracteres

um tipo de dado no-predefinido na mquina Norma Foi definida uma mquina de processamento de strings que pode ser simulada por Norma Essa mquina j havia sido definida por Turing em outra abordagem para o problema
33

Mquina de Turing Mquina Norma


Teorema: Turing Norma O formalismo Mquina de Turing pode ser simulado pelo formalismo Mquina Norma Prova: Supe-se uma mquina de Turing M=( , Q, , q0 , F, V, , ), cuja funo programa seja total
34

Mquina de Turing Mquina Norma


Fita

Cada clula da fita mapeada em uma posio de um arranjo unidimensional no registrador X da mquina Norma O smbolo de cada clula codificado de forma que para um alfabeto V= {a1 , a2 , ..., an }, o smbolo ai codificado como o natural i, como zero e como n+1
35

Mquina de Turing Mquina Norma


Estados

Para os estados de Q={q0 , q1 , ..., qn} em M, o programa P em Norma possui instrues correspondentes rotuladas por 0, 1, ..., n Assim, rtulo inicial de P 0 (pois q0 o estado inicial de M), e, para qualquer qf F, f rtulo final de P
36

Mquina de Turing Mquina Norma


Estado Atual

O estado atual de M simulado em Norma usando o registrador Q, que assume valores em {0, 1, 2, ..., n}, correspondendo aos estados q0 , q1 , q2 , ..., qn

37

Mquina de Turing Mquina Norma


Cabea da Fita

A posio atual da cabea da fita de M simulada usando o registrador C de Norma, que contm a posio atual do arranjo no registrador X e inicializado com o valor 1

38

Mquina de Turing Mquina Norma


Funo Programa

A transio (qu , ar)=(q v , as, m) dada pelo seguinte programa em Norma:


faa A:=2Q 3 X(C) v para End_A faa X(C):=s v para a1 faa adC v para a 2 faa Q:=v v para End_Q
(grava na fita) (move a cabea p/ direita) (novo estado)

u: ... a: a1: a2:

39

Mquina de Turing Mquina Norma

a transio depende do estado atual qu e do smbolo lido ar na instruo rotulada por u, h um desvio incondicional para a instruo rotulada por (u,r), usando a codificao de n-uplas m assume valores em {E,D} no programa anterior, suposto um movimento para a direita, adicionando-se 1 ao registrador C
40

Mquina de Turing Mquina Norma

as macros End_A e End_Q referem-se ao endereamento indireto, sendo o contedo do registrador A denotado por a cada rtulo final f corresponde ao seguinte programa em P, atribuindo ao registrador Y (de sada) o valor do registrador X (fita)
f: faa Y:=X v para fim ... fim:
41

Mquina de Turing Mquina Norma


Codificao

o contedo inicial da fita codificado em X, visto como um arranjo unidimensional decodifica a sada em Y para a fita

Decodificao

42

Mquina Norma Mquina de Turing


Teorema: Norma Turing O formalismo Mquina Norma pode ser simulado pelo formalismo Mquina de Turing Prova: Suponha um programa monoltico P para Norma com dois registradores, XeY
43

Mquina Norma Mquina de Turing


Ento, a simulao de P para Norma por uma mquina de Turing M=( , Q, , q0 , F, V, , ), onde o alfabeto o conjunto unrio {1}, pode ser definida como segue

Registrador X Seu contedo armazenado em unrio nas clulas pares da fita de M. Assim, se o natural em X n, as n primeiras clulas pares possuem 1
44

Mquina Norma Mquina de Turing


Registrador Y Seu contedo armazenado em unrio nas clulas mpares iniciais da fita (com exceo da clula 1, que contm o marcador de incio ) Rtulos de Instrues A cada rtulo r de instruo de P corresponde um estado qr de M
45

Mquina Norma Mquina de Turing


Programa

adio r: faa ad k v para s pode ser simulada por um trecho da funo programa M resumido como segue:

No estado q r, move a cabea, pesquisando as clulas pares (caso K=X) ou mpares (K=Y), at encontrar o primeiro branco, que substitudo por 1 Reposiciona a cabea no incio da fita e assume o estado q s
46

Mquina Norma Mquina de Turing


Programa

subtrao

r: faa sub k v para s

No estado q r, move a cabea, pesquisando as clulas pares (caso K=X) ou mpares (K=Y), at encontrar o ltimo smbolo 1, que substitudo por branco ( ) Reposiciona a cabea no incio da fita e assume o estado q s

47

Mquina Norma Mquina de Turing


Programa

teste

r: se zero k v para s seno v para t

No estado q r, move a cabea, pesquisando a primeira clula par (caso K=X) ou segunda clula mpar (K=Y), lembrando que a primeira clula mpar reservada para o incio de fita Reposiciona a cabea no incio da fita e, caso a clula pesquisada contenha o smbolo , assume q s , caso contrrio assume q t
48

Mquina Norma Mquina de Turing


Codificao

O contedo inicial de X codificado em unrio nas clulas pares da fita de M Decodifica da fita o valor final do registrador Y a partir das clulas mpares da fita

Decodificao

49

Exerccios

Fazer um programa P em Norma maior(a,b) , que retorna verdadeiro se a > b, e falso caso contrrio Fazer um programa P em Norma que verifica se um nmero par pre-servando o valor dos registradores Fazer um programa P em Norma que retorne a soma dos k primeiros ndices de um arranjo unidimensional, tal que k primo. (Ex: se k=5, soma os valores das posies 1, 2, 3, 5 e 7 no arranjo)
50

Potrebbero piacerti anche