TeoriadaComputacao-Aula13

Post on 09-Dec-2015

3 views 0 download

description

Norma

Transcript of TeoriadaComputacao-Aula13

Teoria da ComputaçãoMÁQUINA NORMA

Fabrício Dias

fabriciounipe@ig.com.br

UNIPÊ – Centro Universitário de João PessoaCurso de Ciências da Computação

Agenda

Máquina Norma Definições

Máquina Norma como Máquina Universal

3

Máquina Norma

A Máquina Universal Norma (Number TheOretic Register MAchine) proposta por Richard Bird em 1976

4

Máquina Norma A Máquina Universal Norma (Number

TheOretic Register MAchine) possui como memória um conjunto

potencialmente infinito de registradores naturais;

três instruções podem atuar sobre cada registrador: adição do valor um; subtração do valor um; teste (se o valor armazenado é zero).

5

Máquina Norma

N∞ denota o conjunto de todas as tuplas com infinitos (mas contáveis) componentes sobre o conjunto dos números naturais.

Para evitar subscritos, as componentes das uplas são denotadas por letras maiúsculas como A, B, X, Y as quais denotam os registradores na Máquina Norma.

6

Máquina Norma Definição: A Máquina Norma é uma 7-

upla (suponha que K seja um registrador, K { A, B, …, X, Y }):

Norma = (N∞, X, Y, ent, sai, { adK,subK }, { zeroK })

a) Cada elemento do conjunto de valores de memória N∞ denota uma configuração de seus infinitos registradores, os quais são denotados por: A, B, …, X, Y

7

Máquina Norma Definição:

Norma = (N∞, X, Y, ent, sai, { adK,subK }, { zeroK })

b) A função de entrada:

ent: N → N∞ é tal que carrega no registrador denotado por X o valor de entrada, inicializando todos os demais registradores com zero;

8

Máquina Norma Definição:

Norma = (N∞, X, Y, ent, sai, { adK,subK }, { zeroK })

c) A função de saída:

sai: N∞ → N é tal que retorna o valor corrente do registrador denotado por Y.

9

Máquina Norma Definição:

Norma = (N∞, X, Y, ent, sai, { adK,subK }, { zeroK })

d) O conjunto de interpretações de operações é uma família de operações indexada pelos registradores, na qual, para cada registrador K { A, B, …, X, Y }, tem-se que: adK: N∞ → N∞

Adiciona um à componente correspondente ao registrador K, deixando as demais com seus valores inalterados.

(K:=K+1)

10

Máquina Norma Definição:

Norma = (N∞, X, Y, ent, sai, { adK,subK }, { zeroK })

subK: N∞ → N∞

Subtrai um da componente correspondente ao registrador K, se o seu valor for maior que zero (caso contrário, mantém o valor zero), deixando as demais com seus valores inalterados.

(K:=K-1)

11

Máquina Norma Definição:

Norma = (N∞, X, Y, ent, sai, { adK,subK }, { zeroK })

e) O conjunto de interpretações de testes é uma família de testes indexada pelos registradores na qual, para cada registrador K, tem-se que: zeroK: N∞ → { verdadeiro, falso } resulta em

verdadeiro, se a componente correspondente ao registrador K for zero e em falso, caso contrário.

(K=0)

12

Máquina Norma como

Máquina Universal

13

Máquina Norma

Características: Operações e Testes. Definição de operações

e testes mais complexos como adição, subtração, multiplicação e divisão de dois valores e tratamento de valores diversos como os números primos;

14

Máquina Norma

Características: Valores Numéricos. Armazenamento de

tratamento de valores numéricos de diversos tipos como inteiros (negativos e não-negativos) e racionais;

15

Máquina Norma

Características: Dados Estruturados. Armazenamento de

tratamento de dados estruturados como em arranjos (vetores uni e multidimensionais), pilhas, filas, etc.

16

Máquina Norma

Características: Endereçamento Indireto e Recursão. Desvio

para uma instrução determinada pelo conteúdo de um registrador;

17

Máquina Norma

Características: Cadeia de Caracteres. Definição e

manipulação de cadeias de caracteres. Tipo não-predefinido numa Máquina Norma; Tratamento da definição e da manipulação de

cadeias de caracteres será realizado através de outra Máquina Universal Máquina de Turing

Concluindo

Máquina Norma é uma máquina que: Possui uma memória potencialmente infinita,

compostas por 3 instruções; É uma 7- upla do tipo: Norma = (N∞, X, Y,

ent, sai, { adK,subK }, { zeroK }); Possui operações e testes complexos, como

adição, subtração, multiplicação e divisão de dois valores e tratamento de valores diversos como os números primos.

Valores numéricos, negativos e não-negativos; Dados estruturados (pilha, fila..); Endereçamento indireto e recursão (desvio para

uma instrução); Cadeia de caracteres (pré-definidas).

Dúvidas?????