Ir para o conteúdo

CCT-UFCA/Ciência da Computação/Introdução à Programação/Estrutura Condicional

De Wikiversidade

Estrutura Condicional

[editar | editar código]

O que são Estruturas Condicionais?

[editar | editar código]

Estruturas condicionais são recursos que permitem ao programa tomar decisões durante sua execução, direcionando-o por caminhos diferentes conforme o resultado de expressões lógicas. Elas são essenciais para que algoritmos se adaptem a situações variadas, pois nem sempre uma única sequência de passos serve a todos os casos. Em essência, o programa “pergunta” algo, avalia uma condição que pode ser verdadeira (valor diferente de zero) ou falsa (valor igual a zero), e, com base nisso, executa ou ignora um bloco de comandos.

Condicional Simples - if

[editar | editar código]

Executa um bloco de código apenas quando a condição é verdadeira:

/* ... */

if (idade >= 18) {
    printf("Pode dirigir.\n");
}

/* ... */

Caso a comparação seja verdadeira, será mostrado "Pode dirigir.". Segue o fluxo:

  1. if é a palavra-chave que inicia a verificação.
  1. Entre parênteses, a expressão lógica idade >= 18 é avaliada.
  2. Se for verdadeira, o trecho dentro das chaves é executado; caso contrário, é ignorado.

Condicional Composta - if...else

[editar | editar código]

Permite definir um bloco alternativo, que só roda quando a condição do if falha:

/* ... */

if (idade >= 18) {
    printf("Pode dirigir.\n");
} else {
    printf("Não pode dirigir.\n");
}

/* ... */

Além da comparação anterior, foi adicionada uma ação geral, caso as comparações anteriores falhem. Segue o fluxo:

  1. Se idade >= 18 for verdadeira → “Pode dirigir.”
  2. Senão → “Não pode dirigir.”

Condicional Encadeada - if... else if ... else if ... else

[editar | editar código]

Ideal para testar várias condições em sequência, executando somente o primeiro bloco cuja expressão seja verdadeira:

/* ... */

if (nota >= 7) {
    printf("Aprovado!\n");
} else if(nota >= 4) {
    printf("Avaliação Final.\n");
}else {
    printf("Reprovado.\n");
}

/* ... */

Avalia sucessivos casos, e, caso falhe em todos, gera a saída "Reprovado.".

  1. Verifica se nota >= 7: se sim, imprime “Aprovado!” e sai da estrutura.
  2. Caso contrário, testa nota >= 4: se sim, exibe “Avaliação final.”
  3. Se nenhuma condição for atendida, cai no else e mostra “Reprovado.”

Em geral, considera-se que um aluno está em “avaliação final” quando sua nota fica entre 4 e 7. No else if, não precisamos checar se a nota é menor que 7, pois esse trecho só é alcançado se a condição nota >= 7 já tiver falhado. Basta, portanto, verificar se nota >= 4 para saber se o aluno vai para a avaliação final.

Condicionais de Múltipla Escolha - switch ... case

[editar | editar código]

O switch...case é uma estrutura condicional utilizada quando você precisa comparar uma mesma variável ou expressão contra vários valores constantes. Ele é especialmente útil quando há muitas alternativas baseadas na igualdade.

Quando Usar?

[editar | editar código]
  1. Quando a condição envolve a comparação de igualdade (==) com valores inteiros, caracteres ou enumerados.
  2. Para deixar o código mais organizado, legível e eficiente do que uma sequência muito longa de if ... else if.

ATENÇÃO: O switch não permite expressões com operadores relacionais (<, >, !=, etc.) nem condições compostas com && ou ||. Ele testa apenas igualdade.

Funcionamento

[editar | editar código]
  1. O programa avalia a expressão dentro do switch.
  2. Compara seu valor com os valores das cláusulas case.
  3. Se encontrar um case que corresponde, executa aquele bloco.
  4. O comando break faz com que a execução saia do switch após executar um bloco. Se não usar break, o programa continua executando os próximos case (comportamento chamado de "fall-through").
  5. O bloco default (opcional) executa se nenhum case for satisfeito.
/* ... */

int dia = 3;

switch (dia) {
    case 1:
        printf("Domingo\n");
        break;
    case 2:
        printf("Segunda-feira\n");
        break;
    case 3:
        printf("Terça-feira\n");
        break;
    case 4:
        printf("Quarta-feira\n");
        break;
    case 5:
        printf("Quinta-feira\n");
        break;
    case 6:
        printf("Sexta-feira\n");
        break;
    case 7:
        printf("Sábado\n");
        break;
    default:
        printf("Dia inválido\n");
}

/* ... */

O código compara o valor da variável dia com cada um dos valores definidos nos case, até encontrar aquele que corresponde. No exemplo, como dia vale 3, a saída será “Terça-feira”. Se o valor de dia não corresponder a nenhum dos case, o bloco default será executado, exibindo "Dia inválido". ⚠️ Atenção: Se você não utilizar o comando break após cada case, o programa continuará executando todos os blocos seguintes, mesmo depois de encontrar um case correspondente. Esse comportamento é chamado de fall-through. Veja:

/* ... */

int opcao = 2;

switch (opcao) {
    case 1:
        printf("Opção 1\n");
    case 2:
        printf("Opção 2\n");
    case 3:
        printf("Opção 3\n");
}

/* ... */

Nesse caso a saída será:

Opção 2
Opção 3