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

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 */

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

Saved successfully!

Ooh no, something went wrong!