apostila
259 pág.

apostila

Disciplina:Algoritmos e Estrutura de Dados I542 materiais7.956 seguidores
Pré-visualização50 páginas
memo´ria em outro formato, isto e´, separando cada um destes
pequenos blocos em uma u´nica linha.

Observamos que apenas os nu´meros de 1 a 9 podem ser interpretados como co´digos
de alguma instruc¸a˜o, pois sa˜o os u´nicos co´digos da tabela de instruc¸o˜es da BCC.

A separac¸a˜o dos pequenos blocos resulta em uma visualizac¸a˜o em que os dados
sa˜o separados das instruc¸o˜es numa mesma linha, cada linha agora representa toda a
instruc¸a˜o com os dados. Isto pode ser visto na figura 4.3. Importante notar que e´ a
mesma informac¸a˜o da figura 4.1, so´ que em outro formato visual.

Enderec¸o Instruc¸a˜o Operando Operando Operando
0 1 54 2
3 1 50 4
6 7 46
8 4 47 46 46
12 7 48
14 4 49 50 48
18 3 51 47 49
22 6 52 51
25 3 53 46 52
29 5 55 53 54
33 8 55
35 2 56 46 52
39 5 57 56 54
43 8 57
45 9

Figura 4.3: Separando as instruc¸o˜es.

4.3.1 Abstrac¸a˜o dos enderec¸os

Continuando nossa explorac¸a˜o de aspectos percebidos pelo ser humano a partir da
maneira como o computador trabalha, agora e´ poss´ıvel percebermos mais duas coisas
importantes:

1. O computador na˜o mudou seu modo de operar, ele continua executando as
instruc¸o˜es na memo´ria conforme foi apresentado na sec¸a˜o 4.2.4;

2. A visualizac¸a˜o na forma apresentada na figura 4.3 e´ apenas uma maneira mais
simples para o ser humano perceber o que o computador esta´ fazendo.

Esta segunda observac¸a˜o e´ muito importante. Ela nos permite aumentar o grau de
“facilidade visual” ou, dizendo de outra maneira, o grau de notac¸a˜o sobre o modelo
Von Neumann, o que vai nos permitir a compreensa˜o do processo de uma maneira
cada vez mais “humana”.

28 CAPI´TULO 4. O MODELO DO COMPUTADOR

De fato, a partir da figura 4.3, podemos perceber que o enderec¸o em que ocorre
a instruc¸a˜o e´ irrelevante para no´s, humanos. Podemos perfeitamente compreender o
processo de computac¸a˜o se eliminarmos a coluna do “Enderec¸o” na figura 4.3.

A figura 4.4 ilustra como ficaria o programa em memo´ria visto de outra maneira,
agora na˜o apenas em formato de blocos mas tambe´m sem a coluna dos enderec¸os. Va-
mos perceber que, apesar de muito parecido com a figura anterior, o grau de “poluic¸a˜o
visual” e´ bem menor.

Instruc¸a˜o Operando Operando Operando
1 54 2
1 50 4
7 46
4 47 46 46
7 48
4 49 50 48
3 51 47 49
6 52 51
3 53 46 52
5 55 53 54
8 55
2 56 46 52
5 57 56 54
8 57
9

Figura 4.4: Abstrac¸a˜o dos enderec¸os.

Vale a pena reforc¸ar: o computador na˜o mudou, ele continua operando sobre os
circuitos eletroˆnicos, o que estamos fazendo e´ uma tentativa, um pouco mais humana,
de enxergar isto.

4.3.2 Abstrac¸a˜o dos co´digos das instruc¸o˜es

Continuando neste processo de “fazer a coisa do modo mais conforta´vel para o ser
humano”, afirmamos que e´ poss´ıvel aumentar ainda mais o grau de notac¸a˜o.

Para a etapa seguinte, vamos observar que, embora os computadores manipulem
nu´meros (em particular, nu´meros bina´rios) de maneira muito eficiente e ra´pida, o
mesmo na˜o ocorre para os humanos, que teˆm a tendeˆncia a preferirem nomes.

De fato, basta observar que no´s usamos no nosso dia-a-dia nomes tais como Marcos,
Jose´ ou Maria e na˜o nu´meros tais como o RG do Marcos, o CPF do Jose´ ou o PIS da
Maria.

Ora, ja´ que e´ assim, qual o motivo de usarmos os nu´meros 1−9 para as instruc¸o˜es
se podemos perfeitamente usar o mnemoˆnico associado ao co´digo?

Desta forma, vamos modificar ainda mais uma vez nossa visualizac¸a˜o da memo´ria,
desta vez escrevendo os nomes dos mnemoˆnicos no lugar dos nu´meros. Assim, na

4.3. HUMANOS VERSUS COMPUTADORES 29

coluna Instruc¸a˜o, substituiremos o nu´mero 1 por load, 2 por add, 3 por sub e assim
por diante, conforme a figura 4.2.

O programa da figura 4.4 pode ser visualizado novamente de outra forma, tal como
apresentado na figura 4.5. Notem que o grau de compreensa˜o do co´digo, embora ainda
na˜o esteja em uma forma totalmente amiga´vel, ja´ e´ bastante melhor do que aquela
primeira apresentac¸a˜o da “fotografia da memo´ria”.

De fato, agora e´ poss´ıvel compreender o significado das linhas, em que existe um
destaque para a operac¸a˜o (o mnemoˆnico), a segunda coluna e´ o enderec¸o de destino
da operac¸a˜o e as outras colunas sa˜o os operandos.

Instruc¸a˜o Operando Operando Operando
load 54 2
load 50 4
read 46
mult 47 46 46
read 48
mult 49 50 48
sub 51 47 49
sqrt 52 51
sub 53 46 52
div 55 53 54
write 55
add 56 46 52
div 57 56 54
write 57
stop

Figura 4.5: Programa reescrito com Mnemoˆnicos.

O que falta ainda a ser melhorado? No´s humanos usamos desde a mais tenra idade
outro tipo de notac¸a˜o para representarmos operac¸o˜es. Este e´ o pro´ximo passo.

4.3.3 Abstrac¸a˜o do reperto´rio de instruc¸o˜es

Nesta etapa, observaremos que as instruc¸o˜es executadas pelo computador nada mais
sa˜o do que manipulac¸a˜o dos dados em memo´ria. Os ca´lculos sa˜o feitos sobre os dados
e o resultado e´ colocado em alguma posic¸a˜o de memo´ria.

Podemos melhorar o grau de abstrac¸a˜o considerando a notac¸a˜o apresentada na
figura 4.6. Isto e´, vamos usar as tradicionais letras finais do alfabeto para ajudar na
melhoria da facilidade visual. Assim poderemos reescrever o programa mais uma vez
e ele ficara´ como apresentado na figura 4.7.

30 CAPI´TULO 4. O MODELO DO COMPUTADOR

x = [p+ 1]
y = [p+ 2]
z = [p+ 3]

[p] Instruc¸a˜o Notac¸a˜o
1 load x y x← [y]
2 add x y z x← [y] + [z]
3 sub x y z x← [y]− [z]
4 mult x y z x← [y]× [z]
5 div x y z x← [y]

[z]

6 sqrt x y x←√[y]
7 read x x← V
8 write x V ← [x]
9 stop •

Figura 4.6: Notac¸a˜o para as instruc¸o˜es.

54 ← 2
50 ← 4
46 ← ∨
47 ← [46]× [46]
48 ← ∨
49 ← [50]× [48]
51 ← [47]− [49]
52 ← √[[51]]
53 ← [46]− [52]
55 ← [53]

[54]

� ← [55]
56 ← [46] + [52]
57 ← [56]

[54]

� ← [57]
•

Figura 4.7: Programa escrito sob nova notac¸a˜o.

4.3.4 Abstrac¸a˜o dos enderec¸os de memo´ria (varia´veis)

Na verdade, assim como ja´ observamos que o co´digo da instruc¸a˜o na˜o nos interessa,
vamos perceber que o mesmo e´ verdade com relac¸a˜o aos enderec¸os de memo´ria. Enta˜o,
convencionaremos que os nu´meros podem ser trocados por nomes. Fazemos isto na
versa˜o seguinte do mesmo programa.

Conve´m notar que o ser humano gosta de dar nomes apropriados para as coi-
sas4. Assim, e´ importante que os nomes que usarmos tenham alguma relac¸a˜o com o

4Quem quiser ter uma ideia do estrago quando na˜o damos bons nomes para as
coisas, pode acompanhar dois dia´logos humor´ısticos, um deles, o original, da du-
pla Abbot & Costello sobre um jogo de beisebol, a outra de um ex-presidente
dos Estados Unidos falando sobre o novo presidente da China. Ambos os v´ıdeos
esta˜o dispon´ıveis no YouTube: (1) http://www.youtube.com/watch?v=sShMA85pv8M; (2)
http://www.youtube.com/watch?v=Lr1DWkgUBTw.

4.4. ABSTRAC¸A˜O DAS INSTRUC¸O˜ES (LINGUAGEM) 31

significado que eles esta˜o desempenhando no programa.
Enta˜o chega o momento de no´s sabermos que o programa que esta´ em memo´ria

recebe como entrada dois valores b e c e escreve como sa´ıda as ra´ızes da equac¸a˜o
x2 − bx + c = 0. Os ca´lculos usam o me´todo de Ba´skara. A figura 4.8 mostra a
convenc¸a˜o para a substituic¸a˜o dos enderec¸os por nomes.

Enderec¸o Nome
54 dois
50 quatro
46 B
47 quadradoB
48 C
49 quadruploC
51 discriminante
52 raizDiscriminante
53 dobroMenorRaiz
55 menorRaiz
56 dobroMaiorRaiz
57 maiorRaiz

Figura 4.8: Dando nomes para os enderec¸os.

Agora, usaremos esta convenc¸a˜o de troca de enderec¸os por nomes para podermos
reescrever o programa ainda mais uma vez, obtendo a versa˜o da figura 4.9.

Esta versa˜o define o u´ltimo grau de abstrac¸a˜o simples. A partir deste ponto a
notac¸a˜o deixa de ser so´ uma abreviatura das instruc¸o˜es e a traduc¸a˜o deixa de ser
direta.

Apesar do fato de ser o u´ltimo n´ıvel de notac¸a˜o simples, ainda e´ poss´ıvel melhorar-
mos o grau de facilidade visual, mas desta vez passamos para