• Nenhum resultado encontrado

FísicaComputacional4a.pdf

N/A
N/A
Protected

Academic year: 2019

Share "FísicaComputacional4a.pdf"

Copied!
32
0
0

Texto

(1)

Física Computacional

2011-2

I N T R O D U Ç Ã O À L Ó G I C A D E P R O G R A M A Ç Ã O

P R O F . L U Í S F E R N A N D O D E O L I V E I R A

UNIVERSIDADE DO ESTADO DO RIO DE JANEIRO INSTITUTO DE FÍSICA ARMANDO DIAS TAVARES

(2)

Controles de Execução

A execução de um algoritmo segue um sentido

natural que parte da primeira instrução e termina

com a última.

Este tipo de execução é dito ser linear.

Mas impõe uma rigidez no algoritmo que pode não

contemplar a descrição de uma solução mais

complexa.

(3)

Controles de Execução

Assim como na vida cotidiana, muitas vezes devemos

decidir o que fazer em função de uma situação:

 Se tem café, então tomo o café e saio para o trabalho.

 Senão, saio para tomar café na padaria e sigo para o

trabalho.

Além disso, não é rara as situações onde devemos

repetir um mesmo conjunto de ações seja um

número definido de vezes ou até que uma condição

seja satisfeita.

(4)

Controles de Execução

 Para cada livro em minha estante: retirar da prateleira,

tirar a poeira do livro e colocá-lo na caixa.

 Enquanto a lâmpada não acender, trocá-la.

Assim, veremos como organizar estes tipos de

comando dentro de um algoritmo para que

soluções mais complexas possam ser

desenvolvidas.

(5)

Controles de Execução Condicional

Os comandos que exercem o controle de execução

condicional em algoritmo (comandos de seleção) se

resumem ao seguinte comando de seleção simples:

 se (avaliação condicional), então

{ bloco correspondente ao resultado da } { avaliação condicional como VERDADEIRO }

senão

{ bloco correspondente ao resultado da } { avaliação condicional como FALSO }

fim se

(6)

Controles de Execução Condicional

A partir desta estrutura básica, podemos criar

cenários muito mais complexos, por exemplo,

comandos de seleção aninhados:

 se (teste1), então se (teste2), então

se ...

senão ... fim se senão ... fim se senão ... fim se

(7)

Controles de Execução Condicional

Ou comandos de seleção encadeados:

 se (teste1), então

senão se (teste 2), então ... senão se (teste 3), então ... senão ...

fim se

Existem diferenças lógicas nas aplicações dos

comandos de seleção aninhados e encadeados.

(8)

Controles de Execução Condicional

Se você observar com cuidado, no comando de

seleção aninhado, a estrutura completa do comando

de seleção simples está presente em cada um dos

blocos da estrutura.

Veja o exemplo seguinte e acompanhe a lógica.

(9)

Controles de Execução Condicional

se (condição A verdadeira), então

se (condição B verdadeira), então

se (condição C verdadeira), então

{ bloco 1 }

senão

{ bloco 2 }

fim se { teste C }

senão

se (condição D verdadeira), então

{ bloco 3 }

senão

(10)

Controles de Execução Condicional

{ bloco 4 }

fim se { teste D }

fim se { teste B }

senão

se (condição E verdadeira), então

{ bloco 5 }

senão

{ bloco 6}

fim se { teste E }

fim se { teste A }

(11)

Controles de Execução Condicional

O bloco 1 só é executado se e somente se as condições

A e B e C forem VERDADEIRAS, ou seja,

 se (A é VERDADE e B é VERDADE e C é VERDADE),

então executar bloco 1.

O bloco 2 só é executado se e somente se as

condições A e B forem VERDADEIRAS e C FALSA,

ou seja,

 se (A é VERDADE e B é VERDADE e C é FALSO), então

executar bloco 2.

(12)

Controles de Execução Condicional

O bloco 3 só é executado se e somente se as

condições A e D forem VERDADEIRAS e B FALSA,

ou seja,

 se (A é VERDADE e B é FALSO e D é VERDADE), então

executar bloco 3.

O bloco 4 só é executado se e somente se as

condições B e D forem FALSAS e A VERDADEIRA,

ou seja,

 se (A é VERDADE e B é FALSO e D é FALSO), então

executar bloco 4.

(13)

Controles de Execução Condicional

O bloco 5 só é executado se e somente se a condição

A for FALSA e E for VERDADEIRA, ou seja,

 se (A é FALSO e E é VERDADE), então executar bloco 5.

O bloco 6 só é executado se e somente se as

condições A e E forem FALSAS, ou seja,

(14)

Controles de Execução Condicional

As combinações de condição podem ser visualizadas

da seguinte forma:

14 A B E C D

bloco 6 bloco 5

(15)

Desenvolvimento de algoritmos

Com esta introdução, já podemos olhar para um

problema, elaborar uma solução e desenvolver

algoritmos simples.

O desenvolvimento envolve:

 analizar o problema

 elaborar solução preliminar (método)  identificar entradas e saídas

 identificar variáveis

 escrever algoritmo preliminar (normalmente pouco

estruturado)

(16)

Desenvolvimento de algoritmos

 aplicar repetidamente refinamentos no algoritmo  formatar algoritmo segundo padrão estabelecido  gerar algoritmo final

(17)

Desenvolvimento de algoritmos

Vamos ver alguns exemplos:

 Digamos que um aluno precisa calcular as raízes reais de um

polinômio de segundo grau. O método para a determinação de raízes, neste caso, é direto e usa o método chamado Método de Báscara. Neste método, os coeficientes de cada termos são

combinados de forma conveniente para gerar um parâmetro chamado delta de Báscara. Dependendo do valor do parâmetro delta, sabemos se o polinômio de segundo grau possui duas

raízes reais distintas, duas raízes reais idênticas ou nenhuma raiz real.

(18)

Desenvolvimento de algoritmos

 Primeiro, vamos definir a expressão algébrica do polinômio de

segundo grau:

ax2+bx+c = 0

 O parâmetro delta () é calculado segundo a expressão:

 = b2-4ac

 O valor de  é aplicado na expressão algébrica que determina

as raízes. A expressão é única, mas os resultados dependem do valor de .

(19)

Desenvolvimento de algoritmos

 A expressão das raízes é:

x1=(-b+)/(2a)

 e

x2=(-b-)/(2a)

 Olhando novamente o parâmetro , percebemos que se o

termo b2 é maior que 4ac, então é maior que zero e temos

duas raízes distintas. Se b2 é igual a 4ac, então é zero e as

raízes são idênticas. Por fim, se b2 é menor que 4ac, então a

função raiz quadrada gerará um resultado complexo e é dito que o polinômio não tem raízes reais.

(20)

Desenvolvimento de algoritmos

 Portanto:

  b2-4ac

se (>0), então

x1  (-b+)/(2a) x2  (-b-)/(2a)

escrever “As raízes são:”, x1, “e”, x2, “.”

senão se (=0), então

x1  -b/(2a)

escrever “A raiz dupla vale”, x1, “.”

senão

escrever “O polinômio não tem raízes reais.”

fim se

(21)

Desenvolvimento de algoritmos

 Bem, diante desta solução preliminar (algoritmo), podemos

determinar quem são os dados de entrada e de saída, se temos constantes, quem são as variáveis e as naturezas dos dados que compõem o algoritmo.

 De cara, tudo depende de termos os coeficientes do polinômio

de segundo grau: a, b e c.

 Então, estes são os dados de entrada.

 A saída corresponde às raízes x1 e x2 e a sentença que esclarece

o caso encontrado: “as raízes são” ou “a raiz dupla é” ou “não tem raízes reais.”

 Os dados a, b, c, delta, x1 e x2 são variáveis numéricas e as

sentenças são constantes literais.

(22)

Desenvolvimento de algoritmos

 O parâmetro  não pode ser usado no algoritmo final na forma

de letra grega. Logo, substituímos pelo nome dela, que será seu identificador: delta.

 Mesma coisa para a operação de radiciação, . Como não

podemos usar este caractere, substituiremos pela expressão

“rad()” ou usaremos a operação aritmética de potenciação: delta**0,5.

 Vamos tentar fazer o algoritmo todo documentado.

(23)

Desenvolvimento de algoritmos

Algoritmo Raízes Reais de Polinômio de Segundo

Grau

 Data: 29/08/2011  Autor:

 Propósito: calcular as raízes reais de um polinômio de segundo

grau caso elas existam.

 Método: aplicar o método de Báscara para determinação das

raízes reais. Primeiro se calcula o valor do parâmetro  ( =b2-4ac) e depois se avalia o resultado. Se  for maior que zero, então o polinômio tem duas raízes. Se  for igual a zero, o polinômio tem raiz dupla. Se  for negativo, o polinômio não tem raiz real. As raízes reais são calculadas usando a expressão

(24)

Desenvolvimento de algoritmos

x=(-b)/(2a).

 Entradas e Saídas:

 Entradas: a, b e c {coeficientes do polinômio}

 Saídas: x1 e x2 {raízes reais}

 Observações, Requisitos, Restrições: nenhum.

algoritmo

declare a, b, c numéricos {coeficiente do polinômio} declare x1, x2 numérico {raízes reais}

declare delta numérico {coeficiente de Báscara}

escrever “Escreva os coeficientes do polinômio (a, b, c):” ler a, b, c

(25)

Desenvolvimento de algoritmos

delta  b*b – 4*a*c se (delta>0), então

x1  (-b+delta**0,5)/(2*a) x2  (-b-delta**0,5)/(2*a)

escrever “As raízes são:”, x1, “e”, x2, “.” senão se (delta=0), então

x1  -b/(2*a)

escrever “A raiz dupla vale”, x1, “.” senão

escrever “O polinômio não tem raízes reais.” fim se

fim algoritmo

(26)

Desenvolvimento de algoritmos

 Digamos que uma escola queira otimizar o processo de

aprovação dos alunos segundo as notas de uma disciplina. O mecanismo de aprovação funciona segundo a seguinte regra:

 se o aluno tiver média parcial igual ou superior a 7,0, ele é

aprovado;

 se o aluno tiver média parcial abaixo de 4,0, ele é reprovado.

 Falhando estes dois casos, o aluno deverá realizar a prova final

e a regra adotada é a seguinte:

 se a média final for igual ou superior a 5,0, ele é aprovado;

 caso contrário, ele é reprovado.

 O aluno é avaliado em três provas teóricas (P1, P2 e P3), três

testes de laboratório (T1, T2 e T3) e em 7 atividades práticas de laboratório.

(27)

Desenvolvimento de algoritmos

 A média parcial (mpar) é uma ponderação das médias das

provas (mpro), dos testes (mtes) e das atividades práticas (matv).

 A média das provas, dos testes e das atividades são médias

aritméticas.

 Os pesos da média parcial são distribuídos da seguinte forma:

 3 para média das provas;

 2 para média dos testes;

 2 para média das atividades.

 A média final (mf) é a média aritmética entre média parcial e a

nota da prova final (pf).

(28)

Desenvolvimento de algoritmos

 Expressando na forma aritmética:

 mpro = (P1+P2+P3)/3

 mtes = (T1+T2+T3)/3

 matv = (A1+A2+A3+A4+A5+A6+A7)/7

 mpar = (3mpro+2mtes+2matv)/7

 mf = (mpar+pf)/2

 Então, o método como um todo fica o seguinte:

 calcula-se a médias das provas, a média dos testes e a média das

atividades;

 calcula-se a média parcial;

 se média parcial maior ou igual a 7, então aluno passou;

(29)

Desenvolvimento de algoritmos

 senão, calcular média final com nota da prova final;

 se média final for maior ou igual a 5, então aluno está aprovado;

 senão, aluno está reprovado.

 Neste panorama, é fácil identificar os dados de entrada: notas

das três provas, notas dos três testes e notas das atividades práticas.

 A saída também é fácil identificar: aluno aprovado ou

reprovado, além da média de aprovação ou reprovação.

 Aprovado ou reprovado podem ser constantes literais.

 As notas das provas, testes e atividades, as médias e a nota da

prova final são variáveis.

 Como elas representam números, então são variáveis

numéricas.

(30)

Desenvolvimento de algoritmos

 A versão preliminar do algoritmo fica:

declare p1, p2, p3 numéricos {notas das provas} declare t1, t2, t3 numéricos {notas dos testes}

declare a1, a2, a3, a4, a5, a6, a7 numéricos {atividades} declare mpro numérico {média das provas}

declare mtes numérico {média dos testes}

declare matv numérico {média das atividades} declare mpar numérico {média parcial}

declare pf numérico {nota prova final} declare mf numérico {média final}

declare aprov literal constante (“Aprovar”) declare reprov literal constante (“Reprovar”)

(31)

Desenvolvimento de algoritmos

{entrada de dados}

escrever “Entre com as notas das provas (P1, P2 e P3):” ler p1, p2, p3

escrever “Entre com as notas dos testes (T1, T2 e T3):” ler t1, t2, t3

escrever “Entre com as notas das atividades (A1 até A7):” ler a1, a2, a3, a4, a5, a6, a7

{cálculo das médias}

mpro  (p1+p2+p3)/3 {média das provas} mtes  (t1+t2+t3)/3 {média dos testes}

matv  (a1+a2+a3+a4+a5+a6+a7)/7 {média das atividades} mpar  (3*mpro+2*(mtes+matv))/7 {média parcial}

{continua}

(32)

Desenvolvimento de algoritmos

{continuação}

se (mpar>=7), então

escrever “Média: ”, mpar, “ Situação: ”, aprov {aprovação direta} senão se (mpar<4), então

escrever “Média: ”, mpar, “ Situação: ”, reprov {reprovação direta} senão {caso a ser estudado, nota entre 4,0 e 7,0}

ler pf

mf  0,5*(mpar+pf) se (mf>=5), então

escrever “Média: ”, mf, “ Situação: ”, aprov {aprovado em média final} senão

escrever “Média: ”, mf, “ Situação: ”, reprov {reprovado em média final} fim se

fim se

Referências

Documentos relacionados

Este estudo propõe como uma empresa deve implementar sua estratégia, analisando seus pontos fortes e fracos, através de seus ambientes interno e externo, assim selecionando

Para que o relé diferencial não opere indevidamente, o valor do ajuste do slope ou declividade deve ficar acima dos possíveis erros que podem ocorrer, os quais são discriminados

Neste protótipo de RSSF, o concentrador não exerce concomitantemente a função de plataforma de monitoramento, pois no kit de desenvolvimento utilizado só existe uma canal

A Tabela 1 e a Figura 12 mostram que os valores de resistência ao cisalhamento dos grupos I (Transbond XT convencional), V (esmalte condicionado com ácido fosfórico a 37% lavado,

financiamento da instalação do equipamento utilizado e das respectivas despesas de manutenção. 2 - A autorização de instalação pode também ser requerida pelo presidente da

Ela também pode encaminhá-lo para uma asso- ciação perto de você: 02/227.42.41

Orlikowski (2010) apresenta a prática, considerando foco sob o qual esta é observada, podendo este ser: 1) Empírico, no qual a abordagem da prática reconhece a

As despesas financeiras abrangem desembolsos com juros sobre empréstimos, líquidos do desconto a valor presente das provisões, atualização de débitos tributários,