Upload
tranxuyen
View
213
Download
0
Embed Size (px)
Citation preview
CI208 -‐ Programação de Computadores Aula 6: Comandos Estruturados
Estrutura Condicional
Prof. MSc. Diego Roberto Antunes
Universidade Federal do Paraná Setor de Ciências Exatas
Departamento de Informática
[email protected] www.inf.ufpr.br/diegor
Nas Últimas Aulas
Modelo do Computador, Compilação/Execução, Memória Algoritmos vs. Programas Estrutura de um Programa C++ Variáveis (Tipos, Nomes, Valor, Inicialização) e Operadores Comandos de Entrada e Saída
Obs.: revisem e resolvam todos os exercícios das listas anteriores
Estrutura Condicional: Exemplos 1) Construir um Programa em C++ que leia dois números do tipo inteiro do teclado N1 e N2. Se N2 for maior que 0 (zero), calcule a divisão N1/N2 e mostre o resultado na tela.
2) Construir um programa que leia dois números e mostre qual é o maior.
3) Construir um Programa em C++ que leia dois números. Se os números forem iguais, mostre uma mensagem informando o usuário. Caso contrário, mostre na tela qual o maior entre os números.
4) Construir um Programa em C++ para ajudar o professor a calcular a média parcial da disciplina CI208. Seu programa deve ler do teclado as notas das três provas PI e P2 e P3, calcular a média e informar o resultado: aprovado por média, reprovado por nota ou exame.
Comando if: Sintaxe
…
if (expressao) {
sentencas;
} …
expressão (condição)
sentenças
verdadeira
falsa
Exemplo Comando if 1) Construir um Programa em C++ que leia dois números do tipo inteiro do teclado N1 e N2. Se N2 for maior que 0 (zero), calcule a divisão N1/N2 e mostre o resultado na tela.
Exemplo Comando if 1) Construir um Programa em C++ que leia dois números do tipo inteiro do teclado N1 e N2. Se N2 for maior que 0 (zero), calcule a divisão N1/N2 e mostre o resultado na tela.
#include <iostream> using namespace std;
int main( ){ int N1, N2; cout << "Entre com dois números (N1 e N2): "; cin >> N1 >> N2; cout << ”O resultado da divisão eh: " << N1/N2 << endl;
}
Exemplo Comando if 1) Construir um Programa em C++ que leia dois números do tipo inteiro do teclado N1 e N2. Se N2 for maior que 0 (zero), calcule a divisão N1/N2 e mostre o resultado na tela.
#include <iostream> using namespace std;
int main( ){ int N1, N2; cout << "Entre com dois números (N1 e N2): "; cin >> N1 >> N2; cout << ”O resultado da divisão eh: " << N1/N2 << endl;
}
Exemplo Comando if 1) Construir um Programa em C++ que leia dois números do tipo inteiro do teclado N1 e N2. Se N2 for maior que 0 (zero), calcule a divisão N1/N2 e mostre o resultado na tela.
#include <iostream> using namespace std;
int main( ){ int N1, N2; cout << "Entre com dois números (N1 e N2): "; cin >> N1 >> N2;
if ( N2 > 0 ) { cout << ”O resultado da divisão eh: " << N1/N2 << endl; }
}
Exemplo Comando if 2) Construir um Programa em C++ que leia um número do teclado. Se o número for negativo, transforme-o para positivo. Ao ginal, mostre o número na tela.
Exemplo Comando if 2) Construir um Programa em C++ que leia um número do teclado. Se o número for negativo, transforme-o para positivo. Ao ginal, mostre o número na tela.
#include <iostream> using namespace std;
int main( ){ int n; cout << "Entre com um número: "; cin >> n;
if ( n < 0 ) { n = n * -1; }
cout << ”O número positivo é: " << n << endl; }
Mas, como resolvemos os problemas:
a) No exemplo 1, queremos avisar o usuário que a divisão não pode ser feita;
b) Construir um programa que leia dois números e mostre qual é o maior;
Comando if-else Se uma condição resultar em verdadeiro, então execute as sentenças A. Senão (caso contrário), as sentenças B serão executadas.
… if (expressao) { sentencasA;
} else { sentencasB;
} …
sentencasB;
falsa expressão (condição)
sentencasA;
verdadeira
Exemplo Comando if-else 1) Construir um Programa em C++ que leia dois números do tipo inteiro do teclado N1 e N2. Se N2 for maior que 0 (zero), calcule a divisão N1/N2 e mostre o resultado na tela.
#include <iostream> using namespace std;
int main( ){ int N1, N2; cout << "Entre com dois números (N1 e N2): "; cin >> N1 >> N2;
if ( N2 > 0 ) { cout << ”O resultado da divisão eh: " << N1/N2 << endl; } else { cout << ”Erro! N2 deve ser maior que 0. ” << endl; }
}
Exemplo Comando if-else 2) Construir um programa que leia dois números e mostre qual é o maior;
#include <iostream> using namespace std;
int main( ){ gloat n1, n2, maior; cout << "Entre com dois números (n1 e n2): "; cin >> n1 >> n2;
if ( n1 >= n2 ) { maior = n1; } else { maior = n2; } cout << ”O maior número é: ” << maior << endl;
}
Exercício: a) Faça um programa em C++ que leia um número do tipo inteiro
do teclado e mostre na tela se ele é par ou ímpar.
Comando condicional: Problemas comuns O programa a seguir está correto?
#include <iostream> using namespace std;
int main( ){ int saldo = 2000;
if (saldo = 1) { cout << ”Saldo: " << endl; cout << "Voce esta quebrado! " << endl; else { cout << "Seu saldo eh " << saldo << endl; }
}
Comando condicional: Problemas comuns O programa a seguir está correto?
#include <iostream> using namespace std;
int main( ){ int saldo = 2000;
if (saldo = 1) { cout << ”Saldo: " << endl; cout << "Voce esta quebrado! " << endl; else { cout << "Seu saldo eh " << saldo << endl; }
}
Onde está a chave } que indica o ginal do bloco if ?
Comando condicional: Problemas comuns O programa a seguir está correto?
#include <iostream> using namespace std;
int main( ){ int saldo = 2000;
if (saldo = 1) { cout << ”Saldo: " << endl; cout << "Voce esta quebrado! " << endl; } else { cout << "Seu saldo eh " << saldo << endl; }
}
Você deve sempre abrir e fechar as chaves nos comandos if-else
Comando condicional: Problemas comuns O programa a seguir está correto?
#include <iostream> using namespace std;
int main( ){ int saldo = 2000;
if (saldo = 1) { cout << ”Saldo: " << endl; cout << "Voce esta quebrado! " << endl; } else { cout << "Seu saldo eh " << saldo << endl; }
}
Comando condicional: Problemas comuns O programa a seguir está correto?
#include <iostream> using namespace std;
int main( ){ int saldo = 2000;
if (saldo = 1) { cout << ”Saldo: " << endl; cout << "Voce esta quebrado! " << endl; } else { cout << "Seu saldo eh " << saldo << endl; }
}
Esta expressão é relacional?
Comando condicional: Problemas comuns O programa a seguir está correto?
#include <iostream> using namespace std;
int main( ){ int saldo = 2000;
if (saldo == 1) { cout << ”Saldo: " << endl; cout << "Voce esta quebrado! " << endl; } else { cout << "Seu saldo eh " << saldo << endl; }
}
O operador relacional de igualdade é ==, não confundir com atribuição!
Comando condicional: Problemas comuns Cuidado ao utilizar os operadores relacionais. O programa a seguir está correto do ponto de vista semântico?
#include <iostream> using namespace std;
int main( ){ int numero = 0;
if (numero > 0) { cout << ”O numero eh positivo! " << endl; } else { cout << ”O numero eh negativo?” << endl; }
}
Mas, e para o seguinte problema:
Construir um Programa em C++ que leia dois números. Se os números forem iguais, mostre uma mensagem informando o usuário. Caso
contrário, mostre na tela qual o maior entre os números.
Aninhando sentenças if-else Então podemos colocar sentenças condicionais dentro de outras sentenças condicionais, ou seja, estamos aninhando sentenças . Resolvendo:
#include <iostream> using namespace std;
int main( ){ int n1, n2; cout << ”Informe n1 e n2: ”; cin >> n1 >> n2;
if (n1 == n2) { cout << “Os números são iguais! ” << endl; } else { //caso contrário, precisamos verigicar o maior }
}
Aninhando sentenças if-else Lembrando que para verigicar o maior entre dois números:
…
if (n1 > n2) { cout << “O número ” << n1 << “ eh o maior !”<< endl; } else { cout << “O número ” << n2 << “ eh o maior !”<< endl; }
…
Aninhando sentenças if-else #include <iostream> using namespace std;
int main( ){ int n1, n2; cout << ”Informe n1 e n2: ”; cin >> n1 >> n2;
if (n1 == n2) { cout << “Os números são iguais! ” << endl; } else { if (n1 > n2) { cout << “O número ” << n1 << “ eh o maior !”<< endl; } else { cout << “O número ” << n2 << “ eh o maior !”<< endl; } }
}
Operadores Lógicos
! NÃO lógico, operação de negação (operador unário)
&& E lógico, conjunção (operador binário)
|| OU lógico, disjunção (operador binário).
Operadores Lógicos Exemplo: se quisermos testar se um número é positivo e par, e imprimir uma mensagem como no exemplo anterior, podemos escrever:
if ( (num >= 0) && (num % 2 == 0) ){
cout << ”O numero eh par e positivo." << endl;
}
Operadores Lógicos Exemplo: verigicar se o aluno está no exame ginal a partir da média parcial MP
if ( (MP >= 40) && (MP < 70) ){ cout << ”O aluno esta no Exame Final." << endl;
}
Exemplo: verigicar se o aluno reprovou a partir da média parcial MP e da média ginal MF:
if ( (MP < 40) || (MF < 50) ){ cout << ”O aluno esta Reprovado por nota!" << endl;
}
Operadores Lógicos Resultado das operações lógicas && e ||:
Ou seja, uma comparação entre 2 expressões usando os Operadores Lógicos:
a) usando o &&, somente resulta verdadeiro se ambas resultarem verdadeiro; b) usando o ||, somente resulta falso se ambas resultarem falso;
Precedência: !, &&, ||
expressão1 expressão2 expressão1 && expressão2 expressão1 || expressão2
verdadeiro verdadeiro verdadeiro verdadeiro
verdadeiro falso falso verdadeiro
falso verdadeiro falso verdadeiro
falso Falso falso falso
Exemplos Assuma as seguintes declaraçõoes de variáveis: int x = 4; int y = 8;
O que é impresso pelo seguinte programa ?
if (y = 8) { if (x = 5){ cout << "a "; } else { cout << "b "; } cout << "c "; cout << "d" << endl; }
Exemplos Assuma as seguintes declaraçõoes de variáveis: int x = 4; int y = 8;
O que é impresso pelo seguinte programa ?
if (y ==8) { if (x == 5){ cout << "a "; } else { cout << "b "; } cout << "c "; cout << "d" << endl; }
Exemplos Assuma as seguintes declaraçõoes de variáveis: int x = 5; int y = 8;
O que é impresso pela seguinte sentença?
if (x == 5 && y == 8) { cout << "a" << endl; } else { cout << "b" << endl;
}
Exemplos Assuma as seguintes declaraçõoes de variáveis: int x = 4; int y = 8;
O que é impresso pela seguinte sentença?
if ( !(x == 5 || y == 8) ) { cout << "a" << endl; } else { cout << "b" << endl;
}
Construção else if Problema:
Construir um Programa em C++ para ajudar o professor a calcular a média parcial da disciplina CI208. Seu programa deve ler do teclado as
notas das duas provas PI, P2 e P3, calcular a média e informar o resultado: aprovado por média, reprovado por nota ou exame.
Construção else if Usada para uma sequência de decisões sem a necessidade de aninhar comandos condicionais. Por exemplo, pode ser usado em um menu de opções if (expressao1) {
sentencas1; } else if (expressao2) {
sentencas2; } … else if (expressaon-‐1) {
sentencasn-1; } else {
sentencasn; (último caso) }
Construção else if Usada para uma sequência de decisões sem a necessidade de aninhar comandos condicionais. Por exemplo, pode ser usado em um menu de opções if (expressao1) {
sentencas1; } else if (expressao2) {
sentencas2; } … else if (expressaon) {
sentencasn; }
Quando o else não for necessário como opção default, ele pode ser removido.
Construção else if Problema: construir um Programa em C++ para ajudar o professor a calcular a média parcial da disciplina CI208. Seu programa deve ler do teclado as notas das duas provas PI, P2 e P3, calcular a média e informar o resultado: aprovado por média, reprovado por nota ou exame.
… cin >> p1 >> p2 >> p3; media_parcial = 0.25* (p1+p2) + 0.5*p3;
if (media_parcial >= 70){ cout << “O aluno está aprovado por média ” << endl;
} else if (media_parcial < 70 && media_parcial >= 40){
cout << “O aluno está em Exame Final” << endl; } else {
cout << “O aluno está reprovado por nota ” << endl; }
1. Faça um programa em C++ que leia do teclado 3 (três) números do tipo inteiro e mostre na tela o maior entre eles.
2. Faça um programa que leia do teclado a idade de um nadador e, em seguuida, verigique e mostre qual a sua categoria, de acordo com: infantil A = 5-10 anos juvenil A = 11-13 anos juvenil B = 14-17 anos adulto = maiores de 18 anos
3. A partir de uma competição entre as turmas A e B, escreva um programa que leia do teclado 2 números que indicam o número de vitórias da turma A e o número de vitórias da turma B, e mostre na tela o vencedor. Se houver empate seu programa deve mostrar na tela.
4. Tendo os dados de entrada altura e o sexo de uma pessoa (1 masculino e 0 feminino), construa um programa que calcule seu peso ideal: homens: (72.7 ∗ h) − 58 mulheres: (62.1 ∗ h) − 44.7