Solucao Exercicios Cap9 em Pseudocódigo
Solucao Exercicios Cap9 em Pseudocódigo
Solucao Exercicios Cap9 em Pseudocódigo
9.1 Escreva um programa que receba como entrada um número inteiro e calcula, por meio de uma
função, o módulo (valor absoluto) desse número.
Algoritmo Calcula_Modulo
Algoritmo Conversao_Angulo
Dado:
A sequência de Fibonacci é a seguinte: 1 1 2 3 5 8 13...
Ela inicia-se em 1, repete o 1 no segundo termo e, a partir do terceiro termo, o valor de qualquer
termo é obtido pela soma dos dois termos anteriores. Ou seja, n = (n-1) + (n-2).
Algoritmo Termo_Fibonacci
Algoritmo Calcula_Divisão
//Definição do procedimento
Procedimento imprime_divisao(dividendo,divisor: real)
Var resultado: real
Início
resultado ← dividendo/divisor
Escreva("O resultado da divisão é",resultado)
Fim
// Programa principal
Início
//Entrada de dados
Escreva ("Digite o valor do dividendo:")
Leia (dividendo_dig)
Escreva ("Digite o valor do divisor:")
Leia (divisor_dig)
//Chamada do procedimento
imprime_divisao(dividendo_dig,divisor_dig)
Fim
9.5 Faça um programa que leia o valor do salário atual de um militar e imprima o valor do salário
reajustado. O programa principal deve solicitar ao usuário para digitar o salário do militar e chamar
a função de nome Calcula_Aumento, receber o retorno desta função, imprimir o novo valor do
salário e perguntar se o usuário deseja digitar outro salário ou não. Se o usuário responder que sim,
o ciclo deve se repetir até que o usuário responda que não. Se o usuário digitar um valor diferente
de “sim” ou “não”, o programa deverá apresentar uma mensagem de entrada inválida e solicitar
uma nova entrada, até que o usuário digite uma entrada válida (sim ou não).
A função Calcula_Aumento deve seguir a seguinte regra para calcular o novo salário: se o salário
atual for menor ou igual a R$ 1.000,00, deverá aplicar um aumento de 10%; se for maior que R$
1.000,00 e menor ou igual a R$ 2.000,00, o aumento será de 8%; já se for maior que R$ 2.000,00, o
aumento deverá ser de 5%. Essa função deverá calcular o novo salário e retornar o valor para o
programa principal.
Algoritmo Calcula_Salário
Var
resp: texto
salario_dig, salario_reaj: real
//Definição da função
Função Calcula_Aumento(salario: real): real
Var salario_novo: real
Início
Se salario <= 1000 então
salario_novo ← salario * 1.1
Senão
Se salario >1000 E salario <= 2000 então
salario_novo ← salario * 1.08
Senão
salario_novo ← salario * 1.05
Fimse
Fimse
Retorne salario_novo
Fim
//Programa principal
Início
resp = "sim" //Inicialização da variável de controle
Enquanto resp == "sim" OU resp == "Sim" OU resp == "SIM" faça
Escreva ("Digite o valor do salário:")//Entrada de dados
Leia (salario_dig)
salario_reaj ← Calcula_Aumento(salario_dig)//Chamada da função
Escreva ("O valor do salário reajustado é”,salario_reaj)//Saída de dados
Escreva ("Deseja digitar outro salário?")
Escreva ("Digite sim para continuar ou não para encerrar:")
Leia (resp)
Enquanto resp<>"sim" E resp<>"Sim" E resp<>"SIM" E resp<>"não" E
resp<>Não" E resp<>"NÃO" faça //Validação da escolha
Escreva ("Entrada inválida! Digite sim para continuar ou não para parar:")
Leia (resp)
Fimenquanto
Fimenquanto
Fim
9.6 Modifique o algoritmo do exercício 7.11 da lista de exercícios referente ao capítulo 7
(Condicionais) da apostila de Algoritmos, de modo que o cálculo do valor de delta, o cálculo do
valor das raízes (quando houverem) e a impressão dos resultados, sejam realizadas por meio de sub-
rotinas, que serão chamadas pelo programa principal.
Algoritmo Calcula_Bhaskara
Var delta,raiz1,raiz2,a_dig,b_dig,c_dig: real
//Definição da função que calcula o delta
Função calcula_delta(a, b, c: real): real
Início
Retorne b**2-4*a*c
Fim
//Definição da função que calcula x1
Função calcula_x1(d, a, b: real): real
Início
Retorne (-b+d**(1/2))/(2*a)
Fim
//Definição da função que calcula x2
Função calcula_x2(d, a, b: real): real
Início
Retorne (-b-d**(1/2))/(2*a)
Fim
//Definição do procedimento que calcula e imprime o resultado
Procedimento imprime_resultado(d,a,b:real)
Início
Se d < 0 então
Escreva ("A equação não possui raízes reais!")
Senão
Se d = 0 então
raiz1 ← calcula_x1(d,a,b)
Escreva ("A equação possui uma raiz, cujo valor é",raiz1)
Senão
raiz1 ← calcula_x1(d,a,b)
raiz2 ← calcula_x2(d,a,b)
Escreva ("A equação possui duas raízes, cujos valores são”,raiz1,”e”,raiz2)
Fimse
Fimse
Fim
//Programa principal
Início
//Entrada de dados (índices da equação)
Escreva ("Digite o valor de a: "))
Leia (a_dig)
Escreva ("Digite o valor de b: ")
Leia (b_dig)
Escreva ("Digite o valor de c: ")
Leia (c_dig)
//Chamada da função que calcula o valor de delta
delta = calcula_delta(a_dig,b_dig,c_dig)
//Chamada do procedimento que imprime os resultados
imprime_resultado(delta,a_dig.b_dig)
Fim
9.7 Escrever um programa que receba como entrada dois números inteiros e apresente os seguintes
resultados: maior valor digitado (obtido por uma função chamada Calcula_Maior); resultado da
multiplicação dos dois números digitados (obtido por uma função chamada Multiplica_Numeros);
se cada número digitado é positivo ou negativo (obtido pela função Verifica_Sinal).
Algoritmo Verifica_Numeros
//Programa principal
Início
//Entrada de dados
Escreva ("Digite o primeiro número: "))
Leia (num1)
Escreva ("Digite o segundo número: "))
Leia (num2)
Algoritmo Verifica_letra
Var letra_dig:caractere
//Definição do procedimento
Procedimento verifica (letra: caractere)
Início
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' então
Escreva ("O caractere digitado é vogal.")
Senão
Escreva ("O caractere digitado é consoante.")
Fimse
Fim
//Programa principal
Início
//Entrada de dados
Escreva ("Digite uma letra do alfabeto: ")
Leia (letra_dig)
//Chamada do procedimento
verifica (letra_dig)
Fim
9.9 Escreva um programa que recebe como entrada dois números inteiros positivos e, por meio de
uma função, calcula a soma dos números inteiros existentes entre eles (excluindo eles próprios),
retornando tal valor para o programa principal. O programa deve validar a entrada, ou seja, ficar
apresentando a mensagem de entrada inválida e solicitando um valor correto, até que a entrada seja
válida.
O programa deve tratar os casos em que não existem números entre os valores digitados,
apresentando tal mensagem na tela.
Algoritmo Soma_entre_limites
Var num1,num2,resultado:inteiro
//Definição da função
Função calcula_soma (inferior,superior: inteiro): inteiro
Var soma:inteiro
Início
soma ← 0//Inicialização da variável de soma
Para i de inferior+1 até superior passo 1 faça
soma ← soma + i
Fimpara
Retorne soma
Fim
//Programa principal
Início
Escreva ("Digite o primeiro número: ")
Leia (num1)
Enquanto num1 <= 0 faça//Validação da primeira entrada
Escreva ("Valor inválido! Digite um número inteiro positivo: ")
Leia (num1)
Fimenquanto
Escreva ("Digite o segundo número: ")
Leia (num2)
Enquanto num2 <= 0 faça//Validação da segunda entrada
Escreva ("Valor inválido! Digite um número inteiro positivo: ")
Leia (num2)
Fimenquanto
Se num1 = num2 OU (num1-num2) = 1 OU num2-num1 = 1 então
Escreva ("Não existem números entre os valores digitados!")
Senão
Se num1 < num2 então
resultado ← calcula_soma(num1,num2)//Chamada da função
Senão
resultado ← calcula_soma(num2,num1)//Chamada da função
Fimse
Fimse
//Saída de dados
Escreva ("A soma dos números existentes entre",num1,"e",num2,"é",resultado)
Fim
9.10 Desenvolva um algoritmo que, por meio de sub-rotinas, realiza e apresenta o somatório dos N
primeiros números primos, sendo que o valor de N é digitado pelo usuário. O programa deverá
possuir uma função e um procedimento: a função verifica se determinado número é primo; já o
procedimento, calcula o somatório e imprime o resultado. O programa principal deverá receber o
valor de “N” digitado pelo usuário e invocar o procedimento que realiza e mostra o somatório dos
números primos, que por sua vez chama a função que verifica se determinado número é primo. O
programa não deverá permitir que o usuário digite um valor de “N” menor do que 1, mostrando
repetidamente a mensagem de valor inválido, até que o usuário digite um número inteiro positivo.
Obs.: número primo: números inteiros positivos, diferentes de 1, que possuem apenas dois
divisores: o 1 (um) e ele mesmo.
Algoritmo Somatório_primos
Var n_dig: inteiro
Algoritmo Calcula_Combinação
Var
p,m: inteiro
c: real
//Programa principal
Início
//Entrada de dados
Escreva ("Digite o valor de P: ")
Leia (p)
Enquanto p <= 0 faça//Validação da entrada
Escreva ("Valor inválido! Digite um número inteiro positivo: "))
Leia (p)
Fimenquanto
Escreva ("Digite o valor de M: ")
Leia (m)
Enquanto m <= 0 faça//Validação da entrada
Escreva ("Valor inválido! Digite um número inteiro positivo: "))
Leia (m)
Fimenquanto
//Processamento (chamadas da função)
c ← fatorial(m) / (fatorial(p) * fatorial(m - p))
//Saída de dados
Escreva ("O resultado da combinação de",m,"tomados",p,"a",p,"é",c)
Fim
9.12 Elabore um algoritmo que possua uma função que lê um número positivo do teclado, de modo
similar à função input (nativa do Python). A diferença é que, caso o usuário não forneça um número
inteiro positivo, a função repete a leitura até que um número positivo seja lido. O código da função
pode usar a função input e deverá retornar o número lido.
O programa principal deve chamar a função que lê um número do teclado 3 vezes, para a leitura de
3 números distintos. O programa não deve permitir que o usuário entre com valores iguais. No final,
o programa deverá imprimir os números digitados na ordem decrescente.
Algoritmo Ordem_decrescente
Var num1,num2,num3,maior,medio,menor: inteiro
//Definição da função
Função le_numero(): inteiro
Var numero: inteiro
Início
Escreva ("Digite um número inteiro positivo: ")
Leia (numero)
Enquanto numero <= 0 faça
Escreva ("Valor inválido! Digite um número inteiro positivo: ")
Leia (numero)
Fimenquanto
Retorne numero
Fim
//Programa principal
Início
num1 ← le_numero()
num2 ← le_numero()
Enuanto num2 = num1 faça
Escreva ("Valor deve ser distinto de valores já digitados!”)
num2 = le_numero()
Fimenquanto
num3 ← le_numero()
Enquanto num3 = num1 OU num3 = num2 faça
Escreva ("Valor deve ser distinto de valores já digitados!”)
num3 = le_numero()
Fimenquanto
#Fazendo as comparações
Se num1 > num2 E num1 > num3 então
maior ← num1
Se num2 > num3 então
medio ← num2
menor ← num3
Senão
medio ← num3
menor ← num2
Fimse
Senão
Se (num1 > num2 E num1 < num3) OU (num1 < num2 and num1 > num3) então
medio ← num1
Se num2 > num3 então
maior ← num2
menor ← num3
Senão
maior ← num3
menor ← num2
Fimse
Senão
menor ← num1
Se num2 > num3 então
maior ← num2
medio ← num3
Senão
maior ← num3
medio ← num2
Fimse
Fimse
Fimse
//Imprimindo o resultado
Escreva ("Números em ordem decrescente: ",maior,medio,menor)
Fim