ex01-tc

4
% Lista Exercicios 1 % Thiago Prado % RA 1295225 Exercícios 1.5) [C, D, E, F, H, I] 1.6) a. teoria Prefixos: e, t, te, teo, teor, teori, teoria Sufixos: e, a, ia, ria, oria, eoria, teoria b. universidade Prefixos: e, u, un, uni, univ, unive, univer, univers, universi, universid, universida, universidad, universidade Sufixos: e, e, de, ade, dade, idade, sidade, rsidade, ersidade, versidade, iversidade, niversidade, universidade c. aaa Prefixos: e, a, aa, aaa Sufixo: e, a, aa, aaa d. abccba Prefixo: e, a, ab, abc, abcc, abccb, abccba Sufixo: e, a, ba, cba, ccba, bccba, abccba e. abcabc Prefixo: e, a, ab, abc, abca, abcab, abcabc Sufixo: e, c, bc, abc, cabc, bcabc, abcabc 1.7) a. Fechamento Dado o alfabeto Σ= {ab} e a palavra w=ab w¹ = ab w² = abab w³ = ababab w* = abab...ab Como mostrado acima, o fechamento é válido. b. Comutatividade Dado o alfabeto Σ = {a,b,c,d} e as palavras v=ab e w=cd vw = abcd wv = cdab Como mostrado acima, a comutatividade não é válida. c. Elemento Neutro Dado o alfabeto Σ= {ab} e a palavra w=ab εw = w = wε = ab Como mostrado acima, o elemento neutro é válido. d. Associatividade Dado o alfabeto Σ = {a,b,c,d} e as palavras v=ab, w=cd e t=bc (vw)t = v(wt) = abcdbc Como mostrado acima, a associatividade é válida. 1.8) Quando utiliza-se o elemento nulo no caso da concatenação de palavras de uma linguagem e quando se coloca o zero numa adição dos números naturais, entretanto, apenas quando ambos estiverem na posição mais a esquerda, para que o zero não possua nenhum valor significativo. 2.1) Um exemplo de programa monolítico em C: rotulo1: ... ... ...

Upload: thiago-r-prado

Post on 15-Jan-2016

216 views

Category:

Documents


1 download

DESCRIPTION

exercicios de teoria da computação

TRANSCRIPT

Page 1: ex01-tc

% Lista Exercicios 1 % Thiago Prado % RA 1295225

Exercícios

1.5) [C, D, E, F, H, I]

1.6)

a. teoria Prefixos: e, t, te, teo, teor, teori, teoria Sufixos: e, a, ia, ria, oria, eoria, teoria

b. universidade Prefixos: e, u, un, uni, univ, unive, univer, univers, universi, universid, universida,universidad, universidade Sufixos: e, e, de, ade, dade, idade, sidade, rsidade, ersidade, versidade,iversidade, niversidade, universidade

c. aaa Prefixos: e, a, aa, aaa Sufixo: e, a, aa, aaa

d. abccba Prefixo: e, a, ab, abc, abcc, abccb, abccba Sufixo: e, a, ba, cba, ccba, bccba, abccba

e. abcabc Prefixo: e, a, ab, abc, abca, abcab, abcabc Sufixo: e, c, bc, abc, cabc, bcabc, abcabc

1.7)

a. Fechamento Dado o alfabeto Σ= {ab} e a palavra w=ab w¹ = ab w² = abab w³ = ababab w* =abab...ab Como mostrado acima, o fechamento é válido.

b. Comutatividade Dado o alfabeto Σ = {a,b,c,d} e as palavras v=ab e w=cd vw = abcd wv = cdabComo mostrado acima, a comutatividade não é válida.

c. Elemento Neutro Dado o alfabeto Σ= {ab} e a palavra w=ab εw = w = wε = ab Como mostradoacima, o elemento neutro é válido.

d. Associatividade Dado o alfabeto Σ = {a,b,c,d} e as palavras v=ab, w=cd e t=bc (vw)t = v(wt) =abcdbc Como mostrado acima, a associatividade é válida.

1.8)

Quando utiliza-se o elemento nulo no caso da concatenação de palavras de uma linguagem equando se coloca o zero numa adição dos números naturais, entretanto, apenas quando ambosestiverem na posição mais a esquerda, para que o zero não possua nenhum valor significativo.

2.1)

Um exemplo de programa monolítico em C:

rotulo1: ... ... ...

Page 2: ex01-tc

goto rotulo1; ...

Esse comando exemplifica a utilização dos rótulos definidos para programas monolíticos. Note quea nomeação de um rótulo ocorre logo antes do inicio do bloco a ser rotulado e o comando goto éresponsável por voltar a execução ao bloco correspondente ao rótulo utilizado no comando. Umexemplo de programa iterativo em C:

if (...) { while (...) { ... } } else if (...) { ... } else { ... }

É notável que os if's nó código acima correspondam aos testes necessários para escolher qualparte do código será executada e o comando while é o comando enquanto, permitindo queiterações sejam feitas conforme o necessário, isto é, enquanto o teste no inicio do comando while éerdadeiro.

Um exemplo de programa recursivo em C:

int funcao1(int valor) { if(valor <= 0) return valor; else { return funcao1(valor – 1); } }

Essa função exibe claramente o conceito de sub-rotinas, neste caso, é uma função que faz asubtração de um valor qualquer inteiro até que ele se torne menor ou igual a zero. Observe que asub-rotina é constantemente chamada até que valor fique menor ou igual à zero.

2.3)

Relativamente a programas iterativos:

a. V não pode ser executado quando T for falso.

Page 3: ex01-tc

b. Porque cada identificador de operação constitui um programa iterativo, e como a operação vaziaé um identificador de operação, logo, ele é iterativa.

c. Por que é possível mapear todo o programa iterativo para o fluxograma utilizando componentesbásicos de partida, parada, operação e teste, e a combinação destes componentes criam estruturasmais complexas como o enquanto ou o até. E a partir do fluxograma é possível reescrever demaneira fácil o programa monolítico, pois o fluxograma pode ser escrito em forma texto atravésdas instruções rotuladas.

2.6)

Seja M(V, X, Y, piX, piY, PiF, PiT) uma máquina e P um programa iterativo para uma máquina M.

Uma computação para o programa P em M é uma cadeia de pares do tipo:

(I0,V0)(I1,V1)(I2,V2)...

Sendo uma cadeia (finita ou infinita) de composições sequenciais, onde I0 é o programa iterativoinicial da memória e V0 sendo o valor piX(x), que é o valor inicial da memória. Para cada (Ik,Vk),onde k={0,1,2,...}, F sendo uma operação, T sendo um teste e V, V1, V2 programas iterativos,obtem-se:

Operação seguida de um programa: Ik = F;V

Então (Ik+1,Vk+1)=(V, pif(Vk))

Um programa seguido por outro programa: Ik = V;V1

Então(Ik+1,Vk+1)=(V;V1,Vk)

Teste: Ik = (se T então V senão V1);V2

Então(Ik+1,Vk+1) =(V;V2,Vk) se pit(Vk) = verdadeiro = (V1;V2,Vk) se pit(Vk) = falso

Enquanto: Ik = (enquanto T faça V); V1

Então(Ik+1,Vk+1) = (V;(enquanto T faça V);V1,Vk) se pit(Vk) = verdadeiro = (V1, Vk) se pit(Vk) = falso

Até: Ik = (até T faça V); V1

Então (Ik+1,Vk+1) = (V1, Vk) se pit(Vk) = verdadeiro = (V;(até T faça V);V1,Vk) se pit(Vk) = falso

2.8)

Seja M(V, X, Y, piX, piY, piF, piT) uma máquina e P um programa iterativo para uma máquina M.

Uma computação para o programa P em M é uma cadeia de pares do tipo:

(I0,V0)(I1,V1)(I2,V2)...(In,Vn)

Page 4: ex01-tc

Sendo uma cadeia finita de tamanho n, onde I0 é o programa iterativo inicial da memória e V0sendo o valor piX(x), que é o valor inicial da memória. Para cada (Ik,Vk), onde k={0,1,2,...}, F sendouma operação, T sendo um teste e V, V1, V2 programas iterativos, obtem-se:

Operação seguida de um programa: Ik = F;V

Então (Ik+1,Vk+1)=(V, pif(Vk))

Um programa seguido por outro programa: Ik = V;V1

Então(Ik+1,Vk+1)=(V;V1,Vk)

Teste: Ik = (se T então V senão V1);V2

Então(Ik+1,Vk+1) =(V;V2,Vk) se pit(Vk) = verdadeiro = (V1;V2,Vk) se pit(Vk) = falso enquanto: Ik =(enquanto T faça V); V1

Então(Ik+1,Vk+1) = (V;(enquanto T faça V);V1,Vk) se pit(Vk) = verdadeiro = (V1, Vk) se pit(Vk) = falso

Até: Ik = (até T faça V); V1

Então (Ik+1,Vk+1) = (V1, Vk) se pit(Vk) = verdadeiro = (V;(até T faça V);V1,Vk) se pit(Vk) = falso