Exercícios Resolvidos Scilab - DECOM-UFOP
Exercícios Resolvidos Scilab - DECOM-UFOP
Exercícios Resolvidos Scilab - DECOM-UFOP
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
BCC701 – Programação de<br />
Computadores I<br />
ALGORITMOS<br />
<strong>Exercícios</strong> resolvidos<br />
Atribuição, condicional e repeIção
Exercício 1<br />
Escreva um algoritmo que leia uma temperatura<br />
em graus cenKgrados e apresente a<br />
temperatura converIda em graus Fahrenheit. A<br />
fórmula de conversão é:<br />
F = ((9 * C) + 160)/5<br />
onde F é a temperatura em Fahrenheit e C é a<br />
temperatura em cenKgrados.
LEIA C<br />
F ç ((9 x C) + 160) / 5<br />
ESCREVA F<br />
Solução
Solução <strong>Scilab</strong><br />
C = input(“Entre com a temperatura celsius:”);<br />
F = (9 * C + 160)/5;<br />
prin`(“A temperatura fahrenheit é %g\n”, F);
Exercício 2<br />
Escreva um algoritmo para calcular e apresentar<br />
o valor do volume de uma lata de óleo,<br />
uIlizando a fórmula<br />
V = 3.14159 * R 2 * h<br />
onde V é o volume, R é o raio e h é a altura.
Solução<br />
LEIA R<br />
LEIA h<br />
SE R > 0 E h > 0<br />
ENTÃO<br />
V ç 3.14159 x R x R x h<br />
ESCREVA V<br />
SENÃO<br />
ESCREVA “Valores inválidos”<br />
FIM_SE
Solução <strong>Scilab</strong><br />
R = input(“Entre com o raio:”);<br />
h = input(“Entre com a altura:”);<br />
if R > 0 & h > 0 then<br />
V = %pi * R^2 * h;<br />
prin`(“O volume = %g\n”, V);<br />
else<br />
prin`(“Valores inválidos!\n”);<br />
end
Exercício 3<br />
Faça um algoritmo que receba o número de<br />
lados de um polígono convexo, calcule<br />
e mostre o número de diagonais (d) desse<br />
polígono, onde n é o numero de lados do<br />
polígono. Sabe-‐se que d = n(n – 3)/2.
Solução<br />
LEIA n<br />
SE n > 2<br />
ENTÃO<br />
d ç n x (n -‐ 3) / 2<br />
ESCREVA d<br />
SENÃO<br />
ESCREVA “Valor inválido”<br />
FIM_SE
Solução <strong>Scilab</strong><br />
n = input(“Entre com o numero de lados:”);<br />
if n > 2 then<br />
else<br />
end<br />
d = n * (n-‐3) / 2;<br />
prin`(“O numero de diagonais é %g\n”, d);<br />
prin`(“Valor inválido\n”);
Exercício 4<br />
Faça um algoritmo que receba um horário<br />
(horas e minutos), calcule e mostre<br />
(a) O horário converIdo em minutos;<br />
(b) O horário converIdo em segundos.
Solução<br />
LEIA h, m<br />
SE h >= 0 E h < 24 E m >= 0 E m < 60<br />
ENTÃO<br />
totalm ç h x 60 + m<br />
totals ç totalm x 60<br />
ESCREVA totalm, totals<br />
SENÃO<br />
ESCREVA “Valores inválidos”<br />
FIM_SE
Solução <strong>Scilab</strong><br />
h = input(“Entre com as horas:”);<br />
m = input(“Entre com os minutos”);<br />
if h >= 0 & h < 24 & m >=0 & m < 60 then<br />
totalm = h * 60 + m;<br />
totals = totalm * 60;<br />
prin`(“Min = %g, seg = %g\n”, totalm, totals);<br />
else<br />
prin`(“Valores inválidos”);<br />
end
Exercício 5<br />
Uma loja de ferragens está com uma promoção na venda de<br />
parafusos, dando descontos crescentes em função do número<br />
de parafusos comprados, conforme a tabela:<br />
Número de parafusos Desconto<br />
1 a 99 0%<br />
100 a 199 10%<br />
200 a 299 20%<br />
Acima de 299 30%<br />
Sabendo que o preço do parafuso é R$0,10, faça um algoritmo<br />
para calcular o valor que um determinado cliente deverá pagar<br />
ao comprar um certo número de parafusos.
LEIA n<br />
SE n > 0<br />
ENTÃO<br />
SE n < 100<br />
ENTÃO<br />
valor ç n x 0.10<br />
SENÃO<br />
SE n < 200<br />
ENTÃO<br />
valor ç n x 0.10 x 0.9<br />
SENÃO<br />
SE n < 300<br />
ENTÃO<br />
valor ç n x 0.10 x 0.8<br />
SENÃO<br />
valor ç n x 0.10 x 0.7<br />
FIM_SE<br />
FIM_SE<br />
FIM_SE<br />
ESCREVA valor<br />
SENÃO<br />
ESCREVA “Valor deve ser posiIvo”<br />
FIM_SE<br />
Solução
n = input(“Entre com o numero de parafusos:”);<br />
if n > 0 then<br />
if n < 100 then<br />
valor = n * 0.1;<br />
else<br />
if n < 200 then<br />
valor = n * 0.1 * 0.9;<br />
else<br />
if n < 300 then<br />
valor = n * 0.1 * 0.8;<br />
else<br />
valor = n * 0.1 * 0.7;<br />
end<br />
end<br />
end<br />
prin`(“Valor a pagar = %g\n”, valor);<br />
else<br />
prin`(“Valor deve ser posiIvo\n”);<br />
end<br />
Solução <strong>Scilab</strong>
Exercício 6<br />
Dados três valores X, Y e Z, verificar se eles podem ser os<br />
comprimentos dos lados de um triângulo e, se forem,<br />
verificar se é um triângulo equilátero, isósceles ou<br />
escaleno. Se eles não formarem um triângulo, escrever<br />
uma mensagem. Veja as regras abaixo:<br />
• comprimento de cada lado de um triângulo é menor<br />
que a soma dos outros dois lados;<br />
• um triângulo equilátero tem os três lados iguais;<br />
• um triângulo isósceles tem o comprimento de dois<br />
lados iguais;<br />
• um triângulo escaleno tem os três lados diferentes.
LEIA x, y, z<br />
SE x > 0 E y > 0 E z > 0<br />
ENTÃO<br />
SE x < y + z E y < x + z E z < x + y<br />
ENTÃO<br />
SE x == y E y == z<br />
ENTÃO<br />
ESCREVA “Triangulo equilatero”<br />
SENÃO<br />
SE x == y OU x == z OU y == z<br />
ENTÃO<br />
ESCREVA “Triangulo isosceles”<br />
SENÃO<br />
ESCREVA “Triangulo escaleno”<br />
FIM_SE<br />
FIM_SE<br />
SENÃO<br />
ESCREVA “Não é um triangulo”<br />
FIM_SE<br />
SENÃO<br />
ESCREVA “Valores devem ser posiIvos”<br />
FIM_SE<br />
Solução
Solução <strong>Scilab</strong><br />
x = input(“Entre com o primeiro lado:”);<br />
y = input(“Entre com o segundo lado:”);<br />
z = input(“Entre com o terceiro lado:”);<br />
if x > 0 & y > 0 & z > 0 then<br />
if x < y + z & y < x + z & z < x + y then<br />
if x == y & y == z then<br />
prin`(“Triangulo equilatero\n”);<br />
else<br />
if x == y | y == z | x == z then<br />
prin`(“Triangulo isosceles\n”);<br />
else<br />
prin`(“Triangulo escaleno\n”);<br />
end<br />
end<br />
else<br />
prin`(“Nao é um triangulo\n”);<br />
end<br />
else<br />
prin`(“Valores devem ser posiIvos\n”);<br />
end
Exercício 7<br />
Em uma cidade do interior, sabe-‐se que de janeiro a abril<br />
de 1990 (121 dias) não ocorreu temperatura inferior a 15<br />
graus cenKgrados nem superior a 40 graus cenKgrados.<br />
Fornecendo-‐se as temperaturas verificadas em cada dia,<br />
faça um algoritmo que calcule e apresente:<br />
• A menor temperatura ocorrida<br />
• A maior temperatura ocorrida<br />
• A temperatura média
menor ç 40<br />
maior ç 15<br />
soma ç 0<br />
contador ç 0<br />
REPITA<br />
REPITA<br />
LEIA temp<br />
ATÉ temp > 14 E temp < 41<br />
contador ç contador + 1<br />
soma ç soma + temp<br />
SE temp < menor<br />
ENTÃO<br />
menor ç temp<br />
FIM_SE<br />
SE temp > maior<br />
ENTÃO<br />
FIM_SE<br />
ATÉ contador == 121<br />
maior ç temp<br />
media ç soma/contador<br />
ESCREVA menor, maior, media<br />
Solução (repita…até)
Solução <strong>Scilab</strong><br />
• Comando REPITA…ATÉ não está disponível no<br />
<strong>Scilab</strong>
menor ç 40<br />
maior ç 15<br />
soma ç 0<br />
PARA i ç 1 ATÉ 121<br />
FIM_PARA<br />
LEIA temp<br />
Solução (para…fim_para)<br />
ENQUANTO temp < 15 | temp > 40<br />
LEIA temp<br />
FIM_ENQUANTO<br />
soma ç soma + temp<br />
SE temp < menor<br />
ENTÃO<br />
menor ç temp<br />
FIM_SE<br />
SE temp > maior<br />
ENTÃO<br />
FIM_SE<br />
media ç soma/121<br />
maior ç temp<br />
ESCREVA menor, maior, media
Solução <strong>Scilab</strong><br />
menor = 40;<br />
maior = 15;<br />
soma = 0;<br />
for i = 1:121<br />
temp = input(“Entre com a temperatura:”);<br />
while temp < 15 | temp > 40<br />
temp = input(“Entre com a temperatura:”);<br />
end<br />
soma = soma + temp;<br />
if temp < menor then<br />
menor = temp;<br />
end<br />
if temp > maior then<br />
maior = temp;<br />
end<br />
end<br />
media = soma/121<br />
prin`(“Menor temperatura: %g, maior temperatura: %g, media: %g\n”, menor, maior, media);
Solução (enquanto…fim_enquanto)<br />
menor ç 40<br />
maior ç 15<br />
soma ç 0<br />
contador ç 0<br />
ENQUANTO contador < 121<br />
LEIA temp<br />
ENQUANTO temp < 15 | temp > 40<br />
LEIA temp<br />
FIM_ENQUANTO<br />
contador ç contador + 1<br />
soma ç soma + temp<br />
SE temp < menor<br />
ENTÃO<br />
FIM_SE<br />
menor ç temp<br />
SE temp > maior<br />
ENTÃO<br />
FIM_SE<br />
FIM_ENQUANTO<br />
media ç soma/121<br />
maior ç temp<br />
ESCREVA menor, maior, media
menor = 40;<br />
maior = 15;<br />
soma = 0;<br />
contador = 0;<br />
while contador < 121<br />
temp = input(“Entre com a temperatura:”);<br />
while temp < 15 | temp > 40<br />
temp = input(“Entre com a temperatura:”);<br />
end<br />
contador = contador + 1;<br />
soma = soma + temp;<br />
Solução <strong>Scilab</strong><br />
if temp < menor then<br />
menor = temp;<br />
end<br />
if temp > maior then<br />
maior = temp;<br />
end<br />
end<br />
media = soma/121<br />
prin`(“Menor temperatura: %g, maior temperatura: %g, media: %g\n”, menor, maior, media);