Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
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