iec037 introdução à programação de computadores aula 05 ...€¦ · iec037 introdução à...
TRANSCRIPT
![Page 1: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/1.jpg)
IEC037Introdução à Programação de
ComputadoresAula 05 – Estruturas Condicionais
Turmas: 01A / 01B / 01CProfessora: Fabíola NakamuraE-mail: [email protected]ágina: iccufam.weebly.com
![Page 2: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/2.jpg)
Problema Inicial
Dois jogadores lançam dados. Ganha aquele que tirar a face com maior número.
Como determinar quem ganhou? Ou se houve empate?
![Page 3: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/3.jpg)
Tentativa de Solução:: Estrutura Sequencial
Este problema requer uma alteração no fluxo de execução do fluxograma.
É necessário incluir alguma forma de ramificação, com um teste de condição para decidir qual ramo seguir durante a execução do algoritmo.
início
início
Lançar Dado1
Lançar Dado2
Comparar Dado1 com
Dado2
Decidir ganhador
fim??
![Page 4: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/4.jpg)
Estruturas Condicionais
Permitem alterar o fluxo de execução, de modo a selecionar qual parte do algoritmo deve ser executada.
Essa decisão é tomada a partir de uma condição, que pode resultar apenas em: Verdade, ou Falsidade
dado1 < dado2
dado1 < dado2
condição
![Page 5: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/5.jpg)
Estruturas Condicionais Simples Condição é
verdadeira: “bloco verdade” é
executado. Condição é falsa:
“bloco verdade” não é executado.
Na condição simples, não há ação alternativa para a condição falsa.
Próximaação
Próximaação
Exibir “Não tem raiz
real”
Exibir “Não tem raiz
real”
delta < 0
delta < 0
FF
VV
![Page 6: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/6.jpg)
Estrutura Condicional Simples:: Exemplo
No fluxograma, a condição de decisão é representada por um losango.
A ramificação do fluxo de execução é indicada pelas próprias setas.
Os círculos são conectores, que indicam que os blocos fazem parte de um fluxograma mais extenso.
olhar o céuolhar o céu
acenderluz
acenderluz
escuro?
escuro?
FF
VV
![Page 7: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/7.jpg)
Estrutura Condicional Simples:: Analogia
Pense a execução de um programa como a direção de um carro.
Enquanto há retas, você só tem de seguir em frente. Somente nas bifurcações você terá de tomar decisões.
Uma vez decido o caminho, você somente percorre ou um ou outro, mas nunca ambos.
?
![Page 8: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/8.jpg)
Estrutura Condicional Composta
Condição é verdadeira: “bloco verdade” é
executado. Condição é falsa:
“bloco alternativo” é executado.
Na condição composta, há uma ação alternativa caso a condição seja avaliada como falsa.
Próximaação
Próximaação
AprovadoAprovado
Média ≥ 5
Média ≥ 5
FF
VV
ReprovadoReprovado
![Page 9: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/9.jpg)
Estrutura Condicional Composta:: Exemplo
início
início
olhar a vovóolhar a vovó
fimfim
Entregar cesta de comida
Entregar cesta de comida
narizgrande?
narizgrande?
FF
Chamar caçadorChamar caçador
VV
![Page 10: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/10.jpg)
Verdadeiro
Verdadeiro
FalsoFalso
Uma condição possui apenas dois resultados possíveis
O resultado de uma condição só pode ser:
![Page 11: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/11.jpg)
Condições são expressões booleanas
Expressões que resultam em apenas dois valores (verdadeiro/falso, sim/não, zero/um) são conhecidas como expressões booleanas.
Este nome vem do matemático inglês George Boole (1815–1864), que lançou os fundamentos da lógica matemática.
![Page 12: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/12.jpg)
Como montar uma condição? Uma condição resulta da combinação
dos seguintes elementos: Operandos (valores aritméticos) Operadores (sinais que representam
operações)
ResultadoResultado
Operador
OperadorOperando1Operando1 Operando
2Operando
2
![Page 13: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/13.jpg)
Operadores
Aritméticos
Relacionais
Lógicos
Tipos de operadores
![Page 14: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/14.jpg)
Operadores Relacionais
São utilizados para a estabelecer relação de comparação entre valores numéricos.
Operador
Operação Exemplos
== Igual a 3 == 3 20 == 18
> Maior que 5 > 4 10 > 11
< Menor que 3 < 6 9 < 7
≥ Maior ou igual a 5 ≥ 3 4 ≥ 4
≤ Menor ou igual a 3 ≤ 5 7 ≤ 7
≠ Diferente de 8 ≠ 9 2 ≠ 2
![Page 15: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/15.jpg)
Operadores relacionais × aritméticos:: Formato
Resultado
Operador
aritmético
Operando1
Operando2
número número
número
Resultado
Operador
relacional
Operando1
Operando2
número número
Verdadeiro/falso
OperadoresAritméticosOperadoresAritméticos
OperadoresRelacionaisOperadoresRelacionais
![Page 16: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/16.jpg)
Operadores relacionais × aritméticos:: Prioridade
Na dúvida, use
parênteses.
Prioridade
Operador
1Parênteses mais internos
2Operadores aritméticos
3Operadores relacionais
Da esquerda
para a direita
![Page 17: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/17.jpg)
Como avaliar uma condição? Operadores relacionais têm menor
prioridade que os operadores aritméticos.
2 + 3 > 10 % 6
5 > 4
V
![Page 18: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/18.jpg)
Como avaliar uma condição?:: Exercício
Expressão Verdadeiro
Falso Mal formada
x + y > 6
x - 1 + y == 4
x ** y == x * y
y - 5 = z - 9
1 - z ≠ 4 < 11
x + 8 % z ≥ y * 6 – 15
Considere: x ← 2, y ← 3, z ← 7
![Page 19: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/19.jpg)
Como avaliar uma condição?:: Exercício
Expressão Verdadeiro
Falso Mal formada
x + y > 6 X
x - 1 + y == 4 X
x ** y == x * y X
y - 5 = z - 9 X
1 - z ≠ 4 < 11 X
x + 8 % z ≥ y * 6 – 15
X
Considere: x ← 2, y ← 3, z ← 7
![Page 20: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/20.jpg)
Qual a diferença entre os símbolos “←” e “==” ?
O símbolo “←” indica uma atribuição de valor. O valor da variável à esquerda do símbolo é
modificado pelo valor à direita.
O símbolo “==” indica uma comparação de valores. Nenhum valor é modificado. Eles são
apenas comparados, produzindo um resultado lógico (V ou F).
x ← x + 1x ← x + 1
x == 2x == 2
![Page 21: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/21.jpg)
Problema 1
Uma lata de leite em pó da marca A, com 400g, custa R$ 8,39.
Um saco de leite em pó da marca B, com 1kg, custa R$ 20,30.
Qual marca tem o melhor preço?
![Page 22: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/22.jpg)
Problema 1:: Definir Entradas e Saídas
GrandezaUnidade de
medidaFaixa de valores
Entradas
Saídas
GrandezaUnidade de
medidaFaixa de valores
Entradas
PrecoA R$ 8,39
PesoA kg 0,4
PrecoB R$ 20,30
PesoB kg 1,0
SaídasMarca com menor
Preço/Peso--- A ou B
![Page 23: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/23.jpg)
Problema 1:: Solução
FF
VV
inícioinícioPrecoA, PesoA
PrecoB, PesoB
PrecoA, PesoA
PrecoB, PesoB
fimfim
Comprar marca AComprar marca A
rA > rBrA > rB
Comprar marca BComprar marca B
rA ← PrecoA/PesoA
rB ← PrecoB/PesoB
rA ← PrecoA/PesoA
rB ← PrecoB/PesoB
![Page 24: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/24.jpg)
20,975
20,30
Problema 1:: Testando a Solução (1)
inícioinícioPrecoA, PesoA
PrecoB, PesoB
PrecoA, PesoA
PrecoB, PesoB
Comprar marca A
F
VV
rA ← PrecoA/PesoA
rB ← PrecoB/PesoB
rA ← PrecoA/PesoA
rB ← PrecoB/PesoB
8,39
0,4
20,30
1,0
PesoA
PrecoA
PrecoB
PesoB
Memória
rA
rB
fimfim
Comprar marca BComprar marca B
rA > rBrA > rB
![Page 25: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/25.jpg)
17,5
20
Problema 1:: Testando a Solução (2)
7,00
0,4
20
1,0
PesoA
PrecoA
PrecoB
PesoB
Memória
rA
rB
início
início
PrecoA, PesoA
PrecoB, PesoB
PrecoA, PesoA
PrecoB, PesoB
fimfim
FF
Comprar marca B
V
rA ← PrecoA/PesoA
rB ← PrecoB/PesoB
rA ← PrecoA/PesoA
rB ← PrecoB/PesoB
Comprar marca AComprar marca A
rA > rBrA > rB
![Page 26: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/26.jpg)
Problema 2
FF
VV
Qual o valor de L para:1. x = 6 e y = 72. x = 4 e y = 83. x = 129873645467
e y = 182163623686329
Qual o valor de L para:1. x = 6 e y = 72. x = 4 e y = 83. x = 129873645467
e y = 182163623686329
início
início
xyxy
fimfim
L ← 33L ← 33
z == 0z == 0
L ← 55L ← 55
z ← x * y % 2z ← x * y % 2
LL
![Page 27: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/27.jpg)
Problema 2:: Solução
FF
VV
Se o produto x*y for par → zeroSe o produto x*y for ímpar → um
Fluxo de execução só passa aqui se (x*y) for par.
x y x*y L
Par Par Par 55
Par Ímpar
Par 55
Ímpar
Par Par 55
Ímpar
Ímpar
Ímpar
33
início
início
xyxy
fimfim
L ← 33L ← 33
z == 0z == 0
L ← 55L ← 55
z ← x * y % 2z ← x * y % 2
LL
![Page 28: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/28.jpg)
Problema 3
FF
VV
início
início
A, BA, B
fimfim
A ← 0A ← 0
A > BA > B
B ← A + 1B ← A + 1
A, BA, B
B ← A + 1B ← A + 1 A ← 0A ← 0
A condição está servindo para alguma coisa, já que A e B parecem ser sempre os mesmos nos dois ramos?
![Page 29: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/29.jpg)
Problema 3:: Solução
FF
VV
início
início
A, BA, B
fimfim
A ← 0A ← 0
A > BA > B
B ← A + 1B ← A + 1
A, BA, B
B ← A + 1B ← A + 1 A ← 0A ← 0
85B
A
Memória
11
22
33
44
55
11
89B
A
22
09B
A
33
47B
A
11
07B
A
44
01B
A
55
33B
A
11
03B
A
44
01B
A
55
![Page 30: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/30.jpg)
Problema inicial:: Nova tentativa de solução
Dois jogadores lançam dados. Ganha aquele que tirar a face com maior número.
Como determinar quem ganhou? Ou se houve empate?
VV
FF
início
início
Lançar D1Lançar D1
Lançar D2Lançar D2
Jogador 1 ganhouJogador
1 ganhou
fimfim
D1 > D2D1 > D2
Jogador 2 ganhouJogador
2 ganhou??
![Page 31: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/31.jpg)
Condições encadeadas
Condições encadeadas (ou aninhadas) ocorrem quando há necessidade de se testar uma condição interna a outra, a partir de uma combinação de decisões.
Tal situação pode ocorrer em virtude do leque de possibilidades apresentadas em um problema.
![Page 32: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/32.jpg)
Condições encadeadas:: Problema inicial
No problema inicial, temos 03 situações possíveis:
Porém, o algoritmo pode testar apenas uma única condição por vez.
D1D1 D2D2
D1 > D2
Jogador 1 ganha
D2 > D1
Jogador 2 ganha
D2 == D1
Empate
![Page 33: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/33.jpg)
Árvore de decisão
Para estruturar corretamente o encadeamento das condições, devemos montar uma árvore de decisão.
D1 > D2
D2 > D1
J1 ganhou
V
J2 ganhou
F
empate
V F
![Page 34: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/34.jpg)
Problema inicial:: Solução Final
VV
FF
início
início
Lançar D1
Lançar D1
Lançar D2
Lançar D2
Jogador 1 ganhouJogador
1 ganhou
fimfim
D1 > D2D1 > D2
![Page 35: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/35.jpg)
Problema inicial:: Solução Final
VV
FF
VV
FF
início
início
Lançar D1
Lançar D1
Lançar D2
Lançar D2
Jogador 1 ganhouJogador
1 ganhou
fimfim
D1 > D2D1 > D2
EmpateEmpate
D2 > D1D2 > D1
Jogador 2 ganhouJogador
2 ganhou
![Page 36: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/36.jpg)
Problema inicial:: Apenas duas setas no mesmo conector
VV
FF
VV
FF
início
início
Lançar D1
Lançar D1
Lançar D2
Lançar D2
Jogador 1 ganhouJogador
1 ganhou
fimfim
D1 > D2D1 > D2
EmpateEmpate
D2 > D1D2 > D1
Jogador 2 ganhouJogador
2 ganhou
• Não conecte a saída de diferentes condições no mesmo conector.
• Exemplo: e se fosse preciso exibir a mensagem “Jogador 1 não ganhou” após se conhecer o resultado?
![Page 37: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/37.jpg)
Problema inicial:: Testando Solução Final
VV
FF
VV
FF
início
início
Lançar D1
Lançar D1
Lançar D2
Lançar D2
Jogador 1 ganhouJogador
1 ganhou
fimfim
D1 > D2D1 > D2
EmpateEmpate
D2 > D1D2 > D1
Jogador 2 ganhouJogador
2 ganhou
D1 = 6 e D2 = 1D1 = 1 e D2 = 4D1 = 5 e D2 = 5
![Page 38: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/38.jpg)
Problema inicial:: Existem outras soluções possíveis?
VV
FF
VV
FF
início
início
Lançar D1
Lançar D1
Lançar D2
Lançar D2
??
fimfim
??
??
??
??
![Page 39: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/39.jpg)
Problema 4
Projete um algoritmo para uma máquina caça-níquel que gere 3 números aleatórios.
Se os três números forem iguais, o jogador ganha. Caso contrário, ele perde.
![Page 40: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/40.jpg)
Problema 4:: Árvore de decisão
N1 == N2
N2 == N3
perdeu
F
perdeu
V
ganhou
F V
![Page 41: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/41.jpg)
Problema 4:: Solução parcial
FF
VV
início
início
Gerar N1, N2, N3
Gerar N1, N2, N3
Perdeu!Perdeu!
fimfim
N1 == N2N1 == N2
![Page 42: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/42.jpg)
Problema 4:: Solução Final
FF
VV
FF
VV
início
início
Gerar N1, N2, N3
Gerar N1, N2, N3
Perdeu!Perdeu!
fimfim
N1 == N2N1 == N2
Ganhou!Ganhou!
N2 == N3N2 == N3
Perdeu!Perdeu!
![Page 43: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/43.jpg)
Problema 4:: Testando Solução Final
FF
VV
FF
VV
início
início
Gerar N1, N2, N3
Gerar N1, N2, N3
Perdeu!Perdeu!
fimfim
N1 == N2N1 == N2
Ganhou!Ganhou!
N2 == N3N2 == N3
Perdeu!Perdeu!
N1 = 1, N2 = 2, N3 = 3N1 = 3, N2 = 2, N3 = 3N1 = 5, N2 = 5, N3 = 4N1 = 7, N2 = 7, N3 = 7
![Page 44: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/44.jpg)
Problema 5
A equação de uma circunferência de raio R é .
Escreva um algoritmo que, dado um ponto P qualquer, verifique se ele se encontra ou não no interior da região do plano delimitada pela circunferência.
y
x
R
![Page 45: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/45.jpg)
Problema 5:: Definir Entradas e Saídas
GrandezaUnidade de
medidaFaixa de valores
Entradas
Saídas
GrandezaUnidade de
medidaFaixa de valores
Entradas
R --- > 0Coordenada X de
P---
Coordenada Y de P
---
Saídas Localização de P ---Interior, exterior, na circunferência
GrandezaUnidade de
medidaFaixa de valores
Entradas
R --- > 0Coordenada X de
P---
Coordenada Y de P
---
Saídas Localização de P ---Interior, exterior, na circunferência
![Page 46: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/46.jpg)
Problema 5:: Árvore de decisão
X**2 + Y**2 == R**2
X**2 + Y**2 < R**2
Na circunferênc
ia
V
P é interno
F
P é externo
V F
![Page 47: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/47.jpg)
Problema 5:: Solução parcial
VV
FF
início
início
R, X, YR, X, Y
Na circunferênc
ia
Na circunferênc
ia
fimfim
C1C1
X**2 + Y**2 == R**2C1
![Page 48: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/48.jpg)
Problema 5:: Solução Final
VV
FF
fimfim
ExternoExterno
C2C2
InternoInterno
VV
FF
início
início
R, X, YR, X, Y
Na circunferênc
ia
Na circunferênc
ia
C1C1
X**2 + Y**2 == R**2C1
X**2 + Y**2 < R**2C2
![Page 49: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/49.jpg)
Problema 5:: Testando Solução Final
VV
FF
fimfim
ExternoExterno
C2C2
InternoInterno
VV
FF
início
início
R, X, YR, X, Y
Na circunferênc
ia
Na circunferênc
ia
C1C1
X**2 + Y**2 == R**2C1
X**2 + Y**2 < R**2C2
R = 1, X = 3, Y = 4R = 10, X = -4, Y = -3R = 13, X = 5, Y = -12
![Page 50: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/50.jpg)
Projeto de estruturas condicionais Todo comando de um fluxograma deve
contribuir para a solução do problema. Todas as alternativas de uma estrutura
condicional devem ter a possibilidade de serem executadas para alguma combinação de entradas.
Veja o contra-exemplo a seguir.
![Page 51: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/51.jpg)
Projeto de estruturas condicionais:: Erros a evitar
VV
FF
A é positivo
A é positivo
fimfim
É possível chegar aqui?
É possível chegar aqui?
A ≤ 0A ≤ 0
A não é positivoA não é positivo
VV
FF
início
início
Ler A
Ler A
A > 0A > 0
![Page 52: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/52.jpg)
Projeto de estruturas condicionais:: Correção 1
A é positivo
A é positivo
fimfim
A não é positivoA não é positivo
VV
FF
início
início
Ler A
Ler A
A > 0A > 0
![Page 53: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/53.jpg)
Projeto de estruturas condicionais:: Correção 2
VV
FF
A é positivo
A é positivo
fimfim
A é zeroA é zero
A < 0A < 0
A é negativo
A é negativo
VV
FF
início
início
Ler A
Ler A
A > 0A > 0
![Page 54: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/54.jpg)
Referências bibliográficas
Menezes, Nilo Ney Coutinho (2010). Introdução à Programação com Python. Editora Novatec.
Farrer, Harry (2011). Algoritmos Estruturados, 3ª edição. Editora LTC.
Forbellone, A. L. V.; Eberspächer, H. F. (2006) Lógica de Programação, 3ª edição. Pearson.
HETLAND, Magnus Lie (2008). Beginning Python: From Novice to Professional. Springer eBooks, 2ª edição. Disponível em: http://dx.doi.org/10.1007/978-1-4302-0634-7.
![Page 55: IEC037 Introdução à Programação de Computadores Aula 05 ...€¦ · IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais Turmas: 01A / 01B](https://reader034.vdocuments.net/reader034/viewer/2022052018/6031e916fa373d1c817a9177/html5/thumbnails/55.jpg)
Dúvidas?