Buscar

Programação em Scilab - Aula 3 - Comandos de Seleção

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
1 
Universidade	
  Federal	
  de	
  Ouro	
  Preto	
  -­‐	
  UFOP	
  	
  
Departamento	
  de	
  Computação	
  	
  -­‐	
  DECOM	
  
Programação	
  de	
  Computadores	
  I	
  –	
  BCC701	
  
www.decom.ufop.br/moodle	
  
UFMG DCC001 2013-1 2 
}  Equação 
}  Raízes (reais se ∆>=0) 
}  Calcular as raízes para a = 534.2765, b = 
9987.3431 e c = 225.7690 
2 
}  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 
UFMG DCC001 2013-1 4 
// Cálculo das raízes de equação de 2o grau 
 
// Entrada de dados 
a = 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 
3 
// Resolvendo a equação 
delta = 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 
}  Primeiro pense! 
}  Inclua comentários 
}  Observe a precedência de operadores 
}  O separador decimal é o ponto 
}  Teste o seu programa 
6 
4 
}  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 
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 
5 
}  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 
abr .
21 ⎟
⎟
⎠
⎞
⎜
⎜
⎝
⎛ Δ+−
=
}  Equação 
}  Bhaskara (∆>0, a≠0) 
}  Quaisquer valores de coeficiente! 
 
6 
}  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 
12 
7 
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; 
 
 
 
 
 
Expressão lógica, cujo valor é 
verdadeiro (%t) ou falso (%f) 
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 
8 
15 
Operador Descrição 
> Maior que. 
>= Maior ou igual a. 
< Menor que. 
<= Menor ou igual a. 
== Igual a. 
<> ou ~= Diferente de. 
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 
9 
17 
 
if a == 0 then 
 printf(“Coeficiente a não pode ser 0”); 
else 
 // programa como antes 
end 
 
 
 
 
18 
10 
19 
Exemplo 1 de execução do programa: 
 
 
 
 
20 
Exemplo 2 de execução do programa: 
 
 
 
 
11 
21 
 
se delta for não negativo então 
 apresentamos as raízes reais; 
senão // caso contrário 
 apresentamos as raízes complexas; 
 
 
 
 
22 
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. 
12 
23 
24 
Exemplo 1 de execução do programa: 
 
 
 
 
13 
25 
Exemplo 2 de execução do programa: 
 
 
 
 
26 
O 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; 
 
 
 
 
 
 
 
14 
}  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 
28 
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). 
 
 
 
 
 
 
 
 
 
15 
29 
 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? 
30 
Solução 
16 
31 
Solução 
}  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 32 
17 
UFMG DCC001 2013-1 33 
// Leitura do nome do usuário 
Nome = input("Digite seu nome, por favor") 
 
// Leitura da pontuação 
Pontos = input(Nome + ", qual foi sua pontuação? ") 
 
// Impressão do resultado 
if 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 
}  Seja f :ℛxℛ⟶ℛ definida por: 
}  Construir um programa para calcular o valor de 
f(x,y), para valores de x e y dados. 
34 
Note que o 
valor de f(x,y) é 
dado por 4 
expressões 
diferentes, 
conforme sejam 
os valores de x 
e de y 
18 
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; 
35 
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 
36 
Operador lógico & 
19 
Operador lógico Descrição 
& Conjunção (ê) 
| Disjunção (ou) 
˜ Negação (não) 
37 
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 
38 
Ordem de precedência 
maior 
operadores aritméticos 
operadores relacionais 
operadores lógicos 
menor 
 
20 
}  Seja f :ℛ⟶ℛ a função definida por: 
}  Escreva um programa que leia o valor de x e 
imprima o valor de f(x) 
 
39 
40 
. . . 
21 
41 
}  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. 
42 
22 
43 
}  Estude o capítulo 3 – seções 3.1 a 3.4 do 
livro - Stephen Chapmann: Programação 
em MathLab para Engenheiros 
}  Procure fazer os exercícios do final deste 
capítulo, relativos a comandos de desvio. 
44

Outros materiais