Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Rigorosamente falando, há anos múltiplos de quatro que não são bissextos. São aqueles múltiplos de<br />
100 que não são múltiplos de 400. Por ex<strong>em</strong>plo, o ano 2000 foi um ano bissexto, mas o ano de 2100 não<br />
será. Para que o programa detecte estas exceções, a expressão lógica que controla o comando if deve ser<br />
ampliada e talvez seja mais fácil considerar a condição para que um ano não seja bissexto: não deve ser<br />
múltiplo de quatro ou se for múltiplo de 100 não deve ser múltiplo de 400. Observe que agora optamos por<br />
uma expressão lógica que garantisse o fato de que o ano dado não é bissexto.<br />
/* Programa que verifica se um dado ano é bissexto */<br />
#include <br />
main()<br />
{<br />
int Ano;<br />
printf("Digite o ano");<br />
scanf("%d", &Ano);<br />
if ((Ano % 4 != 0) || ((Ano % 100 == 0) && (Ano % 400 != 0)))<br />
printf("%d nao e' bissexto \n", Ano);<br />
else<br />
printf("%d e' bissexto \n", Ano);<br />
}<br />
3. O programa para ordenar os conteúdos de duas variáveis, visto na seção 3.2, é um caso muito<br />
particular da questão mais geral da ordenação de uma relação de números ou de nomes, probl<strong>em</strong>a que t<strong>em</strong><br />
vasta aplicação na vida prática, principalmente na ordenação de uma lista de nomes (este probl<strong>em</strong>a também é<br />
conhecido como classificação). Para a solução geral exist<strong>em</strong> diversos algoritmos com este objetivo. No<br />
capítulo 7 ter<strong>em</strong>os oportunidade de discutir programas baseados <strong>em</strong> alguns destes algoritmos. Por enquanto,<br />
vejamos um programa que ordene três números dados. Além de ex<strong>em</strong>plificar o comando if, o programa<br />
abaixo mostra como se pode (e se deve) utilizar raciocínios anteriores para se escrever programas.<br />
Seja então um programa que receba três números inteiros, armazene-os nas variáveis x, y e z e que ao<br />
final da sua execução deixe os conteúdos de x, de y e de z na ord<strong>em</strong> crescente. Uma ideia b<strong>em</strong> interessante é<br />
armazenar na variável x o menor dos números e <strong>em</strong> seguida ordenar os conteúdos de y e de z, que é<br />
exatamente o probl<strong>em</strong>a de ordenar os conteúdos de duas variáveis, que foi referido acima. Obviamente, para<br />
se executar a primeira ação pretendida (armazenar na variável x o menor dos números) só é necessário se<br />
fazer alguma coisa se o valor de x já não for o menor dos números dados, ou seja, se x > y ou x > z. Nesta<br />
hipótese, o menor deles é y ou z e este menor deve ser permutado com x. T<strong>em</strong>os então o seguinte programa.<br />
/* Programa para ordenar três números dados*/<br />
#include <br />
main()<br />
{<br />
float x, y, z, Aux;<br />
printf("Digite os tres numeros");<br />
scanf("%f %f %f", &x, &y, &z);<br />
printf("Numeros dados: %f , %f , %f \n", x, y, z);<br />
if ((x > y) || (x > z)) /* verifica se x não é o menor */<br />
if (y < z) /* neste caso y é o menor */<br />
{<br />
Aux = x; /* troca os conteúdos de x e de y */<br />
x = y;<br />
y = Aux;<br />
}<br />
else /* neste caso z é o menor */<br />
{<br />
Aux = x; /* troca os conteúdos de x e de z */<br />
x = z;<br />
z = Aux;<br />
}<br />
if (y > z) /* verifica se z e y ainda não estão ordenados */<br />
{<br />
Aux = y; /* troca o conteúdo de y e de z */