Duvida EP3 - funcao cria_monomio

Duvida EP3 - funcao cria_monomio

por Rebeca Bayeh -
Número de respostas: 2
Oi!
Nao entendi a parte da explicacao sobre a funcao cria_monomio que diz que se coef for zero, o polinomio eh nulo.
Ele deve valer NULL ou simplesmente foi outra forma de dizer que, por exemplo, monomio.coef = 0 ?
Em resposta à Rebeca Bayeh

Re: Duvida EP3 - funcao cria_monomio

por Francisco Reverbel -
O polinômio nulo (p(x) = 0) não possui nenhum termo com coeficiente não nulo. Dentro da biblioteca que vocês vão escrever no EP3, cada polinômio é implementado por uma lista encadeada sem cabeça. Além disso, o enunciado do EP3 especifica que "apenas termos com coeficiente não-nulo devem estar na lista". Conclusão: o polinômio nulo deve ser implementado por uma lista encadeada vazia. Se essa lista fosse com cabeça, ela teria uma única célula: a cabeça da lista. Como ela é sem cabeça, ela não tem nenhuma célula. Em outras palavras, o polinômio nulo é representado pelo ponteiro nulo (NULL) .

Note que o fato do polinômio nulo ser representado por um NULL é um detalhe interno da implementação da biblioteca. Os clientes da biblioteca não precisam saber disso e não devem usar esse fato. Tudo que um cliente precisa saber (e pode usar) é a especificação da interface da biblioteca (a parte do enunciado que vem antes da seção "Implementação da Biblioteca"). Em particular, o cliente não deve usar o fato de que chamadas a cria_monomio com zero no parâmetro coef devolvem NULL. A idéia é que esse tipo de coisa pode mudar numa versão futura da biblioteca. Suponha que, por algum motivo, na versão 2 da biblioteca os polinômios serão implementados como listas encadeadas com cabeça. Suponha também que alguém escreveu um cliente que inicializa um polinomio nulo com a atribuição p_nulo = NULL (em vez de p_nulo = cria_monomio(0, 0), que é o jeito "oficiaĺ" de obter um polinômio nulo). Esse cliente não funcionará com a versão 2 da biblioteca!