• Nenhum resultado encontrado

ebook-outros

N/A
N/A
Protected

Academic year: 2021

Share "ebook-outros"

Copied!
15
0
0

Texto

(1)

Sum´

ario

1 L´ogica 2

1.1 M´etodo heur´ıstico . . . 3 1.2 Aplica¸c˜ao do m´etodo: somat´orio e produt´orio . . . 5

2 Pr´atica de programa¸c˜ao 8

2.1 Regras da boa programa¸c˜ao . . . 8 2.2 Documenta¸c˜ao externa . . . 10

3 Pseudoc´odigo 13

(2)

M ´odulo

1

ogica

Todos estamos habituados a organizar nossas tarefas di´arias segundo uma lista de coisas “para fazer”. Esta lista di´aria pode ser ordenada na forma de prioridades ou em uma ordem que fa¸ca sentido para o indiv´ıduo. O que se deseja ´e que, no final do dia, tudo tenha sido cumprido. Tamb´em ´e normal, na rotina de um trabalho ou estudo, deparar-se com tarefas que devem deparar-ser cumpridas, `as vezes numa mesma ordem, as vezes numa ordem diferente. Algumas rotinas permitem essa flexibilidade, outras n˜ao. Tˆem tarefas que podem ser realizadas simultaneamente, outras n˜ao.

Conforme o indiv´ıduo amadurece e adquire experiˆencia, percebe que algumas tarefas devem ser executadas numa determinada ordem para que as mesmas sejam conclu´ıdas satisfatoriamente. A experiˆencia ´e um instrumento muito valioso neste processo. Na ausˆencia de experiˆencia, devemos agir com sabedoria. O conhecimento, por vezes o ci-ent´ıfico, se faz valer nestes momentos.

A l´ogica ´e o estudo formal sistem´atico dos princ´ıpios da inferˆencia v´alida e do pensa-mento correto. J´a que o pensamento ´e a manifesta¸c˜ao do conhecimento, e que o conhe-cimento busca estabelecer a verdade, ´e preciso a ado¸c˜ao de algumas regras para que essa meta possa ser atingida. Assim, a l´ogica ´e o ramo da filosofia que cuida das regras do bem pensar, ou do pensar correto, sendo, portanto, um instrumento do pensar. Mas a aprendizagem da l´ogica n˜ao constitui um fim em si.

A l´ogica s´o tem sentido enquanto meio de garantir que nosso pensamento proceda corretamente a fim de chegar a conhecimentos verdadeiros. Podemos, ent˜ao, dizer que a l´ogica trata dos argumentos e, consequentemente, das conclus˜oes a que chegamos atrav´es da apresenta¸c˜ao de evidˆencias que a sustentam.

Mas qual m´etodo adotar? O desenvolvimento de algoritmos ´e tradicionalmente apre-sentado como l´ogica de programa¸c˜ao. Esta l´ogica possui caracter´ıstica do m´etodo dedutivo que parte de premissas assumidas como verdadeiras e que, a partir de um racioc´ınio l´ogico dedutivo, ´e capaz de gerar uma conclus˜ao v´alida, assumindo que o processo dedutivo ´e v´alido.

Entretanto, a estrutura formal do m´etodo dedutivo engessa em parte o processo de livre cria¸c˜ao se o indiv´ıduo n˜ao est´a familiarizado com a l´ogica dedutiva. Precede o processo de programa¸c˜ao o processo de cria¸c˜ao que, entre outros elementos, visa estabelecer as estrat´egias a serem usadas na elabora¸c˜ao da solu¸c˜ao do problema.

O contexto da cria¸c˜ao, a gˆenese, ´e o da elabora¸c˜ao mental, muitas vezes n˜ao-linear, mas que, com a experimenta¸c˜ao e a reflex˜ao, cria vieses mais definidos. Por vezes, o processo criativo conduz o desenvolvedor “`a estaca zero” de onde ele parte novamente em busca de

(3)

revelar ao desenvolvedor mecanismos e estrat´egias que organizam seu processo de gˆenese sem esgotar sua capacidade inventiva.

1.1

etodo heur´ıstico

Segundo Polya1 apud Rosa e Orey2, a heur´ıstica pode ser compreendida como um

conjunto de regras e m´etodos que conduzem `a descoberta e `a inven¸c˜ao e que s˜ao utilizados na resolu¸c˜ao de problemas. Tem por objetivo compreender as opera¸c˜oes mentais pr´oprias deste processo que se mostrem ´uteis.

Na logica, o m´etodo heur´ıstico antecede, por assim dizer, os m´etodos rigorosos de indu¸c˜ao e dedu¸c˜ao. Enquanto os ´ultimos s˜ao a base do processo de demonstra¸c˜ao e formula¸c˜ao de leis gerais, a heur´ıstica ´e por certo imprecisa e provis´oria e conta com dois elementos caracteristicamente humanos: a intui¸c˜ao e a criatividade. O m´etodo heur´ıstico ´e posto frequentemente como um m´etodo de “tentativa e erro”, que ´e um equ´ıvoco se for considerado que o indiv´ıduo que procura solucionar um problema parte naturalmente de conceitos, modelos e hip´oteses formulados em experiˆencias anteriores.

No entanto, mesmo que a heur´ıstica parta de bases consideradas n˜ao formais, reconhece-se estruturas de inferˆencia similares `as adotadas nos outros m´etodos: o processo de an´alise e de s´ıntese. Polya classifica estes processos segundo as fases do processo mental que o indiv´ıduo aplica na abordagem de um problema e na constru¸c˜ao de sua solu¸c˜ao. O pro-cesso de an´alise se divide em compreens˜ao do problema e elabora¸c˜ao de um plano, enquanto a s´ıntese se divide em execu¸c˜ao do plano e revis˜ao da resolu¸c˜ao. O ponto de partida da an´alise ´e o problema e o seu produto ´e o plano de a¸c˜ao. Na s´ıntese, o ponto de partida ´e o plano de a¸c˜ao e o resultado ´e solu¸c˜ao do problema.

Compreens˜ao do problema

A compreens˜ao do problema ´e est´a relacionada `a interpreta¸c˜ao do enunciado. ´E necess´ario a leitura cont´ınua do mesmo at´e que toda informa¸c˜ao poss´ıvel tenha sido identificada. O processo l´ogico se inicia, ent˜ao, com a an´alise da informa¸c˜ao adquirida, a partir da qual o desenvolvedor deve estabelecer suas metas, pois o problema pode ter implica¸c˜oes. ´E importante entender as causa do problema e os efeitos provocados por ela. Al´em disso, mudar o ponto de vista que ´e lan¸cado sobre o problema ajuda tamb´em na explora¸c˜ao dos aspectos mais gerais do problema. Algumas perguntas s˜ao ´uteis nesta epata: Qual ´e o problema? Que informa¸c˜oes tenho? O que est´a faltando? Onde devo chegar? As respostas a estas e outras perguntas n˜ao s˜ao a solu¸c˜ao, mas evidenciam o escopo de trabalho, seus limites e as dire¸c˜oes a serem tomadas. A compreens˜ao do problema deve estar impregnada de quest˜oes e respostas.

1POLYA, G. A arte de resolver problemas: um novo aspecto do m´etodo matem´atico. Tradu¸ao de Heitor

Lisboa de Ara´ujo. Rio de Janeiro:Interciˆencia, 1978. 196 p.

2ROSA, M.; OREY, D. C. De Pappus a Polya: da heur´ıstica grega `a resolu¸ao de problemas. p. 12–27,

In PLURES – HUMANIDADES: Revista do Programa de P´os-Gradua¸c˜ao em Educa¸c˜ao - Mestrado, n. 11 – jan./jun. 2009. Ribeir˜ao Preto, SP: Centro Universit´ario Moura Lacerda. Departamento de Educa¸c˜ao e Programa de P´os-Gradua¸c˜ao em Educa¸c˜ao – Mestrado –14,5 x 21cm. 164 p.

(4)

Elabora¸c˜ao de um plano

Na elabora¸c˜ao de um plano, o desenvolvedor, j´a de posse das informa¸c˜oes ne-cess´arias at´e o presente momento, ´e capaz de idealizar uma solu¸c˜ao inicial. O processo pode ser longo, mas deve ser finito. Como em um processo de amadu-recimento, o desenvolvedor conta com v´arios instrumentos para criar e avaliar poss´ıveis solu¸c˜oes. O uso de diagramas, desenhos, rascunhos e tabelas podem auxili´a-lo a visualizar o plano. Esta fase ´e de alta criatividade e ´e primordial que o desenvolvedor sinta-se livre para compor sua abordagem.

O passo inicial pode ser dif´ıcil, mas uma atitude de perseveran¸ca nesta busca ´e fundamental. A experiˆencia e o bom senso do desenvolvedor s˜ao um bom ponto de partida. Por analogia, compara¸c˜ao e transposi¸c˜ao, ele agrega seu conhecimento `a an´alise do problema e desenvolve uma solu¸c˜ao tempor´aria.

O plano em si ´e um conjunto de a¸c˜oes, sequencialmente organizado, e que dever´a ser executado, na ordem explicitada. ´E como uma receita – se um passo for ignorado, o resultado final poder´a ficar comprometido. Uma boa pr´atica ´e a elabora¸c˜ao das a¸c˜oes usando verbos no modo infinitivo e que cada a¸c˜ao corresponda a um verbo, ou seja, cada passo do plano ´e uma a¸c˜ao e cada a¸c˜ao ´e caracterizado por um verbo. Desta forma, as a¸c˜oes poder˜ao ser facilmente verificadas quanto ao seu efeito e sua validade.

Execu¸c˜ao do plano

A primeira fase da s´ıntese ´e a execu¸c˜ao do plano concebido. Esta etapa ´e menos mental e mais bra¸cal. O desenvolvedor deve seguir cada passo do plano elaborado e conferir se o resultado esperado foi realmente obtido. ´E comum, principalmente nas abordagens iniciais, deparar-se com a necessidade de alterar o plano haja vista alguma incoerˆencia entre os resultados e os objetivos. Se for preciso, o desenvolvedor deve retornar para a etapa de compreens˜ao do problema e refazer todo o caminho at´e que o plano gere resultados coerentes com o esperado.

Revis˜ao da resolu¸c˜ao

Pela dinˆamica pr´opria do m´etodo heur´ıstico, a fase final de revis˜ao do processo como um todo propicia ao indiv´ıduo a oportunidade de aperfei¸coamento do plano, reiniciando cada uma das epatas.

Assim, o esquema geral da heur´ıstica se baseia no tr´ıplice conceito an´ alise-s´ıntese-avalia¸c˜ao.

Deve se destacar que a heur´ıstica permite que o desenvolvedor retorne a qualquer uma das etapas no momento que isso se justificar. Mas deve ser claro tamb´em que ao voltar, as etapas, a partir do ponto de retorno, dever˜ao ser refeitas.

(5)

1.2

Aplica¸

ao do m´

etodo: somat´

orio e produt´

orio

Somat´orio e produt´orio s˜ao express˜oes matem´aticas onde uma mesma opera¸c˜ao (adi¸c˜ao ou multiplica¸c˜ao) ´e realizada entre v´arios termos. Os termos s˜ao dependentes de uma vari´avel usada normalmente para se controlar o n´umero de itera¸c˜oes da express˜ao. Para somat´orios e produt´orios definidos, isto ´e, onde o n´umero de itera¸c˜oes ´e conhecido, as formas gerais sˆao:

y = vf X i=vi termo(i) y = vf Y i=vi termo(i)

onde i ´e um n´umero inteiro, vi e vf s˜ao os valores inicial e final, respectivamente, e termo(i) ´e o termo a ser operado, fun¸c˜ao da vari´avel i.

Expandindo a express˜ao do somat´orio, observa-se a seguinte equa¸c˜ao:

y = termo(vi) + termo(vi + 1) + termo(vi + 2) + · · · + termo(vf − 1) + termo(vf ) Um problema a ser analisado ´e como realizar esta express˜ao um termo de cada vez, vislumbrando uma poss´ıvel implementa¸c˜ao da solu¸c˜ao no computador. O desenvolvedor se deparar´a com um grande problema se ele tentar implementar a express˜ao expandida como se vˆe acima, pois se o n´umero de termos for alterado, o desenvolvedor ter´a que reescrever a express˜ao.

Observando a express˜ao atentamente, ´e poss´ıvel perceber que cada termo depende de um valor que cresce unitariamente termo a termo. Desta forma, o somat´orio poderia ser rescrito como: y = vf −vi X i=0 termo(vi + i) onde o n´umero total de operandos (termos) ser´a vf − vi + 1.

Outra observa¸c˜ao ´e a evolu¸c˜ao do valor y conforme os termos v˜ao sendo adicionados. Para facilitar, imagine que ao se adicionar um novo termo, o resultado seja atribu´ıdo a uma vari´avel yi da seguinte forma:

y0 = termo(vi + 0)

y1 = termo(vi + 0) + termo(vi + 1)

y2 = termo(vi + 0) + termo(vi + 1) + termo(vi + 2)

· · ·

yvf −vi−1 = termo(vi + 0) + termo(vi + 1) + · · · + termo(vf − 1)

yvf −vi = termo(vi + 0) + termo(vi + 1) + · · · + termo(vf − 1) + termo(vf )

Repare que o valor de y1 ´e o valor de y0 + termo(vi + 1) e que y2 ´e o valor de

(6)

onde yi = yi−1+ termo(vi + i) para i = 1, · · · , vf e y0 = termo(vi):

y0 = termo(vi + 0) = termo(vi)

y1 = y0+ termo(vi + 1)

y2 = y1+ termo(vi + 2)

· · ·

yvf −vi−1 = yvf −vi−2+ termo(vi + vf − vi − 1) = yvf −vi−2+ termo(vf − 1)

yvf −vi = yvf −vi−1+ termo(vi + vf − vi) = yvf −vi−1+ termo(vf )

Neste ponto da an´alise, j´a ´e poss´ıvel vislumbrar um plano. A estrat´egia seria: iniciar o valor de y0 com termo(vi); depois, calcular y1 usando o valor de y0 e adicionando

termo(vi + 1); depois, calcular y2 usando o valor de y1 mais termo(vi + 2), e assim por

diante at´e yvf −vi.

Pela an´alise do problema e dada esta estrat´egia, a solu¸c˜ao dependeria de vf − vi + 1 inc´ognitas, o que ´e pouco pr´atico. Repare que, a cada passo da itera¸c˜ao, somente duas inc´ognitas est˜ao envolvidas: yi e yi−1. As inc´ognitas que j´a foram operadas n˜ao

s˜ao mais necess´arias e as que vir˜ao n˜ao entram neste c´alculo. Ent˜ao, seria razo´avel admitir-se somente uma inc´ognita que, a cada passo da itera¸c˜ao, tem seu valor atualizado. Para representar esta opera¸c˜ao de atualiza¸c˜ao de valor, utilizar-se-´a um novo operador, o operador de atribu´ı¸c˜ao: ←. A itera¸c˜ao ficaria:

y ← y + termo(vi + i)

para i de 0 at´e vf − vi. Esta express˜ao ´e lida da seguinte forma: adicionar ao valor atual de y o valor de termo(vi+i) e atualizar o valor de y. Como numa express˜ao matem´atica, o termo a direita do operador de atribui¸c˜ao deve ser realizada primeiro; depois, o resultado ´e atribu´ıdo `a inc´ognita a esquerda. Este processo iterativo de atualiza¸c˜ao implementa bem a opera¸c˜ao de somat´orio. O ´unico problema est´a no primeiro passo, na primeira itera¸c˜ao. Para i = 0, qual o valor de y? Ou seja, antes de se iniciar o processo iterativo, qual o valor inicial da inc´ognita y. Para n˜ao causar erro na opera¸c˜ao e n˜ao se interferir no resultado, usa-se como valor inicial de y um valor neutro para a opera¸c˜ao de adi¸c˜ao, isto ´e, zero. Ent˜ao, o primeiro valor de y ´e zero. Zero n˜ao interfere.

Veja o plano.

Plano

y ← 0

para cada valor de i desde 0 at´e vf − vi, fazer y ← y + termo(vi + i)

(7)

Aplicando o plano, obt´em-se: y ← 0 para i = 0 y ← y + termo(vi + 0) y ← 0 + termo(vi) = termo(vi) para i = 1 y ← y + termo(vi + 1) y ← termo(vi) + termo(vi + 1) para i = 2 y ← y + termo(vi + 2)

y ← termo(vi) + termo(vi + 1) + termo(vi + 2) · · ·

para i = vf − vi y ← y + termo(vi + vf − vi) y ← termo(vi) + · · · + termo(vf )

A ´ultima atualiza¸c˜ao da inc´ognita y traz o valor final da express˜ao do somat´orio. A express˜ao de produt´orio ´e similar ao do somat´orio a menos das opera¸c˜oes entre os termos serem multiplica¸c˜ao e n˜ao adi¸c˜ao. Assim, a solu¸c˜ao, o plano elaborado para resolver o somat´orio pode ser adaptado para resolver o produt´orio. O ´unico cuidado ´e com o valor inicial da inc´ognita y. O elemento neutro para o somat´orio ´e zero. No caso do produt´orio, o elemento neutro ´e 1. Ent˜ao, o plano para resolver o produt´orio ´e:

Plano

y ← 1

para cada valor de i desde 0 at´e vf − vi, fazer y ← y ∗ termo(vi + i)

Aplicando o plano, obt´em-se:

y ← 1 para i = 0 y ← y ∗ termo(vi + 0) y ← 1 ∗ termo(vi) = termo(vi) para i = 1 y ← y ∗ termo(vi + 1) y ← termo(vi) ∗ termo(vi + 1) para i = 2 y ← y ∗ termo(vi + 2)

y ← termo(vi) ∗ termo(vi + 1) ∗ termo(vi + 2) · · ·

para i = vf − vi y ← y ∗ termo(vi + vf − vi) y ← termo(vi) ∗ · · · ∗ termo(vf )

(8)

M ´odulo

2

Pr´

atica de programa¸c˜

ao

A boa experiˆencia de in´umeros profissionais da ´area de computa¸c˜ao1 que foi sendo acumulada ao longo do tempo ´e chamada de boa pr´atica de programa¸c˜ao. Esta cole¸c˜ao de normas e princ´ıpios passou a ser tratada com o tempo como um t´opico da teoria da ciˆencia da computa¸c˜ao.

Quais s˜ao as regras ou princ´ıpios? Quais s˜ao as boas pr´aticas de programa¸c˜ao?

2.1

Regras da boa programa¸

ao

Na rotina de programa¸c˜ao, existem duas etapas que consomem tempo: o desenvolvi-mento dos algoritmos2 e a valida¸c˜ao da l´ogica de programa¸c˜ao3 dos c´odigos-fonte de um

programa. Portanto, ´e sempre interessante e proveitoso dispor de uma cole¸c˜ao de algo-ritmos e c´odigos-fonte previamente escritos, testados, analisados e validados. Isto acaba sendo um processo quase natural que ocorre em fun¸c˜ao da acumula¸c˜ao de experiˆencia e a maturidade profissional com o passar do tempo.

Uma biblioteca de algoritmos e c´odigos, ou seja, de solu¸c˜oes, ´e sempre incrementada pela adi¸c˜ao de novas solu¸c˜oes para os mesmos ou novos problemas. As novas solu¸c˜oes, na maioria das vezes, s˜ao constru´ıdas tomando como base solu¸c˜oes pr´e-existentes, pr´atica esta reconhecida como sendo valiosa. O processo consiste em reusar, aproveitando, sempre que poss´ıvel, parte do que j´a est´a escrito e, portanto, j´a validado na constru¸c˜ao de uma nova solu¸c˜ao. Por este motivo o acervo de uma biblioteca tendem a formar uma base s´olida que poder´a ser utilizada para a solu¸c˜ao de novos problemas com um grau de confian¸ca cada vez mais elevado.

Sempre que uma solu¸c˜ao ou parte de uma solu¸c˜ao ´e reconhecida como valiosa, ela tende a ser usada e reusada ou adaptada na constru¸c˜ao de uma nova solu¸c˜ao. Um evento comum neste processo de reaproveitamento ´e a necessidade de se fazer pequenas, ou at´e mesmo grandes modifica¸c˜oes, nas solu¸c˜oes j´a existes de forma a melhor´a-las ou adequ´a-las para lidar com as novas situa¸c˜oes e que n˜ao eram previstas nas antigas.

A partir deste fato, pode-se ver que, para n˜ao se perder o controle do processo de desenvolvimento como um todo, ´e essencial que se aplique o que hoje ´e entendido e 1ao somente os cientista da computa¸ao, mas todos que utilizam a computa¸ao como meio ou fim de

suas atividades. Nisto incluem-se, principalmente, os profissionais de exatas e engenharias.

2Aplica¸ao da l´ogica na programa¸ao, isto ´e, a aplica¸ao da heur´ıstica e a elabora¸ao da l´ogica de

pro-grama¸c˜ao.

(9)

chamado de boa pr´atica de programa¸c˜ao. No fundo, isto continua sendo aplica¸c˜ao da heur´ıstica.

De forma compacta, destaca-se as principais regras:

Clareza

Toda solu¸c˜ao deve ser bastante clara quanto aos seus objetivos e sua inten¸c˜ao, caso contr´ario ser´a dif´ıcil saber se ela est´a resolvendo o problema de forma correta ou n˜ao. Clareza est´a intimamente ligada `a corre¸c˜ao.

Legibilidade

Todo algoritmo elaborado como solu¸c˜ao de um problema deve ser leg´ıvel. Por isso ´e fundamental utilizar uma diagrama¸c˜ao que facilite sua leitura.

Documenta¸c˜ao interna

Todo algoritmo tem que ser documentado. A documenta¸c˜ao interna ´e impor-tant´ıssima e n˜ao opcional. O uso de um cabe¸calho ´e fundamental, al´em, claro, da identifica¸c˜ao funcional dos blocos de declara¸c˜oes utilizadas na l´ogica. O cabe¸calho deve conter:

• a descri¸c˜ao geral do plano;

• a finalidade da solu¸c˜ao elaborada;

• copyright e outras informa¸c˜oes relevantes;

• deve sempre fazer uso de nomes que sejam os mais autoexplicativos poss´ıveis; • usar sempre coment´arios curtos para as mais diversas finalidades.

Modularidade

Um algoritmo deve, sempre que poss´ıvel, ser escrito de forma particionada, isto ´e, em planos menores.

Reusabilidade

Reusabilidade diz respeito a dois conceitos importantes:

• Generalidade: capacidade de se construir algoritmos que possam ser usados e reutilizados para fins similares;

• Flexibilidade: capacidade de lidar com diferentes tipos de informa¸c˜ao e dife-rentes tipos de procedimentos.

Manutenibilidade

Os algoritmos devem ser escritos de forma a facilitar a sua adequa¸c˜ao `as necessidades futuras.

(10)

Documenta¸c˜ao em tempo de execu¸c˜ao

Todo programa tem que orientar bem o usu´ario quanto `as escolhas e a forma dos dados que devem ser fornecidos no momento da sua utiliza¸c˜ao. A documenta¸c˜ao em tempo de execu¸c˜ao ´e important´ıssima e tamb´em n˜ao ´e opcional.

Defensibilidade

Todo programa deve ter meios de lidar com entradas e sa´ıdas erradas.

2.2

Documenta¸

ao externa

A documenta¸c˜ao de um programa ´e parte integrante e essencial dele, exercendo fun¸c˜ao primordial no processo de desenvolvimento e manuten¸c˜ao do programa.

A documenta¸c˜ao de cada unidade de programa deve ser cuidadosamente elaborada e realizada dentro de padr˜ao pr´e-estabelecido. A padroniza¸c˜ao ´e importante porque facilita o entendimento e o intercˆambio de informa¸c˜ao entre os diversos membros de uma equipe (quando se est´a trabalhando em equipe) que est´a desenvolvendo um sistema complexo, al´em de favorecer a compreens˜ao e o uso do programa por terceiros.

Aqueles que n˜ao est˜ao trabalhando em equipe, isto ´e, est˜ao desenvolvendo e codifi-cando o programa de forma independente ou isolada, tamb´em necessitam documentar os programas. Por quˆe? Porque ele mesmo, em algum momento, necessitar´a reler e/ou reutilizar os programas ou partes deles. Se n˜ao documentou adequadamente o programa escrito, ir´a ter o dissabor de n˜ao mais compreendˆe-lo e, portanto n˜ao ter´a dom´ınio so-bre o programa. Neste caso acabar´a tendo que utilizar um tempo grande e precioso para (re)entender o programa ou ent˜ao escrever um programa novo por incapacidade de reaproveitar o trabalho j´a feito. Desperd´ıcio de tempo (e dinheiro), n˜ao?

As regras e recomenda¸c˜oes que ser˜ao apresentadas sobre a documenta¸c˜ao de progra-mas devem ser seguidas, progra-mas n˜ao devem ser encaradas como regras absolutas. ´E poss´ıvel se adotar algumas regras diferentes, ou melhor, regras que implementem os mesmos con-ceitos e as mesmas boas pr´aticas de programa¸c˜ao de uma forma que se ajuste melhor `as necessidades atuais do que as que est˜ao sendo indicadas aqui. Utilizar estas ou outras regras ´e quest˜ao de bom senso. Entretanto, uma vez adotado um conjunto de regras, estas dever˜ao ser seguidas at´e o fim.

A documenta¸c˜ao de um programa pode ser dividida em trˆes partes ou tipos: docu-menta¸c˜ao interna, documenta¸c˜ao em tempo de execu¸c˜ao e documenta¸c˜ao externa.

A documenta¸c˜ao externa diz respeito `a toda informa¸c˜ao complementar `a l´ogica desen-volvida como solu¸c˜ao de um problema analisado. Resgatando a proposta da heur´ıstica, de an´alise e s´ıntese, a documenta¸c˜ao externa deve conter o plano elaborado em forma narrativa, produto da compreens˜ao do problema e da estrat´egia de solu¸c˜ao revisados. O plano estruturado em itens dar´a espa¸co ao algoritmo, escrito na forma de pseudoc´odigo, seguindo um gloss´ario e regras de sintaxe e semˆantica pr´oprios.

Vale destacar que as informa¸c˜oes complementares se referem `a autoria da solu¸c˜ao, da-tas, vers˜oes, prop´ositos, restri¸c˜oes, observa¸c˜oes e m´etodos. O item principal ´e o algoritmo. Outros itens podem ser inseridos.

(11)

Modelo de documenta¸c˜ao externa T´ıtulo: Data: Autor: Prop´osito: Entradas e Sa´ıdas: Entradas: Sa´ıdas: M´etodo:

Observa¸c˜oes, Requisitos e Restri¸c˜oes: Algoritmo/Fim algoritmo

Exemplo Suponhamos que se deseje desenvolver um algoritmo que calcule as ra´ızes de uma equa¸c˜ao do segundo grau. A documenta¸c˜ao externa desse algoritmo seria (a menos da apresenta¸c˜ao do algoritmo propriamente dito):

Documenta¸c˜ao externa

T´ıtulo: Ra´ızes Reais de Polinˆomio de Segundo Grau

Data: 09/04/2013

Autor: Lu´ıs Fernando

Prop´osito: Calcular as ra´ızes reais de um polinˆomio de segundo grau caso elas existam.

Entradas e Sa´ıdas:

Entradas: Coeficientes a, b e c do polinˆomio Sa´ıdas: Ra´ızes reais x1 e x2

M´etodo: Aplicar o m´etodo de B´ascara para determina¸c˜ao das ra´ızes reais. Primeiro se calcula o valor do parˆametro ∆ (∆ = b2− 4ac) e depois se avalia o resultado. Se ∆ for maior que zero, ent˜ao o polinˆomio tem duas ra´ızes. Se ∆ for igual a zero, o polinˆomio tem raiz dupla. Se ∆ for negativo, o polinˆomio n˜ao tem raiz real. As ra´ızes reais s˜ao calculadas usando a express˜ao x = (−b ±√∆)/(2a).

(12)

Observa¸c˜oes, Requisitos e Restri¸c˜oes:

O m´etodo s´o funciona para polinˆomios com ra´ızes reais. No caso de polinˆomios com ra´ızes complexas, o m´etodo pode prever uma sa´ıda informando ao usu´ario que o po-linˆomio n˜ao tem ra´ızes reais.

Algoritmo .

. .

(13)

M ´odulo

3

Pseudoc´

odigo

3.1

Somat´

orio e produt´

orio

Os planos para somat´orio e produt´orio sˆao:

Plano para somat´orio

y ← 0

para cada valor de i desde 0 at´e vf − vi, fazer y ← y + termo(vi + i)

Plano para produt´orio

y ← 1

para cada valor de i desde 0 at´e vf − vi, fazer y ← y ∗ termo(vi + i)

Como as l´ogicas s˜ao simples, os pseudoc´odigos “tem a cara” dos planos.

Documenta¸c˜ao externa

T´ıtulo: Somat´orio

Data: 09/04/2013

Autor: Lu´ıs Fernando

Prop´osito: Implementar a opera¸c˜ao de somat´orio

y = vf X i=vi termo(i) .

(14)

M´etodo: O somat´orio pode ser implementado como um pro-cesso iterativo onde cada termo do somat´orio ´e adici-onado sequencialmente. a express˜ao iterativa ´e: y ← y + termo(i). O valor inicial de y ´e 0 e de i ´e vi. A cada itera¸c˜ao, um novo valor de termo(i) ´e calculado e adicionado ao valor atual de y. O resultado desta adi¸c˜ao ´

e atribu´ıdo `a vari´avel y, atualizando seu conte´udo. Este processo se encerra quando i atinge o valor final estabe-lecido vf .

Entradas e Sa´ıdas:

Entradas: Os valores vi e vf

Sa´ıdas: O resultado do somat´orio Observa¸c˜oes, Requisitos

e Restri¸c˜oes:

Os valores de i, vi e vf s˜ao inteiros. O termo termo(i) no pseudoc´odigo deve ser substitu´ıdo pela express˜ao de-sejada.

Algoritmo

declarar y num´erico declarar i num´erico declarar vi, vf num´ericos

1. ler vi, vf

2. y ← 0

3. para i de vi at´e vf , fazer

4. | y ← y + termo(i)

5. fim para

6. escrever y Fim algoritmo

Documenta¸c˜ao externa

T´ıtulo: Produt´orio

Data: 09/04/2013

Autor: Lu´ıs Fernando

Prop´osito: Implementar a opera¸c˜ao de produt´orio

y = vf Y i=vi termo(i) .

(15)

M´etodo: O produt´orio pode ser implementado como um pro-cesso iterativo onde cada termo do produt´orio ´e mul-tiplicado sequencialmente. a express˜ao iterativa ´e: y ← y ∗ termo(i). O valor inicial de y ´e 1 e de i ´e vi. A cada itera¸c˜ao, um novo valor de termo(i) ´e calculado e multi-plicado pelo valor atual de y. O resultado desta opera¸c˜ao ´

e atribu´ıdo `a vari´avel y, atualizando seu conte´udo. Este processo se encerra quando i atinge o valor final estabe-lecido vf .

Entradas e Sa´ıdas:

Entradas: Os valores vi e vf

Sa´ıdas: O resultado do produt´orio Observa¸c˜oes, Requisitos

e Restri¸c˜oes:

Os valores de i, vi e vf s˜ao inteiros. O termo termo(i) no pseudoc´odigo deve ser substitu´ıdo pela express˜ao de-sejada.

Algoritmo

declarar y num´erico declarar i num´erico declarar vi, vf num´ericos

7. ler vi, vf

8. y ← 1

9. para i de vi at´e vf , fazer

10. | y ← y ∗ termo(i)

11. fim para

12. escrever y Fim algoritmo

Referências

Documentos relacionados

4 Este processo foi discutido de maneira mais detalhada no subtópico 4.2.2... o desvio estequiométrico de lítio provoca mudanças na intensidade, assim como, um pequeno deslocamento

A democratização do acesso às tecnologias digitais permitiu uma significativa expansão na educação no Brasil, acontecimento decisivo no percurso de uma nação em

Por meio de uma pesquisa qualitativa com levantamento de dados foi possível verificar que os pesquisadores abordam diversas frentes diferentes em seus trabalhos, que passam

Estudos sobre privação de sono sugerem que neurônios da área pré-óptica lateral e do núcleo pré-óptico lateral se- jam também responsáveis pelos mecanismos que regulam o

Neste panorama, o principal objetivo desse estudo é entender a importância da competitividade de destinos turísticos pontuando quais políticas tem sido adotadas

Crisóstomo (2001) apresenta elementos que devem ser considerados em relação a esta decisão. Ao adquirir soluções externas, usualmente, a equipe da empresa ainda tem um árduo

e) Quais são os elementos de ligação entre a política pública construída como fomento no município de Campinas e aquelas discutidas em suas intencionalidades pelo

Disto decorre que cada entidade sindical minimamente representativa deverá, num futuro próximo, escolher, em primeiro lugar, um dado mix de serviços,sejam de de natureza