Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Comissão para Coordenação das Atividades Pedagógicas da Disciplina BCC701 – CAP-BCC701 www.decom.ufop.br/bcc701 2014-1 Material Didático Proposto 1
Programação Estruturada Comandos Condicionais (Decisão) Operadores Relacionais 2
Programação Estruturada 3
Conceito ito: Progr grama mação ão estrutur turad ada a é um uma forma de Progr grama mação ão de computad adore ores s que preconiz iza a que todos os pro rogr gramas as possív íveis eis podem ser reduzi zidos dos a a apenas as três estrutur uras: as: sequên uência cia • decis isão ão • it iteração ão • 4
Sequên ênci cia Até a última a aula, os programa amas s co constituí stituíram ram-se e por uma a seq equência ência de e instr truç uções, ões, ou co comando ndos, , execu cutados tados sequen encial cialmente, mente, co confo forme rme o fluxograma xograma ao ao lad ado. 5
Deci cisão são ( (co comandos andos co condici icionais) onais) A seg egunda da es estrutura utura é u é utiliza izada da quan ando do é n é nec eces essário ário realiz izar r um desvi vio o de fluxo, o, realizado ado co com base em uma deci cisão Se “condição” for verdadeiro Então Faça a tarefa A; Senão // caso falso Faça a tarefa B; O desvio de fluxo é caracterizado pela “escolha” (condição) entre execut ecutar ar a tarefa a A ou execut cutar ar a tarefa fa B 6
Deci cisão são (co comandos andos co condici icionais) onais) Fluxo uxogr grama ama Esta é a tarefa A , ela será “condição” executada apenas quando “condição” for verdadeira. Esta é a tarefa B , ela será Observe que sempre será executada apenas quando executada apenas uma das “condição” for falsa. tarefas, ou seja, a tarefa A ou a tarefa B . 7
Iteração ração Re Repete e um co conjunto unto de instruções, ruções, co comandos, ndos, um ce certo número ro de vezes s ou co confo form rme e uma co condição. ição. Será estudado ado no 2º 2º m módul ulo. o. 8
9
Equação Raízes (reais se ∆>0) Calcular as raízes para a = 534.2765, b = 9987.3431 e c = 225.7690 10
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 11
// Cálculo das raízes de equação de 2o grau disp (“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 12
// 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) 13
Raízes de equação de 2o grau Digite o valor de a:534.2765 Digite o valor de b:9987.3431 Digite o valor de c:225.7690 Raiz 1 = -0.0226329 Os valores Raiz 2 = -18.6706 digitados pelo usuário estão em vermelho 14
Quando propomos uma solução para um problema 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 15
-->a*r1^2 + b*r1 + c ans = 1.017D-11 -->a*r2^2 + b*r2 + c ans = Notação científica: 2.888D-11 2.888 x 10 -11 (muito próximo a zero) 16
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 b r . a 1 2 ◦ Um erro de semântica , que só pode ser descoberto por meio de testes, que o programador deve fazer 17
Equação Bhaskara (∆>0, a≠0) Qu Quai aisque squer valores de coeficiente! 18
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! 19
OB OBS.: verifica icando ndo o valor r do co coefici cien ente te a , , pode pode-se se evitar r este erro ! 20
Condiçã ição o (expressão relacional) 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; 21
<condição> é uma expressão relacional : <expr pr 1> 1> <o <opera rado dor r Re Rela laci cional al> > <expr 2> 2> Onde: <expr n> é uma expressão, que pode ser um valor numérico, ou uma expressão matemática que resulta em um valor numérico. A avaliação de uma expressão relacional pode resultar em: verdadeiro ( %t ou %T ) ou falso ( %f ou %F ). 22
Opera rado dor Descri criçã ção > Maior que. >= Maior ou igual a. < Menor que. <= Menor ou igual a. == Igual a. <> ou ~= Diferente de. 23
-->p = %t Literal True p = T Expressão lógica, Note que operadores -->q = 5+3 < 2 usando o operador aritméticos têm q = F relacional < precedência sobre -->a = 0 operadores a = relacionais 0 -->a == 0 ans = igual T -->a <> 0 ans = diferente F 24
Priori oridade dade de e Ex Exec ecuçã ção • Qu Quando do temos os uma co combina inaçã ção o entre expressões sões matemá emáti tica cas s e ex expressões ssões lógicas, cas, primeirame iramente nte o Sci cilab ca calcula cula as expressõe ssões s matemát emáticas; icas; a s seguir, r, o Sci cilab ca calcula cula as expressõe ssões s lógicas. cas. • os oper erado adore res s mat atemáticos emáticos tem em mai aior priorida idade de de e execução, cução, co com relaçã ção o aos operadore dores s relaci cionai onais. s. 25
A condição deve ser uma expressão lógica if <condição> then <bloco do então> end OB OBSERV RVAÇ AÇÕE ÕES: : um bloco é um conjunto de quaisquer comandos Scilab sintaticamente corretos (inclusive outro if ). if, then, else e end: são palavras reservadas do Scilab e não podem ser usadas para nomear variáveis. 26
if <condição> then <bloco do então> else <bloco do senão> end <condição> é um uma expressão ssão relaci ciona onal. l. Assim m , r resulta ta em em um val alor r ver erdadeiro adeiro (%t) ou fal also (%f) . <bloco do então> será execu cuta tado do somente nte quando do a co condição ição resulta tar r em verdadei adeiro ro (%t) . <bloco do senão> será execu cuta tado do somente nte quando do a co condiçã ção o resultar tar em falso (%f) . 27
if a == 0 then printf (“Coeficiente a não pode ser 0”); end // programa como antes 28
Agora, verifi fica ca-se e o valor r de a, antes de co continua tinuar r co com a ex execu cução. ção. 29
30
Nova va execu cuçã ção, o, co com entrada da de valores es diferen ente tes: s: 31
O O erro oco correu eu novamente amente, pois: O O usuári rio o teve somente nte duas oportunida tunidades des de inserir ir um valor r não nulo para o co coeficiente ciente a ; Qu Quando do aprende dermos rmos a 3ª 3ª es estrutura tura de program amaçã ção o estruturada, uturada, repetiçã ção, permitir tiremos emos ao usuári rio o inserir rir o v valor r de a , q quanta tas s vezes es forem m nece cessári árias, as, at até é que e um val alor r não ão nulo sej eja a fornec ecido do. 32
if a == 0 then printf (“Coeficiente a não pode ser 0”); else // programa como antes end 33
Aprimorando morando a l lógica ca da programa amação: ção: 34
Exempl mplo o 1 1 de execu cuçã ção o do program ama: 35
Exempl mplo o 2 2 de execu cuçã ção o do program ama: 36
Se delta for positivo Então apresentamos as raízes reais; Senão // caso contrário apresentamos as raízes complexas; 37
O O Sci cilab possibil ibilita ita manipul pular ar números ros co comple lexo xos s de forma ma simples. les. real(x1) retorna na a p parte real. imag(x1) retorna na a p parte imaginá nária. ia. Exemplo plos s de números ros co comple plexo xos: s: z1 = 3 + 4 * %i; z2 = 1 - %i; z3 = z1 + z2; z4 = z1 * z2; 38
• 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. 39
40
Exempl mplo o 1 1 de execu cuçã ção o do program ama: 41
Exempl mplo o 2 2 de execu cuçã ção o do program ama: 42
Recommend
More recommend