Buscar

Prog I - Aula 3: Algoritmos, Pseudocódigo e Ciclo de Desenvolvimento

Prévia do material em texto

Algoritmos, Pseudocódigo e
Ciclo de Desenvolvimento
INF1005 – Programação I – 33B
Prof. Gustavo Moreira
gmoreira@inf.puc-rio.br
1
algoritmos, pseudocódigo e ciclo de 
desenvolvimento
tópicos
algoritmo – definições
representação e resolução de problemas
representação de programa
pseudocódigopseudocódigo
fluxograma
construções
entrada e saída
condicionais
repetições
ciclo de desenvolvimento
2
algoritmosalgoritmos
3
algoritmo - definições
especificação precisa (não ambígua) de um comportamento
que visa resolver um problema bem definido
sequência finita de instruções precisas que podem ser sequência finita de instruções precisas que podem ser 
executadas mecanicamente num período de tempo finito e 
com uma quantidade de esforço finito
programa de computador
algoritmo codificado em uma linguagem de programação
4
algoritmo - definições
especificação precisaprecisaprecisaprecisa ((((nãonãonãonão ambíguaambíguaambíguaambígua) ) ) ) de um 
comportamento que visa resolver um problema bem
definido
Uma receita culinária é um algoritmo?Uma receita culinária é um algoritmo?
� "sal a gosto" vs. "1/4 colher (chá) de sal"
� "bata bem" vs. 
"bata até a massa ficar homogênea"
� "forno médio" vs. "forno a 220°C"
5
algoritmo – definições
especificação precisa (não ambígua) de um comportamento
que visa resolver um problemaproblemaproblemaproblema bembembembem definidodefinidodefinidodefinido
condições iniciais (estado de problema)
� como as coisas são
objetivos (estado desejado)
� como as coisas deveriam ser
recursos
� meios ou métodos para transformar um estado de problema
desde as condições iniciais até os objetivos
ex: movimentos possíveis em um jogo
6
exemplo
Escreva um algoritmo com objetivo de matar a fome “na rua”
1. ______________________________________________
EX. 01
algoritmopessoa com fome pessoa sem fome
2. ______________________________________________
3. ______________________________________________
4. ______________________________________________
5. ______________________________________________
6. ______________________________________________
7
exemplo – isto é um algoritmo?
objetivo: matar a fome “na rua”
1. decidir onde comer, conforme tempo e dinheiro disponível
2. ir até o local escolhido
3. decidir o que comer, conforme cardápio, tempo e dinheiro
disponíveldisponível
4. fazer o pedido
5. pagar
6. aguardar o pedido
7. comer
8
resolver o problema antes de programar
Qual é a situaçãosituaçãosituaçãosituação inicialinicialinicialinicial? Já temos todos os dados de dados de dados de dados de entradaentradaentradaentrada?
Esses dados são específicos a uma única situação ou podemos generalizar?
Existe alguma notação para representar de forma sucinta os dados e os
estados intermediários?
Qual é o objetivoobjetivoobjetivoobjetivo? / Quais são os objetivos?
Há um único objetivo, ou são vários?
Cada objetivo pode ser dividido em sub-objetivos, ou não?
Os (sub-)objetivos são independentes, ou não?
Há obstáculos a serem vencidos? Como podem ser vencidos?
Há restrições na elaboração da solução? (tempo, espaço em memória, custo)
Quais são os recursosrecursosrecursosrecursos (movimentos, operações, procedimentos, regras, 
transformações)?
Para cada recurso, há restrições ou pré-condições para sua aplicação?
Há outros recursos mais simples que satisfaçam essas pré-condições?
Quando você aplica um recurso, o que muda? (variantesvariantesvariantesvariantes)
Quando você aplica um recurso, o que permanece igual? (invariantesinvariantesinvariantesinvariantes)
Há outros recursos mais poderosos para resolver esse problema?
9adaptado de Blank & Barnes (1998) The Universal Machine.
exemplo – Como chegar ao destino?
Rua 5
Rua 4
10
Av.2 Av.3 Av.4
Rua 7
Rua 6
Av.1
problemas e soluções
� um problema pode ter várias soluções
� algumas soluções são melhores do que outras
� um problema pode ter soluções parciais
� restrições no espaço de problema podem ajudar na
busca por uma solução
11
representação do espaço de problema
descrição do “mundo”:
ruas: [4,7]
avenidas: [1,4]
convenções de representação:
posição: (r,a)
Rua 7
Rua 6
Rua 5
Rua 4
posição: (r,a)
obstáculo: (r1,a1,r2,a2)
condições iniciais:
posição: (7,1)
obstáculos: { (6,2,7,2), (4,2,5,2), (5,3,6,3), (6,4,7,4) }
objetivo:
posição: (4,3)
12
Av.2 Av.3 Av.4Av.1
Quais as consequências dessa representação?
algoritmo - exemplo
objetivo: verificar se um aluno está aprovado
(média das 3 notas >= 5.0) ou reprovado (caso
contrário)
13
como representar um algoritmo
1. Obter as três notas das provas 
do aluno
2. Calcular a média aritmética das 
três notas
3. Se a média for maior ou igual a 
5, escrever “aprovado”
4. Caso contrário, escrever 
“reprovado”
linguagem natural fluxograma
início
leia (nota1, nota2, 
nota3);
media ←
(nota1+nota2+nota3)/3;
14
variáveisvariáveisvariáveisvariáveis
media, nota1, nota2, nota3
inícioinícioinícioinício
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) então
escreva “aluno aprovado”
senão
escreva “aluno reprovado”
fim-se
fimfimfimfim
pseudocódigo
(nota1+nota2+nota3)/3;
media >= 
5.0?
escreva
(“aprovado”);
fim
escreva
(“reprovado”);
sim
não
algoritmo em pseudocódigo
variáveisvariáveisvariáveisvariáveis
media, nota1, nota2, nota3
inícioinícioinícioinício
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) então
escreva “aluno aprovado”
15
escreva “aluno aprovado”
senão
escreva “aluno reprovado”
fim-se
fimfimfimfim
algoritmo em pseudocódigo
variáveisvariáveisvariáveisvariáveis
media, nota1, nota2, nota3
inícioinícioinícioinício
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) então
escreva “aluno aprovado”
variáveis armazenam valores (dados, 
informações) necessários à solução do 
problema:
� dados de entrada:
nota1, nota2, nota3
� dados utilizados no processamento:
média
� dados de saída
16
escreva “aluno aprovado”
senão
escreva “aluno reprovado”
fim-se
fimfimfimfim
algoritmo – exemplo
objetivo: a partir de três notas de um aluno, verificar se 
ele está:
aprovado (média >= 5.0)
em prova final (média < 5.0 e média >= 3.0) ou
reprovado (média < 3)reprovado (média < 3)
17
fluxograma (com defeito)
início
leia (nota1, nota2, 
nota3);
media ←
(nota1+nota2+nota3)/3;
objetivo: a partir de três notas de um aluno, 
verificar se ele está:
aprovado (média >= 5.0)
em prova final (média < 5.0 e média >= 3.0) ou
reprovado (média < 3)
sim
18
(nota1+nota2+nota3)/3;
media >= 
5.0?
escreva
(“aprovado”);
fim
escreva
(“reprovado”);
sim
não
escreva
(“em prova final”);
media > 
3.0?
não
fluxograma (com defeito)
início
leia (nota1, nota2, 
nota3);
media ←
(nota1+nota2+nota3)/3;
objetivo: a partir de três notas de um aluno, 
verificar se ele está:
aprovado (média >= 5.0)
em prova final (média < 5.0 e média >= 3.0) ou
reprovado (média < 3)
sim
19
(nota1+nota2+nota3)/3;
media >= 
5.0?
escreva
(“aprovado”);
fim
escreva
(“reprovado”);
sim
não
escreva
(“em prova final”);
media > media > media > media > 
3.0?3.0?3.0?3.0?
não
fluxograma (corrigido)
início
leia (nota1, nota2, 
nota3);
media ←
(nota1+nota2+nota3)/3;
objetivo: a partir de três notas de um aluno, 
verificar se ele está:
aprovado (média >= 5.0)
em prova final (média < 5.0 e média >= 3.0) ou
reprovado (média < 3)
sim20
(nota1+nota2+nota3)/3;
media >= 
5.0?
escreva
(“aprovado”);
fim
escreva
(“reprovado”);
sim
não
escreva
(“em prova final”);
media >= media >= media >= media >= 
3.0?3.0?3.0?3.0?
não
algoritmo em pseudocódigo
variáveisvariáveisvariáveisvariáveis
media, nota1, nota2, nota3
inícioinícioinícioinício
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) então
escreva “aluno aprovado”
variáveisvariáveisvariáveisvariáveis
media, nota1, nota2, nota3
inícioinícioinícioinício
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) então
escreva “aluno aprovado”
21
escreva “aluno aprovado”
senão
se (media >= 3) então
escreva “aluno em prova final”
senão
escreva “aluno reprovado”
fim-se
fim-se
fimfimfimfim
escreva “aluno aprovado”
senão se (media >= 3) então
escreva “aluno em prova final”
senão
escreva “aluno reprovado”
fim-se
fimfimfimfim
entrada e 
saída
22
entrada e saída
variáveisvariáveisvariáveisvariáveis
media, nota1, nota2, nota3
inícioinícioinícioinício
leialeialeialeia nota1, nota2, nota3nota1, nota2, nota3nota1, nota2, nota3nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) então
escrevaescrevaescrevaescreva ““““alunoalunoalunoaluno aprovadoaprovadoaprovadoaprovado””””
senão
escrevaescrevaescrevaescreva ““““alunoalunoalunoaluno reprovadoreprovadoreprovadoreprovado””””
fim-se
pseudocódigo
23
fim-se
fim
exercício
Escreva o pseudocódigo 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).
EX. 02
______________________________________________________________________
______________________________________________________________________
24
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
condicionaiscondicionais
25
controle de execução: condicionais
variáveisvariáveisvariáveisvariáveis
media, nota1, nota2, nota3
inícioinícioinícioinício
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5media >= 5media >= 5media >= 5) então
escrevaescrevaescrevaescreva ““““alunoalunoalunoaluno aprovadoaprovadoaprovadoaprovado””””
senão
escrevaescrevaescrevaescreva ““““alunoalunoalunoaluno reprovadoreprovadoreprovadoreprovado””””
fim-se
pseudocódigo fluxograma
início
leia (nota1, nota2, 
nota3);
media ←
(nota1+nota2+nota3)/3;
26
fim-se
fimfimfimfim
(nota1+nota2+nota3)/3;
media >= media >= media >= media >= 
5.0?5.0?5.0?5.0?
escrevaescrevaescrevaescreva
(“(“(“(“aprovadoaprovadoaprovadoaprovado”);”);”);”);
fim
escrevaescrevaescrevaescreva
(“(“(“(“reprovadoreprovadoreprovadoreprovado”);”);”);”);
simsimsimsim
nãonãonãonão
…………
se (condiçãocondiçãocondiçãocondição) então
instruçãoinstruçãoinstruçãoinstrução V1V1V1V1
instruçãoinstruçãoinstruçãoinstrução V2V2V2V2
…………
instruçãoinstruçãoinstruçãoinstrução VnVnVnVn
senão
instruçãoinstruçãoinstruçãoinstrução F1F1F1F1
instruçãoinstruçãoinstruçãoinstrução F2F2F2F2
…………
instruçãoinstruçãoinstruçãoinstrução FnFnFnFn
fim-se
instruções
executadas se 
a condiçãocondiçãocondiçãocondição for 
verdadeiraverdadeiraverdadeiraverdadeira
instruções
executadas se 
a condiçãocondiçãocondiçãocondição for 
falsafalsafalsafalsa
dúvidas?dúvidas?
27
exercício
Escreva o pseudocódigo 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 contrário.
EX. 03
______________________________________________________________________
______________________________________________________________________
28
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
condicionais – expressões booleanas
uma condição é representada por uma expressão booleana, que
resulta em um valor verdadeiro ou falso
exemplos:
media > 5 maior que
media >= 5maior ou igual amedia >= 5maior ou igual a
media < 5 menor que
media <= 5menor ou igual a
media == 5 igual a
media != 5 diferente de
29
condicionais – combinando expressões
se (media < 5 eeee media >= 3)
escreva (“em prova final”)
fim
se (nota1 == 10 ouououou nota2 == 10)
escreva (“excelente!”)
fim
conjunçãoconjunçãoconjunçãoconjunção (E)(E)(E)(E)
� resultado só é verdadeiro se 
ambos os valores forem
verdadeiros
disjunçãodisjunçãodisjunçãodisjunção (OU)(OU)(OU)(OU)
� resultado só é falso se ambos 
os valores forem falsos
30
AAAA BBBB A A A A eeee BBBB
V V V
V F F
F V F
F F F
AAAA BBBB A A A A ouououou BBBB
V V V
V F V
F V V
F F F
verdadeiros
exercício
Escreva o pseudocódigo ou desenhe o fluxograma de um 
programa que obtém as 3 notas de um aluno, calcula sua média e, 
caso o aluno tenha sido aprovado, escreva na tela “aprovado”. O 
aluno é aprovado se ele teve média maior ou igual a 5 e nenhuma 
nota menor que 3.
EX. 04
________________________________________________________________
31
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
repetiçõesrepetições
32
controle de execução: repetições
variáveisvariáveisvariáveisvariáveis
num, media, nota1, nota2, nota3
inícioinícioinícioinício
leia num
enquantoenquantoenquantoenquanto (numnumnumnum > 0> 0> 0> 0) faça
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) então
escreva “aluno aprovado”
senão
escreva “aluno reprovado”
fim-se
pseudocódigo fluxograma
início
leia (nota1, nota2, 
nota3);
fimnumnumnumnum > 0?> 0?> 0?> 0?
leia num
sim
não
33
fim-se
numnumnumnum= = = = numnumnumnum –––– 1111
fimfimfimfim----enquantoenquantoenquantoenquanto
fimfimfimfim
media ←
(nota1+nota2+nota3)/3;
media >= 
5.0?
escreva
(“aprovado”);
escreva
(“reprovado”);
sim
não
…………
enquanto (condiçãocondiçãocondiçãocondição) faça
instruçãoinstruçãoinstruçãoinstrução V1V1V1V1
…………
instruçãoinstruçãoinstruçãoinstrução VnVnVnVn
fim-enquanto
… 
instruções executadas
enquantoenquantoenquantoenquanto a condiçãocondiçãocondiçãocondição
for verdadeiraverdadeiraverdadeiraverdadeira
instruçõesexecutadas
quando a condiçãocondiçãocondiçãocondição éééé
ou se se se se tornatornatornatorna falsafalsafalsafalsa
numnumnumnum = = = = numnumnumnum ---- 1111
exercício
Qual é a saída dos seguintes programas?
EX. 05
variáveisvariáveisvariáveisvariáveis
num
inícioinícioinícioinício
num = 0
enquanto (num < 3) faça
escreva num
num= num + 1
fim-enquanto
fimfimfimfim
variáveisvariáveisvariáveisvariáveis
num
inícioinícioinícioinício
num = 0
enquanto (num < 3) faça
escreva num
num= num - 1
fim-enquanto
fimfimfimfim
34
_______________________________
_______________________________
_______________________________
_______________________________
fimfimfimfim fimfimfimfim
_______________________________
_______________________________
_______________________________
_______________________________
valor de num a cada iteração
I0 I1 I2 I3 I4 I5 I6 I7 I8
num
saída saída
valor de num a cada iteração
I0 I1 I2 I3 I4 I5 I6 I7 I8
num
exercício EX. 06
Escreva o pseudocódigo de um programa que lê o número de 
alunos de uma turma e, para cada aluno, lê as suas três notas, 
escreve sua média e, no final, escreve a média da turma.
________________________________________________________________
________________________________________________________________
________________________________________________________________
35
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
exercício EX. 06
Escreva o pseudocódigo de um programa que lê o número de 
alunos de uma turma e, para cada aluno, lê as suas três notas, 
escreve sua média e, no final, escreve a média da turma.
variáveisvariáveisvariáveisvariáveis
num_alunos, i
media, media_turma, nota1, nota2, nota3
inícioinícioinícioinício
leia num_alunos
Em que situações
este programa falha?
36
leia num_alunos
i = 0
media_turma = 0
enquanto (i < num_alunos) faça
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
escreve media
media_turma = media_turma + media
i = i + 1
fim-enquanto
media_turma = media_turma / num_alunos
escreva media_turma
fimfimfimfim
exercício EX. 07
Escreva o pseudocódigo ou desenhe o fluxograma de um 
programa que lê um número não negativo e escreve na tela o seu 
fatorial. Lembrando: n! = n x (n-1) x ... x 1
________________________________________________________________
________________________________________________________________
________________________________________________________________
37
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
exercício EX. 07
Escreva o pseudocódigo de um programa que lê um número não 
negativo e escreve na tela o seu fatorial. 
Lembrando: n! = n x (n-1) x ... x 1
variáveisvariáveisvariáveisvariáveis
f, n
inícioinícioinícioinício
leia n
Em que situação esse
programa falha?
38
leia n
f = 1
enquanto (n > 1) faça
f = f * n
n = n - 1
fim-enquanto
escreva f
fimfimfimfim
dúvidas?dúvidas?
39
ciclo de 
desenvolvimento
40
ciclo de desenvolvimento simplificado
desenvolvimento editor de texto
correção em
caso de erros
de compilação
correção em
caso de erros
de exeçucão
programa em C
(código fonte: arq2.c)
programa em C
(código fonte: arq1.c)
41
testes
saída
programa executável
(arq.exe)
compiladorcompilação
saída
saída
entrada
entrada
entrada
dúvidas?dúvidas?
42
Prof. Gustavo Moreira
gmoreira@inf.puc-rio.br

Continue navegando

Outros materiais