1
Disciplina: TCC-00.157 Prog. de Computadores III
Professor: Leandro Augusto Frata Fernandes
Turma: A-1 Data: ___/___/______
Lista de Exerccios 1
Algoritmos, Pseudocdigo e Fluxograma
1. Escreva um algoritmo (pseudocdigo) que coloque os nmeros de 1 a 100 na tela na
ordem inversa (comeando em 100 e terminando em 1).
variveis
inteiro: Numero
1
2
3
incio
para Numero 100 at 1 passo -1 repetir
Mostrar Numero
fim para
fim
2. Faca um algoritmo (pseudocdigo) que apresente na tela a tabela de converso de
graus Celsius para Fahrenheit, de -100 C a 100 C. Use um incremento de 10 C.
Observao: Fahrenheit = (9 / 5) Celsius + 32.
variveis
real: C, F
1
2
3
4
incio
para C -100 at 100 passo 10 repetir
F (9.0 / 5.0) * C + 32.0
Mostrar C, Celsius -> , F, Fahrenheit
fim para
fim
3. Faa um algoritmo (pseudocdigo) para listar todos os mltiplos positivos do nmero 7
menores ou iguais a 100.
Soluo 1
variveis
inteiro: N
1
2
3
incio
para N 7 at 100 passo 7 repetir
Mostrar N
fim para
fim
Soluo 2
variveis
inteiro: N
1
2
3
4
5
incio
para N 1 at 100 repetir
se Mod( N, 7 ) = 0 ento
Mostrar N
fim se
fim para
fim
4. Sendo h = 1 + 1/2 + 1/3 + 1/4 + ... + 1/N, construa um algoritmo (pseudocdigo) para
calcular o nmero h, sendo o nmero inteiro N fornecido pelo usurio. Seu algoritmo
deve garantir que apenas um valor maior do que zero seja aceito como entrada.
variveis
real: h
inteiro: N, Atual
1
2
3
4
5
6
7
8
incio
repetir
Ler N
enquanto N <= 0
h 1.0
para Atual 2 at N repetir
h h + 1.0 / Atual
fim para
Mostrar h
fim
5. Elabore um algoritmo (pseudocdigo) que calcule N! (fatorial de N), sendo que o valor
de N fornecido pelo usurio. Lembre que N sempre um valor inteiro e no negativo.
Logo, seu algoritmo deve evitar que valores negativos sejam aceitos como entrada.
Lembre tambm que N! = 1 2 3 ... (N-1) N, e que 0! = 1 por definio.
variveis
inteiro: Fatorial, N, Atual
1
2
3
4
5
6
7
8
incio
repetir
Ler N
enquanto N < 0
Fatorial 1
para Atual 2 at N repetir
Fatorial Fatorial * Atual
fim para
Mostrar Fatorial
fim
6. Faa um algoritmo (pseudocdigo e fluxograma) que, a partir de um valor informado
em centavos, indique a menor quantidade de moedas que representa esse valor.
Considere moedas de 1, 5, 10, 25 e 50 centavos, e 1 real.
Exemplo: para o valor 290 centavos, a menor quantidade de moedas 2 moedas de 1
real, 1 moeda de 50 centavos, 1 moeda de 25 centavos, 1 moeda de 10 centavos e 1
moeda de 5 centavos.
variveis
inteiro: Valor, NMoedas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
incio
repetir
Ler Valor
enquanto Valor < 0
se Valor <> 0 ento
Observao
Lembrequeemprogramasdecomputadora
divisoenvolvendodoisnmero
inteirosretornaaparteinteiradoresultadodadiviso.
Issotambmvaleparaalgoritmos.
NMoedas Valor / 100
se NMoedas > 0 ento
Mostrar NMoedas, moeda(s) de 1 Real
Valor Valor (NMoedas * 100)
fim se
NMoedas Valor / 50
se NMoedas > 0 ento
Mostrar NMoedas, moeda(s) de 50 centavos
Valor Valor (NMoedas * 50)
fim se
NMoedas Valor / 25
se NMoedas > 0 ento
Mostrar NMoedas, moeda(s) de 25 centavos
Valor Valor (NMoedas * 25)
fim se
NMoedas Valor / 10
se NMoedas > 0 ento
Mostrar NMoedas, moeda(s) de 10 centavos
Valor Valor (NMoedas * 10)
fim se
28
29
NMoedas Valor / 5
se NMoedas > 0 ento
Mostrar NMoedas, moeda(s) de 5 centavos
Valor Valor (NMoedas * 5)
fim se
30
31
32
se Valor > 0 ento
Mostrar Valor, moeda(s) de 1 centavo
fim se
25
26
27
33
34
35
se no
Mostrar Nenhuma moeda necessria
fim se
fim
Incio
Falso
Valor<0
Valor
Valor<>0
Falso
Verdadeiro
Verdadeiro
NMoedasValor/100
Falso
Nenhumamoeda
necessria
NMoedas>0
Verdadeiro
Fim
NMoedas,moeda(s)
de1Real
2
ValorValor(NMoedas*100)
NMoedasValor/50
NMoedas>0
Falso
Verdadeiro
NMoedas,moeda(s)
de50centavos
ValorValor(NMoedas*50)
NMoedasValor/25
Falso
NMoedas>0
Verdadeiro
NMoedas,moeda(s)
de25centavos
ValorValor(NMoedas*25)
NMoedasValor/10
Falso
NMoedas> 0
Verdadeiro
NMoedas,moeda(s)
de10centavos
ValorValor(NMoedas*10)
NMoedasValor/5
NMoedas>0
Falso
Verdadeiro
NMoedas,moeda(s)
de5centavos
ValorValor(NMoedas*5)
Valor>0
Valor,moeda(s)
de1centavos
7. Joo tem 1,50 metros e cresce 2 centmetros por ano, enquanto Maria tem 1,10 metros
e cresce tem 3 centmetros por ano. Construa um algoritmo (pseudocdigo e
fluxograma) que calcule e imprima quantos anos sero necessrios para que Maria
seja maior que Joo.
Observao: a soluo abaixo no utiliza manipulao algbrica, que, na prtica,
mais simples, porm no treina o uso de estruturas de repetio.
variveis
inteiro: N
real: Joao, Maria
1
2
3
4
5
6
7
8
9
incio
N 0
Joao 150
Maria 110
enquanto Maria <= Joao repetir
N N + 1
Joao Joao + 2
Maria Maria + 3
fim enquanto
Mostrar So necessrios , N, anos.
fim
Incio
N0
Joao150
Maria110
Maria<=Joao
Falso
Verdadeiro
NN+1
JoaoJoao+2
MariaMaria+3
Sonecessrios,
N,anos.
Fim
8. Faa um algoritmo (pseudocdigo e fluxograma) que pergunte ao usurio quantos
nmeros deseja somar. Em seguida, leia a quantidade informada de nmeros e
apresentar o valor da soma, quantos nmeros so maiores que 7 e quantos nmeros
so maiores que 9.
variveis
real: Atual, Soma
inteiro: i, Qtd, QtdMaior7, QtdMaior9
1
2
3
incio
Soma 0
QtdMaior7 0
QtdMaior9 0
Ler Qtd
5
6
7
i 1
enquanto i <= Qtd repetir
Ler Atual
Soma Soma + Atual
se Atual > 7 ento
QtdMaior7 QtdMaior7 + 1
se Atual > 9 ento
QtdMaior9 QtdMaior9 + 1
fim se
fim se
10
11
12
13
14
15
16
17
18
19
i i + 1
fim enquanto
Mostrar A soma , Soma
Mostrar QtdMaior7, nmeros so maiores que 7
Mostrar QtdMaior9, nmeros so maiores que 9
fim
10
Incio
Soma0
QtdMaior70
QtdMaior90
i1
Qtd
ii+1
i<=Qtd
Falso
Verdadeiro
Atual
Asoma,Soma
SomaSoma+Atual
QtdMaior7,nmeros
somaioresque7
Falso
Atual>7
Verdadeiro
QtdMaior9,nmeros
somaioresque9
QtdMaior7QtdMaior7+1
Fim
Falso
Atual>9
Verdadeiro
QtdMaior9QtdMaior9+1
11
9. Faa um algoritmo (pseudocdigo e fluxograma) que l o nome de um produto, o preo
e a quantidade comprada. Escreva o nome do produto comprado e o valor total a ser
pago, considerando que so oferecidos descontos pelo nmero de unidades
compradas, segundo a tabela abaixo:
a) At 10 unidades: valor total
b) De 11 a 20 unidades: 10% de desconto
c) De 21 a 50 unidades: 20% de desconto
d) Acima de 50 unidades: 25% de desconto
variveis
caractere: Nome
real: Preco, Desc, Total
inteiro: Qtd
1
2
3
4
incio
Ler Nome
Ler Preco
Ler Qtd
13
14
15
16
se Qtd <= 10 ento
Desc 0.0
se no
se Qtd <= 20 ento
Desc Preco * 0.10
se no
se Qtd <= 50 ento
Desc Preco * 0.20
se no
Desc Preco * 0.25
fim se
fim se
fim se
17
Total Qtd * (Preco Desc)
5
6
7
8
9
10
11
12
18
Mostrar Nome, : , Total
fim
12
Incio
Nome
Preco
Qtd
Verdadeiro
Desc0.0
Qtd<=10
Falso
Verdadeiro
DescPreco*0.10
Qtd<=20
Falso
Verdadeiro
Qtd<=50
DescPreco*0.20
Falso
DescPreco*0.25
TotalQtd*(PrecoDesc)
Nome,:,Total
Fim
13
10. Construa um algoritmo (pseudocdigo e fluxograma) para determinar e mostrar o
nmero de dgitos de um nmero inteiro informado.
Soluo 1
variveis
inteiro: Num, Qtd
1
2
3
4
5
6
7
incio
Ler Num
Qtd 1
enquanto Abs( Num ) >= 10 repetir
Num Num / 10
Qtd Qtd + 1
fim enquanto
Mostrar Qtd, dgito(s)
fim
Incio
Num
Qtd1
Abs(Num)>=10
Falso
Verdadeiro
NumNum/10
QtdQtd+1
Qtd,dgito(s)
Fim
14
Soluo 2
variveis
inteiro: Num, Qtd
1
2
3
4
5
6
7
incio
Ler Num
se Num <> 0 ento
Qtd Floor( Log10( Abs( Num ) ) ) + 1
se no
Qtd 1
fim se
Mostrar Qtd, dgito(s)
fim
Incio
Num
Num<>0
Falso
Qtd1
Verdadeiro
QtdFloor(Log10(Abs(Num)))+1
Qtd,dgito(s)
Fim
15
11. Considere os algoritmos abaixo. Eles lem um cdigo repetidamente e imprimem o
cdigo lido at que o cdigo lido seja igual a -1. O cdigo -1 no deve ser impresso.
Responda:
a) Qual das duas solues a correta?
A primeira soluo.
b) Como a soluo incorreta poderia ser corrigida?
Testando o cdigo lido com uma estrutura SE ... ENTO ... FIM SE e executando
o comando Mostrar cdigo apenas se codigo <> -1.
Pseudocdigo A
variveis
inteiro: codigo
incio
Ler codigo
enquanto codigo <> -1 repetir
Mostrar codigo
Ler codigo
fim enquanto
fim
Pseudocdigo B
variveis
inteiro: codigo
lgico: repete
incio
repete Verdadeiro
enquanto repete repetir
Ler codigo
Mostrar codigo
repete codigo <> -1
fim enquanto
fim
16
12. Faa um algoritmo (pseudocdigo e fluxograma) que calcula a srie de Fibonacci para
um nmero informado pelo usurio. A srie de Fibonacci inicia com os nmeros 1 e 1,
e cada nmero posterior equivale soma dos dois nmeros anteriores.
Exemplo: caso o nmero 9 seja informado, o resultado ser 1, 1, 2, 3, 5, 8, 13, 21, 34.
variveis
inteiro: i, N, Atual, Proximo, NovaSoma
1
2
3
4
5
6
7
8
9
10
11
12
13
incio
repetir
Ler N
enquanto N < 2
Mostrar 1
Mostrar 1
Atual 1
Proximo 2
para i 3 at N repetir
Mostrar Proximo
NovaSoma Atual + Proximo
Atual Proximo
Proximo NovaSoma
fim para
fim
17
Incio
Falso
N<2
Verdadeiro
Fim
Atual1
Proximo2
Falso
i3
i<=N
Verdadeiro
Proximo
NovaSomaAtual+Proximo
AtualProximo
ProximoNovaSoma
ii+1
18
13. Determine a sada do seguinte algoritmo:
variveis
inteiro: a, b, c
incio
para a 2 at 8 passo 2 repetir
para b a at 2 repetir
para c 1 at a passo b repetir
Mostrar a, b, c
fim para
fim para
fim para
fim
A sada 2 2 1. Note que o comando Mostrar a, b, c s executado uma vez.