lÓgica de programaÇÃo para engenharia (lógica de programação – aula 8) – parcial material...

48
L ÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA Prof. Dr. Daniel Caetano 2013 - 2 ESTRUTURAS DE DECISÃO

Upload: others

Post on 07-Oct-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA

Prof. Dr. Daniel Caetano

2013 - 2

ESTRUTURAS DE DECISÃO

Page 2: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Objetivos

• Entender a ideia de decisão

• Compreender como implementar decisões

• Compreender problemas com decisões múltiplas

• Entender a representação de uma estrutura de decisão composta

• PARA CASA – Lista Aula 8!

Page 3: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Material de Estudo

Material Acesso ao Material

Notas de Aula http://www.caetano.eng.br/ (Lógica de Programação – Aula 8)

Apresentação http://www.caetano.eng.br/ (Lógica de Programação – Aula 8) – PARCIAL

Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas 50 a 92.

Page 4: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

O QUE É DECISÃO?

Page 5: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Introdução • Até agora:

– programas fazem sempre a mesma tarefa!

Page 6: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Introdução

• Até agora, nossos programas...

– faziam sempre, exatamente, a mesma tarefa!

• Por quê?

• Porque não são capazes de tomar decisões!

NOTA < 6.0 Sim

Não

Início

Fim

Page 7: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

O que é Decisão para o Computador?

• Decidir: escolher se código será executado

Início

N

N < 6.0 “Reprovado” V

Fim

F

Nem sempre é executado!

Page 8: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

O que é Decisão para o Computador?

• Decidir: escolher se código será executado

• Com base em quê?

• Regra = proposição:

– verdadeiro → executa

– falso → não executa

• Exemplo:

– Imprimir “Reprovado”

Somente Se N < 6.0

Início

N

N < 6.0 “Reprovado” V

Fim

F

Page 9: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

DECISÃO NO CÓDIGO

Page 10: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Como Fica a Decisão no Código?

Início

N

N < 6.0 “Reprovado” V

Fim

F

• Se Nota < 6.0 imprime que aluno está reprovado

• Português Estruturado

Se N < 6.0 Entao

Escreva “Reprovado”

Page 11: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Como Fica a Decisão no Código? • Se Nota < 6.0 imprime

que aluno está reprovado e a sua nota

• Português Estruturado

Se N < 6.0 Entao

Inicio

Escreva “Reprovado: ”

Escreva N

FimSe

Início

N

N < 6.0 “Reprovado” V

Fim

F

N

Page 12: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Como Fica a Decisão no Código? • Português Estruturado Algoritmo “Verifica Reprovação”

Inicio

Real N

Escreva “Digite a nota: ”

Leia N

Se N < 6.0 Entao

Inicio

Escreva “Reprovado: ”

Escreva N

FimSe

FimAlgoritmo

Início

N

N < 6.0 “Reprovado” V

Fim

F

N

Page 13: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Como Fica a Decisão no Código?

Início

N

N < 6.0 “Reprovado” V

Fim

F

• Se Nota < 6.0 imprime que aluno está reprovado

• C / C++

if ( N < 6.0 )

cout << “Reprovado”;

Page 14: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Como Fica a Decisão no Código?

Início

N

N < 6.0 “Reprovado” V

Fim

F

• Se Nota < 6.0 imprime que aluno está reprovado e a sua nota

• C / C++

if ( N < 6.0 )

{

cout << “Reprovado: ”;

cout << N;

}

N

Page 15: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Como Fica a Decisão no Código? • C/C++ #include <iostream>

using namespace std;

main() // Verifica Reprovação

{

float N;

cout << “Digite a nota: ”;

cin >> N;

if ( N < 6.0 )

{

cout << “Reprovado: ”;

cout << N;

} }

Início

N

N < 6.0 “Reprovado” V

Fim

F

N

Page 16: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Forma Geral do Se / If • Português Estruturado

Se proposição_lógica Entao

Inicio

código a executar para proposição verdadeira

FimSe

• C / C++

if ( proposição_lógica )

{

código a executar para proposição verdadeira

}

Page 17: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Outro Exemplo de Decisão • Imprimir se número é par

Início

N

N%2 = 0 “É Par!” V

Fim

F

• Português Estruturado

Algoritmo “Verifica Paridade”

Inicio

Inteiro N

Escreva “Digite um número: ”

Leia N

Se N%2 = 0 Entao

Escreva “É Par!”

FimAlgoritmo

Page 18: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Como Fica a Decisão no Código?

• C/C++ #include <iostream>

using namespace std;

main() // Verifica Paridade

{

int N;

cout << “Digite um número: ”;

cin >> N;

if ( N%2 == 0 )

cout << “É Par!”;

}

Início

N

N%2 = 0 “É Par!” V

Fim

F

• Imprimir se número é par

Page 19: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Como Fica a Decisão no Código?

• C/C++ #include <iostream>

using namespace std;

main() // Verifica Paridade

{

int N;

cout << “Digite um número: ”;

cin >> N;

if ( N%2 == 0 )

cout << “É Par!”;

}

Início

N

N%2 = 0 “É Par!” V

Fim

F

• Imprimir se número é par

Page 20: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Comparadores • Por que em C/C++ usamos == ao invés de = ?

= significa atribuição (guardar valor em variável)

X = 5;

== significa comparação (resulta falso/verdadeiro)

X == 5;

Guarda o valor 5 na variável X

Verifica se X contém o valor 5

Muda X

Não Muda

X

Page 21: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Comparadores • Quais são os comparadores?

Comparador Exemplo Significado

== x == 2 Testa igualdade entre os elementos

> x > 2 Testa se um é maior que outro

>= x >= 2 Testa se um é maior ou igual a outro

< x < 2 Testa se um é menor que outro

<= x <= 2 Testa se um é menor ou igual a outro

!= x != 2 Testa se são diferentes

Page 22: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Exercício • Faça um programa que leia dois números

e responda se o primeiro é o maior

Comparador Significado

== Igualdade

> Maior

>= Maior ou Igual

< Menor

<= Menor ou Igual

!= Diferente

if ( proposição_lógica ) { código a executar }

• Verifica se é par #include <iostream>

using namespace std;

main() // Verifica Paridade

{

int N;

cout << “Digite um número:”;

cin >> N;

if ( N%2 == 0 )

cout << “É Par!”;

}

Page 23: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Exercício • Faça um programa que lê dois números

e responda se o primeiro é o maior

Início

N1, N2

N1 > N2 “Primeiro é

Maior!” V

Fim

F

Page 24: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Exercício • Faça um programa que lê

dois números e responda se o primeiro é o maior

Início

N1, N2

N1 > N2 “Primeiro é

Maior!” V

Fim

F

Algoritmo “Imprime se é Maior”

Inicio

Inteiro N1, N2

Escreva “Digite um número:”

Leia N1

Escreva “Digite outro número:”

Leia N2

Se N1 > N2 Entao

Escreva “Primeiro é maior!”

FimAlgoritmo

Page 25: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Exercício • Faça um programa que lê

dois números e responda se o primeiro é o maior

Início

N1, N2

N1 > N2 “Primeiro é

Maior!” V

Fim

F

#include <iostream>

using namespace std;

main() // Verifica maior número

{

int N1, N2;

cout << “Digite um número: ”;

cin >> N1;

cout << “Digite outro número: ”;

cin >> N2;

if ( N1 > N2 )

cout << “Primeiro é maior!”;

}

Page 26: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Exercício Resolvido

• Modifique o programa para que ele imprima também a mensagem “Tenha um bom dia” ao fim de sua execução

#include <iostream>

using namespace std;

main() // Verifica maior número

{

int N1, N2;

cout << “Digite um número: ”;

cin >> N1;

cout << “Digite outro número: ”;

cin >> N2;

if ( N1 > N2 )

cout << “Primeiro é maior!”;

}

Page 27: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Exercício Resolvido

Início

N1, N2

N1 > N2 “Primeiro é

Maior!” V

Fim

F

#include <iostream>

using namespace std;

main() // Verifica maior número

{

int N1, N2;

cout << “Digite um número: ”;

cin >> N1;

cout << “Digite outro número: ”;

cin >> N2;

if ( N1 > N2 )

cout << “Primeiro é maior!”;

cout << “Tenha um bom dia!”;

}

“Tenha um bom dia!”

Page 28: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Exercício Resolvido

• Como imprimir ambas as mensagens apenas quando N1 for maior que N2?

#include <iostream>

using namespace std;

main() // Verifica maior número

{

int N1, N2;

cout << “Digite um número: ”;

cin >> N1;

cout << “Digite outro número: ”;

cin >> N2;

if ( N1 > N2 )

cout << “Primeiro é maior!”;

cout << “Tenha um bom dia!”;

}

Page 29: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Exercício Resolvido

Início

N1, N2

N1 > N2 “Primeiro é

Maior!” V

Fim

F

#include <iostream>

using namespace std;

main() // Verifica maior número

{

int N1, N2;

cout << “Digite um número: ”;

cin >> N1;

cout << “Digite outro número: ”;

cin >> N2;

if ( N1 > N2 )

{

cout << “Primeiro é maior!”;

cout << “Tenha um bom dia!”;

} }

“Tenha um bom dia!”

Page 30: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Exercício Resolvido – Compare! #include <iostream>

using namespace std;

main() // Verifica maior número

{

int N1, N2;

cout << “Digite um número: ”;

cin >> N1;

cout << “Digite outro número: ”;

cin >> N2;

if ( N1 > N2 )

{

cout << “Primeiro é maior!”;

cout << “Tenha um bom dia!”;

} }

#include <iostream>

using namespace std;

main() // Verifica maior número

{

int N1, N2;

cout << “Digite um número: ”;

cin >> N1;

cout << “Digite outro número: ”;

cin >> N2;

if ( N1 > N2 )

cout << “Primeiro é maior!”;

cout << “Tenha um bom dia!”;

}

Page 31: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

DECISÕES MÚLTIPLAS

Page 32: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Múltiplas Decisões

• Tudo pode ser feito com uma única decisão?

• E se quisermos:

a) Imprime “É Par!” se o número for par

b) Imprime “É Ímpar!” se o número for ímpar

• Podemos fazer isso com duas decisões!

Page 33: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Múltiplas Decisões

#include <iostream>

using namespace std;

main() // Verifica Paridade

{ int N; cout << “Digite um número: ”; cin >> N; if ( N%2 == 0 ) cout << “É Par!”; if ( N%2 == 1 ) cout << “É Ímpar!”;

}

• Verificar se número é par ou ímpar

Início

N

N%2 = 0 “É Par!” V

Fim

F

N%2 = 1 “É Ímpar!” V

F

Page 34: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Exercício • Modifique o programa do exercício anterior para

que leia dois números e responda se o primeiro é maior ou se o segundo é o maior

#include <iostream>

using namespace std;

main() // Verifica Maior Número

{

int N1, N2;

cout << “Digite um número: ”;

cin >> N1;

cout << “Digite outro número: ”;

cin >> N2;

if ( N1 > N2 )

cout << “Primeiro é maior!”;

}

Page 35: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Exercício

• Modifique o programa do exercício anterior para que leia dois números e responda se o primeiro ou o segundo é o maior

Início

N1, N2

N1 > N2 “Primeiro é

Maior” V

Fim

F

N1 < N2 “Segundo é

Maior” V

F

Page 36: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Exercício • Modifique o programa

para que leia 2 números e responda se o primeiro ou o segundo é o maior

Início

N1, N2

N1 > N2 “Primeiro é

Maior” V

Fim

F

N1 < N2 “Segundo é

Maior” V

F

#include <iostream>

using namespace std;

main() // Verifica Maior Número

{

int N1, N2;

cout << “Digite um número: ”;

cin >> N1;

cout << “Digite outro número: ”;

cin >> N2;

if ( N1 > N2 )

cout << “Primeiro é maior!”;

if ( N1 < N2 )

cout << “Segundo é maior!”;

}

Page 37: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

ESTRUTURA DE DECISÃO COMPOSTA

Page 38: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Estrutura de Decisão Composta

• Observe o fluxograma...

Início

N

N%2 = 0 “É Par!” V

Fim

F

N%2 = 1 “É Ímpar!” V

F

Page 39: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Estrutura de Decisão Composta

• Observe este outro... São iguais?

Início

N

N%2 = 0 “É Par!” V

Fim

F

N%2 = 1 “É Ímpar!” V

F

Início

N

N%2 = 0

“É Par!”

V

Fim

F

“É Ímpar!”

Page 40: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Estrutura de Decisão Composta

• Observe este outro... São iguais?

Início

N

N%2 = 0 “É Par!” V

Fim

F

N%2 = 1 “É Ímpar!” V

F

Início

N

N%2 = 0

“É Par!”

V

Fim

F

“É Ímpar!”

Podem ser ambas verdadeiras ou ambas falsas

simultaneamente?

Page 41: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Forma do Se~Senao

• Português Estruturado

Se proposição_lógica Entao

Inicio

código a executar para proposição verdadeira

FimSe

Senao

Inicio

código a executar para proposição falsa

FimSenao

Page 42: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Forma do If~else

• C / C++

if ( proposição_lógica )

{

código a executar para proposição verdadeira

}

else

{

código a executar para proposição falsa

}

Page 43: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Exercício • Faça um programa que receba a nota de

um aluno e responda que ele está aprovado se a nota for maior ou igual a 6,0 e reprovado caso contrário

Page 44: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Exercício

• Faça um programa que receba a nota de um aluno e responda que ele está aprovado se a nota for maior ou igual a 6,0 e reprovado caso contrário

Início

N

N ≥ 6.0

“Reprovado”

F

Fim

V

“Aprovado”

Page 45: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Exercício • Faça um programa que receba a

nota de um aluno e responda que ele está aprovado se a nota for maior ou igual a 6,0 e reprovado caso contrário

Início

N

N ≥ 6.0

“Reprovado”

F

Fim

V

“Aprovado”

• C/C++ #include <iostream>

using namespace std;

main()

{

float N;

cout << “Digite a nota: ”;

cin >> N;

if ( N >= 6.0 )

cout << “Aprovado”;

else

cout << “Reprovado”;

}

Page 46: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

CONCLUSÕES

Page 47: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

Resumo

• Estruturas de decisão: comportamento muda

– De acordo com proposições lógicas

• Estruturas de decisão: trazem flexibilidade

– Computador resolve sequências de cálculos sem intervenção humana

• TAREFA: Lista Aula 8!

• Como tomar decisões mais complexas?

– Combinando decisões múltiplas!

Page 48: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA (Lógica de Programação – Aula 8) – PARCIAL Material Didático Fundamentos da Programação de Computadores – Parte 1 – Páginas

PERGUNTAS?