EXERCÍCIOS
1) Um determinado material radioativo perde metade de sua massa a cada 50
segundos. Dada uma massa inicial, em gramas, criar um algoritmo (pseudocódigo)
que determine o tempo necessário para que essa massa se torne menor que 0,5
gramas. Escreva a massa inicial, a massa final e o tempo calculado em horas,
minutos e segundos.
algoritmo "Material Radiotivo"
// Função :
// Autor : Guilherme Borba e Guilherme Ferroni
// Data : 19/3/2012
// Seção de Declarações
var
mi, mf: real
tt: inteiro
ts, tm, th: inteiro
inicio
// Seção de Comandos
escreva ("Insira a massa inicial do material(em gramas): ")
leia (mi)
tt <- 0
enquanto mi >= 0.5 faca
mi <- mi/2
tt <- tt + 1
fimenquanto
escreval ("Sua massa final é: ", mi:5:2)
tt <- tt*50
escreval ("Seu tempo em segundos foi: ", tt, "s")
tm <- tt\60
ts <- tt - (tm*60)
escreval ("Seu tempo em minutos foi: ", tm, "min,", ts, "s")
th <- tm\60
tm <- (tm) - (th*60)
escreval ("Seu tempo em horas foi: ", th, "h,", tm, "min,", ts, "s")
fimalgoritmo
2) Criar um algoritmo que compare o crescimento populacional de dois países. O
programa deve ler o nome do país A, sua população e sua taxa de crescimento
anual; o nome o País B, sua população e sua taxa de crescimento anual.
Primeiramente o programa deve verificar se é possível que o país com menor
população alcance o país com maior população (taxa de crescimento do país com
menor população maior que a taxa de crescimento do país com maior população).
Em caso positivo, o programa deve calcular e listar quantos anos serão necessários
para que um país alcance o outro. Em caso negativo, o programa deve listar a
mensagem “Problema sem solução”.
algoritmo "semnome"
// Função : compare o crescimento
// Autor :
// Data : 19/3/2012
// Seção de Declarações
var
A , B : caracter
L : inteiro
PA , PB , TA , TB : real
inicio
L <- 0
escreva ("Informe o nome do país A: ")
leia (A)
escreva ("Informe a população do(a) ", A, ": ")
leia (PA)
escreva ("Informe a taxa de crescimento populacional (%) do(a) ", A,
": ")
leia (TA)
escreval
escreva ("Informe o nome do país B: ")
leia (B)
escreva ("Informe a população do(a) ", B, ": ")
leia (PB)
escreva ("Informe a taxa de crescimento populacional (%) do(a) ", B,
": ")
leia (TB)
escreval
TA <- TA/100
TB <- TB/100
se (TA > TB) e (PA < PB) ou (TA < TB) e (PA > PB) entao
se (TA > TB) e (PA < PB) entao
enquanto (PA < PB) faca
PA <- PA + (PA*TA)
PB <- PB + (PB*TB)
L <- L + 1
fimenquanto
escreval ("A população do(a) ", A, " alcançará a população
do(a) ", B, " em", L, " anos")
fimse
se (TA < TB) e (PA > PB) entao
enquanto (PA > PB) faca
PA <- PA + (PA*TA)
PB <- PB + (PB*TB)
L <- L + 1
fimenquanto
escreval ("A população do(a) ", B, " alcançará a população
do(a) ", A, " em", L, " anos")
fimse
senao
escreval ("Problema sem solução!")
fimse
fimalgoritmo
3) A lista de preços de uma loja de material de construção é a seguinte:
Especificação
Argamassa
Tijolo 6 Furos
Brita No. 2
Areia
Código
100
101
102
103
Preço
58,00
139,00
93,00
26,00
Criar um algoritmo que leia o código do item pedido, a quantidade e calcule o valor
a ser pago por aquele pedido. Considere que o cliente pode pedir vários itens
sequencialmente. Calcular e escrever a conta do cliente. Fazer enquanto o usuário
desejar. Rejeitar código inválido com mensagem explicativa e solicitando se deseja
continuar.
algoritmo "lojamateriais"
// Função :
// Autor : Patrícia Brunato e Guilherme Darabas
// Data : 16/03/2012
// Seção de Declarações
var c, q: inteiro
v, a: real
r: caractere
inicio
r <- "s"
enquanto (r = "s") faca
escreval ("Digite o código do produto:")
leia (c)
se c= 100 entao
v <- 58,00
escreval ("Argamassa - R$58,00")
senao
se c= 101 entao
v <- 139,00
escreval ("Tijolo 6 furos - R$139,00")
senao
se c = 102 entao
v <- 93,00
escreval ("Brita no. 2 - R$93,00")
senao
se c = 103 entao
v <- 26,00
escreval ("Areia - R$26,00")
senao
escreval ("Produto não cadastrado.")
q <-0
fimse
fimse
fimse
fimse
se (c = 100) ou (c = 101) ou (c = 102) ou (c = 103) entao
escreval ("Digite a quantidade do produto:")
leia (q)
escreval (q, "UN X", v, " =", q*v)
fimse
a <- a + q*v
se (c = 100) ou (c = 101) ou (c = 102) ou (c = 103) entao
escreval ("Subtotal = R$",a)
fimse
escreval ("Deseja continuar? (s/n)")
leia (r)
fimenquanto
escreval ("O valor total do pedido é: R$", a)
fimalgoritmo
4) Criar um algoritmo que calcule o imposto de renda de pessoa física. O usuário
deverá informar o CPF, o número de dependentes, e a renda mensal. Deverá ser
deduzido da renda mensal o valor de R$ 50,00 por cada dependente (limitar o
número de dependentes a 10). Para cada pessoa física deverá ser calculado e escrito
o CPF, a renda líquida (renda mensal – descontos de dependentes), o percentual do
IR a ser calculado (ver tabela a baixo) e o valor do IR apurado. O algoritmo irá
terminar quando for informado CPF = 0. No final escrever para quantas pessoas foi
apurado o IR.
Desconto
Renda Líquida
Até R$ 3.000,00
Isento
R$ 3.000,01 a R$ 6.000,00
5%
R$ 6.000,01 a R$ 10.000,00
10%
Acima de R$ 10.000,01
15%
algoritmo "Cálculo do Imposto de Renda"
/ Autor : Larissa Rodrigues
// Data : 17/03/2012
// Seção de Declarações
var
cpf, numDep, acumulador: inteiro
rendaMensal, rendaLiq, valIRApurado, pctIR: real
pct: caracter
inicio
// Seção de Comandos
//
cpf <- 1
acumulador <- 0
escreval("Para encerrar, digite 0 para o CPF.")
escreval("Informe o CPF: ")
leia(cpf)
enquanto (cpf > 0) faca
rendaMensal <- 0
escreval("Informe a quantidade de dependentes (no máximo 10): ")
leia(numDep)
se numDep > 10 entao
escreval("Quantidade de dependentes inválida!")
senao
enquanto rendaMensal <= 0 faca
escreval("Informe a renda mensal: ")
leia(rendaMensal)
fimenquanto
rendaLiq <- rendaMensal - (numDep*50)
se (rendaLiq <= 3000) entao
pct <- "Isento"
pctIr <- 0
senao
se (rendaLiq > 3000) e (rendaLiq <= 6000) entao
pct <- "5%"
pctIr <- 0.05
senao
se (rendaLiq > 6000) e (rendaLiq <= 10000) entao
pct <- "10%"
pctIr <- 0.1
senao
pct <- "15%"
pctIr <- 0.15
fimse
fimse
fimse
valIRApurado <- rendaLiq * pctIR
escreval("******************************")
escreval("CPF: ",cpf)
escreval("Renda Líquida: ",rendaLiq)
escreval("Percentual do IR: ",pct)
escreval("Valor do IR apurado: ",valIRApurado)
acumulador <- acumulador + 1
escreval("Informe o CPF: ")
leia(cpf)
fimse
fimenquanto
escreval("Quantidade de apurações do IR: ",acumulador)
fimalgoritmo
5) Em Joinville de Janeiro a Março de 2011 não ocorreram temperaturas inferiores a
10 graus e nem superiores a 40 graus. Criar um algoritmo para ler as temperaturas
diárias e calcular para o quadrimestre: - a média das temperaturas e; - o número de
dias que a temperatura foi igual a 20º. Validar temperaturas informadas fora dos
limites.
algoritmo "semnome"
// Função temperaturas
// Autor : Marcos
//
Gabriel
// Data : 19/03/2012
// Seção de Declarações
var
temp, soma: real
dia20, dia: inteiro
media : real
inicio
// Seção de Comandos
dia<-0
dia20<-0
para dia de 0 ate 9 faca
escreval("Digite a temperatura do dia ",dia + 1, ":")
leia(temp)
//programa tem restrição para temperatura
enquanto (temp<10) ou (temp>40) faca
escreval("Temperatura inválida. ")
escreval("Digite uma temperatura entre 10 e 40 graus para
o dia", dia + 1, ":")
leia(temp)
fimenquanto
//para contar os dias em que a temperatura é 20
se temp = 20 entao
dia20<-dia20+1
fimse
//soma para calcular a media
soma<- soma+temp
fimpara
//calcula media
media<-soma/10
escreval("")
escreval("A média das temperaturas no trimestre foi de ", MEDIA:2:1,
" °C.")
escreval("Neste trimestre,",dia20, " dias registraram a temperatura
de 20°C.")
fimalgoritmo
6) Escrever um algoritmo que determine qual a maior e a menor duração de uma
partida de xadrez em um campeonato que teve 23 partidas. Ler a hora de início e de
fim de cada uma das partidas (considere apenas horas inteiras, sem os minutos).
Calcular a duração do jogo em horas, sabendo-se que o tempo máximo de duração
do jogo é de 4 horas e que o jogo pode iniciar em um dia e terminar no dia seguinte.
Casos de duração maior de 4 horas devem ser rejeitados com mensagem explicativa
e o correto deve ser reinformado.
algoritmo "COMPETIÇÃO DE XADREZ"
// Autor : Fernando / Karina
// Data : 16/3/2012
// Seção de Declarações
var i, f, mn, mx, d, n, erro : inteiro
inicio
// Seção de Comandos
mn <- 4
mx <- 0
Para n de 1 ate 23 faca
erro <- 1
Enquanto erro = (1) faca
Escreva ("Horário de Início da Partida ", n, " - ")
Leia (i)
Escreva ("Horário de Fim da Partida ", n, " - ")
Leia (f)
Se f>=i entao
d <- (f-i)
Senao
d <- (24-i+f)
Fimse
//--------------------------Se (d >=0) e (d <= 4) entao
Se d < mn entao
mn <- d
Fimse
Se d > mx entao
mx <- d
Fimse
erro <- 0
Senao
Escreval ("
ERRO: Duração da Partida Superior a 4h")
Escreval ("
Reinformar Horários")
Fimse
Fimenquanto
Escreval
Fimpara
//--------------------------------
Escreval
Escreval ("Menor Duração de Partida: ", mn, "h")
Escreval ("Maior Duração de Partida: ", mx, "h")
fimalgoritmo
7) Escrever um algoritmo que apure o resultado das finais da copa Libertadores da
América. O algoritmo deverá ler primeiramente o nome dos dois times que
disputarão as finais. Em seguida deverá informar a ordem dos confrontos (TIMEA x
TIMEB e vice-versa) e ler para cada jogo os gols marcados por cada time. Para
determinar o campeão seguem as seguintes regras:
– Maior número de pontos ganhos (Vitória 3 pontos, Empate 1 ponto e derrota 0
pontos);
– Em caso de empate em pontos deve se verificar o maior saldo de gols;
- Em caso de empate no saldo de gols, verificar o time que marcou mais gols na casa
do adversário;
- Em caso de empate também nos gols na casa do adversário solicitar que o usuário
informe o resultado obtido na cobrança dos Pênaltis e assim informar o campeão.
algoritmo "Final da Taça Libertadores da América"
// Autor : Mateus Felipe de Moliner e Andre Vale da Silva
// Data : 19/3/2012
// Seção de Declarações
var
T1: caractere
T2: caractere
m1:inteiro //Número de gols do t1 (primeiro jogo)
m2:inteiro //Número de gols do t1 (segundo jogo)
f1:inteiro //Número de gols do t2 (primeiro jogo)
f2:inteiro //Número de gols do t2 (segundo jogo)
x1:inteiro
x2:inteiro
inicio
escreval ("Informe o nome dos times:")
escreval ("Obs: Coloque primeiramente o time que joga o primeiro jogo
em casa.")
escreva ("Time 1: ")
leia (T1)
escreva ("Time 2: ")
leia (t2)
escreval ("Confronto 1: " ,t1, " x " ,t2, " - Estádio do " , t1)
escreval ("Confronto 2: " ,t2, " x " ,t1, " - Estádio do " , t2)
escreval ("Informe o número de gols que "
,t1, " marcou no primeiro
jogo: ")
leia (m1)
escreval ("Informe o número de gols que " , t2, " marcou no primeiro
jogo: ")
leia (f1)
escreval ("Informe o número de gols que ",t1, " marcou no segundo jogo:
")
leia (m2)
escreval ("Informe o número de gols que " ,t2, " marcou no segundo
jogo: ")
leia (f2)
se (m1+m2)>(f1+f2) entao
escreva ( " campeão: ",t1, " vice-campeao: ",t2 )
senao
se (m1+m2)<(f1+f2) entao
escreva ( " campeão: ",t2, " vice-campeao: ",t1 )
senao
se (m1+m2)=(f1+f2) entao
se (f1<m2) entao
escreva ( " campeão: ",t1, " vice-campeao: ",t2 )
senao
se (f1>m2) entao
escreva ( " campeão: ",t2, " vice-campeao: ",t1 )
senao
se (f1=m2) entao
escreval ("Informe o número de pênaltis convertidos pelo ",t1)
leia (x1)
escreval ("Informe o número de pênaltis convertidos pelo ",t2)
leia (x2)
se (x1=x2)entao
escreval (" O jogo ainda nao acabou! ")
senao
se (x1>x2) entao
escreval ( " campeão: ",t1, " vice-campeao: ",t2 )
senao
escreval ( " campeão: ",t2, " vice-campeao: ",t1 )
fimse
fimse
fimse
fimse
fimse
fimse
fimse
fimse
fimalgoritmo
8) O departamento que controla o índice de poluição diário do meio ambiente mantém
3 grupos de indústrias que são altamente poluentes do meio ambiente. O índice de
poluição aceitável varia de 0,05 até 0,25. Se o índice sobe para 0,3 as indústrias do
1o grupo são intimadas a suspenderem suas atividades, se o índice cresce para 0,4 as
do 1o e 2o grupo são intimadas a suspenderem suas atividades e se o índice atingir
0,5 todos os 3 grupos devem ser notificados a paralisarem suas atividades. Criar um
algoritmo que leia o índice de poluição medido diariamente para o mês de
agosto/2009 e emita a notificação adequada aos diferentes grupos de empresas para
cada um dos dias. No final escrever quantos dias o índice de poluição ficou em
patamares aceitáveis e quantos dias superou o mínimo aceitável.
algoritmo "Indice de poluição"
// Função : índice de poluição
// Autor : Priscilla Einecke Schmitz e Ana Stolf
// Data : 22/03/2012
// Seção de Declarações
var
a,f, g : real
d: inteiro
inicio
// Seção de Comandos
f <- 0
g <- 0
para d de 1 ate 3 passo 1 faca
escreval (" Qual o índice médio de poluição no dia ", d ," de
agosto/2009 dos 3 grupos de empresas? ")
leia (a)
se (a >= 0.05) e (a <= 0.25) entao
escreval ("
ÍNDICE DE POLUIÇÃO ACEITÁVEL
")
f <- (f + 1)
senao
se (a>=0.3) e (a<0.4) entao
escreval (" GRUPO 1 ESTÁ INTIMADO A SUSPENDER SUAS ATIVIDADES ")
g <- (g + 1)
senao
se (a>=0.4) e (a<0.5) entao
escreval (" GRUPOS 1 E 2 ESTÃO INTIMADOS A SUSPENDER SUAS
ATIVIDADES ")
g <- (g + 1)
senao
se (a>=0.5) entao
escreval (" OS 3 GRUPOS ESTÃO INTIMADOS A SUSPENDEREM SUAS
ATIVIDADES ")
g <- (g + 1)
fimse
fimse
fimse
fimse
fimpara
Escreval
escreval (" Quantidade de dias com índice de poluição em patamares
aceitáveis: ", f)
escreval (" Quantidade de dias em que o índice de poluição superou o
mínimo aceitável: ", g)
fimalgoritmo
9) Criar um algoritmo que adivinhe um determinado número (1 a 100). Primeiramente
o algoritmo deve pedir o número a ser adivinhado. Após, pedir o número candidato
até que o usuário acerte. A cada tentativa de acerto o programa deve proceder da
seguinte forma: Se o número candidato for igual ao número a ser adivinhado, emitir
mensagem de sucesso. Caso contrário, emitir mensagem alterando o intervalo inicial
(1-100) conforme exemplo:
• Número a ser adivinhado: 50
• Número candidato: 45 (1ª Tentativa)
• Mensagem: Informe novo número entre 45 e 100.
• Número candidato: 65 (2ª Tentativa)
• Mensagem: Informe novo número entre 45 e 65.
algoritmo "Exercício nº9"
// Autor : Micael Anderson Pereira, Marília Arent Michels
// Data : 19/3/2012
var
num: inteiro
tent: inteiro
max: inteiro
min: inteiro
qt: inteiro
inicio
// Seção de Comandos
max <- 100
min <- 1
qt <- 1
tent <- 0
escreva ("Informe o número a ser adivinhado entre 1 e 100: ")
leia (num)
enquanto (num <> tent) faca
escreva (qt, "ª tentativa: ")
leia (tent)
se(tent = num) entao
escreva ("Parabéns!")
senao
se (tent < num) entao
min <- tent
senao
max <- tent
fimse
escreval ("Inserir um novo número entre ", min, " e", max)
fimse
qt <- qt + 1
fimenquanto
fimalgoritmo
10) O cardápio de uma lancheria é o seguinte:
Especificação
Cachorro quente
Hambúrger
Cheeseburguer
Refrigerante
Código
100
101
102
103
Preço
2,50
3,30
4,50
2,00
Escrever um programa um algoritmo que leia o código do item pedido e a quantidade.
Calcule e escreva o valor a ser pago por aquele lanche. O cliente poderá fazer vários
pedidos se desejar. Calcular e escrever o valor da conta do cliente. No final calcular e
escrever o faturamento da lanchonete no dia. Rejeitar códigos inválidos com mensagem
explicativa.
algoritmo "Faturamento de uma lanchonete"
// Função : O cardápio
// Autor : Thaisa Lana Pilz, Katia Medved.
// Data : 19/3/2012
// Seção de Declarações
var
conta, total: real
qtd, cod: inteiro
resp, cliente: caracter
inicio
// Seção de Comandos
cliente <- "s"
resp <- "s"
conta <- 0
total <- 0
escreval ("Código Cachorro-quente: 100")
escreval ("Código
Hambúrguer: 101")
escreval ("Código
Cheeseburguer: 102")
escreval ("Código
Refrigerante: 103")
escreval (" ")
enquanto cliente = "s" faca
enquanto resp = "s" faca
escreva ("Qual é o pedido do cliente? Informe o código: ")
leia (cod)
se (cod <> 100) e (cod <> 101) e (cod <> 102) e (cod <>103) entao
escreval ("Código inválido!!!")
senao
escreval ("Quantos o cliente deseja? ")
leia (qtd)
se (cod = 100) entao
conta <- conta + qtd * 2.5
fimse
se (cod = 101) entao
conta <- conta + qtd * 3.30
fimse
se (cod = 102) entao
conta <- conta + qtd * 4.50
fimse
se (cod = 103) entao
conta <- conta + qtd * 2
fimse
fimse
escreval ("Deseja fazer mais algum pedido? s/n")
leia (resp)
fimenquanto
escreval ("O valor a ser pago é", conta, " reais")
escreval ("A lanchonete possui clientes? s/n")
leia (cliente)
escreval (" ")
resp <- "s"
total <- total + conta
conta <- 0
fimenquanto
escreval ("Faturamento total =", total," reais")
fimalgoritmo
Download

Trab-algoritmos-2011-1 r