A maioria das pessoas pensa que codificação envolve algoritmos complexos. Não é. Trata-se principalmente de fazer escolhas simples. Em C, essas escolhas se resumem a uma coisa: expressões booleanas.
Você os viu em instruções if e loops while. Eles são os semáforos do seu programa. Verde vai. Vermelho para.
Veja este exemplo básico.
Ele pede um número. Ele verifica se esse número é menor que zero. Se for, o programa fala. Se não for? Silêncio.
A parte (b <0) é a expressão booleana. C avalia isso. True significa executar a próxima linha. Falso significa ignorá-lo. Simples.
Mas o que acontece quando você precisa de mais nuances?
Tratamento de valores zero e positivos
A única verificação acima deixa uma lacuna. E se o usuário inserir zero? Ou um número inteiro positivo? O programa os ignora.
Aqui está uma estrutura um pouco mais complexa.
Agora você tem lógica para valores negativos, zero e positivos. As seções else if e else capturam os outros casos. Ainda é básico, mas cobre todas as bases.
Condições complexas e armadilhas comuns
A lógica do mundo real raramente permanece simples. Às vezes você precisa que duas condições sejam verdadeiras ao mesmo tempo.
Considere esta linha:
Leia como em inglês. Se x for igual a y E j for maior que k, defina z como 1. Caso contrário, defina q como 10.
Observe os operadores.
C usa == para testar a igualdade. Ele usa um único = para atribuir um valor.
Esta é uma armadilha clássica. Se você escrever if (x = y), não estará verificando se eles são iguais. Você está atribuindo y a x e verificando se o resultado é diferente de zero. Sua lógica quebra. Sempre use iguais duplos para comparações.
O símbolo && representa uma operação booleana AND. Ambos os lados devem ser verdadeiros.
O kit completo de ferramentas do operador booleano
Você não precisa memorizá-los, mas deve saber como são. Eles aparecem em todos os lugares no código C.
- Igualdade :
== - Desigualdade :
!= - Menos que :
< - Maior que :
> - Menor ou igual a :
<= - Maior ou igual a :
>= - E :
&& - OU :
|| - NÃO :
!
Por que isso é importante para usuários comuns
Lógica de loop em C: while, do-while e for estruturas
Você pode usar loops while com a mesma facilidade que instruções if básicas. Considere um exemplo simples:
Este código repete essas duas linhas até que a seja maior ou igual a b. A estrutura é simples. C também oferece uma construção do-while, que garante que o bloco de código seja executado pelo menos uma vez antes de verificar a condição. Aqui está um trecho mostrando uma verificação básica de entrada:
Como o loop for simplifica a iteração
O loop for é essencialmente uma abreviação para um loop while. Se você tiver um código como este:
Você pode compactá-lo em uma única instrução for :
O loop while tem três partes distintas: inicialização (x=1 ), teste (x<10 ) e incremento (x++ ). O loop for os agrupa em uma linha. Mas você não está limitado a variáveis simples. Veja este cenário mais complexo:
Você pode reescrever isso usando um loop for :
Parece confuso. É confuso. Mas funciona. O operador vírgula permite encadear múltiplas instruções nas seções de inicialização e incremento de um loop for. Porém, você não pode colocar uma vírgula na seção de teste.
Muitos programadores C adoram agrupar a lógica em uma única linha. Outros argumentam que isso destrói a legibilidade. Não existe um consenso universal. Você apenas precisa decidir se valoriza a brevidade em vez da clareza.
O perigo de = vs == em expressões booleanas
O sinal de igual duplo == é uma fonte de bugs frequentes em C. Os desenvolvedores geralmente digitam um único sinal de igual = por engano. O compilador aceita ambos, mas o comportamento é drasticamente diferente.
Em C, as expressões booleanas são avaliadas como números inteiros. Zero significa Falso. Qualquer número inteiro diferente de zero significa Verdadeiro. Isso significa que você pode escrever legalmente:
Mas o que acontece se você escrever if (a=b)?
Isto não é uma comparação. É uma tarefa. A instrução if (a=b) atribui o valor de b a a e, em seguida, testa o valor resultante de a quanto à sua veracidade booleana. Se a se tornar zero, a condição será False. Se se tornar qualquer outra coisa, é Verdade.
Sua variável a muda de valor durante esse processo. Isso raramente é o que você deseja quando pretende comparar valores. Embora esse recurso de atribuição condicional possa ser útil em contextos específicos, é uma armadilha para os incautos. Tenha cuidado com seu uso de = e ==. Um erro de digitação muda tudo.



























