Você está na página 1de 15

INF1005 Programao I Prof.

Hlio Lopes

8/14/13

Introduo

INF1005 Programao I
Prof. Hlio Lopes
lopes@inf.puc-rio.br
sala 408 RDC

introduo
tpicos
modelo de computador
o que um programa
um programa na memria
decifrando um cdigo

referncia
Captulo 1 da apostila

INF1005 Programao I Prof. Hlio Lopes

8/14/13

modelo de um computador
hardware - componentes fsicos

software - programas

computador hipottico

endereo

contedo
(valor)

memria
posies com endereos 0 a n

registrador (register)
armazena resultado de operao

instrues

0
register

instruo

descrio

read pos

l um nmero do teclado e grava-o no endereo pos

write pos

escreve na tela o nmero que est em pos

storeconst num pos

grava nmero num em pos

add pos1 pos2

calcula pos1 + pos2 e grava resultado em register

sub pos1 pos2

calcula pos1 - pos2 e grava resultado em register

mul pos1 pos2

calcula pos1 pos2 e grava resultado em register

div pos1 pos2

calcula pos1 / pos2 e grava resultado em register

store pos

grava o nmero que est em register em pos

INF1005 Programao I Prof. Hlio Lopes

8/14/13

O que um programa?
sequncia de instrues
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um nmero lido do teclado
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 2
0 2 5 0 0 0 0 1
0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 3
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 7
0 0 0 0 0 0 0 2
0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 2

read 0
storeconst 2.5 1
add 0 1
store 2
write 2

variveis
valor1, valor2, valor3
incio
leia valor1
valor2 = 2.5
valor3 = valor1 + valor2
escreva valor3
fim

O que um programa?

EX. 01

sequncia de instrues
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um nmero lido do teclado
1.
2.
3.
4.
5.

read 0
storeconst 2.5 1
add 0 1
store 2
write 2

read 0
>

storeconst 2.5 1

end.

val.

end.

add 0 1

val.

store 2

end.

val.

write 2

end.

reg.

reg.

reg.

reg.

val.

>

INF1005 Programao I Prof. Hlio Lopes

8/14/13

O que um programa?
sequncia de instrues
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um nmero lido do teclado
1.
2.
3.
4.
5.

read 0
storeconst 2.5 1
add 0 1
store 2
write 2

read 0

storeconst 2.5 1

end.

>

val.

end.

add 0 1

val.

store 2

end.

val.

write 2

end.

val.

???

???

???

???

???

???

???

???

???

???

???

???

???

???

???

???

reg.

???

reg.

???

reg.

???

reg.

???

>

O que um programa?
sequncia de instrues
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um nmero lido do teclado
1.
2.
3.
4.
5.

read 0
storeconst 2.5 1
add 0 1
store 2
write 2

read 0
>

Suponha que o usurio digite o valor 3.

storeconst 2.5 1

end.

val.

end.

add 0 1

val.

store 2

end.

val.

write 2

end.

val.

???

???

???

???

???

???

???

???

???

???

???

???

???

???

???

???

reg.

???

reg.

???

reg.

???

reg.

???

>

INF1005 Programao I Prof. Hlio Lopes

8/14/13

O que um programa?
sequncia de instrues
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um nmero lido do teclado
1.
2.
3.
4.
5.

read 0
storeconst 2.5 1
add 0 1
store 2
write 2

read 0

storeconst 2.5 1

end.

> 3

val.

end.

add 0 1

val.

store 2

end.

val.

write 2

end.

val.

???

???

???

???

???

???

???

???

???

???

???

???

???

???

???

???

reg.

???

reg.

???

reg.

???

reg.

???

> 3

O que um programa?
sequncia de instrues
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um nmero lido do teclado
1.
2.
3.
4.
5.

read 0
storeconst 2.5 1
add 0 1
store 2
write 2

read 0
> 3

storeconst 2.5 1

end.

val.

end.

add 0 1

val.

store 2

end.

val.

write 2

end.

val.

???

???

???

???

???

???

???

???

???

???

???

???

reg.

???

reg.

???

reg.

???

reg.

> 3

3
???

INF1005 Programao I Prof. Hlio Lopes

8/14/13

O que um programa?
sequncia de instrues
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um nmero lido do teclado
1.
2.
3.
4.
5.

read 0
storeconst 2.5 1
add 0 1
store 2
write 2

read 0

storeconst 2.5 1

end.

> 3

val.

end.

add 0 1

val.

store 2

end.

val.

write 2

end.

val.

???

???

???

???

???

???

???

???

???

???

???

???

0
reg.

3
???

0
reg.

???

reg.

???

reg.

> 3

3
???

O que um programa?
sequncia de instrues
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um nmero lido do teclado
1.
2.
3.
4.
5.

read 0
storeconst 2.5 1
add 0 1
store 2
write 2

read 0
> 3

storeconst 2.5 1

end.

val.

end.

add 0 1

val.

store 2

end.

val.

write 2

end.

val.

???

???

???

???

???

???

???

???

???

2.5

2.5

2.5

reg.

???

reg.

???

reg.

???

reg.

> 3

3
???

INF1005 Programao I Prof. Hlio Lopes

8/14/13

O que um programa?
sequncia de instrues
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um nmero lido do teclado
1.
2.
3.
4.
5.

read 0
storeconst 2.5 1
add 0 1
store 2
write 2

read 0

storeconst 2.5 1

end.

> 3

val.

end.

add 0 1

val.

store 2

end.

val.

write 2

end.

val.

???

???

???

???

???

???

???

???

???

2.5

2.5

2.5

0
reg.

3
???

0
reg.

???

reg.

???

reg.

> 3

3
???

O que um programa?
sequncia de instrues
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um nmero lido do teclado
1.
2.
3.
4.
5.

read 0
storeconst 2.5 1
add 0 1
store 2
write 2

read 0
> 3

storeconst 2.5 1

end.

val.

end.

add 0 1

val.

store 2

end.

val.

write 2

end.

val.

???

???

???

???

???

???

???

???

???

2.5

2.5

2.5

reg.

???

reg.

???

reg.

5.5

reg.

> 3

3
5.5

INF1005 Programao I Prof. Hlio Lopes

8/14/13

O que um programa?
sequncia de instrues
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um nmero lido do teclado
1.
2.
3.
4.
5.

read 0
storeconst 2.5 1
add 0 1
store 2
write 2

read 0

storeconst 2.5 1

end.

> 3

val.

end.

add 0 1

val.

store 2

end.

val.

write 2

end.

val.

???

???

???

???

???

???

???

???

???

2.5

2.5

2.5

0
reg.

3
???

0
reg.

???

reg.

5.5

reg.

> 3

3
5.5

O que um programa?
sequncia de instrues
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um nmero lido do teclado
1.
2.
3.
4.
5.

read 0
storeconst 2.5 1
add 0 1
store 2
write 2

read 0
> 3

storeconst 2.5 1

end.

val.

end.

add 0 1

val.

store 2

end.

val.

write 2

end.

val.

???

???

???

???

???

???

???

5.5

???

2.5

2.5

2.5

reg.

???

reg.

???

reg.

5.5

reg.

> 3

3
5.5

INF1005 Programao I Prof. Hlio Lopes

8/14/13

O que um programa?
sequncia de instrues
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um nmero lido do teclado
1.
2.
3.
4.
5.

read 0
storeconst 2.5 1
add 0 1
store 2
write 2

read 0

storeconst 2.5 1

end.

> 3

val.

end.

add 0 1

val.

store 2

end.

val.

write 2

end.

val.

???

???

???

???

???

???

???

5.5

???

2.5

2.5

2.5

0
reg.

3
???

0
reg.

???

reg.

5.5

reg.

> 3

3
5.5

O que um programa?
sequncia de instrues
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um nmero lido do teclado
1.
2.
3.
4.
5.

read 0
storeconst 2.5 1
add 0 1
store 2
write 2

read 0
> 3

storeconst 2.5 1

end.

val.

end.

add 0 1

val.

store 2

end.

val.

write 2

end.

val.

???

???

???

???

???

???

???

5.5

???

2.5

2.5

2.5

reg.

???

reg.

???

reg.

5.5

reg.

> 3
5.5

3
5.5

INF1005 Programao I Prof. Hlio Lopes

8/14/13

dvidas?

O que um programa?

EX. 02

sequncia de instrues
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um nmero lido do teclado
Programa visto
anteriormente:

Este programa
tambm funciona?

Este programa
tambm funciona?

read 0
storeconst 2.5 1
add 0 1
store 2
write 2

read 0
storeconst 2.5 1
add 0 1
store 0
write 0

read 0
storeconst 2.5 1
add 0 1
store 0
write 2

sim

sim

no

no

10

INF1005 Programao I Prof. Hlio Lopes

8/14/13

Como fica um programa na memria?


Suponha que, no nosso computador hipottico:
cada posio de memria tem 8 subsees
cada subseo pode armazenar um algarismo de 0

a9

Como representar um nmero inteiro?


0 representado por

0 0 0 0 0 0 0 0

considerando apenas inteiros positivos, o maior

nmero seria:

9 9 9 9 9 9 9 9

Como fica um programa na memria?


Como representar um nmero negativo?

reservando uma subseo para o sinal


(por exemplo, a primeira) S

se 0 indica positivo e 1 indica negativo, temos:


-2 representado por

1 0 0 0 0 0 0 2

-457 representado por

1 0 0 0 0 4 5 7

11

INF1005 Programao I Prof. Hlio Lopes

8/14/13

Como fica um programa na memria?


Como representar um nmero fracionrio?
reservando subsees para (ponto fixo):
sinal
parte inteira

S
I I I I

parte fracionria

F F F

segundo essa conveno:


-257.4 representado por

1 0 2 5 7 4 0 0

Qual o maior inteiro que poderamos representar


utilizando essa conveno?
0 9 9 9 9 9
E o menor inteiro positivo?

9 9

0 0 0 0 0 0 0 1

Como fica um programa na memria?


Como representar um nmero fracionrio?
assumindo a seguinte notao cientfica:
-257.4 = -0.2574x103

reservando subsees para (ponto flutuante):


mantissa (com sinal)
expoente (com sinal)

Ms M M M M
Es E E

segundo essa conveno:


-257.4 representado por

1 2 5 7 4 0 0 3

Qual o maior nmero?

0 9 9 9 9 0 9 9

E o menor positivo?

0 0 0 0 1 1 9 9

12

INF1005 Programao I Prof. Hlio Lopes

8/14/13

Como fica um programa na memria?


E se o nmero no couber?
0.9999x1099 + 1: overflow
2.9375: perda de preciso
2.937

0 2 9 3 7 0 0 1

Como fica um programa na memria?


Como representar instrues?
associando um cdigo a cada instruo
read: 0; write: 1; storeconst: 2; add: 3; sub: 4; mul: 5; div: 6; store: 7

dependendo da instruo, os valores seguintes indicam parmetros


read pos; write pos; storeconst val pos; add pos1 pos2; ; store pos

read 0
storeconst 2.5 1
add 0 1
store 2
write 2

0 0 0 0 0 0 0 0 # cdigo de 'read' : 0
0 0 0 0 0 0 0 0 # 0
0 0 0 0 0 0 0 2 # cdigo de 'storeconst' : 2
0 2 5 0 0 0 0 1 # 2.5 (valor real)
0 0 0 0 0 0 0 1 # 1
0 0 0 0 0 0 0 3 # cdigo de 'add' : 3
0 0 0 0 0 0 0 0 # 0
0 0 0 0 0 0 0 1 # 1
0 0 0 0 0 0 0 7 # cdigo de 'store' : 7
0 0 0 0 0 0 0 2 # 2
0 0 0 0 0 0 0 1 # cdigo de 'write' : 1
0 0 0 0 0 0 0 2 # 2

13

INF1005 Programao I Prof. Hlio Lopes

8/14/13

dvidas?

decifrando o cdigo

EX. 03

Considerando a representao numrica e o cdigo utilizado, o


que faz o programa a seguir?
read: 0; write: 1; storeconst: 2; add: 3; sub: 4; mul: 5; div: 6; store: 7
cdigo equivalente

00000000
00000000
00000000
00000001
00000005
00000000
00000001
00000007
00000002
00000001
0 0 0 0 0 0 0 2

memria a cada passo

_________________________

end

_________________________

_________________________

_________________________

_________________________

_________________________

_________________________

P1

P2

P3

P4

P5

P6

P7

reg

descrio em portugus

__________________________________________________
__________________________________________________
__________________________________________________

14

INF1005 Programao I Prof. Hlio Lopes

8/14/13

decifrando o cdigo

EX. 04

Considerando a representao numrica e o cdigo utilizado, o


que faz o programa a seguir?
read: 0; write: 1; storeconst: 2; add: 3; sub: 4; mul: 5; div: 6; store: 7
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
3
0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0

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
2
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
0
0
0
0
0
0
0
0
0
0

0
0
5
0
0
7
0
2
1
1
5
0
1
7
2
1
2

cdigo equivalente

memria a cada passo

_________________________

end

_________________________

_________________________

_________________________

_________________________

_________________________

_________________________

P1

P2

P3

P4

P5

P6

P7

reg

descrio em portugus

__________________________________________________
__________________________________________________
__________________________________________________

dvidas?
Prof. Hlio Lopes
lopes@inf.puc-rio.br
sala 408 RDC

15

Você também pode gostar