BAC004-Informática-Teórica-Fabiana C Guedes
2
Estrutura Condicional
A estrutura condicional permite a escolha do
grupo de ações e estruturas a ser
executado quando determinadas condições
são ou não satisfeitas.
A estrutura condicional pode ser
apresentada por meio de uma estrutura
BAC004-Informática-Teórica-Fabiana C Guedes
3
Estrutura Condicional
•
Isso significa que podemos selecionar
entre ações alternativas dependendo
de critérios desenvolvidos no decorrer
da execução do programa
BAC004-Informática-Teórica-Fabiana C Guedes 4
Comandos de Seleção
-Simples
Forma Geral
if (expressão)
comando1;
Expressão da Condição deve estar entre parênteses.
Caso tenha mais de um comando eles devem ser delimitados por chaves. Seria igual a:
SE <condição> ENTÃO
BAC004-Informática-Teórica-Fabiana C Guedes
5
Comandos de Seleção
-Simples
BAC004-Informática-Teórica-Fabiana C Guedes
6
Comandos de Seleção
-Simples
if(sexo_usuario=='f' && dia==8 && mes==3) cout << "Parabens, mulher, pelo seu dia!";
BAC004-Informática-Teórica-Fabiana C Guedes
7
Comandos de Seleção
- Simples
• Em C/C++ é obrigatória a utilização de chaves
quando houver mais de uma instrução a ser executada quando a expressão condicional for verdadeira. • FormaGeral if (Teste Condicional) { instrução1; instrução2; instruçãon; }
As chaves delimitam o Bloco que só será executado no caso da expressão verdadeira.
BAC004-Informática-Teórica-Fabiana C Guedes
8
Comandos de Seleção
- Simples
if(sexo_usuario=='f' && dia==8 && mes==3) {
cout << "Parabéns, mulher, pelo seu dia!" << endl; cout << "Você é a "
<< cont + 1
<< "a. mulher a acessar o sistema hoje." << endl;
cont++; }
Ou cont=cont + 1. Ao criar a variável cont, ela deve receber o valor 0.
BAC004-Informática-Teórica-Fabiana C Guedes 9
Comandos de Seleção
- Simples
/*ProgC014.cppPrimeiro exemplo de estrutura condicional*/ #include <iostream>
#include <cstdlib>
using namespace std; int main(){
cout << "Quantos anos voce tem? " << endl; int anos;
cin >> anos;
if( anos < 30 ) //Toma decisão caso anos < 30 cout << "Voce e muito jovem!" << endl;
system("PAUSE"); return 0;
}
Faz o teste perguntando se (anos < 30)
Só executa se a condição for verdadeira
Sem as chaves só executa uma única linha de código.
BAC004-Informática-Teórica-Fabiana C Guedes
10
Comandos de Seleção
-Simples
//ProgC015.cpp - Programa que verificar se número é par ou impar #include <iostream>
#include <cstdlib> using namespace std; int main (){
int num;
cout << "Digite o numero: "; cin >> num;
if ((num % 2) == 0){
cout << "Numero par.\n"; }
if ((num % 2) == 1){
cout << "Numero impar.\n"; }
system("pause > null"); return 0;
}
BAC004-Informática-Teórica-Fabiana C Guedes
11
Estrutura Condicional
- Composta
•
É uma expansão de um simples comando if
•
O comando if permite que executemos algo
somente se a sua expressão de teste for
verdadeira, caso contrário nada será
executado
•
Suponhamos que você queira executar uma
coisa se a expressão de teste for verdadeira
e outra se a expressão de teste for falsa
•
Nesse caso, você deve usar o comando if
BAC004-Informática-Teórica-Fabiana C Guedes
12
Estrutura Condicional
-Composta
BAC004-Informática-Teórica-Fabiana C Guedes 13
Comandos de Seleção –
Composta
Forma Geral
if (expressão)
comando1;
else
comando2;
Expressão da Condição deve estar entre parênteses.
Caso tenha mais de um comando eles devem ser delimitados por chaves.
BAC004-Informática-Teórica-Fabiana C Guedes
14
Comandos de Seleção
–Composta
BAC004-Informática-Teórica-Fabiana C Guedes 15
Comandos de Seleção –
Composta
if(media >= 60) cout << "Aprovado!"; else cout << "Exame!";BAC004-Informática-Teórica-Fabiana C Guedes
16
Comandos de Seleção –
Composta
//ProgC016 - Teste de divisão por Zero #include <iostream>
using namespace std; int main(){
int dividendo, divisor; float quociente;
cout << "Entre com o dividendo e o divisor, respectivamente: "; cin >> dividendo >> divisor;
if (divisor != 0) {
quociente = (float) dividendo / divisor;
cout << "O quociente e: " << quociente << endl; }
else
cout << "Impossivel fazer a divisao. O divisor e igual a zero." << endl; return 0;
}
Como a expressão lógica fornece o valor 0 (zero) para falso e diferente de zero para verdadeiro, se o valor for verdadeiro pode ser realizada a divisão. Se o valor for falso, o segundo número digitado foi zero.
BAC004-Informática-Teórica-Fabiana C Guedes
17
Comandos de Seleção
–Composta
BAC004-Informática-Teórica-Fabiana C Guedes
18
Comandos de Seleção
–Composta
BAC004-Informática-Teórica-Fabiana C Guedes
19
Comandos de Seleção
-Composta
// ProgC017.cpp - Programa que apresenta o comando de seleção composta - if #include <iostream>
#include <cstdlib> #include <ctime> using namespace std; int main ( ){
int Numero, Palpite; srand(time(NULL)); Numero = rand()%100;
cout << "\nAdivinhe o numero magico: "; cin >> Palpite;
if (Palpite == Numero)
cout << "\n Voce ACERTOU!"; else
cout << "\n Voce errou! O correto era " << Numero; system("PAUSE > null");
return 0; }
srand() e rand() são funções para criar números
randomicamente. Neste caso pega números abaixo de 100.
Comando de seleção.Seria o comando: se Palpite = Numero então
escreva “Você Acertou!” senão
BAC004-Informática-Teórica-Fabiana C Guedes
20
Comandos de Seleção
-Aninhada
•
Uma estrutura condicional está
aninhada quando é utilizada dentro de
outra estrutura condicional.
•
Podemos ter vários comandos if
aninhados.
•
O comando else em C se refere ao if
mais próximo (acima deste) que está
no mesmo bloco.
BAC004-Informática-Teórica-Fabiana C Guedes 21
Comandos de Seleção
-Aninhada
• Forma Geral: if (<condição>){ comandos1; ... }else if (<condição>) { comandos2; ... }No senão faz outro teste.
if (<condição1>) { if (<condição2>) { comandos; ... } else { comandos; ... } } else { if (<condição3>) { comandos; ... } }
BAC004-Informática-Teórica-Fabiana C Guedes
22
Comandos de Seleção
Aninhados - Exemplo
//ProgC018.cpp - Estrutura if aninhada # include <iostream>
using namespace std; int main ( ){
int n1, n2, n3;
cout << "Digite 3 numeros: "; cin >> n1 >> n2 >> n3;
if (n1 > n2) if (n1 > n3)
cout << "O maior numero e: " << n1; else
cout << "O maior numero e: " << n3; else
if (n2 > n3)
cout << "O maior numero e: " << n2; else
cout << "O maior numero e: " << n3; return 0;
}
BAC004-Informática-Teórica-Fabiana C Guedes
23
Comandos de Seleção
Aninhados - Exemplo
//ProgC019.cpp - Exemplo IF Aninhado#include <iostream>
using namespace std; int main(){
float n1, n2, res; char op;
cout << "Digite NUMERO OPERADOR NUMERO: "; cin >> n1 >> op >> n2;
if (op == '+') { res = n1 + n2;
cout << "O resultado da soma e: " << res; }
else
if (op == '-') { res = n1 - n2;
cout << "O resultado da subtracao e: " << res; }
else
if (op == '/') { res = n1 / n2;
cout << "O resultado da divisao e: " << res; }
else
if (op == '*') { res = n1 * n2;
cout << "O resultado da multiplicacao e: " << res;
} else
cout << "Operador invalido!"; cout << endl; return 0; } // fim main Entrada de Dados Soma Subtração Divisão Multiplicação
BAC004-Informática-Teórica-Fabiana C Guedes
24
Comandos de Seleção
Aninhados - Exemplo
//ProgC019a.cpp - Exemplo IF Aninhado#include <iostream> using namespace std; int main() {
float n1, n2, res; char op;
cout << "Digite NUMERO OPERADOR NUMERO:"; cin >> n1 >> op >> n2;
if (op == '+') { res = n1 + n2;
cout << "O resultado da soma e: " << res; }
else if (op == '-') { res = n1 - n2;
cout << "O resultado da subtracao e: " << res; }
else if (op == '/') { res = n1 / n2;
cout << "O resultado da divisao e: " << res; }
else if (op == '*') { res = n1 * n2;
cout << "O resultado da multiplicacao e: " << res; }
else
cout << "Operador invalido!"; cout << endl; return 0; } // fim main Entrada de Dados Soma Subtração Divisão Multiplicação
BAC004-Informática-Teórica-Fabiana C Guedes
25
Comandos de Seleção
Aninhados - Exemplo
BAC004-Informática-Teórica-Fabiana C Guedes
26
Comandos de Seleção
Aninhados - Exemplo
BAC004-Informática-Teórica-Fabiana C Guedes
27
Comandos de Seleção
Múltipla - switch
•
Embora construções if – else possam
executar testes para escolha de uma
entre várias alternativas, muitas vezes
são deselegantes.
•
O comando switch tem um formato
BAC004-Informática-Teórica-Fabiana C Guedes 28
Comandos de Seleção
Múltipla - switch
Forma Geral switch (expressão) {case constante1 : seqüência de comandos1; break;
case constante2 : seqüência de comandos2; break;
...
case constanteN : seqüência de comandosN; break;
default : seqüência de comandos; }
BAC004-Informática-Teórica-Fabiana C Guedes
29
Comandos de Seleção
Múltipla - switch
• 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);
• 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.
BAC004-Informática-Teórica-Fabiana C Guedes
30
Comandos de Seleção
Múltipla - switch
// ProgC020.cpp - Programa que apresenta comando de selecao multipla #include <iostream>
using namespace std; int main ( ){
char Opcao;
cout << "\nDigite um numero: "; cin >> Opcao;
switch (Opcao){
case '1' : cout << "um "; break; case '2' : cout << "dois "; break; case '3' : cout << "tres "; break; }
return 0; }
Comando de seleção switch. Testa o
conteúdo da variável Opcao. Se valor for 1, escreverá um; se valor for 2, escreverá dois; se valor for 3, escreverá três.
BAC004-Informática-Teórica-Fabiana C Guedes
31
Comandos de Seleção
-switch
//ProgC021.cpp - Calculadora com Case #include <iostream>
using namespace std; int main(){
float n1, n2, res; char op;
cout << "Digite NUMERO OPERADOR NUMERO: "; cin >> n1 >> op >> n2;
switch (op) { case '+':
res = n1 + n2;
cout << "O resultado da soma e: " << res; break;
case '-':
res = n1 - n2;
cout << "O resultado da subtracao e: " << res; break;
case '/': res = n1 / n2;
cout << "O resultado da divisao e: " << res; break;
case '*':
res = n1 * n2;
cout << "O resultado da multiplicacao e: " << res; break;
default:
cout << "Operador invalido!"; } // fim switch return 0; } // fim main switch case Caso + Caso -Caso / Caso *
BAC004-Informática-Teórica-Fabiana C Guedes
32
Exemplo de If com
condicional string
//ProgC022 - Programa que faz teste com strings #include <iostream>
#include <string.h> using namespace std; int main(){
char nome[30];
cout << "\nDigite o seu nome: "; cin.getline(nome, 30, '\n');
if (strcmp(nome, "Fabiana") == 0)
cout << "\nO nome digitado foi: " << nome << "\n"; else
cout << "\nO nome digitado foi diferente de Fabiana"; return 0;
}
Biblioteca para manipulação de strings
Função que possibilita pegar nomes digitados com espaço
Função que compara se duas strings são iguais. Se retorna valor 0 elas são iguais, caso contrário são diferentes. Neste caso diferencia valores
maiúsculos de minúsculos. Permite ordenar de acordo com valores negativos e positivos.
BAC004-Informática-Teórica-Fabiana C Guedes
33
Exercícios
Crie um programa para ler dois números e
mostrar o maior
Faça um programa que receba a idade e peso de
uma pessoa. De acordo com a tabela a seguir, verifique e mostre em qual grupo de risco essa pessoa se encaixa.
BAC004-Informática-Teórica-Fabiana C Guedes
34
Exercícios
Faça um programa que:
Mostre o menu de opções a seguir,
receba a opção do usuário e os dados
necessários para executar cada
operação e mostre o resultado da
operação.
1- Somar dois números
BAC004-Informática-Teórica-Fabiana C Guedes
35
Exercícios
Faca um programa que receba os
comprimentos dos três lados de um
triângulo e imprima se eles podem ou não
formar um triângulo (cada lado tem que ser
menor que a soma dos outros dois). O
programa deve imprimir também se o
triângulo é:
Equilátero: três lados de mesmo comprimento
Isósceles: dois lados de mesmo comprimento
Escaleno: três lados de comprimentos
BAC004-Informática-Teórica-Fabiana C Guedes
36
Tópicos para Discussão
Estruturas Condicionais
Simples
Compostas
switch