As estruturas de decisão, também chamadas de estruturas condicionais ou estruturas de seleção, são construções presentes nas linguagens de programação que permitem alterar o fluxo sequencial de execução de um programa com base no resultado de um teste lógico.

Em um programa, as instruções normalmente são executadas de forma sequencial, isto é, uma após a outra, na ordem em que aparecem no código. No entanto, muitas situações exigem que determinadas instruções sejam executadas apenas quando certas condições são satisfeitas. As estruturas de decisão tornam possível implementar esse comportamento.

Em geral, um teste lógico pode resultar em dois caminhos possíveis, dependendo de a condição avaliada ser verdadeira ou falsa.

Considere, por exemplo, a seguinte situação:

Se a idade for maior ou igual a 18 anos, então a pessoa pode obter a carteira de motorista.

Caso contrário, ela ainda não possui idade suficiente para isso.

Esse exemplo pode ser representado da seguinte forma:

Se idade >= 18
    Pode tirar a carteira
Senão
    Não pode tirar a carteira

Nesse caso, temos um teste lógico simples, que possui dois possíveis resultados. Se a condição idade >= 18 for verdadeira, a ação correspondente será executada. Caso contrário, o fluxo do programa seguirá pelo caminho alternativo.

Esse exemplo pode ser refinado considerando mais de uma condição. Por exemplo:

Se idade >= 18 E passou na prova do DETRAN
    Pode tirar a carteira
Senão
    Não pode tirar a carteira

Nesse segundo cenário, ainda existem dois caminhos possíveis, porém a condição de decisão é composta, pois envolve mais de um critério. Para que a ação seja executada, todas as condições especificadas precisam ser verdadeiras.

Em outros contextos, uma decisão pode possuir mais de dois resultados possíveis. Considere o exemplo de um semáforo de trânsito:

Caso a luz do semáforo esteja:

Vermelha → pare o veículo e aguarde
Amarela  → reduza a velocidade e prepare-se para parar
Verde    → siga em frente

Nesse caso, a decisão depende do valor de uma variável que pode assumir diferentes estados (vermelho, amarelo ou verde), e cada valor conduz a um comportamento distinto.

Da mesma forma, nas linguagens de programação existem estruturas que permitem implementar decisões com dois caminhos ou múltiplas alternativas. Na linguagem C, essas decisões são implementadas principalmente por meio das estruturas if, if-else e switch.

Nas próximas seções, serão apresentados os operadores utilizados para construir as condições e as estruturas condicionais disponíveis na linguagem C.

Próxima página:

2. Operadores relacionais e lógicos