Vous êtes sur la page 1sur 3

Eflio-A

Neste trabalho pretende-se que implemente uma classe em C++, utilizando as normas de escrita de cdigo indicadas no final deste enunciado. Um polinmio de grau n pode ser definido da seguinte forma:

Os nmeros an , an-1, .. a0 so denominados coeficientes do polinmio e o termo a0 o termo independente. Podemos representar um polinmio de grau n sob a forma de lista utilizando a seguinte notao: [ a0 ; a1 ; . ; an-1 ; an,] O polinmio representado como um vector de reais (std:.vector<double>) representando os coeficientes comeando pelo coeficiente de menor grau. Ou seja na posio 0 do vector est o coeficiente de grau 0, na posio n do vector est o coeficiente de grau n. Exemplos: 3x4 - 2x3 + x - 7 <==> [-7.0; 1.0; 0.0; -2.0; 3] -2x5 + x4 -5x2 +x <==> [0.0; 1.0; -5.0; 0.0; 1.0: -2.0] 0 <==> [0.0]

Programa a desenvolver
Implemente em C++ uma classe Polinomio para representar polinmios de grau n. Na codificao da classe deve respeitar as regras de escrita de cdigo apresentadas nesta disciplina e que so fornecidas em anexo. Implemente os seguintes mtodos na classe Polinomio: a) void soma_Polinomio(const Polinomio& p2) - Soma ao objeto o polinmio P2 b) void subtrai_Polinomio(const Polinomio& p2) - Subtrai ao objeto o polinmio P2 c) double valor(double n) Calcula o valor do polinmio no ponto n d) void multiplica_Polinomio (const Polinomio& P2) Multiplica o objeto pelo polinmio P2 e) const Polinomio& derivada_Polinomio () Calcula a derivada do polinmio. f) const Polinomio& derivada_Mult_Polinomio (int n) - Calcula a derivada de ordem n do polinmio.

g) const Polinomio& primitiva_Polinomio () Calcula a primitiva do polinmio. Admita que a constante resultante da primitivao nula. h) double* zeros_Polinomio (P1) Calcula os zeros de um polinmio do primeiro ou segundo grau. i) Implemente a funo main() e faa alguns testes classe por si implementada.

Anexo Norma de Escrita de Cdigo 1. Formatao 1.1 Indentao: Cada linha de cdigo deve comear por 4 espaos por cada bloco de cdigo em que estiver inserido. aceitvel em vez de 4 espaos utilizar outro valor, desde que seja sempre o mesmo para todo o ficheiro. 1.2 Tamanho das linhas: As linhas tanto cdigo como de comentrios no devem exceder os 80 caracteres. Caso tal no seja possvel, a linha de cdigo deve ocupar mais que uma linha. Conta para efeitos de indentao a segunda linha e seguintes, como se estivessem dentro de mais um bloco de cdigo. Uma linha de comentrio que continue na linha seguinte mantm a indentao. 1.3 Argumentos: As listas de argumentos, tanto na definio como na utilizao, no so considerados blocos de cdigo. Assim devem ser escritos na mesma linha, se possvel, caso contrrio aplica-se o ponto 1.2. 1.4 Incio e fim de bloco: A marca de incio e de fim de bloco de cdigo deve utilizar uma linha para o incio e outra para o fim do bloco. As linguagens funcionais podem ignorar esta regra, uma vez que em geral o primeiro elemento do bloco um identificador e convm que fique na mesma linha que a abertura de bloco. 2. Comentrios 2.1 Localizao: Os comentrios devem anteceder o cdigo que comentam. Pode-se colocar pequenos comentrios ao bloco na prpria linha de incio ou fim de bloco de cdigo. 2.2 Comentrio de classe: No incio de cada classe deve existir um comentrio de classe. Neste comentrio deve conter informao sumria sobre a classe. D-se liberdade de incluir mais ou menos campos conforme apropriado, no entanto o comentrio de classe deve ter obrigatoriamente os campos (ingls/portugus): Author/Autor - uma ou mais pessoas que contriburam para a classe Last change/ltima modificao - data da ltima modificao Description/Descrio - descrio da estrutura de dados e breve descrio dos algoritmos envolvidos, esclarecendo o que os algoritmos fazem e no como fazem 2.3 Comentrio de mtodo: Cada mtodo deve ter um comentrio inicial, idntico ao comentrio de classe, acrescentando: Descrio do algoritmo, no s o que faz mas tambm como o faz; A complexidade temporal do algoritmo, sempre que possvel. No incio dos blocos de cdigo pode-se colocar tambm a complexidade temporal do bloco de cdigo; Pr e ps-condies de utilizao do mtodo, por exemplo, os elementos de uma lista estarem ordenados; Incluir eventuais restries de utilizao, por exemplo, o valor mximo para cada argumento do mtodo para o qual o mtodo foi testado e funciona bem. Aps serem realizados testes, os resultados dos testes devem ser tambm includos. 2.4 Comentrio de linha: Devem ser colocados comentrios de linha apenas em zonas complexas, de forma a complementar a descrio do algoritmo feita no comentrio de mtodo. Os comentrios de linha devem assumir que o leitor conhece a linguagem de programao, pelo que no devem repetir o que est no cdigo. 3. Nomes 3.1 Variveis iteradoras inteiras: Os nomes das variveis devem comear por letras minsculas. As variveis iteradoras inteiras devem ser chamadas i, j e k. Devem ser reutilizadas, devendo o k ser utilizado apenas se o i e j estiverem em utilizao. Caso sejam necessrias mais que trs variveis iteradoras, adicionar um nmero letra i (i1, i2, ...). Caso as variveis iteradoras sejam reais ou de outra natureza, utilizar as letras l, m e n. 3.2 Variveis no iteradoras: Para as variveis no iteradoras deve-se utilizar nomes elucidativos. Na juno de dois nomes, a letra inicial do segundo nome deve ser maiscula. A primeira letra deve ser sempre

minscula. Caso no existam nomes elucidativos, utilizar as letras u, v e w para os valores inteiros, x, y e z para os valores reais, a, b e c para nomes (strings), e p, q e r para apontadores ou variveis de outra natureza. 3.3 Constantes e macros: Constantes ou macros devem ser escritos em maisculas, e as palavras separadas por um "underscore": '_'. 3.4 Estruturas e classes: Os nomes das estruturas ou classes tm de ter sempre nomes elucidativos e devem comear por T se um tipo abstrato de dados, S se for uma estrutura, e C se for uma classe no geral, D se for uma classe para caixas de dilogo de uma interface grfica. Na juno de dois nomes, a letra inicial de cada nome deve ser maiscula. 3.5 Mtodos: Os nomes dos mtodos devem ter sempre nomes elucidativos. No caso de programao no orientada por objetos, o nome das funes e procedimentos deve ser antecedida do nome ou iniciais do mdulo a que pertencem. Na juno de dois nomes, a letra inicial de cada nome deve ser maiscula. No utilizar o mesmo nome para funes ou mtodos com argumentos diferentes, a no ser que as funes ou mtodos sejam apenas diferentes verses. Em princpio, o nome de um procedimento deve conter um verbo no infinitivo, enquanto que o nome de uma funo dever ter o nome da grandeza que calcula, no necessitando de verbo. As funes com resultado booleano devem conter um verbo no presente ou adjetivo de forma a serem utilizadas dentro de condicionais. 4. Estilo 4.1 Blocos de cdigo: No abrir um bloco de cdigo para um s comando, exceto para evitar confuso por exemplo numa cadeia if/else. 4.2 Repeties: No repetir uma sequncia de comandos. Muitas vezes por facilidade ao escrever cdigo, repetem-se comandos quando poderiam ser postos dentro de um ciclo. 4.3 Tamanho dos mtodos: No fazer mtodos demasiado grandes (mais de 100 linhas de cdigo). Nesse caso agrupar comandos relacionados em mtodos, mesmo que o mtodo venha a ser chamado uma s vez. 4.4 Comandos numa linha: Iniciar sempre uma nova linha para um comando, ou seja, no colocar antes de um comando um condicional, ciclo, ou outro comando.

Bom Trabalho

Vous aimerez peut-être aussi