Buscar

Prog I - Aula 2: o que é um programa

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Introdução
INF1005 – Programação I – 33B
Prof. Gustavo Moreira
gmoreira@inf.puc-rio.br 
introdução
tópicos
modelo de computador
o que é um programa
um programa na memóriaum programa na memória
decifrando um código
referência
Capítulo 1 da apostila
2
modelo de um computador
hardware - componentes físicos
software - programas
3
computador hipotético
memória
� posições com endereços 0 a n
� registrador (register)
armazena resultado de operação
instruções
endereço conteúdo
(valor)
…
3
2
1
0
register
instruçãoinstruçãoinstruçãoinstrução descriçãodescriçãodescriçãodescrição
4
read pos lê um número do teclado e grava-o no endereço pos
write pos escreve na tela o número que está em pos
storeconst num pos grava número 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 número que está em register em pos
O que é um programa?
sequência de instruções
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um número lido do teclado
read 0
storeconst 2.5 1
variáveis
valor1, valor2, valor3
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
5
storeconst 2.5 1
add 0 1
store 2
write 2
valor1, valor2, valor3
início
leia valor1
valor2 = 2.5
valor3 = valor1 + valor2
escreva valor3
fim
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
O que é um programa?
sequência de instruções
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um número lido do teclado
1. read 0
2. storeconst 2.5 1
3. add 0 1
EX. 01
read 0 storeconst 2.5 1 add 0 1 store 2
6
end. val.
… …
3
2
1
0
reg.
end. val.
… …
3
2
1
0
reg.
end. val.
… …
3
2
1
0
reg.
end. val.
… …
3
2
1
0
reg.
3. add 0 1
4. store 2
5. write 2
>> 
write 2
O que é um programa?
sequência de instruções
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um número lido do teclado
1. read 0
2. storeconst 2.5 1
3. add 0 1
read 0 storeconst 2.5 1 add 0 1 store 2
7
end. val.
… …
3 ???
2 ???
1 ???
0 ???
reg. ???
end. val.
… …
3 ???
2 ???
1 ???
0 ???
reg. ???
end. val.
… …
3 ???
2 ???
1 ???
0 ???
reg. ???
end. val.
… …
3 ???
2 ???
1 ???
0 ???
reg. ???
3. add 0 1
4. store 2
5. write 2
>> 
write 2
O que é um programa?
sequência de instruções
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um número lido do teclado
1. read 0
2. storeconst 2.5 1
3. add 0 1
Suponha que o usuário digite o valor 3.
read 0read 0read 0read 0 storeconst 2.5 1 add 0 1 store 2
8
end. val.
… …
3 ???
2 ???
1 ???
0 ???
reg. ???
end. val.
… …
3 ???
2 ???
1 ???
0 ???
reg. ???
end. val.
… …
3 ???
2 ???
1 ???
0 ???
reg. ???
end. val.
… …
3 ???
2 ???
1 ???
0 ???
reg. ???
3. add 0 1
4. store 2
5. write 2
> >
write 2
O que é um programa?
sequência de instruções
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um número lido do teclado
1. read 0
2. storeconst 2.5 1
3. add 0 1
read 0read 0read 0read 0 storeconst 2.5 1 add 0 1 store 2
9
end. val.
… …
3 ???
2 ???
1 ???
0 ???
reg. ???
end. val.
… …
3 ???
2 ???
1 ???
0 ???
reg. ???
end. val.
… …
3 ???
2 ???
1 ???
0 ???
reg. ???
end. val.
… …
3 ???
2 ???
1 ???
0 ???
reg. ???
3. add 0 1
4. store 2
5. write 2
> 3> 3
write 2
O que é um programa?
sequência de instruções
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um número lido do teclado
1. read 0
2. storeconst 2.5 1
3. add 0 1
read 0 storeconst 2.5 1 add 0 1 store 2
10
end. val.
… …
3 ???
2 ???
1 ???
0 3333
reg. ???
end. val.
… …
3 ???
2 ???
1 ???
0 3
reg. ???
end. val.
… …
3 ???
2 ???
1 ???
0 3
reg. ???
end. val.
… …
3 ???
2 ???
1 ???
0 3
reg. ???
3. add 0 1
4. store 2
5. write 2
> 3> 3
write 2
O que é um programa?
sequência de instruções
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um número lido do teclado
1. read 0
2. storeconst 2.5 1
3. add 0 1
read 0 storeconststoreconststoreconststoreconst 2.5 12.5 12.5 12.5 1 add 0 1 store 2
11
end. val.
… …
3 ???
2 ???
1 ???
0 3333
reg. ???
end. val.
… …
3 ???
2 ???
1 ???
0 3
reg. ???
end. val.
… …
3 ???
2 ???
1 ???
0 3
reg. ???
end. val.
… …
3 ???
2 ???
1 ???
0 3
reg. ???
3. add 0 1
4. store 2
5. write 2
> 3> 3
write 2
O que é um programa?
sequência de instruções
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um número lido do teclado
1. read 0
2. storeconst 2.5 1
3. add 0 1
read 0 storeconst 2.5 1 add 0 1 store 2
12
end. val.
… …
3 ???
2 ???
1 ???
0 3333
reg. ???
end. val.
… …
3 ???
2 ???
1 2.52.52.52.5
0 3
reg. ???
end. val.
… …
3 ???
2 ???
1 2.5
0 3
reg. ???
end. val.
… …
3 ???
2 ???
1 2.5
0 3
reg. ???
3. add 0 1
4. store 2
5. write 2
> 3> 3
write 2
O que é um programa?
sequência de instruções
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um número lido do teclado
1. read 0
2. storeconst 2.5 1
3. add 0 1
read 0 storeconst 2.5 1 add 0 1add 0 1add 0 1add 0 1 store 2
13
end. val.
… …
3 ???
2 ???
1 ???
0 3333
reg. ???
end. val.
… …
3 ???
2 ???
1 2.52.52.52.5
0 3
reg. ???
end. val.
… …
3 ???
2 ???
1 2.5
0 3
reg. ???
end. val.
… …
3 ???
2 ???
1 2.5
0 3
reg. ???
3. add 0 1
4. store 2
5. write 2
> 3> 3
write 2
O que é um programa?
sequência de instruções
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um número lido do teclado
1. read 0
2. storeconst 2.5 1
3. add 0 1
read 0 storeconst 2.5 1 add 0 1 store 2
14
end. val.
… …
3 ???
2 ???
1 ???
0 3333
reg. ???
end. val.
… …
3 ???
2 ???
1 2.52.52.52.5
0 3
reg. ???
end. val.
… …
3 ???
2 ???
1 2.5
0 3
reg. 5.55.55.55.5
end. val.
… …
3 ???
2 ???
1 2.5
0 3
reg. 5.5
3. add 0 1
4. store 2
5. write 2
> 3> 3
write 2
O que é um programa?
sequência de instruções
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um número lido do teclado
1. read 0
2. storeconst 2.5 1
3. add 0 1
read 0 storeconst 2.5 1 add 0 1 store 2store 2store 2store 2
15
end. val.
… …
3 ???
2 ???
1 ???
0 3333
reg. ???
end. val.
… …
3 ???
2 ???
1 2.52.52.52.5
0 3
reg. ???
end. val.
… …
3 ???
2 ???
1 2.5
0 3
reg. 5.55.55.55.5
end. val.
… …
3 ???
2 ???
1 2.5
0 3
reg. 5.5
3. add 0 1
4. store 2
5. write 2
> 3> 3
write 2
O que é um programa?
sequência de instruções
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um número lido do teclado
1. read 0
2. storeconst 2.5 1
3.add 0 1
read 0 storeconst 2.5 1 add 0 1 store 2
16
end. val.
… …
3 ???
2 ???
1 ???
0 3333
reg. ???
end. val.
… …
3 ???
2 ???
1 2.52.52.52.5
0 3
reg. ???
end. val.
… …
3 ???
2 ???
1 2.5
0 3
reg. 5.55.55.55.5
end. val.
… …
3 ???
2 5.55.55.55.5
1 2.5
0 3
reg. 5.5
3. add 0 1
4. store 2
5. write 2
> 3> 3
write 2
O que é um programa?
sequência de instruções
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um número lido do teclado
1. read 0
2. storeconst 2.5 1
3. add 0 1
read 0 storeconst 2.5 1 add 0 1 store 2
17
end. val.
… …
3 ???
2 ???
1 ???
0 3333
reg. ???
end. val.
… …
3 ???
2 ???
1 2.52.52.52.5
0 3
reg. ???
end. val.
… …
3 ???
2 ???
1 2.5
0 3
reg. 5.55.55.55.5
end. val.
… …
3 ???
2 5.55.55.55.5
1 2.5
0 3
reg. 5.5
3. add 0 1
4. store 2
5. write 2
> 3> 3
write 2write 2write 2write 2
O que é um programa?
sequência de instruções
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um número lido do teclado
1. read 0
2. storeconst 2.5 1
3. add 0 1
read 0 storeconst 2.5 1 add 0 1 store 2
18
end. val.
… …
3 ???
2 ???
1 ???
0 3333
reg. ???
end. val.
… …
3 ???
2 ???
1 2.52.52.52.5
0 3
reg. ???
end. val.
… …
3 ???
2 ???
1 2.5
0 3
reg. 5.55.55.55.5
end. val.
… …
3 ???
2 5.5
1 2.5
0 3
reg. 5.5
3. add 0 1
4. store 2
5. write 2
> 3
5.5
> 3
write 2
dúvidas?dúvidas?
19
O que é um programa?
sequência de instruções
exemplo: programa que escreve na tela o resultado
da soma de 2.5 mais um número lido do teclado
Programa visto
anteriormente:
Este programa
também funciona?
Este programa
também funciona?
EX. 02
20
read 0
storeconst 2.5 1
add 0 1
store 0
write 0
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 2
anteriormente: também funciona? também funciona?
sim
não
sim
não
Como fica um programa na memória?
Suponha que, no nosso computador hipotéticohipotéticohipotéticohipoté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:
21
0 0 0 0 0 0 0 0
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) 
� se 0 indica positivo e 1 indica negativo, temos:
1 0 0 0 0 0 0 2
S
-2 representado por
-457 representado por
22
1 0 0 0 0 0 0 2
1 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
� parte fracionária
S
I I I I
F F F
� parte fracionária
segundo essa convenção:
-257.4 é representado por
Qual é o maior inteiro que poderíamos representar
utilizando essa convenção? 
E o menor inteiro positivo?
23
1 0 2 5 7 4 0 0
0 9 9 9 9 9 9 9
0 0 0 0 0 0 0 1
Como fica um programa na memória?
Como representar um número fracionário?
assumindo a seguinte notação científica:
-257.4 = -0.2574x103
reservando subseções para (ponto flutuante):
� mantissa (com sinal)
Ms M M M M
� mantissa (com sinal)
� expoente (com sinal)
segundo essa convenção:
-257.4 é representado por
Qual é o maior número?
E o menor positivo?
24
Ms M M M M
Es E E
1 2 5 7 4 0 0 3
0 9 9 9 9 0 9 9
0 0 0 0 1 1 9 9
Como fica um programa na memória?
E se o número não couber?
0.9999x1099 + 1: overflow
2.9375: perda de precisão
2.937
0 2 9 3 7 0 0 1
2.937
25
Como fica um programa na memória?
Como representar instruções?
associando um código a cada instrução
read: 0; write: 1; storeconst: 2; add: 3; 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 pos1 pos2; …; store pos
read 0 0 0 0 0 0 0 0 0 # código de 'read' : 0
26
read 0
storeconst 2.5 1
add 0 1
store 2
write 2
0 0 0 0 0 0 0 0 # código de 'read' : 0
0 0 0 0 0 0 0 0 # 0
0 0 0 0 0 0 0 2 # código 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 # código 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 # código de 'store' : 7
0 0 0 0 0 0 0 2 # 2
0 0 0 0 0 0 0 1 # código de 'write' : 1
0 0 0 0 0 0 0 2 # 2
dúvidas?dúvidas?
27
decifrando o código
Considerando a representação numérica e o código utilizado, o 
que faz o programa a seguir?
read: 0; write: 1; storeconst: 2; add: 3; sub: 4; mul: 5; div: 6; store: 7
EX. 03
código equivalente
_________________________
_________________________
_________________________
memória a cada passo
end P1 P2 P3 P4 P5 P6 P7
…
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
28
_________________________
_________________________
_________________________
_________________________
_________________________
descrição em português
3
2
1
0
reg
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 5
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
__________________________________________________
__________________________________________________
__________________________________________________
decifrando o código
Considerando a representação numérica e o código utilizado, o 
que faz o programa a seguir?
read: 0; write: 1; storeconst: 2; add: 3; sub: 4; mul: 5; div: 6; store: 7
EX. 04
código equivalente
_________________________
_________________________
_________________________
end P1 P2 P3 P4 P5 P6 P7
…
memória a cada passo0 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 0 0 0 0 0 0
0 0 0 0 0 0 0 0
29
_________________________
_________________________
_________________________
_________________________
_________________________
3
2
1
0
reg
descrição em português
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 2
0 3 1 4 2 0 0 1
0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 5
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
__________________________________________________
__________________________________________________
__________________________________________________
dúvidas?dúvidas?
30
Prof. Gustavo Moreira
gmoreira@inf.puc-rio.br

Outros materiais