20.08.2013 Views

ICEG – Ciência da Computação – Prof. Marcelo Cezar Pinto ...

ICEG – Ciência da Computação – Prof. Marcelo Cezar Pinto ...

ICEG – Ciência da Computação – Prof. Marcelo Cezar Pinto ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

UNIVERSIDADE DE PASSO FUNDO<br />

LISTA DE EXERCÍCIOS DE TEORIA DA COMPUTAÇÃO (NORMA)<br />

Exercícios selecionados do capítulo 3 do livro [Diverio&Menezes, 2000]<br />

Exercício 3.14. Mostre como os testes abaixo podem ser construí<strong>da</strong>s como macros em<br />

Norma (todos devem preservar o conteúdo dos registradores usados e indicar<br />

registradores temporários):<br />

a) A < 2<br />

b) div(A, B)<br />

extra) operador lógico E (&&)<br />

Nota: div(x, y) significa “x é divisível por y?”<br />

Exercício 3.15. Desenvolva os programas, em Norma, que realizam as operações (itens<br />

a e b) e testes (itens f e g) abaixo (todos devem preservar o conteúdo dos registradores<br />

usados e indicar registradores temporários):<br />

a) A = B <strong>–</strong> C<br />

b) A = B / C<br />

tente guar<strong>da</strong>r o resto em D<br />

f) A


UNIVERSIDADE DE PASSO FUNDO<br />

LISTA DE EXERCÍCIOS DE TEORIA DA COMPUTAÇÃO (NORMA)<br />

Exercício 3.17. Desenvolva os programas, em Norma, que realizam as operações<br />

abaixo nos números racionais (considere ca<strong>da</strong> registrador abaixo do tipo racional, ou<br />

seja, representado por 3 registradores naturais, sinal, numerador e denominador):<br />

a) A = B + C<br />

ou seja, (AS,AN,AD) = (BS,BN,BD) + (CS,CN,CD)<br />

b) A = B * C<br />

ou seja, (AS,AN,AD) = (BS,BN,BD) * (CS,CN,CD)<br />

c) A = B <strong>–</strong> C<br />

ou seja, (AS,AN,AD) = (BS,BN,BD) <strong>–</strong> (CS,CN,CD)<br />

d) A = B / C<br />

ou seja, (AS,AN,AD) = (BS,BN,BD) / (CS,CN,CD)<br />

Nota: operações nos racionais<br />

Exercício 3.23. Codifique o programa abaixo como um número natural, usando a<br />

codificação de programas basea<strong>da</strong> no Teorema Fun<strong>da</strong>mental <strong>da</strong> Aritmética.<br />

P38 = (I38, 1), onde I38={“1: faça F vá para 2”, “2: se T então vá para 1 senão vá para 0”}<br />

Exercício novo. Decodifique o número natural NP abaixo em instruções rotula<strong>da</strong>s de<br />

programa monolítico. Para isso, use o seguinte mapeamento para operações e testes:<br />

N =<br />

P<br />

1 → X++ 3 → Y++ 5 → A++<br />

2 → X<strong>–</strong> <strong>–</strong> 4 → Y<strong>–</strong> <strong>–</strong> 6 → A<strong>–</strong> <strong>–</strong><br />

1 → X == 0 2 → Y == 0 3 → A == 0<br />

2<br />

2<br />

1<br />

3<br />

1<br />

5<br />

0<br />

7<br />

2<br />

3<br />

2<br />

0<br />

3<br />

2<br />

<strong>ICEG</strong> <strong>–</strong> <strong>Ciência</strong> <strong>da</strong> <strong>Computação</strong> <strong>–</strong> <strong>Prof</strong>. <strong>Marcelo</strong> <strong>Cezar</strong> <strong>Pinto</strong><br />

5<br />

4<br />

7<br />

4<br />

5<br />

2<br />

0<br />

3<br />

3<br />

5<br />

1<br />

7<br />

1<br />

7<br />

2<br />

0<br />

3<br />

5<br />

5<br />

3<br />

7<br />

3

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!