CCT-UFCA/Ciência da Computação/Introdução à Programação/Estrutura Condicional
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:
- if é a palavra-chave que inicia a verificação.
- Entre parênteses, a expressão lógica idade >= 18 é avaliada.
- 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:
- Se idade >= 18 for verdadeira → “Pode dirigir.”
- 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.".
- Verifica se nota >= 7: se sim, imprime “Aprovado!” e sai da estrutura.
- Caso contrário, testa nota >= 4: se sim, exibe “Avaliação final.”
- 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]- Quando a condição envolve a comparação de igualdade (==) com valores inteiros, caracteres ou enumerados.
- 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]- O programa avalia a expressão dentro do switch.
- Compara seu valor com os valores das cláusulas case.
- Se encontrar um case que corresponde, executa aquele bloco.
- 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").
- O bloco default (opcional) executa se nenhum case for satisfeito.
Exemplo
[editar | editar código]/* ... */
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