Estruturas condicionais (if, if-else, switch-case)
Programação de Computadores I
Natália Batista
https://sites.google.com/site/nataliacefetmg/
nataliabatista@decom.cefetmg.br
2º semestre/ 2017
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
1. Estruturas condicionais
(1/3) Permitem determinar qual é a ação a ser tomada com base no resultado de uma expressão condicional.
Desviam a execução do algoritmo para uma
outra ação.
3
1. Estruturas condicionais
(2/3) Algoritmo para determinar aprovação nas disciplinas para alunos frequentes:
Se (média é maior ou igual a 60), então Imprima "Aprovado!"
senão
Imprima "Exame!"
1. Estruturas condicionais
(3/3) A linguagem C/C++ oferece três estruturas condicionais:
if: estrutura condicional simples.
if-else: estrutura condicional composta.
switch: comando condicional seletivo.
5
2. Estrutura condicional simples
(1/7) If
if (condição){
comando1;
comando2;
...
comandoN;
} if (condição)
comando_único;
2. Estrutura condicional simples
(2/7) Condição ou teste condicional:
expressão lógica que produz como resultado o valor “verdadeiro” ou “falso”.
podem ser usados os operadores relacionais: <,
>, <= , >= , == , !=
além dos operadores lógicos: && , || e !
Exemplo: (nota >= 60) && (frequencia >= 22)
7
2. Estrutura condicional simples
(3/7)
Exemplo 1: Faça um programa para calcular as raízes de uma equação de segundo grau:
ax
2+ bx + c = 0 .
Entrada?
Processamento?
Saída?
#include <stdio.h>
#include <math.h>
int main(){
int a, b, c;
float delta, x1, x2;
printf("Digite os coeficientes da equacao: ");
scanf("%d%d%d", &a, &b, &c);
delta = b * b - 4 * a * c;
if (delta == 0){
x1 = (-b + sqrt(delta) ) / (2 * a);
printf("Uma raiz real: %f\n", x1);
}
if (delta > 0){
x1 = (-b + sqrt(delta) ) / (2 * a);
x2 = (-b - sqrt(delta) ) / (2 * a);
printf("Duas raizes reais: %f e %f\n", x1, x2);
}
if (delta < 0)
printf("Nao existem raizes reais.\n");
return 0;
}
9
2. Estrutura condicional simples
(6/7)
Exemplo 3: Qual será o valor final das variáveis declaradas no seguinte algoritmo, depois de sua execução?
#include <stdio.h>
int main(){
int a, b, aux;
a = 5;
b = 3;
if (a > b) { aux = a;
a = b;
b = aux;
}
printf(“a = %d b = %d”, a, b);
return 0;
}
3. Estrutura condicional composta
(1/6) If-else
if (condição){
//comandos;
}
else {
//comandos;
}
11
3. Estrutura condicional composta
(2/6)
Se o resultado da “condição” for verdadeiro, será executado o “comando1”; se for falso, será
executado o “comando2”.
A parte “else comando2;” pode não existir.
if (condição) comando1;
else
comando2;
3. Estrutura condicional composta
(4/6)
Exemplo 1: Faça um programa que receba um
número e verifique se esse número é par ou ímpar.
#include <stdio.h>
int main (){
int num;
printf("Digite o numero: ");
scanf("%d", &num);
if ((num % 2) == 0){
printf("Numero par.\n");
}
else{
printf("Numero impar.\n");
}
return 0;
}
13
3. Estrutura condicional composta
(5/6) Exemplo 2: Considere o seguinte programa que faz a divisão de dois números inteiros passados pelo usuário. Lembre-se que é
impossível fazer divisão por zero. Emita uma
mensagem caso isso ocorra.
#include <stdio.h>
int main() {
int dividendo, divisor;
int quociente;
printf("Entre com o dividendo e o divisor: ");
scanf("%d %d", ÷ndo, &divisor);
if (divisor != 0) {
quociente = dividendo / divisor;
printf("O quociente é: %d\n", quociente);
} else
printf("Impossível fazer a divisão. O divisor é igual a zero.\n");
return 0;
}
15
4. Estruturas condicionais aninhadas
(1/2) Uma estrutura condicional está aninhada
quando é utilizada dentro de outra estrutura
condicional.
4. Estruturas condicionais aninhadas
(2/2)
Dados 3 números inteiros distintos passados pelo usuário, verificar o maior deles.
#include <stdio.h>
int main() {
int n1, n2, n3;
printf("Entre com 3 numeros inteiros: ");
scanf("%d %d %d", &n1, &n2, &n3);
if (n1 > n2) if (n1 > n3)
printf("O maior é: %d\n", n1);
else
printf("O maior é: %d\n", n3);
else
if (n2 > n3)
printf("O maior é: %d\n", n2);
else
printf("O maior é: %d\n", n3);
return 0;
}
Neste exemplo não
foram utilizadas chaves, pois cada estrutura
condicional composta equivale a uma
instrução.
17
5. Switch-case
(1/3)switch (variável) {
case valor1: lista de comandos;
break;
case valor2: lista de comandos;
break;
...
default: lista de comandos;
}
5. Switch-case
(2/3)
O comando switch possui as seguintes regras:
O corpo de um switch deve estar entre chaves;
Pode haver nenhuma, uma ou mais instruções seguindo cada caso. Geralmente, a última instrução de um caso é break, que causa a saída imediata de todo o corpo do switch. Na falta dele, todas as instruções após o caso
escolhido serão executadas, mesmo as que pertencem aos casos seguintes;
switch testa a variável que deve ser do tipo int ou char;
Não se pode usar uma variável ou expressão lógica como rótulo de caso (que vem após o case). É apenas permitido constantes do tipo int ou char;
Cada um dos cases pode ser considerado um if;
Um caso default é opcional. Pode ser encarado como o
else de todos os ifs. Ou seja, se nenhum caso for satisfeito
e existir um caso default, a execução começará nele.
19
5. Switch-case
(3/3)
Considere o seguinte exemplo: programa que lê o conceito obtido pelo aluno no semestre (de A a F) e imprime seu significado.
#include <stdio.h>
int main(){
char Conceito;
printf("Digite o conceito obtido no semestre: ");
scanf("%c", &Conceito);
switch( Conceito ){
case 'A' : printf("Excelente\n"); break;
case 'B' : printf("Otimo\n"); break;
case 'C' : printf("Bom\n"); break;
case 'D' : printf("Regular\n"); break;
case 'F' : printf("Ruim\n"); break;
default : printf("O conceito informado nao existe.\n");
}
return 0;
}
6. Exercícios
Calculadora de quatro operações. Faça um programa que, dados dois números e um caracter (+, -, *, /), calcule e
imprima:
A soma desses números, caso seja digitado o caracter +.
A subtração desses números, caso seja digitado o caracter -.
A multiplicação desses números, caso seja digitado o caracter *.