Introdução à Ciência da Computação - Fábio Mokarzel - Elsevier 2008

Page 120

Comandos de Decisão

111

Para o Exemplo 4.3, se A for igual a 0, isso significa que a equação não é de grau 2, sendo impressa a palavra Nao . Na seqüência é impresso: eh de duas . Se A for diferente de 0, o comando printf( nao ); não é executado, e a impressão será somente de eh de duas . No mesmo exemplo, pode-se notar que a condição sendo testada no If daquele programa é !A. Caso A seja 0, !A assume o valor 1 e tem-se que a condição é TRUE. No Exercício 4.1 há uma discussão sobre este tópico. Nos exemplos apresentados, deve-se notar que a indentação o uso de espaços em branco é da mais extrema importância para tornar o programa claro de ser entendido. Como prática de programação, não se deve escrever o comando If-Else em somente uma única linha, apesar de não ser errado. Foi comentado anteriormente que o comando If-Else pode induzir a ambigüidades. Isso é decorrência do fato de se ter If com e sem Else; considere o exemplo a seguir. Exemplo 4.4: Faça um programa em C para testar se um dado número inteiro é não-negativo, divisível por 5 e se o mesmo termina em 5. No primeiro momento, mostra-se um programa incorreto que tem um tipo de erro muito comum de ser feito quando da indentação incorreta aliado ao uso de comandos If com e sem Else.

Para o caso, se n for igual a 15 tem-se a mensagem Eh múltiplo de 5 e termina em 5 , mas se n for igual a 10 a mensagem será Não eh múltiplo de 5 ou eh menor que 0 , o que claramente é um erro. #include <stdio.h> main(){ int n; printf( \n\n\t\tn = ,&n); scanf( %d ,&n); if(n>=0&&n%5==0) if(n%2!=0) printf( \n\t\tEh multiplo de 5 e termina em 5\n\n ); else printf( \n\t\tNao eh multiplo de 5 ou eh menor que 0\n\n );

ERRADO!

} Figura 4.15 Divisibilidade por 5 (programa com erro)

Para contornar esse tipo de ambigüidade gerada por ifs aninhados e pela possibilidade de não se terem elses associados a ifs, os criadores da linguagem C estabeleceram que um else se refere sempre ao primeiro if que não o tenha. Note que o compilador não associa a indentação usada no comando. Isso porque a indentação é usada somente para tornar o programa mais legível. Para o caso da Figura 4.15, o comando printf( \n\t\t Nao eh multiplo de 5 ou eh menor que 0\n\n ) refere-se ao else e é executado caso o número seja um número maior ou igual a 0, múltiplo de 5 e par.


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.