Se senão

From Applied Science
Revision as of 18:35, 20 January 2025 by Wikiadmin (talk | contribs) (Created page with "* '''Um algoritmo que testa se um número é par ou ímpar:''' <source lang="c"> int a; if (a % 2 == 0) printf("O numero %d eh par", a); else printf("O numero %d eh impar", a); </source> Bastante simples, apenas a parte de entrada de um valor pelo usuário foi omitida. É bastante intuitiva a noção de decisão em exemplos como este. * '''Uma variante do algoritmo acima mas com operadores AND e OR e mais ELSE IF:''' <source lang="c"> int a, b, c; if (a % 2...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
  • Um algoritmo que testa se um número é par ou ímpar:
int a;
if (a % 2 == 0) printf("O numero %d eh par", a);
else            printf("O numero %d eh impar", a);

Bastante simples, apenas a parte de entrada de um valor pelo usuário foi omitida. É bastante intuitiva a noção de decisão em exemplos como este.


  • Uma variante do algoritmo acima mas com operadores AND e OR e mais ELSE IF:
int a, b, c;
if (a % 2 == 0 && b % 2 == 0) {
    c = a + b;
    printf("A soma de dois numeros pares sempre resulta num numero par: %d", c); 
}

else if ((a % 2 == 0 && b % 2 != 0) || (a % 2 != 0 && b % 2 == 0)) {
    c = a * b;
    printf("O produto de um numero par com um numero impar sempre resulta num numero par: %d", c); 
}
else {
    c = a * b;
    printf("O produto de um numero impar com um numero impar sempre resulta num numero impar: %d", c); 
}

A decisão 'else if'. O par if - else é literalmente "ou isso ou aquilo". Só há dois caminhos possíveis. Quando desejamos mais do que dois caminhos, então usa-se o else if.

Somente um caso é satisfeito. O primeiro deles que for satisfeito é executado e os demais não. Aí moram alguns erros de lógica. Pois se não prestarmos atenção podemos "sobrepor" casos entre si. Por exemplo: suponha que a primeira condição seja "número par" e a segunda "número maior que zero". Se a entrada do usuário for o número 4, a primeira é satisfeita antes da segunda. A segunda é ignorada.

Todo 'else' deve fazer um par com um 'if', mas um 'if' pode ficar sem um 'else'. Quando duas condicionais são independentes ou mutuamente exclusivas entre si uma série de 'ifs' pode ser colocada sem um 'else' no final. Cuidado! As condicionais não podem se sobrepor, senão dois ou mais casos são executados quando não deveriam.


  • Uma variante do algoritmo acima mas usando IFs encaixados no lugar dos operadores lógicos
int a, b, c;
if (a % 2 == 0) {
    if (b % 2 == 0) {
        c = a + b;
        printf("A soma de dois numeros pares sempre resulta num numero par: %d", c); 
    }
}

else if (b % 2 != 0) {
         c = a * b;
         printf("O produto de um numero impar com um numero impar sempre resulta num numero impar: %d", c); 
}

else {
         c = a * b;
         printf("O produto de um numero impar com um numero par sempre resulta num numero par: %d", c); 
}

Um 'if' subordinado a outro é a mesma coisa que utilizar um 'if com um condicional dupla, com o operador '&&'. Cuidado! Se a entrada for a é par e b é ímpar. No primeiro 'if' a condicional é satisfeita e no 'if' subordinado não. Como não há um 'else' nada acontece. Na execução o 'else if' não será avaliado, pois um 'if' anterior (o 'if' de mesmo nível do 'else if') já foi satisfeito. No caso de "isso || aquilo" não dá pra escrever com 'ifs' encaixados, pois o 'if' interno é subordinado ao 'if' de nível mais alto.