CI208 - Programação de Computadores Aula 6: Comandos Estruturados Estrutura Condicional Prof. MSc. Diego Roberto Antunes diegor@inf.ufpr.br www.inf.ufpr.br/diegor Universidade Federal do Paraná Setor de Ciências Exatas Departamento de Informática
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?
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; verdadeira expressão (condição) sentenças 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; verdadeira expressão (condição) falsa else { sentencasb; sentencasa; sentencasb;
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) { Esta expressão é relacional? 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; 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;
#include <iostream> using namespace std; Aninhando sentenças if-else 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
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 : 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 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:!, &&,
Exercícios
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;
Precedência completa de operadores
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 (expressao 1 ) { sentencas 1 ; else if (expressao 2 ) { sentencas 2 ; else if (expressao n- 1 ) { sentencas n-1 ; else { sentencas n ; (ú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 (expressao 1 ) { sentencas 1 ; else if (expressao 2 ) { sentencas 2 ; else if (expressao n ) { sentencas n ; 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;
Dúvidas?
Exercícios
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
Conclusão Façam a Lista 2 de Exercícios e as Listas Complementares Revisem os conceitos na bibliogra\ia Próxima Aula: Prática para Implementação de exercícios e Dúvidas Trazer o computador e os Exercícios(impressos ou no computador)