Você está na página 1de 16

Bacharelado em Ciência e Tecnologia

BC-0505 Processamento da Informação


Lista de Exercícios EXTRA Nº 02
Algoritmos – Estruturas de Seleção

ATENÇÃO- Para cada um dos exercícios abaixo, antes de escrever o algoritmo,


identifique ENTRADA, PROCESSAMENTO e SAÍDA, utilizando a seguinte técnica de
interpretação de enunciado:

1. Escreva um programa que informe ao usuário se deve ou não levar uma blusa consigo.
Sabe-se que a blusa é indicada se a temperatura em graus celsius estiver abaixo de 20
graus.

 SAÍDA: Quais os resultados que o algoritmo dever fornecer ?


Mensagem indicando se o usuário deve ou não levar uma blusa consigo
 ENTRADA: Quais os insumos necessários para se obter a saída?
Um número real (temperatura)
 PROCESSAMENTO: Como transformar os insumos na saída?
Verificar, por comparação, se a temperatura informada condiciona levar ou não a blusa

 PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
//DECLARAÇÃO DE VARIÁVEIS
real temp
//ENTRADA
escreva("Digite a temperatura atual: ")
leia(temp)
//PROCESSAMENTO E SAÍDA
se (temp<20){ //Verifica a temperatura e indica a mensagem ao usuário
escreva("Você deve levar uma blusa consigo.\n")
}senao{
escreva("Você não precisa levar uma blusa consigo.\n")
}
}
}
2. Escreva um programa que solicite ao usuário um valor inteiro e exibe uma mensagem
informando se o número é par ou ímpar. Exiba:
 Caso verdadeiro: ―O número é par‖
 Caso falso: ―O número é ímpar‖

 SAÍDA: Quais os resultados que o algoritmo dever fornecer ?


Mensagem dizendo se o número informado é par ou ímpar.
 ENTRADA: Quais os insumos necessários para se obter a saída?
Um número inteiro
 PROCESSAMENTO: Como transformar os insumos na saída?
Número par: x % 2 = 0
Número ímpar: x % 2 != 0
 PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
//DECLARAÇÃO DE VARIÁVEIS
inteiro x
//ENTRADA
escreva ("Favor digitar um número inteiro: ")
leia (x)
//PROCESSAMENTO E SAÍDA
se (x % 2 == 0) //Verifica se o número é par ou impar.
escreva ("O número " + x + " é par.")
senao
escreva ("O número " + x + " é ímpar.")
}
}
3. Escreva um programa que solicite ao usuário uma letra e verifique se ela é uma vogal ou
não exibindo uma mensagem correspondente. Exiba:
 Caso verdadeiro: ―É uma vogal‖
 Caso falso: ―Não é uma vogal‖

 SAÍDA: Quais os resultados que o algoritmo dever fornecer ?


Mensagem indicando se a letra é ou não uma vogal
 ENTRADA: Quais os insumos necessários para se obter a saída?
Um caractere
 PROCESSAMENTO: Como transformar os insumos na saída?
Comparar o caractere informado com todas as vogais minúsculas e maiúsculas do alfabeto

 PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
//DECLARAÇÃO DE VARIÁVEIS
caracter letra
//ENTRADA
escreva("Digite uma letra: ")
leia(letra)
//PROCESSAMENTO E SAÍDA
se(letra == 'a' ou letra == 'e' ou letra == 'i' ou letra == 'o' ou letra == 'u' ou
letra == 'A' ou letra == 'E' ou letra == 'I' ou letra == 'O' ou letra == 'U'){
escreva("E uma Vogal.\n")
}senao{
escreva("Nao é uma vogal.\n")
}

}
}
4. Escreva um programa que exiba o maior dentre dois números reais digitados pelo usuário,
na forma ―numero tal‖ é maior que ―numero tal‖. Caso eles sejam iguais deve-se exibir a
mensagem na forma: numero tal‖ é igual ao ―numero tal‖
 SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Mensagem informando qual o maior número digitado
 ENTRADA: Quais os insumos necessários para se obter a saída?
Dois números reais
PROCESSAMENTO: Como transformar os insumos na saída?
Se x > y: x é o maior
Se x < y: y é o maior
Se x == y: eles são iguais
 PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
//DECLARAÇÃO DE VARIÁVEIS
inteiro x, y
//ENTRADA
escreva ("Favor digitar o primeiro número real: ")
leia (x)
escreva ("Favor digitar o segundo número real: ")
leia (y)
//PROCESSAMENTO E SAÍDA
se (x == y)
escreva ("O número " + x + " é igual ao número " + y)
senao se (x > y)
escreva ("O número " + x + " é maior do que o número " + y)
senao
escreva ("O número " + y + " é maior do que o número " + x)
}
}
5. Escreva um programa que exiba na tela o triplo de um número inteiro informado pelo
usuário. Caso o número informado pelo usuário seja negativo, o mesmo deve ser
transformado no seu equivalente positivo antes da exibição do seu triplo.
 SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
O valor do triplo de um número
 ENTRADA: Quais os insumos necessários para se obter a saída?
Um número inteiro
 PROCESSAMENTO: Como transformar os insumos na saída?
Obter o módulo do número informado e multiplicá-lo por três

 PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
//DECLARAÇÃO DE VARIÁVEIS
inteiro numero, triplo
//ENTRADA
escreva("Digite um numero: ")
leia(numero)
//PROCESSAMENTO E SAÍDA
se (numero < 0){
numero = numero * ( - 1)
triplo = 3 * numero
}senao{
triplo = 3 * numero
}
escreva("O triplo do numero digitado é ", triplo, ".\n")
}
}
6. Escreva um programa que calcule a idade de uma pessoa a partir do seu ano de nascimento.
O programa deve mostrar na tela a idade e também as seguintes mensagens, quando for o
caso:
 Já pode votar (se tiver 16 anos ou mais);
 Já pode solicitar a Carteira de Habilitação (se tiver 18 anos ou mais).

 SAÍDA: Quais os resultados que o algoritmo dever fornecer ?


Idade da pessoa
Se já pode votar
Se já pode solicitar a Carteira de Habilitação
 ENTRADA: Quais os insumos necessários para se obter a saída?
Ano de nascimento
 PROCESSAMENTO: Como transformar os insumos na saída?
Idade = 2015 - anoDeNascimento
Se Idade > 16: já pode votar
Se Idade > 18: já pode solicitar Carteira de Habilitação
 PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
//DECLARAÇÃO DE VARIÁVEIS
inteiro ano, idade
//ENTRADA
escreva ("Favor digitar o seu ano de nascimento: ")
leia (ano)
//PROCESSAMENTO E SAÍDA
idade = 2015 - ano
escreva ("Você tem " + idade + " anos de idade.")
se (idade >= 18){
escreva ("\nJá pode votar.")
escreva ("\nJá pode solicitar a Carteira de Habilitação.")}
senao se (idade >= 16)
escreva ("\nJá pode votar.")

}
}
7. Escreva um algoritmo que leia três números inteiros e imprima-os em ordem crescente.
Efetue pelo menos 3 testes do seu algoritmo com entradas de dados distintas. Analise os
resultados do seu algoritmo.

 SAÍDA: Quais os resultados que o algoritmo dever fornecer ?


Impressão dos valores na ordem crescente
 ENTRADA: Quais os insumos necessários para se obter a saída?
Três números inteiros
 PROCESSAMENTO: Como transformar os insumos na saída?
Há diversas alternativas para este processamento, um deles bem trabalhoso e não muito
enxuto, porém bem direto, é associar cada ordenação possível com uma impressão e
comparar com os dados de entrada, uma sugestão para melhorar essa ideia é encadear todas
as opções.

 PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
//DECLARAÇÃO DE VARIÁVEIS
inteiro a, b, c
//ENTRADA
escreva("Entre com os tres inteiros a serem ordenados: ")
leia(a, b, c)
//PROCESSAMENTO E SAÍDA
se(a>b e b>c e a>c){
escreva(c, " < ", b, " < ", a, ".\n")
}senao se(a>b e b<c e a>c){
escreva(b, " < ", c, " < ", a, ".\n")
}senao se(b>a e a>c e b>c){
escreva(c, " < ", a, " < ", b, ".\n")
}senao se(b>a e a<c e b>c){
escreva(a, " < ", c, " < ", b, ".\n")
}senao se(c>a e a>b e c>b){
escreva(b, " < ", a, " < ", c, ".\n")
}senao (c>a e a<b e b<c){
escreva(a, " < ", b, " < ", c, ".\n")
}
}
}
8. Escreva um algoritmo que peça como entrada os coeficientes a, b e c de uma equação de
2.o grau e forneça como saída as suas raízes. Lembre-se de prever os seguintes casos:
I. a = 0 : Equação de 1.o grau, calcule a única raiz diretamente
II. Δ = 0 : Calcule a única raiz pela fórmula de Baskara
III. Δ < 0 : Calcule as 2 raízes complexas pela fórmula de Baskara
IV. Δ > 0 : Calcule as 2 raízes reais pela fórmula de Baskara

A formula de
Baskara = Δ = b2 – 4ac

Exemplo: a = 1 , b = -5, c = 6 raiz1 = 2 e raiz2 = 3

ATENÇÃO:

 No PORTUGOL STUDIO existe uma função para calculo de RAIZ QUADRADA: a


função chama-se raiz. A instrução a seguir calcula a raiz quadrada do valor x e armazena
em y. Por exemplo, se x = 5, y será 25. Exemplo: y = raiz(x,2.0)

 Uma outra função útil é a que calcula POTÊNCIA: a função chama-se potencia. A
instrução a seguir calcula a potência do valor x elevado a y e armazena em z. Por exemplo,
se x = 3 e y = 4, z será 81. Exemplo: z = potencia(x,y)

No Portugol Studio essas funções estão dentro da Biblioteca Matemática. Assim para chama-las
você deve:
a) Incluir a biblioteca, utilizando a instrução abaixo ANTES da função início( )
inclua biblioteca Matematica -->mat

obs: Usar -->mat equivale a dar um “apelido” mais curto para a biblioteca
Matemática

b) As chamadas às funções devem ser feitas utilizando mat ou Matematica


Exemplo: y = mat.raiz(x, 2.0)
z = mat.potencia(x,y)
 SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
As raízes da equação
 ENTRADA: Quais os insumos necessários para se obter a saída?
Os coeficientes A, B e C da equação
 PROCESSAMENTO: Como transformar os insumos na saída?
Fórmula de Baskara contida no enunciado
 PROGRAMA - PORTUGOL
programa
{
inclua biblioteca Matematica --> mat
funcao inicio()
{
//DECLARAÇÃO DE VARIÁVEIS
real a, b, c, delta, raiz1, raiz2, parteReal
//ENTRADA
escreva ("Favor digitar o valor do coeficiente A: ")
leia (a)
escreva ("Favor digitar o valor do coeficiente B: ")
leia (b)
escreva ("Favor digitar o valor do coeficiente C: ")
leia (c)
//PROCESSAMENTO E SAÍDA
delta = mat.potencia (b,2.0) - (4*a*c)
se (a == 0){
raiz1 = -c/b
escreva ("A raíz da equação é " + raiz1)}
senao se (delta == 0){
raiz1 = -b/(2*a)
escreva ("A raíz da equação é " + raiz1)}
senao se (delta < 0){
parteReal = -b/(2*a)
raiz1 = (mat.raiz(-1*delta,2.0))/(2*a)
escreva ("As raízes da equação são: " + parteReal + " + " + raiz1 +
"i e " + parteReal + " - " + raiz1 + "i.")}
senao{
raiz1 = (-b + mat.raiz(delta,2.0))/(2*a)
raiz2 = (-b - mat.raiz(delta,2.0))/(2*a)
escreva ("As raízes da equação são : " + raiz1 + " e " + raiz2)}
}
}
9. Escreva um algoritmo que peça como entrada o conceito final de um aluno em uma
disciplina cursada na UFABC e imprima a mensagem correta, conforme tabela abaixo:

CONCEITO FINAL SITUAÇÃO


A Desempenho excepcional
B Bom desempenho
C Desempenho adequado
D Aproveitamento mínimo
F Reprovado
O Reprovado por falta
I Incompleto

 SAÍDA: Quais os resultados que o algoritmo dever fornecer ?


Mensagem indicando a situação correspondente ao conceito final
 ENTRADA: Quais os insumos necessários para se obter a saída?
Um caractere maiúsculo indicando o conceito
 PROCESSAMENTO: Como transformar os insumos na saída?
Basta associar cada conceito à sua respectiva impressão e comparar a entrada com cada caso
deste.

 PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
//DECLARAÇÃO DE VARIÁVEIS
caracter conceito
//ENTRADA
escreva("Entre com o conceito final: ")
leia(conceito)
//PROCESSAMENTO E SAÍDA
se(conceito == 'A'){
escreva("Desempenho excepcional.\n")
}senao se(conceito == 'B'){
escreva("Bom desempenho.\n")
}senao se(conceito == 'C'){
escreva("Desempenho adequado.\n")
}senao se(conceito == 'D'){
escreva("Aproveitamento mínimo.\n")
}senao se(conceito == 'F'){
escreva("Reprovado.\n")
}senao se(conceito == 'O'){
escreva("Reprovado por falta.\n")
}senao se (conceito == 'I'){
escreva("Incompleto.\n")
}
}
}
10. Uma livraria está fazendo uma promoção para pagamento à vista em que o comprador pode
escolher entre dois critérios de desconto:
 Critério A: R$ 0,25 por livro + R$ 7,50 fixo
 Critério B: R$ 0,50 por livro + R$ 2,50 fixo

Escreva um algoritmo em que o usuário digite a quantidade de livros que deseja comprar e
programa diga qual é a melhor opção de desconto.
 SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Qual o critério de promoção mais vantajoso
 ENTRADA: Quais os insumos necessários para se obter a saída?
Quantidade de livros desejados
 PROCESSAMENTO: Como transformar os insumos na saída?
Critério A: 0.25*livros + 7.5
Critério B: 0.5*livros + 2.5

 PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
//DECLARAÇÃO DE VARIÁVEIS
inteiro livros
real a, b

//ENTRADA
escreva ("Favor digitar a quantidade de livros desejada: ")
leia (livros)

//PROCESSAMENTO E SAÍDA
a = 0.25*livros + 7.5
b = 0.5*livros + 2.5

escreva ("De acordo com o critério A, o cliente terá um desconto de " + a + "
reais.")
escreva ("\nDe acordo com o critério B, o cliente terá um desconto de " + b + "
reais.")

se (a > b)
escreva ("\nNeste caso, é mais vantajoso comprar pelo critério A.")
senao se (b > a)
escreva ("\nNeste caso, é mais vantajoso comprar pelo critério B.")
senao
escreva ("\nNeste caso, ambos critérios resultam no mesmo preço.")
}
}
11. O imposto de renda MENSAL de uma pessoa física (IR) é calculado com base na sua renda
mensal. Escreva um algoritmo para calcular e imprimir o IR MENSAL e o IR ANUAL de
uma pessoa considerando a seguinte tabela e supondo que sua renda mensal (salário) é a
mesma durante os 12 meses.
Base de cálculo mensal em R$ Alíquota % Parcela a deduzir do imposto em R$
Até 1.499,15 - -
De 1.499,16 até 2.246,75 7,5 112,43
De 2.246,76 até 2.995,70 15,0 280,94
De 2.995,71 até 3.743,19 22,5 505,62
Acima de 3.743,19 27,5

Exemplo de Cálculo:

Se uma pessoa ganha 3500,00 por mês, com base na tabela acima, deve-se aplicar a alíquota
(taxa) de 22,5% de imposto de renda e deduzir o valor de 505.62.

Assim 3500 x 22.5 /100 = 785,50. Deduzindo-se os 505,62 o valor do imposto mensal será de
281.88.

Para verificar se o seu programa está correto, efetue os dois testes que seguem:

TESTE 1:
Entrada: salário mensal = 3500.00
Saída Esperada: IR Mensal = 281.88 IR Anual = 3382.56

TESTE 2:
Entrada: salário mensal = 4000.00
Saída Esperada: IR Mensal = 1100.00 IR Anual = 13200.00

 SAÍDA: Quais os resultados que o algoritmo dever fornecer ?


Mensagem contendo valor do imposto de renda mensal e anual
 ENTRADA: Quais os insumos necessários para se obter a saída?
Variável real representando o salário mensal
 PROCESSAMENTO: Como transformar os insumos na saída?
Basta identificar a que faixa corresponde o salário mensal com a tabela do IR.
 PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
//DECLARAÇÃO DE VARIÁVEIS
real salario, imposto
//ENTRADA
escreva("Digite o valor do salario: ")
leia(salario)
//PROCESSAMENTO E SAÍDA
se(salario<=1499.15){
imposto=0.00
}senao se(salario <= 2246.75){
imposto = (salario * 0.075 - 112.43)
}senao se(salario <= 2995.70){
imposto = (salario * 0.15 - 280.94)
}senao se(salario <= 3743.19){
imposto = (salario * 0.225 - 505.62)
}senao{
imposto = salario * 0.275
}
escreva("O valor do imposto de renda mensal será de R$ ", imposto, ".\n")
escreva("O valor do imposto de renda anual será de R$ ", 12 * imposto, ".\n")
}
}
12. Escreva um programa que exiba uma mensagem indicando se um número inteiro
informado pelo usuário é positivo, negativo ou nulo, de acordo com as seguintes condições:
 Caso seja maior que zero, exibir: Número ―tal‖ é positivo‖;
 Caso seja menor que zero, exibir: Número ―tal‖ é negativo‖;
 Caso seja igual a zero, exibir: Número ―tal‖ é nulo‖.

 SAÍDA: Quais os resultados que o algoritmo dever fornecer ?


Mensagem dizendo se o número informado é positivo, negativo ou nulo

 ENTRADA: Quais os insumos necessários para se obter a saída?


Um número inteiro
 PROCESSAMENTO: Como transformar os insumos na saída?
Número positivo: x > 0
Número negativo: x < 0
Número nulo: x = 0
 PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
//DECLARAÇÃO DE VARIÁVEIS
inteiro x
real a, b
//ENTRADA
escreva ("Favor digitar um número inteiro: ")
leia (x)
//PROCESSAMENTO E SAÍDA
se (x > 0)
escreva ("\nO número " + x + " é positivo.")
senao se (x < 0)
escreva ("\nO número " + x + " é negativo.")
senao
escreva ("\nO número " + x + " é nulo.")
}
}
13. Escreva um algoritmo que peça como entrada o peso (em kilogramas) e a altura (em
metros) da pessoa e calcule e exiba o seu IMC – Índice de Massa Corpórea.
Adicionalmente, o programa deve emitir as mensagens correspondentes conforme a tabela
a seguir:

Cálculo IMC Situação


Abaixo de 18.5 Você está abaixo do peso ideal
Entre 18.5 e 24.9 Parabéns — você está em seu peso normal!
Entre 25.0 e 29.9 Você está acima de seu peso (sobrepeso)
Entre 30.0 e 34.9 Obesidade grau I
Entre 35.0 e 39.9 Obesidade grau II
40.0 e acima Obesidade grau III

O IMC é calculado da seguinte forma: divide-se o peso (quilogramas) pela altura ao quadrado
(em metros).

Exemplo1: peso = 65, altura = 1.67  IMC = 65 / (1.67 * 1.67) = 23.30


Exemplo2: peso = 85, altura = 1.60  IMC = 85 / (1.60 * 1.60) = 33.20

OBS. É OBRIGATÓRIO O USO DE SELEÇÃO ENCADEADA.

Para verificar se o seu programa está correto, efetue os dois testes que seguem:

TESTE 1:
Entrada: peso=65 altura = 1.67
Saída Esperada: IMC = 23.31 - Parabéns — você está em seu peso normal!
TESTE 2:
Entrada: peso=85 altura = 1.60
Saída Esperada: IMC = 33.20 - Obesidade grau I
 SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Um mensagem contendo o IMC e a situação correspondente ao valor
 ENTRADA: Quais os insumos necessários para se obter a saída?
Duas variáveis reais: peso e altura
 PROCESSAMENTO: Como transformar os insumos na saída?
Basta utilizar a expressão presente nos exemplos 1 e 2 acima. Depois, é necessário
comparar o valor de IMC obtido com cada caso das condições da tabela Cálculo IMC x
Situação. Ao fim, é feita a impressão do IMC acompanhado à situação.
 PROGRAMA - PORTUGOL
programa
{
inclua biblioteca Matematica --> mat
funcao inicio()
{
//DECLARAÇÃO DE VARIÁVEIS
real peso, altura, IMC
//ENTRADA
escreva("Entre com o peso em kilogramas: ")
leia(peso)
escreva("Entre com a altura em metros: ")
leia(altura)
//PROCESSAMENTO E SAÍDA
IMC = (peso)/((altura) * (altura))
escreva(mat.arredondar(IMC, 2))
se(IMC<18.5){
escreva(" - Voce esta abaixo do peso ideal.\n")
}senao se(IMC < 25.0){
escreva(" - Parabens - voce esta em seu peso normal!\n")
}senao se(IMC < 30.0){
escreva(" - Voce esta acima de seu peso (sobrepeso).\n")
}senao se(IMC < 35.0){
escreva(" - Obesidade grau I.\n")
}senao se(IMC < 40.0){
escreva(" - Obesidade grau II.\n")
}senao{
escreva(" - Obesidade grau III.\n")
}
}
}

Você também pode gostar