Introdução INF005 Programação I Prof. Hélio Lopes lopes@inf.puc-rio.br sala 408 RDC introdução tópicos modelo de computador o que é um programa um programa na memória decifrando um código referência Capítulo da apostila
modelo de um computador hardware - componentes físicos software - programas computador hipotético memória posições com endereços 0 a n registrador (register) armazena resultado de operação instruções endereço 0 register conteúdo (valor) instrução read pos write pos storeconst num pos add pos pos sub pos pos mul pos pos div pos pos store pos descrição lê um número do teclado e grava-o no endereço pos escreve na tela o número que está em pos grava número num em pos calcula pos + pos e grava resultado em register calcula pos - pos e grava resultado em register calcula pos pos e grava resultado em register calcula pos / pos e grava resultado em register grava o número que está em register em pos
da soma de.5 mais um número lido do teclado 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 read 0 storeconst.5 add 0 store write variáveis valor, valor, valor início leia valor valor =.5 valor = valor + valor escreva valor fim EX. 0 da soma de.5 mais um número lido do teclado. read 0. storeconst.5. add 0 4. store 5. write read 0 storeconst.5 add 0 store > end. val. end. val. end. val. end. 0 0 0 0 reg. reg. reg. reg. val. write >
da soma de.5 mais um número lido do teclado. read 0. storeconst.5. add 0 4. store 5. write read 0 storeconst.5 add 0 store > end. val. end. val. end. val. end. val.???????????????????????????????????? reg.??? reg.??? reg.??? reg.??? write > da soma de.5 mais um número lido do teclado. read 0. storeconst.5. add 0 4. store 5. write Suponha que o usuário digite o valor. read 0 storeconst.5 add 0 store > end. val. end. val. end. val. end. val.???????????????????????????????????? reg.??? reg.??? reg.??? reg.??? write > 4
da soma de.5 mais um número lido do teclado. read 0. storeconst.5. add 0 4. store 5. write read 0 storeconst.5 add 0 store > end. val. end. val. end. val. end. val.???????????????????????????????????? reg.??? reg.??? reg.??? reg.??? write > da soma de.5 mais um número lido do teclado. read 0. storeconst.5. add 0 4. store 5. write read 0 storeconst.5 add 0 store > end. val. end. val. end. val. end. val.???????????????????????????????????? 0 0 0 0 reg.??? reg.??? reg.??? reg.??? write > 5
da soma de.5 mais um número lido do teclado. read 0. storeconst.5. add 0 4. store 5. write read 0 storeconst.5 add 0 store > end. val. end. val. end. val. end. val.???????????????????????????????????? 0 0 0 0 reg.??? reg.??? reg.??? reg.??? write > da soma de.5 mais um número lido do teclado. read 0. storeconst.5. add 0 4. store 5. write read 0 storeconst.5 add 0 store > end. val. end. val. end. val. end. val.???????????????????????????.5.5.5 0 0 0 0 reg.??? reg.??? reg.??? reg.??? write > 6
da soma de.5 mais um número lido do teclado. read 0. storeconst.5. add 0 4. store 5. write read 0 storeconst.5 add 0 store > end. val. end. val. end. val. end. val.???????????????????????????.5.5.5 0 0 0 0 reg.??? reg.??? reg.??? reg.??? write > da soma de.5 mais um número lido do teclado. read 0. storeconst.5. add 0 4. store 5. write read 0 storeconst.5 add 0 store > end. val. end. val. end. val. end. val.???????????????????????????.5.5.5 0 0 0 0 reg.??? reg.??? reg. 5.5 reg. 5.5 write > 7
da soma de.5 mais um número lido do teclado. read 0. storeconst.5. add 0 4. store 5. write read 0 storeconst.5 add 0 store > end. val. end. val. end. val. end. val.???????????????????????????.5.5.5 0 0 0 0 reg.??? reg.??? reg. 5.5 reg. 5.5 write > da soma de.5 mais um número lido do teclado. read 0. storeconst.5. add 0 4. store 5. write read 0 storeconst.5 add 0 store > end. val. end. val. end. val. end. val.????????????????????? 5.5???.5.5.5 0 0 0 0 reg.??? reg.??? reg. 5.5 reg. 5.5 write > 8
da soma de.5 mais um número lido do teclado. read 0. storeconst.5. add 0 4. store 5. write read 0 storeconst.5 add 0 store > end. val. end. val. end. val. end. val.????????????????????? 5.5???.5.5.5 0 0 0 0 reg.??? reg.??? reg. 5.5 reg. 5.5 write > da soma de.5 mais um número lido do teclado. read 0. storeconst.5. add 0 4. store 5. write read 0 storeconst.5 add 0 store > end. val. end. val. end. val. end. val.????????????????????? 5.5???.5.5.5 0 0 0 0 reg.??? reg.??? reg. 5.5 reg. 5.5 write > 5.5 9
dúvidas? EX. 0 da soma de.5 mais um número lido do teclado Programa visto anteriormente: read 0 storeconst.5 add 0 store write Este programa também funciona? read 0 storeconst.5 add 0 store 0 write 0 Este programa também funciona? read 0 storeconst.5 add 0 store 0 write sim não sim não 0
Como fica um programa na memória? Suponha que, no nosso computador hipotético: cada posição de memória tem 8 subseções cada subseção pode armazenar um algarismo de 0 a 9 Como representar um número inteiro? 0 é representado por considerando apenas inteiros positivos, o maior número seria: 9 9 9 9 9 9 9 9 Como fica um programa na memória? Como representar um número negativo? reservando uma subseção para o sinal (por exemplo, a primeira) S se 0 indica positivo e indica negativo, temos: - representado por -457 representado por 0 0 0 0 0 0 0 0 0 0 4 5 7
Como fica um programa na memória? Como representar um número fracionário? reservando subseções para (ponto fixo): sinal parte inteira S I I I I parte fracionária segundo essa convenção: -57.4 é representado por F F F 0 5 7 4 0 0 Qual é o maior inteiro que poderíamos representar utilizando essa convenção? 0 9 9 9 9 9 9 9 E o menor inteiro positivo? 0 0 0 0 0 0 0 Como fica um programa na memória? Como representar um número fracionário? assumindo a seguinte notação científica: -57.4 = -0.574x0 reservando subseções para (ponto flutuante): mantissa (com sinal) Ms M M M M expoente (com sinal) segundo essa convenção: Es E E -57.4 é representado por Qual é o maior número? E o menor positivo? 5 7 4 0 0 0 9 9 9 9 0 9 9 0 0 0 0 9 9
Como fica um programa na memória? E se o número não couber? 0.9999x0 99 + : overflow.975: perda de precisão.97 0 9 7 0 0 Como fica um programa na memória? Como representar instruções? associando um código a cada instrução read: 0; write: ; storeconst: ; add: ; sub: 4; mul: 5; div: 6; store: 7 dependendo da instrução, os valores seguintes indicam parâmetros read pos; write pos; storeconst val pos; add pos pos; ; store pos read 0 storeconst.5 add 0 store write # código de 'read' : 0 # 0 0 0 0 0 0 0 0 # código de 'storeconst' : 0 5 0 0 0 0 #.5 (valor real) 0 0 0 0 0 0 0 # 0 0 0 0 0 0 0 # código de 'add' : # 0 0 0 0 0 0 0 0 # 0 0 0 0 0 0 0 7 # código de 'store' : 7 0 0 0 0 0 0 0 # 0 0 0 0 0 0 0 # código de 'write' : 0 0 0 0 0 0 0 #
dúvidas? decifrando o código EX. 0 Considerando a representação numérica e o código utilizado, o que faz o programa a seguir? read: 0; write: ; storeconst: ; add: ; sub: 4; mul: 5; div: 6; store: 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 código equivalente descrição em português memória a cada passo end P P P P4 P5 P6 P7 0 reg 4
decifrando o código EX. 04 Considerando a representação numérica e o código utilizado, o que faz o programa a seguir? read: 0; write: ; storeconst: ; add: ; sub: 4; mul: 5; div: 6; store: 7 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 código equivalente descrição em português memória a cada passo end P P P P4 P5 P6 P7 0 reg dúvidas? Prof. Hélio Lopes lopes@inf.puc-rio.br sala 408 RDC 5