21
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 [email protected] http://bsi.k6.com.br 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

Embed Size (px)

Citation preview

Page 1: 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

FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICASTecnologia em Redes de Computadores

Algoritmos e linguagens de programação 1

(aula 05)

Prof. Alessandro [email protected]://bsi.k6.com.br

FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICASTecnologia em Redes de Computadores

Page 2: 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

FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICASTecnologia em Redes de Computadores

Estrutura de controle condicional

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.

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.

Page 3: 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

FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICASTecnologia 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.

Page 4: 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

FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICASTecnologia 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);}

Page 5: 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

FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICASTecnologia 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.

Page 6: 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

FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICASTecnologia 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.

Page 7: 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

FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICASTecnologia 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; }

Page 8: 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

FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICASTecnologia 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.

Page 9: 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

FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICASTecnologia 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}

opcional

obrigatório

Page 10: 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

FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICASTecnologia 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 aSENÃO SE b for maior que c ENTÃO escrever valor de b SENÃO escrever valor de c

Page 11: 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

FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICASTecnologia 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

ou

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;

if ( (a > b) && (a > c) ) cout << “maior:” << a << endl; else if (b > c) cout << “maior:” << b << endl; else cout << “maior:” << c << endl;

Page 12: 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

FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICASTecnologia 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++ é &&.

Page 13: 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

FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICASTecnologia em Redes de Computadores

Operadores lógicos

Operador Significado

&& E

|| OU

! NÃO

Page 14: 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

FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICASTecnologia em Redes de Computadores

Operadores lógicos

p q p && q p || q ! p

F F F F V

F V F V V

V V V V F

V F F V F

(7 > 4) || (5 == 3) --- verdadeiro

(7 > 4) && ( 5 == 3 ) --- falso

(10 < 20) && (7 != 20) --- verdadeiro

( 10 < 10 ) || (5 != 5) --- falso

( 10 < 10 ) && (5 != 5) --- falso

(10 < 20) || (7 != 20) --- verdadeiro

Page 15: 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

FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICASTecnologia em Redes de Computadores

Operadores lógicos

p q p && q p || q ! p

F F F F V

F V F V V

V V V V F

V F F V F

!(7 > 4) || (5 == 3) --- falso

!( (7 > 4) && ( 5 == 3 ) ) --- verdadeiro

!( (10 < 20) && (7 != 20) ) --- falso

Page 16: 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

FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICASTecnologia 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.

Page 17: 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

FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICASTecnologia 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;

Page 18: 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

FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICASTecnologia 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;

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.

Page 19: 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

FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICASTecnologia 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;

Esses dois blocos de execução também estão aninhados.

Page 20: 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

FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICASTecnologia 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!!”; }

Page 21: 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

FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICASTecnologia 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.

b

bafe

ba

baf

2

22

1