Buscar

100 Exercícios de Algoritmos Guanabara - RESOLVIDOS

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 83 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 83 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 83 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

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

Outros materiais