UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO … · inicial, com amemória ... Computação...

20
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Prof.ª Danielle Casillo

Transcript of UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO … · inicial, com amemória ... Computação...

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO

CURSO: CIÊNCIA DA COMPUTAÇÃO

Prof.ª Danielle Casillo

� Definição: A computação de um programadeve ser associada a uma entrada e a umasaída. Adicionalmente, espera-se que aresposta (saída) seja gerada em um tempofinito. Essas noções induzem a definição definito. Essas noções induzem a definição defunção computada.

Teoria da Computação - Aula 04 2

� A função computada por um programa monolíticosobre uma máquina:� a computação inicia na instrução identificada pelo rótulo

inicial, com a memória contendo o valor inicial resultanteinicial, com a memória contendo o valor inicial resultanteda aplicação da função de entrada sobre o dado fornecido;

� executa, passo a passo, testes e operações, na ordemdeterminada pelo programa, até atingir um rótulo final,quando pára;

� o valor da função computada pelo programa é o valorresultante da aplicação da função de saída ao valor damemória quando da parada.

Teoria da Computação - Aula 04 3

� Função Computada por um Programa Monolítico emuma Máquina:

Sejam M = (V, X, Y, πX, πY, ПF, ПT) uma máquina

P um programa monolítico para M.

� A Função Computada pelo Programa Monolítico P na Máquina M é denotada por:

⟨⟨⟨⟨P, M⟩⟩⟩⟩: X →→→→ Y

é uma função parcial definida para x ∈∈∈∈ X se a cadeia: (s0, v0)(s1, v1)...(sn, vn)

Teoria da Computação - Aula 04 4

É uma computação finita de P em M, onde o valorinicial da memória é dado pela função de entrada, ouseja, v0 = πX(x). Neste caso, a imagem de x é dada pelafunção de saída aplicada ao último valor da memória nacomputação, ou seja:computação, ou seja:

⟨⟨⟨⟨P, M⟩⟩⟩⟩(x) = πY(vn)

Teoria da Computação - Aula 04 5

• Função Computada por Programa Monolítico naMáquina de Dois Registradores.• Considere o programa monolítico mon_b←←←←a para a

máquina dois_reg.

Programa Monolítico mon_b←←←←a

Teoria da Computação - Aula 04 6

• A correspondente função computada é a função identidade⟨⟨⟨⟨mon_b←←←←a, dois_reg⟩⟩⟩⟩: N →→→→ N

tal que, para qualquer n ∈∈∈∈ N, tem-se que:⟨⟨⟨⟨mon_b←←←←a, dois_reg⟩⟩⟩⟩(n) = n

Programa Monolítico mon_b←←←←a1: se a_zero então vá_para 9 senão vá_para 22: faça subtrai_a vá_para 33: faça adiciona_b vá_para 1

� Por exemplo, para o valor entrada de 3, tem-se que:

πX(3) = (3, 0);

⟨⟨⟨⟨mon_b←←←←a, dois_reg⟩⟩⟩⟩(3) = πY(0, 3) = 3.Portanto, ⟨⟨⟨⟨mon_b←←←←a, dois_reg⟩⟩⟩⟩ é definida para 3.Portanto, ⟨⟨⟨⟨mon_b←←←←a, dois_reg⟩⟩⟩⟩ é definida para 3.

Teoria da Computação - Aula 04 7

� Função Computada por Programa Monolítico naMáquina de Dois Registradores.� Considere o programa monolítico comp_infinita para a

máquina dois_reg.

(1, (3, 0)) instrução inicial e valor de entrada armazenado(1, (3, 1)) adicionou no registrador b e permanece em 1(1, (3, 2)) adicionou no registrador b e permanece em 1

� A função computada ⟨⟨⟨⟨comp_infinita, dois_reg⟩⟩⟩⟩: N →→→→N, para a entrada de valor 3: � πX(3) = (3, 0);� Como a cadeia é infinita, a função computada não é

definida para o valor de entrada 3. Teoria da Computação - Aula 04 8

(1, (3, 2)) adicionou no registrador b e permanece em 1(1, (3, 3)) adicionou no registrador b e permanece em 1

... repete 1, adicionando no registrador b, indefinidamente

� A função computada por um programa recursivo sobreuma máquina é análoga à de um monolítico:� a computação inicia na expressão inicial com a memória

contendo o valor inicial resultante da aplicação da funçãode entrada sobre o dado fornecido;de entrada sobre o dado fornecido;

� executa, passo a passo, testes e operações, na ordemdeterminada pelo programa, até que a expressão de sub-rotina resultante seja a expressão vazia, quando pára;

� o valor da função computada pelo programa é o valorresultante da aplicação da função de saída ao valor damemória quando da parada.

Teoria da Computação - Aula 04 9

� Função Computada por um Programa Recursivo emuma Máquina.

Sejam M = (V, X, Y, πX, πY, ПF, ПT) uma máquinaP um programa recursivo para M. P um programa recursivo para M.

� A Função Computada pelo Programa Recursivo P na Máquina M é denotada por:

⟨⟨⟨⟨P, M⟩⟩⟩⟩: X →→→→ Y

é uma função parcial definida para x ∈∈∈∈ X se a seguinte cadeia é uma computação finita de P em M: (D0, v0) (D1, v1)...(Dn, vn)

Teoria da Computação - Aula 04 10

onde: D0 = E0 é expressão inicial de Pv0 = πX(x)

Neste caso, tem-se que: ⟨⟨⟨⟨ ⟩⟩⟩⟩Neste caso, tem-se que: ⟨⟨⟨⟨P, M⟩⟩⟩⟩(x) = πY(vn)

Teoria da Computação - Aula 04 11

� Função Computada por Programa Recursivo.� Considere o programa recursivo qq_máquina e uma

máquina M = (V, X, Y, πX, πY, ПF, ПT) qualquer.� A correspondente função computada é: ⟨⟨⟨⟨qq_máquina, M⟩⟩⟩⟩:X →→→→ Y e é indefinida para qualquer entrada.X →→→→ Y e é indefinida para qualquer entrada.

Teoria da Computação - Aula 04 12

(1, (3, 0)) instrução inicial e valor de entrada armazenado(1, (3, 1)) adicionou no registrador b e permanece em 1(1, (3, 2)) adicionou no registrador b e permanece em 1(1, (3, 3)) adicionou no registrador b e permanece em 1

... repete 1, adicionando no registrador b, indefinidamente

� Função Computada por Programa Recursivo naMáquina de Um Registrador.� Considere o programa recursivo duplica para a máquinaum_reg.

Programa Recursivo duplica

� A correspondente função computada é: ⟨⟨⟨⟨duplica, um_reg⟩⟩⟩⟩:N →→→→ N e é tal que, para qualquer n ∈∈∈∈ N: ⟨⟨⟨⟨duplica,um_reg⟩⟩⟩⟩(n) = 2n.

Teoria da Computação - Aula 04 13

Programa Recursivo duplica

duplica é R ondeR def (se zero então senão sub; R; ad; ad)����

1. Qual a diferença entre Computação e FunçãoComputada?

Computação é a sequência de instruções executadas para umprograma e os diferentes valores da memória ao longo de sua

Teoria da Computação - Aula 04 14

programa e os diferentes valores da memória ao longo de suaexecução (histórico do funcionamento da máquina para oprograma).

Função computada é o resultado obtido ao fim de umacomputação, desde que a computação seja finita.

2. Escreva um programa iterativo onde a computação sejainfinita.

Programa Iterativo

enquanto a = a faça F

Teoria da Computação - Aula 04 15

3. Relativamente à função computada por um programaem uma máquina:

a) Considere o programa monolítico mon_b←a para a máquinadois_reg. A correspondente função computada <mon_b←a,dois_reg> é total?

Programa Monolítico mon_b←←←←a

R: Sim, pois para cada elementodo domínio (entrada) existe um

16

Programa Monolítico mon_b←←←←a1: se a_zero então vá_para 9 senão vá_para 22: faça subtrai_a vá_para 33: faça adiciona_b vá_para 1

Dois_reg = (N2, N, N, armazena_a, retorna_b, {subtrai_a, adiciona_b}, {a_zero})

N2, N, N - Conjuntos de Memória, Entrada e Saídaarmazena_a (n) = (n, 0)retorna_b (n, m) = msubtrai_a (n, m) = (n-1, m) se n ≠ 0 e (0, m) se n = 0adiciona_b (n, m) = (n, m+1)a_zero (n, m) = verdadeiro se n = 0 e falso se n ≠ 0

do domínio (entrada) existe umúnico elemento da imagem(saída).

b) Considere o programa recursivo qq_máquina e umamáquina M = (V, X, Y, πX, πY, ПF, ПT) qualquer. Por quea correspondente função computada <qq_máquina,M>é indefinida para qualquer entrada?

Programa Recursivo qq_máquina

Teoria da Computação - Aula 04 17

Programa Recursivo qq_máquina

qq_máquina é R ondeR def R

Porque não existe nenhuma condição que façacom que o programa R pare de ser chamadoindefinidamente. A cadeia gerada pelacomputação deste programa é infinita.

4. Traduza os programas monolíticos representados porfluxogramas em programas recursivos e simplifique sepossível.

Teoria da Computação - Aula 04 18

Teoria da Computação - Aula 04 19

5. Traduza o programa iterativo abaixo, nas formas de:a) Fluxogramab) Instruções Rotuladas

Teoria da Computação - Aula 04 20

(se T1 entãoenquanto T2 faça

(até T3 faça(V; W))

senão ( ) )����