FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS
Tecnologia em Redes de Computadores
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS
Tecnologia em Redes de Computadores
Algoritmos e linguagens de
programação 1
(aula 05)
Prof. Alessandro Bernardo
alebernardo@unb.br
http://bsi.k6.com.br
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS
Tecnologia em Redes de Computadores
Estrutura de controle condicional
Na aula passada foram visos alguns exemplos da estrutura de controle
condicional do C++, a sintaxe e os operadores relacionais.
Entretanto, para resolver alguns problemas envolvendo essa estrutura, deve-se
conhecê-la um pouco mais. Isso será feito a partir da apresentação de
exemplos.
Exemplos:
(1) Fazer um programa que leia um número do teclado e escreva se ele é
positivo, negativo ou zero;
(2) Fazer um programa que leia dois números reais do teclado e os escreva
na ordem crescente e na ordem decrescente;
(3) Fazer um programa que leia três números do teclado e escreva o maior
deles.
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS
Tecnologia em Redes de Computadores
Estrutura condicional
Exemplo:
(1) Fazer um programa que leia um número do teclado e escreva se ele é
positivo, negativo ou zero;
Nesse caso, deve-se verificar três possibilidades.
Entretanto, a estrutura condicional que vimos pode
tratar, em uma condição, apenas duas. Com isso,
deve-se utilizar aninhamento de estruturas (uma
estrutura dentro da outra), como visto no exemplo.
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS
Tecnologia em Redes de Computadores
Estrutura condicional
(1) Fazer um programa que leia um número do teclado e escreva se ele é
positivo, negativo ou zero;
using namespace std;
#include <iostream>
int main() {
cout << “Insira um número:”;
double num;
cin >> num;
if (num > 0)
cout << “número positivo”;
else
if (num < 0)
cout << “número negativo”;
else
cout << “número igual a zero”;
system(“pause”);
return(0);
}
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS
Tecnologia em Redes de Computadores
Estrutura condicional
(1) Fazer um programa que leia um número do teclado e escreva se ele é
positivo, negativo ou zero;
using namespace std;
#include <iostream>
int main() {
cout << “Insira um número:”;
double num;
cin >> num;
if (num > 0)
cout << “número positivo”;
else
if (num < 0)
cout << “número negativo”;
else
cout << “número igual a zero”;
system(“pause”);
return(0);
}
Essa estrutura if esta dentro de outra.
Assim, ela só executa quando a
condição (num > 0) é falsa.
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS
Tecnologia em Redes de Computadores
Estrutura de controle condicional
(2) Fazer um programa que leia dois números reais do teclado e os escreva
na ordem crescente e na ordem decrescente;’
Nesse caso, no momento em que sabe-se qual número
é maior, deve-se escrever os dois em ordem crescente
e decrescente. O melhor para esse caso é inserir duas
linhas de execução dentro do if e duas dentro do else.
Entretanto, o formato que vimos na aula anterior não
permite isso. Assim, para incluir mais de uma linha
dentro de cada bloco é necessário delimitá-las por
chaves, como visto na solução do exemplo.
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS
Tecnologia em Redes de Computadores
Estrutura de controle condicional
(3) Fazer um programa que leia dois números reais do teclado e os escreva
na ordem crescente e na ordem decrescente;’
cout << “Insira dois número:”;
double a,b;
cin >> a >> b;
if (a > b)
{
cout << “crescente:” << b << a << endl;
cout << “decrescente:” << a << b << endl;
}
else
{
cout << “crescente:” << a << b << endl;
cout << “decrescente:” << b << a << endl;
}
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS
Tecnologia em Redes de Computadores
Estrutura de controle condicional
(2) Fazer um programa que leia dois números reais do teclado e os escreva
na ordem crescente e na ordem decrescente;’
cout << “Insira dois número:”;
double a,b;
cin >> a >> b;
if (a > b)
{
cout << “crescente:” << b << a << endl;
cout << “decrescente:” << a << b << endl;
}
else
{
cout << “crescente:” << a << b << endl;
cout << “decrescente:” << b << a << endl;
}
Linhas executadas caso a
condição seja verdadeira.
Linhas executadas caso a
condição seja falsa.
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS
Tecnologia em Redes de Computadores
Estrutura de controle condicional
Sintaxe:
if ( condição )
{
// linhas executadas quando a condição é verdadeira
}
else
{
// linhas executadas quando a condição é falsa
}
obrigatório
opcional
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS
Tecnologia em Redes de Computadores
Estrutura de controle condicional
(2) Fazer um programa que leia três números do teclado e escreva o maior
deles
Nesse caso, pode-se utilizar várias estruturas if
aninhadas. Entretanto, se utilizarmos operadores
lógicos poderemos fazer isso com menos comandos if.
Em algoritmo, o código poderia ficar assim:
SE a for maior que b E a for maior que c ENTÃO
escrever valor de a
SENÃO
SE b for maior que c ENTÃO
escrever valor de b
SENÃO
escrever valor de c
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS
Tecnologia em Redes de Computadores
Estrutura de controle condicional
(2) Fazer um programa que leia três números do teclado e escreva o maior
deles
cout << “Insira três números:”;
double a,b, c;
cin >> a >> b >> c;
if ( (a > b) && (a > c) )
{
cout << “maior:” << a << endl;
}
else
{
if (b > c)
cout << “maior:” << b << endl;
else
cout << “maior:” << c << endl;
}
cout << “Insira três números:”;
double a,b, c;
cin >> a >> b >> c;
ou
if ( (a > b) && (a > c) )
cout << “maior:” << a << endl;
else
if (b > c)
cout << “maior:” << b << endl;
else
cout << “maior:” << c << endl;
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS
Tecnologia em Redes de Computadores
Estrutura de controle condicional
(2) Fazer um programa que leia três números do teclado e escreva o maior
deles.
cout << “Insira três números:”;
double a,b, c;
cin >> a >> b >> c;
if ( (a > b) && (a > c) )
{
cout << “maior:” << a << endl;
}
else
{
if (b > c)
cout << “maior:” << b << endl;
else
cout << “maior:” << c << endl;
}
O operador lógico de
conjunção em C++ é &&.
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS
Tecnologia em Redes de Computadores
Operadores lógicos
Operador
Significado
&&
E
||
OU
!
NÃO
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS
Tecnologia em Redes de Computadores
Operadores lógicos
p
q
p && q
p || q
!p
F
F
V
V
F
V
V
F
F
F
V
F
F
V
V
V
V
V
F
F
(7 > 4) || (5 == 3) --- verdadeiro
( 10 < 10 ) || (5 != 5) --- falso
(7 > 4) && ( 5 == 3 ) --- falso
( 10 < 10 ) && (5 != 5) --- falso
(10 < 20) && (7 != 20) --- verdadeiro
(10 < 20) || (7 != 20) --- verdadeiro
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS
Tecnologia em Redes de Computadores
Operadores lógicos
p
q
p && q
p || q
!p
F
F
V
V
F
V
V
F
F
F
V
F
F
V
V
V
V
V
F
F
!(7 > 4) || (5 == 3) --- falso
!( (7 > 4) && ( 5 == 3 ) ) --- verdadeiro
!( (10 < 20) && (7 != 20) ) --- falso
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS
Tecnologia em Redes de Computadores
Estrutura de controle condicional
Exemplos:
(1) Fazer um programa que leia três números e os escreva em ordem
crescente;
(2) Fazer um programa que leia os três coeficientes de uma equação
de segundo grau e calcule as raízes dessa equação. Esse
programa deverá emitir uma mensagem de erro caso possa ocorrer
divisão por zero ou o cálculo da raiz quadrada de número negativo.
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS
Tecnologia em Redes de Computadores
Estrutura de controle condicional
(1) Fazer um programa que leia três números e os escreva em ordem
crescente;
cout << “Insira três números:”;
double a,b, c;
cin >> a >> b >> c;
if ( (a > b) && (a > c) )
if (b > c)
cout << c << b << a;
else
cout << b << c << a;
else
if (b > c)
if (a > c)
cout << c << a << b;
else
cout << a << c << b;
else
if (a > b)
cout << b << a << c;
else
cout << a << b << c;
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS
Tecnologia em Redes de Computadores
Estrutura de controle condicional
(1) Fazer um programa que leia três números e os escreva em ordem
crescente;
cout << “Insira três números:”;
double a,b, c;
cin >> a >> b >> c;
Nessa solução existem estruturas if
aninhadas.
Assim, caso a primeira condição
seja verdadeira, esse será o código
a ser executado.
Já se essa condição for falsa, o
código executado será esse.
if ( (a > b) && (a > c) )
if (b > c)
cout << c << b << a;
else
cout << b << c << a;
else
if (b > c)
if (a > c)
cout << c << a << b;
else
cout << a << c << b;
else
if (a > b)
cout << b << a << c;
else
cout << a << b << c;
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS
Tecnologia em Redes de Computadores
Estrutura de controle condicional
(1) Fazer um programa que leia três números e os escreva em ordem
crescente;
cout << “Insira três números:”;
double a,b, c;
cin >> a >> b >> c;
Esses dois blocos de execução
também estão aninhados.
if ( (a > b) && (a > c) )
if (b > c)
cout << c << b << a;
else
cout << b << c << a;
else
if (b > c)
if (a > c)
cout << c << a << b;
else
cout << a << c << b;
else
if (a > b)
cout << b << a << c;
else
cout << a << b << c;
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS
Tecnologia em Redes de Computadores
Estrutura de controle condicional
(2) Fazer um programa que leia os três coeficientes de uma equação de segundo
grau e calcule as raízes dessa equação. Esse programa deverá emitir uma
mensagem de erro caso possa ocorrer divisão por zero ou o cálculo da raiz
quadrada de número negativo.
cout << “Insira os três coeficientes:”;
double a,b, c;
cin >> a >> b >> c;
double delta = b*b – 4*a*c;
if ( (delta >= 0) && (a != 0) )
{
double x1, x2;
x1 = ( -b + sqrt(delta) ) / (2*a);
x2 = ( -b – sqrt(delta) ) / (2*a);
cout << “raízes = ” << x1 << x2 << endl;
}
else
{
cout << “ERRO!!”;
}
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS
Tecnologia em Redes de Computadores
Estrutura de controle condicional
Exercícios:
(1) Faça um programa para ler os comprimentos dos três lados de um
triângulo e escrever se esse triângulo pode existir ou não.
(2) Fazer um programa que leia três números e escreva o menor
deles;
(3) Fazer um programa que leia dois números (a e b) e escreva os
resultados das expressões a seguir. Esse programa deverá emitir
uma mensagem de erro caso ocorra divisão por zero ou raiz
quadrada de número negativo.
a 2  b2
f1 
a b
e
f2 
ab
b
Download

aula05 - GEOCITIES.ws