Upload
ngodiep
View
218
Download
0
Embed Size (px)
Citation preview
1
Aula 06 – Lógica de Programação: Estruturas condicionais
BC-0005 Bases Computacionais da Ciência
Prof. Rodrigo Hausenhttp://bcc.compscinet.org(baseado nos slides do Prof. Jesús P. Mena-Chalco)
2
Programar...
Aprender a programar envolve raciocinar sobre abstrações
Nessa aula veremos um conceito mais elaborado:
→ As estruturas condicionais.
3
Estruturas de controle
Estruturas de controle permitem ao programador dominar o fluxo de execução dos comandos.
Temos três estruturas básicas de controle:
SequencialCondicional ou Desvio (if)Repetição
4
Estrutura sequencial
Estrutura padrão em toda forma de algoritmo.
Conjunto de comandos que serão executados em sequência linear, de cima para baixo.
Comando 1
Comando 2
Comando 3
…
Comando N
5
Estrutura sequencial
Comando 1
Comando 2
Comando 3
…
Comando N
Estrutura padrão em toda forma de algoritmo.
Conjunto de comandos que serão executados em sequência linear, de cima para baixo.
6
Estrutura sequencial
Comando 1
Comando 2
Comando 3
…
Comando N
Estrutura padrão em toda forma de algoritmo.
Conjunto de comandos que serão executados em sequência linear, de cima para baixo.
7
Estrutura sequencial
Comando 1
Comando 2
Comando 3
…
Comando N
Estrutura padrão em toda forma de algoritmo.
Conjunto de comandos que serão executados em sequência linear, de cima para baixo.
8
Estrutura sequencial
Comando 1
Comando 2
Comando 3
…
Comando N
Estrutura padrão em toda forma de algoritmo.
Conjunto de comandos que serão executados em sequência linear, de cima para baixo.
9
Estrutura condicional
É também conhecida como de decisão ou seleção
Um desvio condicional é usado para escolher entre cursos alternativos de ação em um programa
10
Estrutura condicional
Estrutura/desvio condicional simples (se-então)
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
11
Estrutura condicional
Estrutura/desvio condicional simples (se-então)
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
12
Estrutura condicional
Estrutura/desvio condicional simples (se-então)
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
13
Estrutura condicional
Estrutura/desvio condicional simples (se-então)
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
14
Estrutura condicional
Estrutura/desvio condicional simples (se-então)
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
15
Estrutura condicional
Estrutura/desvio condicional simples (se-então)
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
16
Estrutura condicional
Estrutura/desvio condicional simples (se-então)
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
17
Estrutura condicional
Estrutura/desvio condicional simples (se-então)
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
18
Estrutura condicional
Estrutura/desvio condicional simples (se-então)
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
19
Estrutura condicional
Estrutura/desvio condicional simples (se-então)
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
20
Estrutura condicional
Estrutura/desvio condicional simples (se-então)
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
21
Estrutura condicional
E se a condição for falsa?
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
22
Estrutura condicional
E se a condição for falsa?
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
23
Estrutura condicional
E se a condição for falsa?
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
24
Estrutura condicional
E se a condição for falsa?
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
25
Estrutura condicional
E se a condição for falsa?
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
26
Estrutura condicional
E se a condição for falsa?
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
27
Estrutura condicional
E se a condição for falsa?
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
28
Estrutura condicional
E se a condição for falsa?
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
29
Estrutura condicional
Estrutura/desvio condicional composta(o) (se-então-senão)
30
Estrutura condicional
Estrutura/desvio condicional composta(o) (se-então-senão)
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
comandocomando
…comando
31
Estrutura condicional
Estrutura/desvio condicional composta(o) (se-então-senão)
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
comandocomando
…comando
32
Estrutura condicional
Estrutura/desvio condicional composta(o) (se-então-senão)
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
comandocomando
…comando
33
Estrutura condicional
Estrutura/desvio condicional composta(o) (se-então-senão)
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
comandocomando
…comando
34
Estrutura condicional
Estrutura/desvio condicional composta(o) (se-então-senão)
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
comandocomando
…comando
35
Estrutura condicional
Estrutura/desvio condicional composta(o) (se-então-senão)
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
comandocomando
…comando
36
Estrutura condicional
Estrutura/desvio condicional composta(o) (se-então-senão)
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
comandocomando
…comando
37
Estrutura condicional
Estrutura/desvio condicional composta(o) (se-então-senão)
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
comandocomando
…comando
38
Estrutura condicional
Estrutura/desvio condicional composta(o) (se-então-senão)
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
comandocomando
…comando
39
Estrutura condicional
Estrutura/desvio condicional composta(o) (se-então-senão)
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
comandocomando
…comando
40
Estrutura condicional
Estrutura/desvio condicional composta(o) (se-então-senão)
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
comandocomando
…comando
41
Estrutura condicional
E se a condição for falsa?
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
comandocomando
…comando
42
Estrutura condicional
E se a condição for falsa?
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
comandocomando
…comando
43
Estrutura condicional
E se a condição for falsa?
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
comandocomando
…comando
44
Estrutura condicional
E se a condição for falsa?
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
comandocomando
…comando
45
Estrutura condicional
E se a condição for falsa?
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
comandocomando
…comando
46
Estrutura condicional
E se a condição for falsa?
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
comandocomando
…comando
47
Estrutura condicional
E se a condição for falsa?
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
comandocomando
…comando
48
Estrutura condicional
E se a condição for falsa?
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
comandocomando
…comando
49
Estrutura condicional
E se a condição for falsa?
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
comandocomando
…comando
50
Estrutura condicional
E se a condição for falsa?
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
comandocomando
…comando
51
Estrutura condicional
E se a condição for falsa?
…comandocomandocomando
condição
comandocomando
…comando
verdadeira
comandocomando
…
falsa
comandocomando
…comando
55
Operadores de comparação
-->a = 10;-->b = 20;
-->a == b ans = F -->a*2 == b ans = T
56
Operadores de comparação
-->a = 10;-->b = 20;
-->a == b ans = F -->a*2 == b ans = T
operador de comparação
significado
== igual a
~= diferente de
< menor que
> maior que
<= menor ou igual a
>= maior ou igual a
Cuidado! Jamais confunda a atribuição (=) com o operador de comparação de igualdade (==)
57
(1) Valor absoluto de um número
-->valorAbsoluto(10) ans = 10. -->valorAbsoluto(-10) ans = 10.
58
(1) Valor absoluto de um número
59
Função modulo do Scilab
Teste as seguintes instruções. O que faz esta função?
-->modulo(0, 2)-->modulo(1, 2)-->modulo(2, 2)-->modulo(2, 2)
-->modulo(11, 3)-->modulo(17, 3) -->modulo(15, 5)-->modulo(15, 8)
-->modulo(15, 18)
60
Função modulo do Scilab
Teste as seguintes instruções. O que faz esta função?
-->modulo(0, 2)-->modulo(1, 2)-->modulo(2, 2)-->modulo(2, 2)
-->modulo(11, 3)-->modulo(17, 3) -->modulo(15, 5)-->modulo(15, 8)
-->modulo(15, 18)
No Scilab, a função modulo(n,d) nos dá o resto da divisão inteira de n por d.
n d
resto quociente
modulo(n,d)
61
(2) Número par
function identificaPar(numero) if modulo(numero, 2) == 0 then disp("O número é par") else disp("O número é ímpar") endendfunction
mostra mensagem no console (“display”)
62
(2) Número par
function identificaPar(numero) if modulo(numero, 2) == 0 then disp("O número é par") else disp("O número é ímpar") endendfunction
mostra mensagem no console (“display”)
E se quisermos, em vez de mostrar uma mensagem, apenas retornar um valor verdade: verdadeiro / falso ?
63
Constantes lógicas
Representação dos valores verdade no Scilab:● Verdadeiro (true) é %t● Falso (false) é %f
64
(2) Número par
function identificaPar(numero) if modulo(numero, 2) == 0 then disp("O número é par") else disp("O número é ímpar") endendfunction
function resp = ePar(numero) if modulo(numero, 2) == 0 then resp = %t else resp = %f endendfunction
65
(2) Número par
function identificaPar(numero) if modulo(numero, 2) == 0 then disp("O número é par") else disp("O número é ímpar") endendfunction
function resp = ePar(numero) if modulo(numero, 2) == 0 then resp = %t else resp = %f endendfunction
66
(3) Maior elemento
Crie uma função para, dados dois números como parâmetros, determinar o maior deles.
Exemplos:
-->maiorElemento(13, 15) ans = 15. -->maiorElemento(15, 13) ans = 15.
67
(3) Maior elemento
68
(4) Cara ou coroa
-->caraOuCoroa() ans = coroa -->caraOuCoroa() ans = cara
69
Operadores lógicos
-->%t & %f ans = F -->%t | %f ans = T
70
Operadores lógicos
-->a = 10;-->b = 20;
-->a<=b & a==10 ans = T
71
Operadores lógicos
-->a = 10;-->b = 20;
-->a<=b & a==10 ans = T
x y x & y
V V V
V F F
F V F
F F F
tabela verdade“e” lógico
72
Operadores lógicos
-->a = 10;-->b = 20;
-->a<=b & a==10 ans = T -->a<0 | b<0 ans = F
tabela verdade“e” lógico
x y x & y
V V V
V F F
F V F
F F F
73
Operadores lógicos
-->a = 10;-->b = 20;
-->a<=b & a==10 ans = T -->a<0 | b<0 ans = F
tabela verdade“e” lógico
tabela verdade“ou” lógico
x y x & y
V V V
V F F
F V F
F F F
x y x | y
V V V
V F V
F V V
F F F
74
Operadores lógicos
tabela verdade“ou” lógico
-->a = 10;-->b = 20;
-->~(a<0 | b<0) ans = T
negaçãotabela verdade
“não” lógico
x ~x
V F
F V
x y x | y
V V V
V F V
F V V
F F F
75
(5) Quantidade de dias no mês
Crie uma função para determinar a quantidade de dias para um determinado mês do ano.
-->quantidadeDeDias(1 ) ans = 31.
-->quantidadeDeDias(2 ) ans = 28.
Nota: Assuma ano não bissexto.
123456789
101112
76
(5) Quantidade de dias no mês
77
(6) Ano Bissexto
Ano bissexto:- De 400 em 400 anos é ano bissexto.- De 100 em 100 anos não é ano bissexto.- De 4 em 4 anos é ano bissexto.- Prevalecem as primeiras regras sobre as últimas.
São bissextos todos os anos múltiplos de 400. p.ex: 1600, 2000, 2400, 2800...São bissextos todos os múltiplos de 4 e não múltiplos de 100. p.ex: 1996, 2004, 2008, 2012, 2016…Não são bissextos todos os demais anos.
Se (ano divisível por 400 ou (ano divisível por 4 e ano não divisível por 100))Então
O ano é bissextoSenão
O ano não é bissexto
78
(6) Ano Bissexto
-->anoBissexto(2000) ans = T
-->anoBissexto(2016) ans = T
-->anoBissexto(2100) ans = F
function bissexto = anoBissexto(ano) if ( modulo(ano,400)==0 | .. (modulo(ano,4)==0 & modulo(ano,100)~=0) ) then bissexto = %t else bissexto = %f endendfunction
comando em maisde uma linha
79
(7) Índice de massa corporal
Crie uma função para que, dado como parâmetros o peso (em kgr), a altura (em metros), se determine o índice de massa corporal e sua classificação. IMC = Peso/Altura²
-->IMC(55, 1.65) ans = 20.20202
80
(7) Índice de massa corporal
--> [imc, classificacao] = IMC(55, 1.65) classificacao = peso normal imc = 20.20202
81
Atividade 06: Tidia-ae
Considere a seguinte tabela e equação para determinar o IMCde uma pessoa.
Crie uma função para que, dada como entrada o peso (em kgr), a altura (em metros), e o gênero ('homem' ou 'mulher') seja determinado tanto o IMC quanto a sua classificação.
Exemplo de uso:[imc, classificacao] = imc2(55, 1.65, 'mulher')
- Nome do arquivo a ser enviado: imc2.sci
IMC = Peso (em kg) / Altura² (em m)
82
Atividade 07: Tidia-ae
Crie uma função para que, dada como entrada 3 pontos no espaço cartesiano, a, b, e c, retorne um vetor:● se a está mais próximo de c, retorne apenas com a● se b está mais próximo de c, retorne apenas com b● caso a distância entre a e c, e b e c seja a mesma, a função deve retornar uma matriz com ambos os pontos a e b.
Nota: considere a distância Euclidiana.
Definição: menorDistancia(a, b, c)
- Nome do arquivo a ser enviado: menorDistancia.sci
83
Atividade 07: Tidia-ae – exemplos
--> a = [0,0]; b = [10,10];-->menorDistancia(a, b, [0,5]) ans = 0. 0. -->menorDistancia(a, b, [10,5]) ans = 10. 10. -->menorDistancia(a, b, [5,5]) ans = 0. 0. 10. 10.
b
a
c cc
x
y