01.03.2013 Views

Exercícios Resolvidos Scilab - DECOM-UFOP

Exercícios Resolvidos Scilab - DECOM-UFOP

Exercícios Resolvidos Scilab - DECOM-UFOP

SHOW MORE
SHOW LESS

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);

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!