• Nenhum resultado encontrado

Bacharelado em Ciência e Tecnologia BC-0505 Processamento da Informação Lista de Exercícios EXTRA Nº 02 Algoritmos Estruturas de Seleção

N/A
N/A
Protected

Academic year: 2021

Share "Bacharelado em Ciência e Tecnologia BC-0505 Processamento da Informação Lista de Exercícios EXTRA Nº 02 Algoritmos Estruturas de Seleção"

Copied!
16
0
0

Texto

(1)

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)

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 { funcaoinicio() { //DECLARAÇÃO DE VARIÁVEIS inteirox //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)

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 { funcaoinicio() { //DECLARAÇÃO DE VARIÁVEIS caracterletra //ENTRADA

escreva("Digite uma letra: ") leia(letra)

//PROCESSAMENTO E SAÍDA

se(letra == 'a' ou letra == 'e' ouletra == 'i'ouletra == 'o'ouletra == 'u'ou letra == 'A'ouletra == 'E'ouletra == 'I' ouletra == 'O' ouletra == 'U'){

escreva("E uma Vogal.\n") }senao{

escreva("Nao é uma vogal.\n") }

} }

(4)

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 { funcaoinicio() { //DECLARAÇÃO DE VARIÁVEIS inteirox, 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)

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 { funcaoinicio() { //DECLARAÇÃO DE VARIÁVEIS inteironumero, 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)

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 { funcaoinicio() { //DECLARAÇÃO DE VARIÁVEIS inteiroano, 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)

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 { funcaoinicio() { //DECLARAÇÃO DE VARIÁVEIS inteiroa, b, c //ENTRADA

escreva("Entre com os tres inteiros a serem ordenados: ") leia(a, b, c)

//PROCESSAMENTO E SAÍDA se(a>b eb>c ea>c){

escreva(c, " < ", b, " < ", a, ".\n") }senaose(a>b eb<c ea>c){

escreva(b, " < ", c, " < ", a, ".\n") }senaose(b>a ea>c eb>c){

escreva(c, " < ", a, " < ", b, ".\n") }senao se(b>a ea<c eb>c){

escreva(a, " < ", c, " < ", b, ".\n") }senao se(c>a e a>b ec>b){

escreva(b, " < ", a, " < ", c, ".\n") }senao (c>a ea<b eb<c){

escreva(a, " < ", b, " < ", c, ".\n") }

} }

(8)

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

(9)

PROGRAMA - PORTUGOL programa

{

inclua biblioteca Matematica --> mat funcaoinicio()

{

//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)} }

(10)

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 caracterconceito //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") }

} }

(11)

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 { funcaoinicio() { //DECLARAÇÃO DE VARIÁVEIS inteiro livros reala, 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.") }

(12)

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?

(13)

PROGRAMA - PORTUGOL programa { funcaoinicio() { //DECLARAÇÃO DE VARIÁVEIS realsalario, 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") }

(14)

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 { funcaoinicio() { //DECLARAÇÃO DE VARIÁVEIS inteirox reala, 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.") }

(15)

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.

(16)

PROGRAMA - PORTUGOL programa

{

inclua biblioteca Matematica --> mat funcaoinicio()

{

//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") }

} }

Referências

Documentos relacionados

A primeira avaliação será realizada pelo enfermeiro, que o encaminhará ao médico após suas condutas iniciais (Deliberação COREN-MG -65/00 - anexo VII, p. As trocas das

Este tipo de configuração permite configurar rapidamente variáveis que pertençam a um mesmo bloco funcional avisamos que este tipo de configuração requer alguma experiência com

Código Descrição Atributo Saldo Anterior D/C Débito Crédito Saldo Final D/C. Este demonstrativo apresenta os dados consolidados da(s)

Se, contrariamente às nossas expectativas, o aparelho apresentar algum dano ou se não cumprir com as exigências de qualidade previstas, solicitamos que nos comunique o mais

DATA: 17/out PERÍODO: MATUTINO ( ) VESPERTINO ( X ) NOTURNO ( ) LOCAL: Bloco XXIB - sala 11. Horário Nº Trabalho Título do trabalho

Almanya'da olduğu gibi, burada da bu terimin hiçbir ayrım gütmeden, modern eğilimleri simgeleyen tüm sanatçılar için geçerli olduğu anlaşılıyor.. SSCB'de ilk halk

A Lista de Fauna Ameaçada de Extinção e os Entraves para a Inclusão de Espécies – o Exemplo dos Peixes Troglóbios Brasileiros.. The List of Endangered Fauna and Impediments

1.1 O presente contrato tem por objeto CONTRATAÇÃO DE PESSOA JURÍDICA PARA LOCAÇÃO DE VEÍCULOS E EQUIPAMENTOS PESADOS, DESTINADOS AOS SERVIÇOS DE MANUTENÇÃO DE