22.10.2014 Views

Aprendendo a Programar Programando em Linguagem C - FSM

Aprendendo a Programar Programando em Linguagem C - FSM

Aprendendo a Programar Programando em Linguagem C - FSM

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.

S<br />

=<br />

4 . (4 −1)<br />

. (4 − 2) .(4 − 5) = − 24<br />

printf("%d \n", x);<br />

}<br />

O ex<strong>em</strong>plo a seguir, além de pretender motivar o próximo capítulo, ressalta uma observação já feita<br />

anteriormente: um programador só é capaz de escrever um programa que resolva um determinado probl<strong>em</strong>a<br />

se ele souber resolver o tal probl<strong>em</strong>a "na mão", ou seja, com a utilização apenas de lápis e papel. Trata-se de<br />

um programa que calcule a área de um triângulo, dados os comprimentos dos seus lados. Naturalmente, só é<br />

capaz de escrever este programa aquele que conhecer a fórmula abaixo, que dá a área do triângulo cujos<br />

lados têm comprimentos a, b e c:<br />

onde<br />

S =<br />

p. ( p − a).(<br />

p − b).(<br />

p − c)<br />

p =<br />

a + b + c<br />

2<br />

é o s<strong>em</strong>iperímetro do triângulo. Com isto, t<strong>em</strong>os o seguinte programa.<br />

/*Programa que determina a área de um triângulo de lados de comprimentos dados*/<br />

#include <br />

#include <br />

main()<br />

{<br />

float x, y, z, Area, S<strong>em</strong>iPer;<br />

printf("Digite os comprimentos dos lados do triangulo");<br />

scanf("%f %f %f", &x, &y, &z);<br />

S<strong>em</strong>iPer = (x + y + z)/2;<br />

Area = sqrt(S<strong>em</strong>iPer * (S<strong>em</strong>iPer - x) * (S<strong>em</strong>iPer - y) * (S<strong>em</strong>iPer - z));<br />

printf("A area do triangulo de lados %f , %f e %f e' igual a %f \n", x, y, z, Area);<br />

}<br />

Se este programa for executado com entrada 3, 4 e 5 t<strong>em</strong>os S<strong>em</strong>iPer = 6 e<br />

S =<br />

6 .(6 − 3).(6 − 4).(6 − 5) =<br />

e, como era de se esperar, a área do triângulo cujos lados têm comprimento 3, 4 e 5 unidades de<br />

comprimento é igual a 6 unidades de área.<br />

Agora, se este programa fosse executado para entrada 1, 2 e 5 teríamos S<strong>em</strong>iPer = 4,<br />

S = 4.(4<br />

− 1).(4 − 2).(4 − 5) = − 24 e ocorreria erro de execução pois o sist<strong>em</strong>a (como era de se<br />

esperar) não calcula raiz quadrada de número negativo.<br />

O que acontece é que n<strong>em</strong> s<strong>em</strong>pre três números pod<strong>em</strong> ser comprimentos dos lados de um triângulo (a<br />

mat<strong>em</strong>ática prova que isto só acontece se cada um deles for menor do que a soma dos outros dois). Assim, o<br />

comando que calcula a Area só deveria ser executado se os valores digitados para x, y, e z pudess<strong>em</strong> ser<br />

comprimentos dos lados de um triângulo.<br />

36<br />

2.12 Exercícios propostos<br />

1. Avalie cada uma das expressões abaixo.<br />

a) (-(-9) + sqrt((-9)*(-9) - 4*3*6))/(2*3).<br />

b) ((pow(3, 2) == 9) && (acos(0) == 0)) || (4 % 8 == 3).<br />

2. Escreva programas para<br />

a) Converter uma t<strong>em</strong>peratura dada <strong>em</strong> graus Fahrenheit para graus Celsius.<br />

b) Gerar o invertido de um número com três algarismos (ex<strong>em</strong>plo: o invertido de 498 é 894).<br />

c) Somar duas frações ordinárias, fornecendo o resultado <strong>em</strong> forma de fração.<br />

d) Determinar o maior múltiplo de um inteiro dado menor do que ou igual a um outro inteiro dado

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

Saved successfully!

Ooh no, something went wrong!