Vous êtes sur la page 1sur 20

INF 1005 Programao I - Prof.

Hlio Lopes

8/7/12

Algoritmos e Pseudocdigo

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

algoritmos e pseudocdigo
tpicos
algoritmo definies
representao e resoluo de problemas
representao de programa
pseudocdigo
fluxograma
construes
entrada e sada
condicionais
repeties
2

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

algoritmos

algoritmo - definies
especificao precisa (no ambgua) de um
comportamento que visa resolver um problema bem
definido

sequncia finita de instrues precisas que podem ser


executadas mecanicamente num perodo de tempo
finito e com uma quantidade de esforo finito

programa de computador
algoritmo codificado em uma linguagem de programao
4

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

algoritmo - definies
especificao precisa (no ambgua) de um
comportamento que visa resolver um problema bem
definido

Uma receita culinria um algoritmo?


"sal a gosto" vs. "1/4 colher (ch) de sal"
"bata bem" vs.

"bata at a massa ficar homognea"


"forno mdio" vs. "forno a 220C"

algoritmo definies
especificao precisa (no ambgua) de um
comportamento que visa resolver um problema bem
definido
condies iniciais (estado de problema)
como as coisas so

objetivos (estado desejado)


como as coisas deveriam ser

recursos
meios ou mtodos para transformar um estado de problema

desde as condies iniciais at os objetivos


ex: movimentos possveis em um jogo

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

exemplo

EX. 01

Escreva um algoritmo com objetivo de matar a fome na rua

pessoa com fome

algoritmo

pessoa sem fome

1.

______________________________________________

2.

______________________________________________

3.

______________________________________________

4.

______________________________________________

5.

______________________________________________

6.

______________________________________________ 7

exemplo isto um algoritmo?


objetivo: matar a fome na rua
1.

decidir onde comer, conforme tempo e dinheiro disponvel

2.

ir at o local escolhido

3.

decidir o que comer, conforme cardpio, tempo e dinheiro


disponvel

4.

fazer o pedido

5.

pagar

6.

aguardar o pedido

7.

comer

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

resolver o problema antes de programar


Qual a situao inicial? J temos todos os dados de entrada?
Esses dados so especficos a uma nica situao ou podemos generalizar?
Existe alguma notao para representar de forma sucinta os dados e os
estados intermedirios?

Qual o objetivo? / Quais so os objetivos?


H um nico objetivo, ou so vrios?
Cada objetivo pode ser dividido em sub-objetivos, ou no?
Os (sub-)objetivos so independentes, ou no?
H obstculos a serem vencidos? Como podem ser vencidos?
H restries na elaborao da soluo? (tempo, espao em memria, custo)

Quais so os recursos (movimentos, operaes, procedimentos, regras,


transformaes)?
Para cada recurso, h restries ou pr-condies para sua aplicao?
H outros recursos mais simples que satisfaam essas pr-condies?
Quando voc aplica um recurso, o que muda? (variantes)
Quando voc aplica um recurso, o que permanece igual? (invariantes)
H outros recursos mais poderosos para resolver esse problema?
9

adaptado de Blank & Barnes (1998) The Universal Machine.

exemplo Como chegar ao destino?


Rua 4

Rua 5

Rua 6

Rua 7

Av.1

Av.2

Av.3

Av.4

10

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

problemas e solues

um problema pode ter vrias solues

algumas solues so melhores do que outras

um problema pode ter solues parciais

restries no espao de problema podem ajudar na


busca por uma soluo

11

representao do espao de problema


descrio do mundo:
Rua 4

ruas: [4,7]

Rua 5

avenidas: [1,4]

convenes de representao:

Rua 6

posio: (r,a)
obstculo: (r1,a1,r2,a2)

Rua 7

Av.1

Av.2

Av.3

Av.4

condies iniciais:
posio: (7,1)
obstculos: { (6,2,7,2), (4,2,5,2), (5,3,6,3), (6,4,7,4) }

objetivo:
posio: (4,3)
Quais as consequncias dessa representao?
12

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

algoritmo - exemplo
objetivo: verificar se um aluno est aprovado
(mdia das 3 notas >= 5.0) ou reprovado (caso
contrrio)

13

como representar um algoritmo


linguagem natural
1. Obter as trs notas das provas
do aluno
2. Calcular a mdia aritmtica das
trs notas
3. Se a mdia for maior ou igual a
5, escrever aprovado
4. Caso contrrio, escrever
reprovado

fluxograma
incio

leia (nota1, nota2,


nota3);

media
(nota1+nota2+nota3)/3;

pseudocdigo
variveis
media, nota1, nota2, nota3
incio
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) ento
escreva aluno aprovado
seno
escreva aluno reprovado
fim-se
fim

media >= 5.0?

no

sim
escreva
(aprovado);

escreva
(reprovado);

fim
14

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

algoritmo em pseudocdigo
variveis
media, nota1, nota2, nota3
incio
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) ento
escreva aluno aprovado
seno
escreva aluno reprovado
fim-se
fim

15

algoritmo em pseudocdigo
variveis
media, nota1, nota2, nota3
incio
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) ento
escreva aluno aprovado
seno
escreva aluno reprovado
fim-se
fim

variveis armazenam valores (dados,


informaes) necessrios soluo do
problema:
dados de entrada:
nota1, nota2, nota3
dados utilizados no processamento:
mdia
dados de sada

16

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

algoritmo exemplo
objetivo: a partir de trs notas de um aluno, verificar se
ele est:
aprovado (mdia >= 5.0)
em prova final (mdia < 5.0 e mdia >= 3.0) ou
reprovado (mdia < 3)

17

fluxograma (com defeito)


objetivo: a partir de trs notas de um aluno,
verificar se ele est:

incio

aprovado (mdia >= 5.0)


leia (nota1, nota2,
nota3);

em prova final (mdia < 5.0 e mdia >= 3.0) ou


reprovado (mdia < 3)

media
(nota1+nota2+nota3)/3;

media >= 5.0?

sim
escreva
(aprovado);

no

media >
3.0?

no

sim
escreva
(em prova final);

escreva
(reprovado);

fim
18

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

fluxograma (com defeito)


objetivo: a partir de trs notas de um aluno,
verificar se ele est:

incio

aprovado (mdia >= 5.0)


leia (nota1, nota2,
nota3);

em prova final (mdia < 5.0 e mdia >= 3.0) ou


reprovado (mdia < 3)

media
(nota1+nota2+nota3)/3;

media >= 5.0?

no

sim

media >
3.0?

no

sim

escreva
(aprovado);

escreva
(em prova final);

escreva
(reprovado);

fim
19

fluxograma (corrigido)
objetivo: a partir de trs notas de um aluno,
verificar se ele est:

incio

aprovado (mdia >= 5.0)


leia (nota1, nota2,
nota3);

em prova final (mdia < 5.0 e mdia >= 3.0) ou


reprovado (mdia < 3)

media
(nota1+nota2+nota3)/3;

media >= 5.0?

sim
escreva
(aprovado);

no

media >=
3.0?

no

sim
escreva
(em prova final);

escreva
(reprovado);

fim
20

10

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

algoritmo em pseudocdigo
variveis
media, nota1, nota2, nota3

variveis
media, nota1, nota2, nota3

incio
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) ento
escreva aluno aprovado
seno
se (media >= 3) ento
escreva aluno em prova final
seno
escreva aluno reprovado
fim-se
fim-se
fim

incio
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) ento
escreva aluno aprovado
seno se (media >= 3) ento
escreva aluno em prova final
seno
escreva aluno reprovado
fim-se
fim

21

entrada e
sada
22

11

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

entrada e sada
pseudocdigo
variveis
media, nota1, nota2, nota3
incio
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) ento
escreva aluno aprovado
seno
escreva aluno reprovado
fim-se
fim

23

exerccio

EX. 02

Escreva o pseudocdigo ou desenhe o fluxograma de um


programa que leia do teclado uma temperatura em Fahrenheit e
escreva na tela a temperatura equivalente em Celsius (tempC =
(tempF-32)/1.8).
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
24

12

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

condicionais

25

controle de execuo: condicionais


pseudocdigo

fluxograma

variveis
media, nota1, nota2, nota3
incio
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) ento
escreva aluno aprovado
seno
escreva aluno reprovado
fim-se
fim

se (condio) ento
instruo V1
instruo V2

instruo Vn
seno
instruo F1
instruo F2

instruo Fn
fim-se

instrues
executadas se
a condio for
verdadeira

incio

leia (nota1, nota2,


nota3);

media
(nota1+nota2+nota3)/3;

media >=
5.0?

sim
escreva
(aprovado);

instrues
executadas se
a condio for
falsa

no

escreva
(reprovado);

fim
26

13

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

dvidas?

27

exerccio

EX. 03

Escreva o pseudocdigo ou desenhe o fluxograma de um


programa que leia do teclado a probabilidade de chuva e escreva
na tela sol, caso a probabilidade seja menor que 60%; e chuva,
caso contrrio.
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
28

14

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

condicionais expresses booleanas


uma condio representada por uma expresso booleana, que
resulta em um valor verdadeiro ou falso
exemplos:
media > 5

maior que

media >= 5 maior ou igual a


media < 5

menor que

media <= 5 menor ou igual a


media == 5 igual a
media != 5 diferente de

29

condicionais combinando expresses


se (media < 5 e media >= 3)
escreva (em prova final)
fim

se (nota1 == 10 ou nota2 == 10)


escreva (excelente!)
fim

conjuno (E)
resultado s verdadeiro se
ambos os valores forem
verdadeiros

disjuno (OU)
resultado s falso se ambos
os valores forem falsos

AeB

A ou B

30

15

INF 1005 Programao I - Prof. Hlio Lopes

exerccio

8/7/12

EX. 04

Escreva o pseudocdigo ou desenhe o fluxograma de um


programa que obtm as 3 notas de um aluno, calcula sua mdia e,
caso o aluno tenha sido aprovado, escreva na tela aprovado. O
aluno aprovado se ele teve mdia maior ou igual a 5 e nenhuma
nota menor que 3.
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
31

repeties

32

16

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

controle de execuo: repeties


pseudocdigo
variveis
num, media, nota1, nota2, nota3
incio
leia num
enquanto (num > 0) faa
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) ento
escreva aluno aprovado
seno
escreva aluno reprovado
fim-se
num= num 1
fim-enquanto
fim

fluxograma

incio
leia num

no

num > 0?

fim

sim
leia (nota1, nota2,
nota3);

media
(nota1+nota2+nota3)/3;

no

media >= 5.0?

enquanto (condio) faa


instruo V1
instrues executadas

enquanto a condio
for verdadeira
instruo Vn
fim-enquanto
instrues executadas

sim
escreva
(reprovado);

escreva
(aprovado);
num = num - 1

quando a condio
ou se torna falsa

33

exerccio

EX. 05

Qual a sada dos seguintes programas?


variveis
num
incio
num = 0
enquanto (num < 3) faa
escreva num
num= num + 1
fim-enquanto
fim

variveis
num
incio
num = 0
enquanto (num < 3) faa
escreva num
num= num - 1
fim-enquanto
fim

sada

sada

_______________________________

_______________________________

_______________________________

_______________________________

_______________________________

_______________________________

_______________________________

_______________________________


valor
de num a cada iterao
I0

num

I1

I2

I3

I4

I5

valor de num a cada iterao


I6

I7

I8

I0

num

I1

I2

I3

I4

I5

I6

I7

I8
34

17

INF 1005 Programao I - Prof. Hlio Lopes

exerccio

8/7/12

EX. 06

Escreva o pseudocdigo de um programa que l o nmero de


alunos de uma turma e, para cada aluno, l as suas trs notas,
escreve sua mdia e, no final, escreve a mdia da turma.
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
35

exerccio

EX. 06

Escreva o pseudocdigo de um programa que l o nmero de


alunos de uma turma e, para cada aluno, l as suas trs notas,
escreve sua mdia e, no final, escreve a mdia da turma.
variveis
num_alunos, i
media, media_turma, nota1, nota2, nota3
incio
leia num_alunos
i=0
media_turma = 0
enquanto (i < num_alunos) faa
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
media_turma = media_turma + media
i=i+1
fim-enquanto
media_turma = media_turma / num_alunos
escreva media_turma
fim

Em que situaes
este programa falha?

36

18

INF 1005 Programao I - Prof. Hlio Lopes

exerccio

8/7/12

EX. 07

Escreva o pseudocdigo ou desenhe o fluxograma de um


programa que l um nmero no negativo e escreve na tela o seu
fatorial. Lembrando: n! = n x (n-1) x ... x 1
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
37

exerccio

EX. 07

Escreva o pseudocdigo de um programa que l um nmero no


negativo e escreve na tela o seu fatorial.
Lembrando: n! = n x (n-1) x ... x 1

variveis
f, n
incio
leia n
f=1
enquanto (n > 1) faa
f=f*n
n=n-1
fim-enquanto
escreva f
fim

Em que situao esse


programa falha?

38

19

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

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

39

20

Vous aimerez peut-être aussi