Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Number TheOretic Register MAchine Dbora Pandolfi Alves Ricardo Nabinger Sanchez
1
Mquina Norma
Number TheOretic Register MAchine
Mquina de registradores proposta por Richard Bird
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
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:
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
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 }
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
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
Operaes e Testes
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
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
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
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
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;
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;
Dados Estruturados
zeroA(B ) usando C
C:=primo(B); (se teste_div(A,C) ento falso seno verdadeiro)
27
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
As operaes:
A:=A+1
A=0
A:=A-1 ...
A:=A+1 ...
A:=A+1
A=0
A:=A-1
31
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
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
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
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
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
39
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
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
o contedo inicial da fita codificado em X, visto como um arranjo unidimensional decodifica a sada em Y para a fita
Decodificao
42
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
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
subtrao
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
teste
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
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