Text Material Preview
1
Exercícios de Algoritmos
Prof. Gustavo Guanabara
PASSO 01 - SEQUÊNCIAS BÁSICAS
1) Escreva um programa que mostre na tela a mensagem "Olá, Mundo!"
2) Faça um programa que leia o nome de uma pessoa e mostre uma mensagem de boas-vindas
para ela: Ex:
Qual é o seu nome? João da Silva
Olá João da Silva, é um prazer te conhecer!
var
inicio
escreval ("Olá, Mundo!")
fimalgoritmo
var
nome: caractere
inicio
escreva ("Qual é o seu nome? ")
leia (nome)
escreval(" ")
escreval ("Olá, ", nome,"! é um prazer conhecê-lo.")
fimalgoritmo
2
3) Crie um programa que leia o nome e o salário de um funcionário, mostrando no final uma
mensagem. Ex:
Nome do Funcionário: Maria do Carmo
Salário: 1850,45
O funcionário Maria do Carmo tem um salário de R$1850,45 em Junho.
var
nome: caractere
salario: real
inicio
escreva ("Qual é o seu nome? ")
leia (nome)
escreva ("Qual é o seu salário? ")
leia (salario)
escreval(" ")
escreval ("Nome do funcionário: ", nome)
escreval ("Salário: ", salario)
escreval(" ")
escreval ("O funcionário ", nome," tem um salário de R$",salario, " em Junho")
escreval(" ")
fimalgoritmo
3
4) Desenvolva um algoritmo que leia dois números inteiros e mostre o somatório entre eles. Ex:
Digite um valor: 8
Digite outro valor: 5
A soma entre 8 e 5 é igual a 13.
5) Faça um programa que leia as duas notas de um aluno em uma matéria e mostre na tela a sua
média na disciplina.
Ex: Nota 1: 4.5
Nota 2: 8.5
A média entre 4.5 e 8.5 é igual a 6.5
var
N1, N2: real
inicio
escreva ("Digite o primeiro número: ")
leia (N1)
escreva ("Digite o segundo número: ")
leia (N2)
escreval (" ")
escreval ("A soma entre ", N1," e ", N2, " é de ", N1+N2)
escreval (" ")
fimalgoritmo
var
N1, N2: real
inicio
escreva ("Nota 1: ")
leia (N1)
escreva ("Nota 2: ")
leia (N2)
escreval (" ")
escreval ("A media entre ", N1," e ", N2, " é igual a ", (N1+N2)/2)
escreval (" ")
fimalgoritmo
4
6) Faça um programa que leia um número inteiro e mostre o seu antecessor e seu sucessor. Ex:
Digite um número: 9
O antecessor de 9 é 8
O sucessor de 9 é 10
7) Crie um algoritmo que leia um número real e mostre na tela o seu dobro e a sua terça parte.
Ex:
Digite um número: 3.5
O dobro de 3.5 é 7.0
A terça parte de 3.5 é 1.16666
var
numero: real
inicio
escreva ("Digite um número: ")
leia (numero)
escreval (" ")
escreval ("O antecessor de ", numero, " é ", numero-1)
escreval ("O sucessor de ", numero, " é ", numero+1)
escreval (" ")
fimalgoritmo
var
numero: real
inicio
escreva ("Digite um número: ")
leia (numero)
escreval (" ")
escreval ("O dobro de ", numero, " é ", numero*2)
escreval ("A terca parte de ", numero, " é ", numero/3)
escreval (" ")
fimalgoritmo
5
8) Desenvolva um programa que leia uma distância em metros e mostre os valores relativos em
outras medidas. Ex:
Digite uma distância em metros: 185.72
A distância de 85.7m corresponde a:
0.18572Km
1.8572Hm
18.572Dam
1857.2dm
18572.0cm
185720.0mm
var
numero: real
inicio
escreva ("Digite uma distância em metros: ")
leia (numero)
escreval (" ")
escreval ("A distância de ", numero, " corresponde a:")
escreval (numero/1000, " Km")
escreval (numero/100, " Hm")
escreval (numero/10, " Dam")
escreval (numero*10, " dm")
escreval (numero*100, " cm")
escreval (numero*1000, " mm")
escreval (" ")
fimalgoritmo
6
9) Faça um algoritmo que leia quanto dinheiro uma pessoa tem na carteira (em R$) e mostre
quantos dólares ela pode comprar. Considere US$1,00 = R$3,45.
10) Faça um algoritmo que leia a largura e altura de uma parede, calcule e mostre a área a ser
pintada e a quantidade de tinta necessária para o serviço, sabendo que cada litro de tinta pinta
uma área de 2 metros quadrados.
var
reais: real
inicio
escreva ("Digite a quantia em R$: ")
leia (reais)
escreval (" ")
escreval ("A quantia de R$", reais, " permite comprar US$", (reais/3.45))
escreval (" ")
fimalgoritmo
var
largura, altura: real
inicio
escreva ("Digite a largura: ")
leia (largura)
escreva ("Digite a altura: ")
leia (altura)
escreval (" ")
escreval ("A área a ser pintada é de", largura*altura, "m2 e gastará ", (largura*altura)/2, "
latas")
escreval (" ")
fimalgoritmo
7
11) Desenvolva uma lógica que leia os valores de A, B e C de uma equação dosegundo grau e
mostre o valor de Delta.
12) Crie um programa que leia o preço de um produto, calcule e mostre o seu PREÇO
PROMOCIONAL, com 5% de desconto.
var
a, b, c, delta: real
inicio
escreva ("Digite o valor de a: ")
leia (a)
escreva ("Digite o valor de b: ")
leia (b)
escreva ("Digite o valor de c: ")
leia (c)
escreva (" ")
delta <- b^2 - 4*a*c
escreva ("Delta é igual a ",delta)
escreva (" ")
fimalgoritmo
var
preco, desconto, promocao: real
inicio
escreva ("Qual e o preço do produto? ")
leia (preco)
escreval (" ")
desconto <- preco*0.05
promocao <- preco - desconto
escreva ("O preço do produto com desconto é de R$",promocao)
escreval (" ")
fimalgoritmo
8
13) Faça um algoritmo que leia o salário de um funcionário, calcule e mostre o seu novo salário,
com 15% de aumento.
14) A locadora de carros precisa da sua ajuda para cobrar seus serviços. Escreva um programa
que pergunte a quantidade de Km percorridos por um carro alugado e a quantidade de dias pelos
quais ele foi alugado. Calcule o preço total a pagar, sabendo que o carro custa R$90 por dia e
R$0,20 por Km rodado.
var
salario, aumento, final: real
inicio
escreva ("Qual é o valor do seu salário? ")
leia (salario)
escreval (" ")
aumento <- salario*0.15
final <- salario + aumento
escreva ("O seu salário será de R$",final)
escreval (" ")
fimalgoritmo
var
km, dia, total: real
inicio
escreva ("Digite a quantidade de Km: ")
leia (km)
escreva ("Digite a quantidade de dias: ")
leia (dia)
escreval (" ")
total <- km*0.20 + dia*90
escreva ("O valor toal é de R$",total)
escreval (" ")
fimalgoritmo
9
15) Crie um programa que leia o número de dias trabalhados em um mês e mostre o salário de
um funcionário, sabendo que ele trabalha 8 horas por dia e ganha R$25 por hora trabalhada.
16) [DESAFIO] Escreva um programa para calcular a redução do tempo de vida de um fumante.
Pergunte a quantidade de cigarros fumados por dias e quantos anos ele já fumou. Considere que
um fumante perde 10 min de vida a cada cigarro. Calcule quantos dias de vida um fumante
perderá e exiba o total em dias.
var
dia, total: real
inicio
escreva ("Digite a quantidade de dias trabalhados: ")
leia (dia)
escreval (" ")
total <- 25*8*dia
escreva ("O salário é de R$",total)
escreval (" ")
fimalgoritmo
var
cigarro, ano, minuto, hora, dia: real
inicio
escreva ("Digite a quantidade de cigarros fumada por dia: ")
leia (cigarro)
escreva ("Digite a quantidade de anos: ")
leia (ano)
escreval (" ")
minuto <- cigarro*10
hora <- minuto/60
dia <- hora/24
dia <- int(dia + (ano*365))
escreva ("Você já perdeu aproximadamente",dia," dias de vida")
escreval (" ")
fimalgoritmo
10
PASSO 02 - CONDIÇÕES BÁSICAS
17) Escreva um programa que pergunte a velocidade de um carro. Caso ultrapasse 80Km/h, exiba
uma mensagem dizendo que o usuário foi multado. Nesse caso, exiba o valor da multa, cobrando
R$5 por cada Km acima da velocidade permitida.
var
velocidade, total: real
inicio
escreva ("Digite a velocidade em Km: ")
leia (velocidade)
escreval (" ")
se (velocidade > 80) entao
total <- (velocidade - 80)*5
escreva ("O valor da multa é de R$",total)
escreval (" ")
senao
escreva ("Voce não ultrapassou a velocidade.")
escreval (" ")
fimse
fimalgoritmo
11
18) Faça um programa que leia o ano de nascimento de uma pessoa, calcule a idade dela e depois
mostre se ela pode ou não votar.var
ano, nasc, idade: inteiro
inicio
escreva ("Digite o ano atual (YYYY): ")
leia (ano)
escreva ("Digite o ano de nascimento(YYYY): ")
leia (nasc)
escreval (" ")
idade <- ano - nasc
se (idade >= 18) entao
escreva ("Você já pode votar.")
escreval (" ")
senao
escreva ("Você ainda não pode votar.")
escreval (" ")
fimse
fimalgoritmo
12
19) Crie um algoritmo que leia o nome e as duas notas de um aluno, calcule a sua média e mostre
na tela. No final, analise a média e mostre se o aluno teve ou não um bom aproveitamento (se
ficou acima da média 7.0).
var
N1, N2: real
inicio
escreva ("Digite a nota 1: ")
leia (N1)
escreva ("Digite a nota 2: ")
leia (N2)
escreval (" ")
se (N1 >= 0) e (N1 <= 10) entao
se (N2 >= 0) e (N2 <= 10) entao
escreva ("A média é de:", (N1+N2)/2)
escreval (" ")
senao
escreva ("Digite um valor entre 0 e 10")
escreval (" ")
fimse
senao
escreva ("Digite um valor entre 0 e 10")
escreval (" ")
fimse
fimalgoritmo
13
20) Desenvolva um programa que leia um número inteiro e mostre se ele é PAR ou ÍMPAR.
21) Faça um algoritmo que leia um determinado ano e mostre se ele é ou não BISSEXTO.
var
num: inteiro
inicio
escreva ("Digite um número qualquer: ")
leia (num)
escreval (" ")
se (num % 2 = 0) entao
escreva ("O número", num," é PAR")
escreval (" ")
senao
escreva ("O número", num," é ÍMPAR")
escreval (" ")
fimse
fimalgoritmo
var
ano: inteiro
inicio
escreva ("Digite um ano (YYYY): ")
leia (ano)
escreval (" ")
se (ano % 4 = 0) entao
escreva ("O ano", ano," é bissexto")
escreval (" ")
senao
escreva ("O ano", ano," não é bissexto")
escreval (" ")
fimse
fimalgoritmo
14
22) Escreva um programa que leia o ano de nascimento de um rapaz e mostre a sua situação em
elação ao alistamento militar.
- Se estiver antes dos 18 anos, mostre em quantos anos faltam para o alistamento.
- Se já tiver depois dos 18 anos, mostre quantos anos já se passaram do alistamento.
var
ano, nasc, idade: inteiro
inicio
escreva ("Digite o ano atual (YYYY): ")
leia (ano)
escreva ("Digite o ano de nascimento(YYYY): ")
leia (nasc)
escreval (" ")
idade <- ano - nasc
se (idade >= 18) entao
escreva ("Já se passaram", idade-18," anos do alistamento")
escreval (" ")
senao
escreva ("Faltam ", 18-idade," anos para o alistamento")
escreval (" ")
fimse
fimalgoritmo
15
23) Numa promoção exclusiva para o Dia da Mulher, uma loja quer dar descontos para todos,
mas especialmente para mulheres. Faça um programa que leia nome, sexo e o valor das compras
do cliente e calcule o preço com desconto. Sabendo que:
- Homens ganham 5% de desconto
- Mulheres ganham 13% de desconto
var
nome, sexo: caractere
preco: real
inicio
escreva ("Digite o seu nome: ")
leia (nome)
escreva ("Digite o seu sexo (M/F): ")
leia (sexo)
escreva ("Digite o preco do produto: R$")
leia (preco)
escreval (" ")
se (sexo = "M") entao
preco <- preco - (preco*0.05)
escreva ("Nome: ",nome,", do sexo masculino")
escreval (" tem o desconto de 5%!, Valor total a pagar R$",preco)
escreval (" ")
fimse
se (sexo = "F") entao
preco <- preco - (preco*0.13)
escreva ("Nome: ",nome,", do sexo feminino")
escreval (" tem o desconto de 13%!, Valor total a pagar R$",preco)
escreval (" ")
fimse
fimalgoritmo
16
24) Faça um algoritmo que pergunte a distância que um passageiro deseja percorrer em Km.
Calcule o preço da passagem, cobrando R$0.50 por Km para viagens até 200Km e R$0.45 para
viagens mais longas.
var
km, total: real
inicio
escreva ("Digite a distância em Km: ")
leia (km)
escreval (" ")
se (km >= 0) e (km <= 200) entao
total <- km*0.50
escreva ("O valor total é de R$",total)
escreval (" ")
senao
se (km > 200) entao
total <- km*0.45
escreva ("O valor total é de R$",total)
escreval (" ")
fimse
fimse
fimalgoritmo
17
25) [DESAFIO] Crie um programa que leia o tamanho de três segmentos de reta. Analise seus
comprimentos e diga se é possível formar um triângulo com essas retas. Matematicamente, para
três segmentos formarem um triângulo, o comprimento de cada lado deve ser menor que a soma
dos outros dois.
var
a, b, c: real
inicio
escreva ("Digite A: ")
leia (a)
escreva ("Digite B: ")
leia (b)
escreva ("Digite C: ")
leia (c)
escreval (" ")
se (a < b+c) e (b < c+a) entao
se ( c < b+a) entao
escreva ("As medidas formam um triângulo!")
escreval (" ")
senao
escreva ("As medidas não formam um triângulo!")
escreval (" ")
fimse
senao
escreva ("As medidas não formam um triângulo!")
escreval (" ")
fimse
fimalgoritmo
18
PASSO 03 - CONDIÇÕES COMPOSTAS
26) Escreva um algoritmo que leia dois números inteiros e compare-os, mostrando na tela uma
das mensagens abaixo:
- O primeiro valor é o maior
- O segundo valor é o maior
- Não existe valor maior, os dois são iguais
var
a, b: real
inicio
escreva ("Digite A: ")
leia (a)
escreva ("Digite B: ")
leia (b)
escreval (" ")
se (a>b) entao
escreva (a," é maior que ",b)
escreval (" ")
senao
se (b>a) entao
escreva (b," é maior que ",a)
escreval (" ")
senao
escreva (a," é igual a ",b)
escreval (" ")
fimse
fimse
fimalgoritmo
19
27) Crie um programa que leia duas notas de um aluno e calcule a sua média, mostrando uma
mensagem no final, de acordo com a média atingida:
- Média até 4.9: REPROVADO
- Média entre 5.0 e 6.9: RECUPERAÇÃO
- Média 7.0 ou superior: APROVADO
var
n1, n2, media: real
inicio
escreva ("Digite a nota1: ")
leia (n1)
escreva ("Digite a nota 2: ")
leia (n2)
escreval (" ")
media <- (n1+n2)/2
se (media >= 0) e ( media < 5) entao
escreva ("Média: ",media,". Aluno(a) está REPROVADO")
escreval (" ")
senao
se (media >= 5) e (media < 7) entao
escreva ("Média: ",media,". Aluno(a) está RECUPERAÇÃO")
escreval (" ")
senao
se (media >= 7) e (media <= 10) entao
escreva ("Média: ",media,". Aluno(a) está APROVADO")
escreval (" ")
fimse
fimse
fimse
fimalgoritmo
20
28) Faça um programa que leia a largura e o comprimento de um terreno retangular, calculando
e mostrando a sua área em m². O programa também deve mostrar a classificação desse terreno,
de acordo com a lista abaixo:
- Abaixo de 100m² = TERRENO POPULAR
- Entre 100m² e 500m² = TERRENO MASTER
- Acima de 500m² = TERRENO VIP
var
larg, comp, area: real
inicio
escreva ("Digite a largura: ")
leia (larg)
escreva ("Digite o comprimento: ")
leia (comp)
escreval (" ")
area <- larg*comp
se (area >= 0) e (area < 100) entao
escreva ("Área de ",area,"m2 = TERRENO POPULAR")
escreval (" ")
senao
se (area >= 100) e (area < 500) entao
escreva ("Área de ",area,"m2 = TERRENO MASTER")
escreval (" ")
senao
se (areA >= 500) entao
escreva ("Área de ",area,"m2 = TERRENO VIP")
escreval (" ")
fimse
fimse
fimse
fimalgoritmo
21
29) Desenvolva um programa que leia o nome de um funcionário, seu salário, quantos anos ele
trabalha na empresa e mostre seu novo salário, reajustado de acordo com a tabela a seguir:
- Até 3 anos de empresa: aumento de 3%
- Entre 3 e 10 anos: aumento de 12.5%
- 10 anos ou mais: aumento de 20%
var
nome: caractere
salario, ano, nsalario: real
inicio
escreva ("Digite o seu nome: ")
leia (nome)
escreva ("Digite o seu salário: R$")
leia (salario)
escreva ("Digite os anos na empresa: ")
leia (ano)
escreval (" ")
se (ano >= 0) e (ano <= 3) entao
nsalario <- salario + (salario*0.03)
senao
se (ano > 3) e (ano < 10) entao
nsalario <- salario + (salario*0.125)senao
se (ano >= 10) entao
nsalario <- salario + (salario*0.2)
fimse
fimse
fimse
escreval ("Funcionário(a): ",nome)
escreval ("Salário atual: R$",salario)
escreval ("Tempo de serviço: ", ano," ano(s)")
escreval (" ")
escreval ("Novo salário: R$", nsalario)
escreval (" ")
fimalgoritmo
22
30) [DESAFIO] Refaça o algoritmo 25, acrescentando o recurso de mostrar que tipo
de triângulo será formado:
- EQUILÁTERO: todos os lados iguais
- ISÓSCELES: dois lados iguais
- ESCALENO: todos os lados diferentes
var
a, b, c: real
inicio
escreva ("Digite A: ")
leia (a)
escreva ("Digite B: ")
leia (b)
escreva ("Digite C: ")
leia (c)
escreval (" ")
se (a < b+c) e (b < c+a) entao
se ( c < b+a) entao
se (A=B) e (A=C) entao
escreva ("O triângulo é EQUILÁTERO!")
escreval (" ")
fimse
se (A=B) e (A<>C) entao
escreva ("O triângulo é ISÓSCELES")
escreval (" ")
fimse
se (A<>B) e (A<>C) entao
escreva ("O triângulo é ESCALENO!")
escreval (" ")
fimse
senao
escreva ("As medidas não formam um triângulo!")
escreval (" ")
fimse
senao
escreva ("As medidas não formam um triângulo!")
escreval (" ")
fimse
fimalgoritmo
23
31) [DESAFIO] Crie um jogo de JoKenPo (Pedra-Papel-Tesoura)
caso("papel")
var
pedra, papel, tesoura, a, b: caractere
inicio
escreva ("Faça a primeira jogada: ")
leia (a)
escreva ("Faça a segunda jogada: ")
leia (b)
escreval (" ")
escolha (a)
caso("pedra")
se (b = "pedra") entao
escreva ("Empate!")
escreval (" ")
senao
se (b = "papel") entao
escreva ("Papel vence!")
escreval (" ")
senao
se (b = "tesoura") entao
escreva ("Pedra vence!")
escreval (" ")
fimse
fimse
fimse
se (b = "pedra") entao
escreva ("Papel vence!")
escreval (" ")
senao
se (b = "papel") entao
escreva ("Empate!")
escreval (" ")
senao
se (b = "tesoura") entao
escreva ("Tesoura!")
escreval (" ")
fimse
fimse
fimse
caso("tesoura")
se (b = "pedra") entao
escreva ("Pedra vence!")
escreval (" ")
senao
se (b = "papel") entao
escreva ("tesoura!")
escreval (" ")
senao
se (b = "tesoura") entao
escreva ("Empate!")
escreval (" ")
fimse
fimse
fimse
fimescolha
fimalgoritmo
24
32) [DESAFIO] Crie um jogo onde o computador vai sortear um número entre 1 e 5 o jogador vai
tentar descobrir qual foi o valor sorteado.
var
num, comp: inteiro
inicio
escreva ("Tente adivinhar o número que o computador irá escolher (0 a 5): ")
leia (num)
escreva (" ")
escreva ("O computador escolheu: ")
//comando para valor aleatorio
aleatorio 0, 5
leia(comp)
aleatorio off
escreva (" ")
se (num = comp) entao
escreva ("Você acertou!")
escreva (" ")
senao
escreva ("Você errou!")
escreva (" ")
fimse
fimalgoritmo
25
33) Escreva um programa para aprovar ou não o empréstimo bancário para a compra de uma
casa. O programa vai perguntar o valor da casa, o salário do comprador e em quantos anos ele
vai pagar. Calcule o valor da prestação mensal, sabendo que ela não pode exceder 30% do salário
ou então o empréstimo será negado.
var
casa, salario, parcela: real
ano: inteiro
inicio
escreva ("Digite o valor da casa: R$")
leia (casa)
escreva ("Digite o valor do salário: R$")
leia (salario)
escreva ("Digite quantos anos você pagará: ")
leia (ano)
escreva (" ")
parcela <- casa /(ano*12)
se (parcela > (salario*0.3)) entao
escreva ("Empréstimo recusado!")
escreva (" ")
senao
escreva ("Empréstimo aprovado!")
escreva (" ")
fimse
fimalgoritmo
26
34) O Índice de Massa Corpórea (IMC) é um valor calculado baseado na altura e no peso de uma
pessoa. De acordo com o valor do IMC, podemos classificar o indivíduo dentro de certas faixas.
- abaixo de 18.5: Abaixo do peso
- entre 18.5 e 25: Peso ideal
- entre 25 e 30: Sobrepeso
- entre 30 e 40: Obesidade
- acima de 40: Obseidade mórbida
Obs: O IMC é calculado pela expressão peso/altura² (peso dividido pelo quadrado da altura)
var
peso, altura, imc: real
inicio
escreva ("Digite o seu peso (kg): ")
leia (peso)
escreva ("Digite a sua altura: ")
leia (altura)
escreval (" ")
imc <- peso / (altura ^ 2)
se (imc >= 0) e (imc < 18.5) entao
escreva ("Abaixo do peso")
escreval (" ")
senao
se (imc >= 18.5) e (imc < 25) entao
escreva ("Peso ideal")
escreval (" ")
senao
se (imc >= 25) e (imc < 30) entao
escreva ("Sobrepeso")
escreval (" ")
senao
se (imc >= 30) e (imc < 40) entao
escreva ("Obesidade")
escreval (" ")
senao
se (imc >= 40) entao
escreva ("Obesidade mórbida")
escreval (" ")
fimse
fimse
fimse
fimse
fimse
fimalgoritmo
27
35) Uma empresa de aluguel de carros precisa cobrar pelos seus serviços. O aluguel de um carro
custa R$90 por dia para carro popular e R$150 por dia para carro de luxo. Além disso, o cliente
paga por Km percorrido. Faça um programa que leia o tipo de carro alugado (popular ou luxo),
quantos dias de aluguel e quantos Km foram percorridos. No final mostre o preço a ser pago de
acordo com a tabela a seguir:
- Carros populares (aluguel de R$90 por dia)
- Até 100Km percorridos: R$0,20 por Km
- Acima de 100Km percorridos: R$0,10 por Km
- Carros de luxo (aluguel de R$150 por dia)
- Até 200Km percorridos: R$0,30 por Km
- Acima de 200Km percorridos: R$0,25 por Km
var
carro, km, total: real
inicio
escreva ("Digite [0] para carro popular ou [1] para carro de luxo: ")
leia (carro)
escreva ("Digite o Km percorrido: ")
leia (km)
escreval (" ")
escolha (carro)
caso (0)
se (km >= 0) e (km <= 100) entao
total <- km*0.20 + 90
senao
se (km > 100) entao
total <- km*0.10 + 90
fimse
fimse
caso (1)
se (km >= 0) e (km <= 200) entao
total <- km*0.30 + 150
senao
se (km > 200) entao
total <- km*0.250 + 150
fimse
fimse
fimescolha
escreva ("Total a pagar: ",total)
escreval (" ")
fimalgoritmo
28
36) Um programa de vida saudável quer dar pontos atividades físicas que podem ser trocados
por dinheiro. O sistema funciona assim:
- Cada hora de atividade física no mês vale pontos
- até 10h de atividade no mês: ganha 2 pontos por hora
- de 10h até 20h de atividade no mês: ganha 5 pontos por hora
- acima de 20h de atividade no mês: ganha 10 pontos por hora
- A cada ponto ganho, o cliente fatura R$0,05 (5 centavos)
Faça um programa que leia quantas horas de atividade uma pessoa teve por mês, calcule e
mostre quantos pontos ela teve e quanto dinheiro ela conseguiu ganhar.
var
hora, ponto:inteiro
total: real
inicio
escreva ("Digite a quantidade de hora(s): ")
leia (hora)
escreval (" ")
se (hora >= 0) e (hora <= 10) entao
ponto <- hora*2
senao
se(hora > 10) e (hora <= 20) entao
ponto <- hora*2
senao
se (hora > 20) entao
ponto <- hora*10
fimse
fimse
fimse
total <- ponto*0.05
escreva ("O total a receber é de R$",total)
escreval (" ")
fimalgoritmo
29
37) Uma empresa precisa reajustar o salário dos seus funcionários, dando um aumento de acordo
com alguns fatores. Faça um programa que leia o salário atual,o gênero do funcionário e há
quantos anos esse funcionário trabalha na empresa. No final, mostre o seu novo salário, baseado
na tabela a seguir:
- Mulheres
- menos de 15 anos de empresa: +5%
- de 15 até 20 anos de empresa: +12%
- mais de 20 anos de empresa: +23%
- Homens
- menos de 20 anos de empresa: +3%
- de 20 até 30 anos de empresa: +13%
- mais de 30 anos de empresa: +25%
var
salario, ano, total, aumento: real
genero: caractere
inicio
escreva ("Digite o salário atual: R$")
leia (salario)
escreva ("Digite o genêro [M/F]: ")
leia (genero)
escreva ("Digite quantos anos você trabalha na empresa: ")
leia (ano)
escreval (" ")
escolha (genero)
caso ("F")
se (ano >= 0) e (ano < 15) entao
aumento <- salario*0.05
senao
se (ano >= 15) e (ano < 20) entao
aumento <- salario*0.12
senao
se (ano >= 20) entao
aumento <- salario*0.23
fimse
fimse
fimse
caso ("M")
se (ano >= 0) e (ano < 20) entao
aumento <- salario*0.03
senao
se (ano >= 20) e (ano < 30) entao
aumento <- salario*0.13
senao
se (ano >= 30) entao
aumento <- salario*0.25
fimse
fimse
fimse
fimescolha
salario <- salario + aumento
escreva ("O reajuste vai ser de R$",aumento,"
novo salário será R$",salario)
escreval (" ")
fimalgoritmo
30
PASSO 04 – REPETIÇÕES ENQUANTO
38) Escreva um programa que mostre na tela a seguinte contagem:
6 7 8 9 10 11 Acabou!
39) Faça um algoritmo que mostre na tela a seguinte contagem:
10 9 8 7 6 5 4 3 Acabou!
var
num: inteiro
inicio
num <- 6
enquanto (num <= 11) faca
escreva (num, " ")
num <- num +1
fimenquanto
escreva ("Acabou!")
fimalgoritmo
var
num: inteiro
inicio
num <- 10
enquanto (num >= 3) faca
escreva (num, " ")
num <- num -1
fimenquanto
escreva ("Acabou!")
fimalgoritmo
31
40) Crie um aplicativo que mostre na tela a seguinte contagem:
0 3 6 9 12 15 18 Acabou!
41) Desenvolva um programa que mostre na tela a seguinte contagem:
100 95 90 85 80 ... 0 Acabou!
var
num: inteiro
inicio
num <- 0
enquanto (num <= 18) faca
escreva (num, " ")
num <- num +3
fimenquanto
escreva ("Acabou!")
fimalgoritmo
var
num: inteiro
inicio
num <- 100
enquanto (num >= 0) faca
escreva (num, " ")
num <- num -5
fimenquanto
escreva ("Acabou!")
fimalgoritmo
32
42) Faça um algoritmo que pergunte ao usuário um número inteiro e positivo qualquer e mostre
uma contagem até esse valor:
Ex: Digite um valor: 35
Contagem: 1 2 3 4 5 6 7 ... 33 34 35 Acabou!
43) Desenvolva um algoritmo que mostre uma contagem regressiva de 30 até 1, marcando os
números que forem divisíveis por 4, exatamente como mostrado abaixo:
30 29 [28] 27 26 25 [24] 23 22 21 [20] 19 18 17 [16]...
var
num, contador: inteiro
inicio
escreva("Digite um número: ")
leia(num)
contador <- 1
enquanto (contador <= num) faca
escreva (contador, " ")
contador <- contador +1
fimenquanto
escreva ("Acabou!")
fimalgoritmo
var
num: inteiro
inicio
num <- 30
enquanto (num >= 1) faca
se (num%4=0) entao
escreva ("[",num,"] ")
senao
escreva (num, " ")
fimse
num <- num - 1
fimenquanto
escreva ("Acabou!")
fimalgoritmo
33
44) Crie um algoritmo que leia o valor inicial da contagem, o valor final e o incremento,
mostrando em seguida todos os valores no intervalo:
Ex: Digite o primeiro Valor: 3
Digite o último Valor: 10
Digite o incremento: 2
Contagem: 3 5 7 9 Acabou!
var
inicial, final, salto: inteiro
inicio
escreva("Digite o numero inicial: ")
leia(inicial)
escreva("Digite o numero final: ")
leia(final)
escreva("Digite o salto: ")
leia(salto)
enquanto (inicial <= final) faca
escreva (inicial, " ")
inicial <- inicial +salto
fimenquanto
escreva ("Acabou!")
fimalgoritmo
34
45) O programa acima vai ter um problema quando digitarmos o primeiro valor maior que o
último. Resolva esse problema com um código que funcione em qualquer situação.
var
inicial, final, salto: inteiro
inicio
escreva("Digite o numero inicial: ")
leia(inicial)
escreva("Digite o numero final: ")
leia(final)
escreva("Digite o salto: ")
leia(salto)
escreval (" ")
se (inicial < final) entao
enquanto (inicial <= final) faca
escreva (inicial, " ")
inicial <- inicial + salto
fimenquanto
escreva ("Acabou!")
senao
se (final < inicial) entao
enquanto (inicial >= final) faca
escreva (inicial, " ")
inicial <- inicial - salto
fimenquanto
escreva ("Acabou!")
fimse
fimse
fimalgoritmo
35
46) Crie um programa que calcule e mostre na tela o resultado da soma entre 6 + 8 + 10 + 12 +
14 + ... + 98 + 100.
47) Desenvolva um aplicativo que mostre na tela o resultado da expressão 500 + 450 + 400 + 350
+ 300 + ... + 50 + 0
var
num, soma: inteiro
inicio
num <- 6
soma <- 0
enquanto (num <= 100) faca
se (num = 100) entao
escreva (num,".")
senao
escreva (num," +")
fimse
soma <- num + soma
num <- num + 2
fimenquanto
escreval (" ")
escreva ("Total da soma:",soma)
fimalgoritmo
var
num, soma: inteiro
inicio
num <- 500
soma <- 0
enquanto (num >= 0) faca
se (num = 0) entao
escreva (num,".")
senao
escreva (num," +")
fimse
soma <- num + soma
num <- num - 50
fimenquanto
escreval (" ")
escreva ("Total da soma:",soma)
fimalgoritmo
36
48) Faça um programa que leia 7 números inteiros e no final mostre o somatório entre eles.
49) Crie um programa que leia 6 números inteiros e no final mostre quantos deles são pares e
quantos são ímpares.
var
num, soma, contador: inteiro
inicio
soma <- 0
contador <- 1
enquanto (contador <= 7) faca
escreva ("Digite o" ,contador, "o número: ")
leia (num)
soma <- num + soma
contador <- contador +1
fimenquanto
escreval (" ")
escreva ("Total da soma:",soma)
fimalgoritmo
var
num, contador, par,impar: inteiro
inicio
par <- 0
impar <- 0
contador <- 1
enquanto (contador <= 6) faca
escreva ("Digite o" ,contador, "o número: ")
leia (num)
se (num%2=0) entao
par <- par +1
senao
impar <- impar +1
fimse
contador <- contador +1
fimenquanto
escreval (" ")
escreval ("Pares: ",par)
escreval ("Impares: ",impar)
fimalgoritmo
37
50) Desenvolva um programa que faça o sorteio de 20 números entre 0 e 10 emostre na tela:
a) Quais foram os números sorteados
b) Quantos números estão acima de 5
c) Quantos números são divisíveis por 3
var
aleat, contador, acima5, divis3: inteiro
inicio
contador <- 1
acima5 <- 0
divis3 <- 0
enquanto (contador <= 20) faca
escreva (contador,"o número sorteado foi: ")
aleatorio 0, 10
leia (aleat)
aleatorio off
se (aleat > 5) entao
acima5 <- acima5 +1
fimse
se (aleat%3=0) entao
divis3 <- divis3 +1
fimse
contador <- contador + 1
fimenquanto
escreval (" ")
escreval (acima5," numeros estão acima de 5")
escreval (divis3, " numeros são divisiveis por 3")
fimalgoritmo
38
51) Faça um aplicativo que leia o preço de 8 produtos. No final, mostre na tela
qual foi o maior e qual foi o menor preço digitados.
var
preco, contador,maior, menor: real
inicio
contador <- 1
enquanto (contador <= 8) faca
escreva ("Digite o" ,contador, "o preço: R$")
leia (preco)
se (contador =1) entao
menor <- preco
fimse
se (preco > maior) entao
maior <- preco
senao
se (preco < menor) entaomenor <- preco
fimse
fimse
contador <- contador +1
fimenquanto
escreval (" ")
escreval ("Maior preco: R$",maior)
escreval ("Menor preco: R$",menor)
fimalgoritmo
39
52) Crie um algoritmo que leia a idade de 10 pessoas, mostrando no final:
a) Qual é a média de idade do grupo
b) Quantas pessoas tem mais de 18 anos
c) Quantas pessoas tem menos de 5 anos
d) Qual foi a maior idade lida
var
idade, contador, soma, menor5, maior18,maior: real
inicio
contador <- 1
soma <- 0
menor5 <- 0
maior18 <- 0
enquanto (contador <= 10) faca
escreva ("Digite a" ,contador, "a idade:")
leia (idade)
soma <- soma + idade
se (idade < 5) entao
menor5 <- menor5 + 1
fimse
se (idade > 18) entao
maior18 <- maior18 +1
fimse
se (idade > maior) entao
maior <- idade
fimse
contador <- contador +1
fimenquanto
escreval (" ")
escreval ("Média: ",soma/10)
escreval ("Maior de 18:",maior18)
escreval ("Menos de 5:",menor5)
escreval ("Maior idade lida:",maior)
fimalgoritmo
40
53) Faça um programa que leia a idade e o sexo de 5 pessoas, mostrando no final:
a) Quantos homens foram cadastrados
b) Quantas mulheres foram cadastradas
c) A média de idade do grupo
d) A média de idade dos homens
e) Quantas mulheres tem mais de 20 anos
var
idade,cont,M,F,somaM,idadeF,somat: real
sexo: caractere
inicio
cont <- 1
M <- 0
F <- 0
somat <- 0
idadeF <- 0
somaM <- 0
enquanto (cont <= 5) faca
escreva ("Digite a ",cont,"a idade: ")
leia (idade)
escreva ("Digite o",cont,"o sexo [M/F]: ")
leia (sexo)
se (sexo = "M") entao
M <- M +1
somaM <- somaM + idade
senao
se (sexo = "F") entao
F <- F +1
se (idade >20) entao
idadeF <- idadeF + 1
fimse
fimse
fimse
somat <- somat + idade
cont <- cont + 1
fimenquanto
escreval ("Homens cadastrados: ",M)
escreval ("Mulheres cadastradas: ",F)
escreval ("Média de idade total: ",somat/5)
escreval ("Média de idade dos homens: ",somaM/M)
escreval ("Mulheres acima de 20 anos: ",idadeF)
fimalgoritmo
41
54) Desenvolva um aplicativo que leia o peso e a altura de 7 pessoas, mostrando no final:
a) Qual foi a média de altura do grupo
b) Quantas pessoas pesam mais de 90Kg
c) Quantas pessoas que pesam menos de 50Kg tem menos de 1.60m
d) Quantas pessoas que medem mais de 1.90m pesam mais de 100Kg.
var
peso, alt, soma, peso90, menos50, alt19,cont: real
inicio
cont <- 1
soma <- 0
peso90 <- 0
menos50 <- 0
alt19 <- 0
enquanto (cont <= 7) faca
escreva ("Digite o ",cont,"o peso: ")
leia (peso)
escreva ("Digite a ",cont,"a altura: ")
leia (alt)
soma <- alt + soma
se (peso > 90) entao
peso90 <- peso90 + 1
fimse
se (peso < 50) e (alt < 1.60) entao
menos50 <- menos50 + 1
fimse
se (alt > 1.90) e (peso > 100) entao
alt19 <- alt19 + 1
fimse
cont <- cont + 1
fimenquanto
escreval ("Media do grupo: ",soma/7)
escreval ("Quantidade de pessoas acima de 90kg: ",peso90)
escreval ("Quantidade de pessoas com menos de 50kg e menis de 1,60: ",menos50)
escreval ("Quantidade de pessoas com mais de 1,90 e mais de 100kg: ",alt19)
fimalgoritmo
42
55) [DESAFIO] Vamos melhorar o jogo que fizemos no exercício 32. A partir de agora, o
computador vai sortear um número entre 1 e 10 e o jogador vai ter 4 tentativas para tentar
acertar.
var
num, comp, contador: inteiro
inicio
contador <- 4
enquanto (contador > 0) faca
escreva ("Tente adivinhar o número que o computador irá escolher (1 a 10): ")
leia (num)
escreva (" ")
escreva ("O computador escolheu: ")
aleatorio 1, 10
leia(comp)
aleatorio off
escreval (" ")
se (num = comp) entao
escreva ("Você acertou!")
escreval (" ")
contador <- 0
senao
escreva ("Você errou. Tente novamente!")
escreval (" ")
contador <- contador - 1
escreval ("Você tem ",contador," changes")
escreval ("=====================================")
fimse
fimenquanto
fimalgoritmo
43
PASSO 05 – ENQUANTO COM FLAG
56) Crie um programa que leia vários números pelo teclado e mostre no final o somatório entre
eles. Obs: O programa será interrompido quando o número 1111 for digitado
var
soma, num: real
inicio
soma <-0
escreval ("=========================================")
escreval ("Digite 1111 caso queira parar a somátoria")
escreval ("=========================================")
enquanto (num <> 1111) faca
escreva ("Digite um número para a soma: ")
leia (num)
soma <- soma + num
fimenquanto
escreval (" ")
escreval ("A soma é ",soma-1111)
fimalgoritmo
44
57) Desenvolva um aplicativo que leia o salário e o sexo de vários funcionários. No final, mostre
o total de salários pagos aos homens e o total pago às mulheres. O programa vai perguntar ao
usuário se ele quer continuar ou não sempre que ler os dados de um funcionário.
var
salario,MT, FT: real
resp, sexo: caractere
inicio
resp <- "S"
MT <- 0
FT <- 0
enquanto (resp= "S") faca
escreva ("Digite o salario: R$")
leia (salario)
escreva ("Digite o sexo [M/F]: ")
leia (sexo)
se (sexo = "M") entao
MT <- MT + salario
senao
se (sexo = "F") entao
FT <- FT + salario
fimse
fimse
escreva ("Deseja continuar? ")
leia(resp)
fimenquanto
escreval (" ")
escreval ("Total salario para homens: R$",MT)
escreval ("Total salario para mulheres: R$",FT)
fimalgoritmo
45
58) Faça um algoritmo que leia a idade de vários alunos de uma turma. O programa vai parar
quando for digitada a idade 999. No final, mostre quantos alunos existem na turma e qual é a
média de idade do grupo.
var
soma, idade,cont: real
inicio
soma <-0
escreval ("=========================================")
escreval ("Digite 999 caso queira parar a somátoria")
escreval ("=========================================")
cont <- 0
enquanto (idade <> 999) faca
escreva ("Digite a idade: ")
leia (idade)
soma <- soma + idade
cont <- cont +1
fimenquanto
escreval (" ")
escreval ("Existem ",cont-1," alunos e a média de idade é",(soma-999)/(cont-1))
fimalgoritmo
46
59) Crie um programa que leia o sexo e a idade de várias pessoas. O programa vai perguntar se o
usuário quer continuar ou não a cada pessoa. No final, mostre:
a) qual é a maior idade lida
b) quantos homens foram cadastrados
c) qual é a idade da mulher mais jovem
d) qual é a média de idade entre os homens
var
idade, maior, menor, contM,somaM,contF: real
resp, sexo: caractere
inicio
resp <- "S"
contM <- 0
somaM <- 0
contF <- 1
enquanto (resp= "S") faca
escreva ("Digite o sexo [M/F]: ")
leia (sexo)
escreva ("Digite a idade:")
leia (idade)
se (idade > maior) entao
maior <- idade
fimse
se (sexo = "M") entao
ContM <- contM + 1
somaM <- somaM + idade
senao
se (sexo = "F") entao
se (contF = 1) entao
menor <- idade
contF <- contF+1
fimse
se (idade < menor) entao
menor <- idade
fimse
fimse
fimse
escreva ("Deseja continuar? ")
leia(resp)
fimenquanto
escreval (" ")
escreval ("Maior idade geral lida: ", maior)
escreval ("Homens cadastrados: ",contM)
escreval ("Idade mulher mais jovem: ", menor)
escreval ("Média idade homens: : ",somaM/contM)
fimalgoritmo
47
60) Desenvolva um algoritmo que leia o nome, a idade e o sexo de várias pessoas. O programa
vai perguntar se o usuário quer ou não continuar. No final, mostre:
a) O nome da pessoa mais velha
b) O nome da mulher mais jovem
c) A média de idade do grupo
d) Quantos homens tem mais de 30 anos
e) Quantas mulheres tem menos de 18 anosvar
idade, maior,menor,soma,cont,contM,contF:real
nome, resp, sexo, nomemaior,nomemenor: caractere
inicio
resp <- "S"
soma <- 0
cont <- 0
contM <- 0
contF <- 0
enquanto (resp= "S") faca
escreva ("Digite o nome: ")
leia (nome)
escreva ("Digite o sexo [M/F]: ")
leia (sexo)
escreva ("Digite a idade:")
leia (idade)
se (idade > maior) entao
maior <- idade
nomemaior <- nome
fimse
soma <- soma + idade
escolha (sexo)
caso ("M")
se (idade>30) entao
ContM <- contM + 1
fimse
caso ("F")
se (cont =0) entao
menor <- idade
nomemenor <- nome
fimse
se (idade < 18) entao
contF <- contF +1
fimse
se (idade < menor) entao
menor <- idade
nomemenor <- nome
fimse
fimescolha
cont <- cont + 1
escreva ("Deseja continuar? ")
leia(resp)
fimenquanto
escreval (" ")
escreval ("Nome da pessoa mais velha: ",
nomemaior)
escreval ("Nome da mulher mais jovem: ",
nomemenor)
escreval ("Média da idade do grupo: ",
soma/(cont-1))
escreval ("Quantidade de homens acima de
30: ",ContM)
escreval ("Quantidade de mulheres abaixo
de 18: ",ContF)
fimalgoritmo
48
PASSO 06 – REPETIÇÃO COM FAÇA ENQUANTO
61) Crie um programa que mostre na tela a seguinte contagem, usando a estrutura “faça
enquanto”
0 3 6 9 12 15 18 21 24 27 30 Acabou!
var
num: inteiro
inicio
num <- 0
repita
escreva (num," ")
num <- num + 3
ate (num > 30)
escreval ("Acabou!")
fimalgoritmo
49
62) Faça um programa usando a estrutura “faça enquanto” que leia a idade de várias pessoas. A
cada laço, você deverá perguntar para o usuário se ele quer ou não continuar a digitar dados. No
final, quando o usuário decidir parar, mostre na tela:
a) Quantas idades foram digitadas
b) Qual é a média entre as idades digitadas
c) Quantas pessoas tem 21 anos ou mais.
var
idade,contador,soma,idade21: inteiro
resp: caractere
inicio
contador <- 0
soma <- 0
idade21 <- 0
repita
escreva ("Digite a idade: ")
leia (idade)
soma <- soma + idade
se (idade >= 21) entao
idade21 <- idade21 +1
fimse
contador <- contador + 1
escreva ("Deseja continuar? [N/S]: ")
leia (resp)
ate (resp = "N")
escreval(" ")
escreval ("Total de idades digitadas: ", contador)
escreval ("A Média de idades é de ", soma/contador)
escreval ("Pessoas com 21 ou mais: ", idade21)
fimalgoritmo
50
63) Crie um programa usando a estrutura “faça enquanto” que leia vários números. A cada laço,
pergunte se o usuário quer continuar ou não. No final, mostre na tela:
a) O somatório entre todos os valores
b) Qual foi o menor valor digitado
c) A média entre todos os valores
d) Quantos valores são pares
var
num,contador,soma,menor,par: inteiro
resp: caractere
inicio
contador <- 0
soma <- 0
par <- 0
repita
escreva ("Digite um número: ")
leia (num)
soma <- soma + num
se (contador = 0) entao
menor <- num
fimse
se (num < menor) entao
menor <- num
fimse
se (num%2=0) entao
par <- par +1
fimse
contador <- contador + 1
escreva ("Deseja continuar? [N/S]: ")
leia (resp)
ate (resp = "N")
escreval(" ")
escreval ("Somatória: ", soma)
escreval ("Menor valor: ", menor)
escreval ("A media: ", soma/contador)
escreval ("Quantidade de pares: ", par)
fimalgoritmo
51
PASSO 07 – REPETIÇÃO COM PARA
64) Desenvolva um programa usando a estrutura “para” que mostre na tela a seguinte contagem:
0 5 10 15 20 25 30 35 40 Acabou!
65) Desenvolva um programa usando a estrutura “para” que mostre na tela a seguinte contagem:
100 90 80 70 60 50 40 30 20 10 0 Acabou!
var
num : inteiro
inicio
para num de 0 ate 40 passo 5 faca
escreva (num," ")
fimpara
escreval ("Acabou!")
fimalgoritmo
var
num : inteiro
inicio
para num de 100 ate 0 passo -10 faca
escreva (num," ")
fimpara
escreval ("Acabou!")
fimalgoritmo
52
66) Escreva um programa que leia um número qualquer e mostre a tabuada desse número,
usando a estrutura “para”. Ex: Digite um valor: 5
5 x 1 = 5
5 x 2 = 10
5 x 3 = 15 ...
67) Faça um programa usando a estrutura “para” que leia um número inteiro positivo e mostre
na tela uma contagem de 0 até o valor digitado: Ex: Digite um valor: 9
Contagem: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, FIM!
var
num,i : inteiro
inicio
escreva ("Digite um número: ")
leia (num)
escreval ()
para i de 1 ate 10 faca
escreval (num," x ",i," = ", num*i)
fimpara
escreval ()
fimalgoritmo
var
num,i : inteiro
inicio
escreva ("Digite um número: ")
leia (num)
escreval ()
para i de 0 ate num faca
escreva (i,", ")
fimpara
escreval ("Acabou!")
fimalgoritmo
53
68) Crie um programa que leia sexo e peso de 8 pessoas, usando a estrutura “para”. No final,
mostre na tela:
a) Quantas mulheres foram cadastradas
b) Quantos homens pesam mais de 100Kg
c) A média de peso entre as mulheres
d) O maior peso entre os homens
var
i, peso,pesoM, pesoF,F,maior: inteiro
sexo: caractere
inicio
F <- 0
pesoM <- 0
pesoF <- 0
para i de 1 ate 8 faca
escreva ("Digite o sexo [M/F]: ")
leia (sexo)
escreva ("Digite o peso: ")
leia (peso)
escolha (sexo)
caso ("M")
M <- M +1
se (peso > 100) entao
pesoM <- pesoM + 1
fimse
se (peso > maior) entao
maior <- peso
fimse
caso ("F")
F <- F + 1
pesoF <- pesoF + peso
fimescolha
fimpara
escreval ("Mulheres cadastradas: ",F)
escreval ("Homens acima de 100kg: ", pesoM)
escreval ("Media de peso mulheres: ", pesoF/F)
escreval ("Maior peso homem: ",maior)
fimalgoritmo
54
69) [DESAFIO] Desenvolva um programa que leia o primeiro termo e a razão de uma PA
(Progressão Aritmética), mostrando na tela os 10 primeiros elementos da PA e a soma entre
todos os valores da sequência.
var
i,a1,a2, r,soma: inteiro
inicio
escreva ("Digite a1: ")
leia (a1)
escreva ("Digite r: ")
leia (r)
escreva (a1," + ")
soma <- a1
para i de 1 ate 9 faca
a2<- a1+r
se (i=9) entao
escreva(a2)
senao
escreva (a2," + ")
fimse
soma <- soma + a2
a1<-a2
fimpara
escreva (" = ",soma)
escreval ()
fimalgoritmo
55
70) [DESAFIO] Faça um programa que mostre os 10 primeiros elementos da Sequência de
Fibonacci:
1 1 2 3 5 8 13 21...
var
i,a0,a1,a2: inteiro
inicio
a1 <- 1
a0 <- 0
//escreva (a1,", ")
para i de 1 ate 10 faca
a2 <- a0 + a1
se (i = 10) entao
escreva (a2," - FIM! ")
senao
escreva (a1,", ")
fimse
a0 <- a1
a1 <- a2
fimpara
escreval ()
fimalgoritmo
56
PASSO 08 – VETORES
71) Faça um programa que preencha automaticamente um vetor numérico com 8 posições,
conforme abaixo:
999 999 999 999 999 999 999 999
0 1 2 3 4 5 6 7
72) Crie um programa que preencha automaticamente (usando lógica, não apenas atribuindo
diretamente) um vetor numérico com 10 posições, conforme abaixo:
5 10 15 20 25 30 35 40 45 50
0 1 2 3 4 5 6 7 8 9
var
n: vetor[1..8] de Inteiro
i: inteiro
inicio
para i de 1 ate 8 faca
n[i] <- 999
escreval (n[i])
fimpara
fimalgoritmo
var
n: vetor[1..10] de Inteiro
i: inteiro
inicio
para i de 1 ate 10 faca
n[i] <- 5*(i)
escreval (n[i])
fimpara
fimalgoritmo
57
73) Crie um programa que preencha automaticamente (usando lógica, não apenas atribuindo
diretamente) um vetor numérico com 10 posições, conforme abaixo:
9 8 7 6 5 4 3 2 1 0
0 1 2 3 4 5 6 7 8 9
74) Crie um programa que preencha automaticamente (usando lógica, não apenas atribuindo
diretamente) um vetor numérico com 10 posições, conforme abaixo:
5 3 5 3 5 3 5 3 5 3
0 1 2 3 4 5 6 7 8 9
var
n: vetor[1..10] de Inteiro
i: inteiro
inicio
para i de 1 ate10 faca
n[i] <- i
fimpara
para i de 10 ate 1 passo -1 faca
escreval (n[i])
fimpara
fimalgoritmo
var
n: vetor[0..9] de Inteiro
i: inteiro
inicio
para i de 0 ate 9 faca
se (i%2 =0) entao
n[i] <- 5
senao
n[i] <- 3
fimse
escreval (n[i])
fimpara
fimalgoritmo
58
75) Crie um programa que preencha automaticamente (usando lógica, não apenas atribuindo
diretamente) um vetor numérico com 15 posições com os primeiros
elementos da sequência de Fibonacci:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
var
n: vetor[1..15] de Inteiro
i, anterior, atual, proximo: inteiro
inicio
anterior <- 0
atual <- 1
n[1] <- 1
escreval (n[1])
para i de 1 ate 15 faca
proximo <- atual + anterior
n[i] <- proximo
escreval (n[i])
anterior <- atual
atual <- proximo
fimpara
fimalgoritmo
59
76) Crie um programa que preencha automaticamente um vetor numérico com 7 números
gerados aleatoriamente pelo computador e depois mostre os valores gerados na tela.
var
n: vetor[1..7] de Inteiro
i: inteiro
inicio
para i de 1 ate 7 faca
timer 1
aleatorio 0,100
leia (n[i])
aleatorio off
fimpara
limpatela
para i de 1 ate 7 faca
escreval (n[i])
fimpara
fimalgoritmo
60
77) Faça um programa que leia 7 nomes de pessoas e guarde-os em um vetor. No final, mostre
uma listagem com todos os nomes informados, na ordem inversa daquela em que eles foram
informados.
var
n: vetor[1..7] de Caractere
i: inteiro
inicio
para i de 1 ate 7 faca
escreva ("Digite o",i,"o. nome: ")
leia (n[i])
fimpara
escreval ()
limpatela
para i de 7 ate 1 passo -1 faca
escreval (n[i])
fimpara
fimalgoritmo
61
78) Escreva um programa que leia 15 números e guarde-os em um vetor. No final, mostre o vetor
inteiro na tela e em seguida mostre em que posições foram digitados valores que são múltiplos
de 10.
var
n: vetor[1..15] de inteiro
i, c: inteiro
inicio
para i de 1 ate 15 faca
escreva ("Digite o",i,"o. numero: ")
leia (n[i])
fimpara
escreval ()
para i de 1 ate 15 faca
se (n[i]%10=0) entao
escreval ("O vetor na posicao ",i)
fimse
fimpara
fimalgoritmo
62
79) Desenvolva um programa que leia 10 números inteiros e guarde-os em um vetor. No final,
mostre quais são os números pares que foram digitados e em que posições eles estão
armazenados.
var
n: vetor[1..10] de inteiro
i: inteiro
inicio
para i de 1 ate 10 faca
escreva ("Digite o",i,"o. numero: ")
leia (n[i])
fimpara
escreval ()
para i de 1 ate 10 faca
se (n[i]%2=0) entao
escreval ("O vetor ",n[i]," na posicao ",i)
fimse
fimpara
fimalgoritmo
63
80) Faça um algoritmo que preencha um vetor de 30 posições com números entre 1 e 15
sorteados pelo computador. Depois disso, peça para o usuário digitar um número (chave) e seu
programa deve mostrar em que posições essa chave foi encontrada. Mostre também quantas
vezes a chave foi sorteada.
var
n: vetor[1..30] de Inteiro
i, c, chave: inteiro
inicio
para i de 1 ate 30 faca
timer 1
aleatorio 1,15
leia (n[i])
aleatorio off
fimpara
limpatela
escreva ("Digite o numero chave: ")
leia(chave)
c <- 0
para i de 1 ate 30 faca
se (n[i] = chave) entao
escreval ("Chave na posicao ",i)
c <- c + 1
fimse
fimpara
se (c=0) entao
escreval ("Chave nao encontrada no vetor")
senao
escreva ("Chave encontrada ",c," vezes")
fimse
fimalgoritmo
64
81) Crie um programa que leia a idade de 8 pessoas e guarde-as em um vetor. No final, mostre:
a) Qual é a média de idade das pessoas cadastradas
b) Em quais posições temos pessoas com mais de 25 anos
c) Qual foi a maior idade digitada (podem haver repetições)
d) Em que posições digitamos a maior idade
var
n: vetor[1..8] de Inteiro
i, p, maior: inteiro
soma: real
inicio
para i de 1 ate 8 faca
escreva ("Digite a ",i,"a. idade: ")
leia(n[i])
se (n[i]>maior) entao
maior <- n[i]
p <- i
fimse
soma <- soma + n[i]
fimpara
limpatela
escreval ("A media das idades: ",soma/8)
para i de 1 ate 8 faca
se (n[i] > 25) entao
escreval ("Idade maior que 25 anos na posicao",i)
fimse
fimpara
escreval ("A maior idade digitada foi ",maior, " na posicao ",p)
fimalgoritmo
65
82) Faça um algoritmo que leia a nota de 10 alunos de uma turma e guarde-as em um vetor. No
final, mostre:
a) Qual é a média da turma
b) Quantos alunos estão acima da média da turma
c) Qual foi a maior nota digitada
d) Em que posições a maior nota aparece
var
n: vetor[1..10] de Inteiro
i, p, maior,c: inteiro
soma: real
inicio
para i de 1 ate 10 faca
escreva ("Digite a ",i,"a. nota: ")
leia(n[i])
se (n[i]>maior) entao
maior <- n[i]
p <- i
fimse
soma <- soma + n[i]
fimpara
soma <- soma/10
para i de 1 ate 10 faca
se (n[i] > soma) entao
c <- c +1
fimse
fimpara
limpatela
escreval ("A media da turma: ",soma)
escreval (c, " alunos estao acima da media")
escreval ("A maior nota foi ",maior, " na posicao ",p)
fimalgoritmo
66
83) [DESAFIO] Crie uma lógica que preencha um vetor de 20 posições com números aleatórios
(entre 0 e 99) gerados pelo computador. Logo em seguida, mostre os números gerados e depois
coloque o vetor em ordem crescente, mostrando no final os valores ordenados.
var
n: vetor[1..20] de Inteiro
i, j, aux: inteiro
inicio
para i de 1 ate 20 faca
timer 1
aleatorio 0,100
leia (n[i])
aleatorio off
fimpara
para i de 1 ate 19 faca
para j de i+1 ate 20 faca
se (n[i] > n[j]) entao
aux <- n[i]
n[i] <- n[j]
n[j] <- aux
fimse
fimpara
fimpara
limpatela
para i de 1 ate 20 faca
escreval (n[i])
fimpara
fimalgoritmo
67
84) Crie um programa que leia o nome e a idade de 9 pessoas e guarde esses valores em dois
vetores, em posições relacionadas. No final, mostre uma listagem contendo apenas os dados das
pessoas menores de idade.
var
nome: vetor[1..9] de caractere
idade: vetor[1..9] de inteiro
i: inteiro
inicio
para i de 1 ate 9 faca
escreva ("Digite o nome: ")
leia (nome[i])
escreva ("Digite a idade: ")
leia (idade[i])
escreval ()
fimpara
para i de 1 ate 9 faca
se (idade[i]> 18) entao
escreval (nome[i]:10,idade[i])
fimse
fimpara
fimalgoritmo
68
85) Faça um algoritmo que leia o nome, o sexo e o salário de 5 funcionários e guarde esses dados
em três vetores. No final, mostre uma listagem contendo apenas os dados das funcionárias
mulheres que ganham mais de R$5 mil.
var
nome: vetor[1..5] de caractere
sexo: vetor[1..5] de caractere
salario: vetor[1..5] de real
i: inteiro
inicio
para i de 1 ate 5 faca
escreva ("Digite o nome: ")
leia (nome[i])
escreva ("Digite o sexo [M/F]: ")
leia (sexo[i])
escreva ("Digite o salario: R$")
leia (salario[i])
escreval ()
fimpara
para i de 1 ate 5 faca
se (sexo[i]= "F") entao
se (salario[i] > 5000) entao
escreval (nome[i]:10," Salario R$",salario[i])
fimse
fimse
fimpara
fimalgoritmo
69
PASSO 09 – PROCEDIMENTOS
86) Crie um programa que tenha um procedimento Gerador() que, quando chamado, mostre a
mensagem "Olá, Mundo!" com algum componente visual (linhas) Ex: Ao chamar Gerador()
aparece:
+-------=======------+
Olá, Mundo!
+-------=======------+
var
procedimento olamundo()
inicio
escreval ("+-------=======------+")
escreval (" Olá, Mundo! ")
escreval ("+-------=======------+")
fimprocedimento
inicio
olamundo()
fimalgoritmo
70
87) Crie um programa que melhore o procedimento Gerador() da questão anterior para que
mostre uma mensagem personalizada, passada como parâmetro. Ex: Ao chamarGerador("Aprendendo Portugol") aparece:
+-------=======------+
Aprendendo Portugol
+-------=======------+
var
frase: caractere
procedimento personalizada(x: caractere)
inicio
limpatela
escreval ("+-------=======------+")
escreval (" ",x," ")
escreval ("+-------=======------+")
fimprocedimento
inicio
Escreva ("Digite sua frase personalizada: ")
leia (frase)
personalizada(frase)
fimalgoritmo
71
88) Crie um programa que melhore o procedimento Gerador() da questão anterior para que
mostre uma mensagem vário Ex: Ao chamar Gerador("Aprendendo Portugol", 4) aparece:
+-------=======------+
Aprendendo Portugol
Aprendendo Portugol
Aprendendo Portugol
Aprendendo Portugol
+-------=======------+
var
frase: caractere
n,cont: inteiro
procedimento personalizada(x: caractere; y:inteiro)
inicio
limpatela
cont <- 0
escreval ("+-------=======------+")
repita
escreval (" ",x," ")
cont <- cont +1
ate (cont = y)
escreval ("+-------=======------+")
fimprocedimento
inicio
Escreva ("Digite sua frase personalizada: ")
leia (frase)
Escreva ("Digite a quantidade de vezes: ")
leia (n)
personalizada(frase, n)
fimalgoritmo
72
89) Crie um programa que melhore o procedimento Gerador() da questão anterior para que o
programador possa escolher uma entre três bordas:
+-------=======------+ Borda 1
~~~~~~~~:::::::~~~~~~~ Borda 2
<<<<<<<<------->>>>>>> Borda 3
Ex: Uma chamada válida seria Gerador("Portugol Studio", 3, 2)
~~~~~~~~:::::::~~~~~~~
Portugol Studio
Portugol Studio
Portugol Studio
~~~~~~~~:::::::~~~~~~~
var
frase, borda: caractere
n,cont,num: inteiro
procedimento personalizada(x,y: caractere; z:inteiro)
inicio
limpatela
cont <- 0
escreval (y)
repita
escreval (" ",x," ")
cont <- cont +1
ate (cont = z)
escreval (y)
fimprocedimento
inicio
Escreva ("Digite sua frase personalizada: ")
leia (frase)
Escreva ("Digite a quantidade de vezes: ")
leia (n)
escreval ("Digite o número da borda: ")
escreval ("[1]: +-------=======------+")
escreval ("[2]: ~~~~~~~~:::::::~~~~~~~")
escreval ("[3]: <<<<<<<<------->>>>>>>>")
leia (num)
escolha num
caso (1)
borda <- "+-------=======------+"
caso (2)
borda <- "~~~~~~~~:::::::~~~~~~~"
caso (3)
borda <- "<<<<<<<<------->>>>>>>>"
fimescolha
personalizada(frase, borda, n)
fimalgoritmo
73
90) Desenvolva um algoritmo que leia dois valores pelo teclado e passe esses valores para um
procedimento Somador() que vai calcular e mostrar a soma entre eles.
var
a,b: real
procedimento soma(x,y: real)
inicio
escreval("A soma de ",a," +",b," =",x+y)
fimprocedimento
inicio
escreva ("Digite A: ")
leia (a)
escreva ("Digite B: ")
leia (b)
soma(a, b)
fimalgoritmo
74
91) Desenvolva um algoritmo que leia dois valores pelo teclado e passe esses valores para um
procedimento Maior() que vai verificar qual deles é o maior emostrá-lo na tela. Caso os dois
valores sejam iguais, mostrar uma mensagem informando essa característica.
var
a,b: real
procedimento maior (x,y: real)
inicio
se (x>y) entao
escreval (x, " é maior que ",y)
senao
se(x<y) entao
escreval (y, " é maior que ",x)
senao
escreval("Números iguais")
fimse
fimse
fimprocedimento
inicio
escreva ("Digite A: ")
leia (a)
escreva ("Digite B: ")
leia (b)
maior(a, b)
fimalgoritmo
75
92) Crie uma lógica que leia um número inteiro e passe para um procedimento ParOuImpar() que
vai verificar e mostrar na tela se o valor passado como parâmetro é PAR ou ÍMPAR.
var
a: inteiro
procedimento parouimpar (x: inteiro)
inicio
se (x%2=0) entao
escreval (x, " é par")
senao
escreval (x, " é impar")
fimse
fimprocedimento
inicio
escreva ("Digite A: ")
leia (a)
parouimpar(a)
fimalgoritmo
76
93) Faça um programa que tenha um procedimento chamado Contador() que recebe três valores
como parâmetro: o início, o fim e o incremento de uma contagem. O programa principal deve
solicitar a digitação desses valores e passá-los ao procedimento, que vai mostrar a contagem na
tela. Ex: Para os valores de início (4), fim (20) e incremento(3) teremos Contador(4, 20, 3) vai
mostrar na tela 4 >> 7 >> 10 >> 13 >> 16 >> 19 >> FIM
var
a,b,c: inteiro
procedimento contador(x,y,z: inteiro)
inicio
repita
escreva (x,">> ")
x <- x + z
ate (x=y)
escreval (y,">> FIM!")
fimprocedimento
inicio
escreva ("Digite o valor de ínicio: ")
leia (a)
escreva ("Digite o valor final: ")
leia (b)
escreva ("Digite o incremento: ")
leia (c)
contador(a,b,c)
fimalgoritmo
77
94) [DESAFIO] Desenvolva um aplicativo que tenha um procedimento chamado Fibonacci() que
recebe um único valor inteiro como parâmetro, indicando quantos termos da sequência serão
mostrados na tela. O seu procedimento deve receber esse valor e mostrar a quantidade de
elementos solicitados. Obs: Use os exercícios 70 e 75 para te ajudar na solução Ex:
Fibonacci(5) vai gerar 1 >> 1 >> 2 >> 3 >> 5 >> FIM
Fibonacci(9) vai gerar 1 >> 1 >> 2 >> 3 >> 5 >> 8 >> 13 >> 21 >> 34 >> FIM
var
num: inteiro
procedimento fibonacci(x: inteiro)
var
anterior, atual, proximo, contador: inteiro
inicio
anterior <- 0
atual <- 1
contador <- 2
escreva (anterior,">> ",atual,">> ")
enquanto (contador < x) faca
proximo <- anterior + atual
escreva (proximo,">> ")
anterior <- atual
atual <- proximo
contador <- contador + 1
fimenquanto
escreval ("FIM")
fimprocedimento
inicio
escreva ("Digite a quantidade de numeros (n>2): ")
leia (num)
fibonacci(num)
fimalgoritmo
78
PASSO 10 – FUNÇÕES
95) Refaça o exercício 90, só que agora em forma de função Somador(), que vai receber dois
parâmetros e vai retornar o resultado da soma entre eles para o programa principal.
var
a,b,S: real
funcao soma(x,y: real) :real
inicio
S <- X + Y
retorne S
fimfuncao
inicio
escreva ("Digite A: ")
leia (a)
escreva ("Digite B: ")
leia (b)
S <- soma(a, b)
escreval ("A soma entre ",a," e ",b," é de ",s)
fimalgoritmo
79
96) Crie um programa que tenha uma função Media(), que vai receber as 2 notas de um aluno e
retornar a sua média para o programa principal.
var
n1, n2, mediag: real
funcao media(x,y: real) :real
var
M: real
inicio
M <- (X + Y)/2
retorne M
fimfuncao
inicio
escreva ("Digite nota 1: ")
leia (n1)
escreva ("Digite nota 2: ")
leia (n2)
mediag <- media(n1, n2)
escreval ("A media entre ",n1," e ",n2," é de ",mediag)
fimalgoritmo
80
97) Refaça o exercício 91, só que agora em forma de função Maior(), mas faça uma adaptação
que vai receber TRÊS números como parâmetro e vai retornar qual foi o maior entre eles.
var
a,b,c, M: real
funcao maior(x,y,z: real): real
var
mai: real
inicio
se (x>y) e (x>z) entao
mai <- x
senao
se(y>x) e (y>z) entao
mai <- y
senao
se(z>x) e (z>y) entao
mai <- z
fimse
fimse
fimse
retorne mai
fimfuncao
inicio
escreva ("Digite A: ")
leia (a)
escreva ("Digite B: ")
leia (b)
escreva ("Digite C: ")
leia (c)
M <- maior(a, b, c)
escreval ("O maior número é ",M)
fimalgoritmo
81
98) Crie um programa que tenha uma função SuperSomador(), que vai receber dois números
como parâmetro e depois vai retornar a soma de todos os valores no intervalo entre os valores
recebidos. Ex:
SuperSomador(1, 6) vai somar 1 + 2 + 3 + 4 + 5 + 6 e vai retornar 21
SuperSomador(15, 19) vai somar 15 + 16 + 17 + 18 + 19 e vai retornar 85
var
a, b, total: inteiro
funcao SuperSomador(x,y: real): real
var
s, i,c: real
inicio
s <- 0
c <- 0
para (x<=y) faca
s <- x + s
fimpara
retorne s
fimfuncao
inicio
escreva ("Digite A: ")
leia (a)
escreva ("Digite B: ")
leia (b)
total <- SuperSomador(a,b)
escreval ("O maiornúmero é "total)
fimalgoritmo
82
99) Faça um programa que possua uma função chamada Potencia(), que vai receber dois
parâmetros numéricos (base e expoente) e vai calcular o resultado da exponenciação.
Ex: Potencia(5,2) vai calcular 52 = 25
var
b, p: inteiro
total: real
funcao potencia(x,y: inteiro): real
var
i,num: inteiro
inicio
num <- x
para i de 1 ate y faca
num <- num * x
fimpara
retorne num
fimfuncao
inicio
escreva ("Digite a base: ")
leia (b)
escreva ("Digite a potencia: ")
leia (p)
total <- potencia(b, p)
escreval ("A pontencia entre ",b," e ",p," é ",total)
fimalgoritmo
83
100) Melhore o exercício 96, criando além da função Media() uma outra função
chamada Situacao(), que vai retornar para o programa principal se o aluno está
APROVADO, em RECUPERAÇÃO ou REPROVADO. Essa nova função, vai receber como
parâmetro o resultado retornado pela função Media().
var
n1, n2, mediag: real
s: caractere
funcao media(x,y: real) :real
var
M: real
inicio
M <- (X + Y)/2
retorne M
fimfuncao
funcao situacao(x: real) :caractere
var a: caractere
inicio
se (x>=0) e (x<3) entao
a <- "Reprovado"
senao
se (x>=3) e (x<7) entao
a <- "Recuperacao"
senao
se (x>=7) e (x<=10) entao
a <- "Aprovado"
fimse
fimse
fimse
retorne a
fimfuncao
inicio
escreva ("Digite nota 1: ")
leia (n1)
escreva ("Digite nota 2: ")
leia (n2)
mediag <- media(n1, n2)
s <- situacao(mediag)
escreval ("A media entre ",n1," e ",n2," é de ",mediag, " situacao: ",s)
fimalgoritmo