Baixe o app para aproveitar ainda mais
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
Compartilhar