45
Aula 03 Revisão de Expressões Comando de Seleção 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701 www.decom.ufop.br/moodle

1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

Embed Size (px)

Citation preview

Page 1: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

Aula 03

Revisão de ExpressõesComando de Seleção

1

Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM

Programação de Computadores I – BCC701www.decom.ufop.br/moodle

Page 2: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

UFMG DCC001 2013-1 2

Equações de Segundo Grau: Equação

Raízes (reais se ∆>0)

Calcular as raízes para a = 534.2765, b = 9987.3431 e c = 225.7690

Page 3: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

Ler os valores dos coeficientes a, b e c Calcular o valor de delta Obter as raízes da equação Imprimir as raízes da equação

3

Equação de 2º grauComo obter a solução?

Page 4: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

Equações de Segundo Grau:Lendo os valores dos coeficientes

UFMG DCC001 2013-1 4

// Cálculo das raízes de equação de 2o grau

// Entrada de dadosa = input("Digite o valor de a:")b = input("Digite o valor de b:")c = input("Digite o valor de c:")

Diálogo com o usuário

Page 5: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

// Resolvendo a equaçãodelta = b^2 - 4*a*c

r1 = (-b + sqrt(delta))/ (2*a)r2 = (-b - sqrt(delta))/ (2*a)

// Imprimindo resultados

printf(“Raiz 1 = %g”,r1)printf(“Raiz 2 = %g”,r2)

5

Equações de Segundo Grau:Obtendo e imprimindo as raízes

Page 6: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

Primeiro pense! Inclua comentários Observe a precedência de operadores O separador decimal é o ponto Teste o seu programa

6

Lembre-se

Page 7: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

Teste a Solução Em todo problema de transformação de

informação, temos que pensar em testes que verifiquem a correção do que fazemos

Nesse caso, o teste é simples: se r é um valor calculado para uma raiz, o valor da expressão a*r^2 + b*r + c deve ser zero

UFMG DCC001 2013-1 7

Page 8: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

Teste

UFMG DCC001 2013-1 8

-->a*r1^2 + b*r1 + c ans = 3.865D-12 -->a*r2^2 + b*r2 + c ans = - 2.274D-13

Page 9: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

Erros Comuns Escrever delta = b^2 – 4ac, omitindo os operadores

de multiplicação◦ Um erro de sintaxe, que é apontado pelo Scilab

Escrever r1 = (-b+sqrt(delta))/2*a , o que na verdade calcula

◦ Um erro de semântica, que só pode ser descoberto por meio de testes, que o programador deve fazer

UFMG DCC001 2013-1 9

ab

r .21

Page 10: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

Equações de Segundo Grau: Equação

Bhaskara (∆>0, a≠0)

Quaisquer valores de coeficiente!

Page 11: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

a = 0◦ Equação de primeiro grau◦ Divisão por zero no nosso programa!

Δ< 0◦ Raízes complexas◦ Só imprime a parte real no nosso programa!

11

Não estamos preparados...

Page 12: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

12

a = 0

Page 13: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

13

se a igual a 0 então mensagem de erro; resolver equação de primeiro grau; senão // caso contrário apresentamos as raízes reais;

Analisando o valor de aExpressão lógica, cujo valor é verdadeiro (%t) ou falso (%f)

Page 14: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

Expressões com Tipo Lógico

UFMG DCC001 2013-1 14

-->p = %t p = T -->q = 5+3 < 2 q = F -->a = 0 a = 0 -->a == 0 ans = T -->a <> 0 ans = F

Literal True

Expressão lógica, usando o operador

relacional <

igual

diferente

Note que operadores aritméticos têm

precedência sobre operadores relacionais

Page 15: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

15

Operadores Relacionais - Scilab

Operador Descrição

> Maior que.

>= Maior ou igual a.

< Menor que.

<= Menor ou igual a.

== Igual a.

<> ou ~= Diferente de.

Page 16: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

O comando if

UFMG DCC001 2013-1 16

if <condição> then <bloco “então”>else <bloco “senão”>end

A condição deve ser uma expressão

lógica

Page 17: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

17

Desvio de Fluxo: if

if a == 0 then printf(“Coeficiente a não pode ser 0”);

else // programa como antesend

Page 18: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

18

Desvio de Fluxo de Execução - if

Page 19: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

19

Desvio de Fluxo de Execução - if

Exemplo 1 de execução do programa:

Page 20: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

20

Desvio de Fluxo de Execução - if

Exemplo 2 de execução do programa:

Page 21: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

21

se delta for não negativo então apresentamos as raízes reais; senão // caso contrário apresentamos as raízes complexas;

Δ < 0

Page 22: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

22

Desvio de Fluxo de Execução - if Exemplo

• quando delta for maior ou igual a zero, a expressão relacional resultará em %t e, portanto, somente o bloco do então (then) será executado;

• quando delta for menor que zero, a expressão relacional resultará em %f e, portanto, somente o bloco do senão (else) será executado.

Page 23: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

23

Desvio de Fluxo de Execução - if

Page 24: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

24

Desvio de Fluxo de Execução - if

Exemplo 1 de execução do programa:

Page 25: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

25

Desvio de Fluxo de Execução - if

Exemplo 2 de execução do programa:

Page 26: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

26

Números reais e números complexosO Scilab possibilita manipular números complexos de forma simples:

real(x1) retorna a parte real.

imag(x1) retorna a parte imaginária.

Exemplos de números complexos:

z1 = 3 + 4 * %i;

z2 = 1 - %i;

z3 = z1 + z2;

z4 = z1 * z2;

Page 27: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

Afastar os “blocos” para esquerda Torna mais claro o que está sendo feito em

cada fluxo do programa

Será EXIGIDO Existe uma tecla especial no SciNotes

27

Identação

Page 28: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

28

Desvio de Fluxo: if

Forma Alternativa

if <condição> then <bloco do então>end

OBS.: um bloco é um conjunto de quaisquer comandos Scilab sintaticamente corretos (inclusive outro if).

Page 29: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

Certa vez a mãe disse ao filho estudante de computação:

"Querido, por favor vá ao mercado e compre 1 caixa de leite. Se eles tiverem ovos, traga 6.

Ele retornou com 6 caixas de leite.A mãe disse: "Porque diabos você comprou 6

caixas de leite?".Ele disse: "PORQUE ELES TINHAM OVOS!".

29

Um jovem programador

Page 30: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

30

O raciocínio na ambiguidade

se tiverem ovos então traga 6 caixas de leite; senão traga 1 caixa de leite;

http://www.hardware.com.br/artigos/computadores-receitas-bolo-aprendendo-comunicar-com-maquina/aprendendo-pensar-como-maquina.html

Page 31: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

31

Exercício 1

Considerando o programa que calcula a equação do segundo grau, observamos que quando as duas raízes são iguais, o programa calcula e imprime x1 e x2 com os mesmos valores. Como poderíamos resolver isso?

Page 32: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

32

Desvio de Fluxo de Execução - if Solução

Page 33: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

33

Desvio de Fluxo de Execução - if Solução

Page 34: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

Exercício 2 Faça um programa que:

◦ Leia o nome do usuário◦ Leia o total de pontos feitos pelo usuário◦ Imprima, conforme o caso, a frase

<usuário>, com <pontos> você passou!◦ Ou

<usuário>, com <pontos> você não passou!◦ Ex.: José, com 75 pontos você passou!

UFMG DCC001 2013-1 34

Page 35: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

UFMG DCC001 2013-1 35

Programa PassouNaoPassou.sce// Leitura do nome do usuárioNome = input("Digite seu nome, por favor")

// Leitura da pontuaçãoPontos = input(Nome + ", qual foi sua pontuação? ")

// Impressão do resultadoif Pontos >= 60 then printf("%s, com %g pontos você passou!",Nome,Pontos);else printf("%s, com %g pontos você não passou :(",... Nome,Pontos);end Comando continua

na próxima linha

Page 36: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

Seja f :ℛxℛ⟶ℛ definida por:

Construir um programa para calcular o valor de f(x,y), para valores de x e y dados.

36

Mais sobre Comandos de Desvio

Note que o valor de f(x,y) é dado

por 4 expressões diferentes,

conforme sejam os valores de x e

de y

Page 37: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

se x>= 0 e y>=0 então r = x + y; senão se x>= 0 e y<0 então r = x + y^2;senão se x< 0 e y>=0 então

r = x^2 + y;senão

r = x^2 + y^2;

37

Mais sobre Comandos de Desvio

Page 38: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

if x>= 0 & y>=0 then r = x + y; elseif x>= 0 & y<0 then r = x + y^2;elseif x< 0 & y>=0 then

r = x^2 + y;else

r = x^2 + y^2;end

38

Mais sobre Comandos de Desvio

Operador lógico &

Page 39: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

Operador lógico

Descrição

& Conjunção (ê)

| Disjunção (ou)

˜ Negação (não)

39

Operadores Lógicos

Sejam e1 e e2 expressões lógicas.

~e1 é falsa se e1 é verdadeira; é verdadeira se e1 é falsa

e1 & e2 é verdadeira se e1 e e2 são ambas verdadeiras; é falsa nos demais casos

e1 | e2 é falsa se e1 e e2 são ambas falsas; é verdadeira nos demais casos

Page 40: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

40

Precedência de Operadores

Ordem de precedênciamaior

operadores aritméticosoperadores relacionaisoperadores lógicos

menor

Page 41: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

Seja f :ℛ⟶ℛ a função definida por:

Escreva um programa que leia o valor de x e imprima o valor de f(x)

41

Exercício

Page 42: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

42

Exercício – exemplo de execução

.

.

.

Page 43: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

43

Exercício - Solução

Page 44: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

Escreva um programa que determina se 3 valores dados constituem lados de um triângulo e, em caso afirmativo, se o triângulo é equilátero, isósceles ou escaleno.

44

Exercício

Page 45: 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701

45

Exercício - Solução