Diretrizes para a
Documentação de Programas e a Confecção de Relatórios




    
   Como Documentar Código de Programas?
   Como Preparar Relatórios?
   Outras Recomendações
   Programa Exemplo
   Como Funciona o Programa Exemplo?
   Possível Relatório para o Programa Exemplo
   Exercícios
    









Como Documentar Código de Programas?

Todos os programas devem ser devidamente documentados através de comentários inseridos em seu código. Os comentários devem estar em pontos estratégicos, presentes em todas as partes onde a execução do programa não seja descrita de forma trivial ou onde o papel de alguma variável não seja de compreensão imediata. Não comente o óbvio.

Para fins administrativos, o programa também deve conter, inicialmente, as seguintes informações, na forma de comentário:

Além disto, é muito importante que você se preocupe com a apresentação do código do programa de modo a facilitar sua leitura. As linhas no código devem ser alinhadas de modo a refletir a estrutura do programa. Comandos internos a outro devem ser deslocados à direita como ilustrado no exemplo apresentado mais abaixo.









Como Preparar Relatórios?

Conjuntamente com o programa devidamente documentado, deverá ser entregue um relatório. Pretende-se com a cobrança dos relatórios criar em você o hâbito de documentar, ainda que de forma mínima, os programas por você produzidos. Na vida profissional, dificilmente você vai desenvolver software para ser utilizado apenas por você. Para que terceiros possam usar um dado software de forma efetiva, ele deve vir acompanhado de uma documentação técnica adequada.

A documentação também é importante para você próprio. Depois de um certo tempo não lembramos mais de decisões de projeto tomadas quando da confecção de um determinado software. Uma documentação de um software deve registrar estas decisões para facilitar a manutenção deste software. A documentação, portanto, é tão importante quanto o código. Por esta razão, documente bem o que você produz.

Um relatório deverá conter informações e explicações sobre o programa feito. O conteúdo mínimo desejado é:









Outras Recomendações









Programa Exemplo

Segue-se um exemplo de um programa cuja apresentação reflete sua estrutura:
001 program Exemplo;
002 {**********************************************************
003 Programa: Contagem de numeros
004 Autor: Jose da Silva (RA 983208)
005 Turma MC111B     Concluido em 14/04/98
006 Descricao:
007   Este programa faz a leitura de n numeros
008   e conta quantos sao positivos, negativos e nulos.
009 ***********************************************************}
010 uses wincrt;
011 const n = 10;
012 var
013   i, numero: integer;
014   positivos, negativos, nulos: integer; {** contadores **}
015 begin
016 {** inicializacao dos contadores **}
017   positivos := 0;
018   negativos := 0;
019   nulos := 0;
020 {** analise dos dados visando determinar o numero de **}
021 {** valores em cada categoria **}
022   writeln('Entre com ',n,' numeros inteiros.');
023   for i := 1 to n do
024   begin
025     write(i:3,') ');
026     read(numero);
027     if numero > 0
028     then
029     begin
030       writeln('O numero ',numero,' e'' maior que zero');
031       positivos := positivos + 1;
032     end
033     else
034       if numero < 0
035       then 
036       begin
037         writeln('O numero ',numero,' e'' menor que zero');
038         negativos := negativos + 1;
039       end
040       else {** neste caso numero = 0 **}
041       begin
042         writeln('O numero ',numero,' e'' nulo');
043         nulos := nulos + 1;
044       end;
045   end;
046 {** impressao dos resultados **}
047   writeln('Na sequencia de ',n,' numeros temos:');
048   writeln('  - Numeros positivos: ',positivos);
049   writeln('  - Numeros negativos: ',negativos);
050   writeln('  - Numeros nulos: ',nulos);
051 end. 








Como Funciona o Programa Exemplo?

O programa informa quantos números de uma seqüência de n valores inteiros são positivos, quantos são negativos e quantos são zeros.

Na linha

001 program Exemplo;
o programa recebe o nome Exemplo. Nas linhas
002 {**********************************************************
003 Programa: Contagem de numeros
004 Autor: Jose da Silva (RA 983208)
005 Turma MC111B     Concluido em 14/04/98
006 Descricao:
007   Este programa faz a leitura de n numeros
008   e conta quantos sao positivos, negativos e nulos.
009 ***********************************************************}
são fornecidas as informações de caráter administrativo. No ambiente Windows é preciso inserir a linha
010 uses wincrt;
para poder usar os comandos de entrada e saída. Na linha
011 const n = 10;
é declarada uma constante de nome n com valor 10. A constante n indica o tamanho da seqüência de inteiros a ser fornecida pelo usuário. As variáveis do programa são declaradas nas linhas
012 var
013   i, numero: integer;
014   positivos, negativos, nulos: integer; {** contadores **}
sendo

Os comandos executados pelo programa estão delimitados pelo begin da linha 015 e o end da linha 051. Aos contadores positivos, negativos e nulos é atribuído inicialmente o valor neutro da soma, isto é, o valor zero, nas linhas

017   positivos := 0;
018   negativos := 0;
019   nulos := 0;
Elas representam quantos valores positivos, negativos e zeros já foram lidos num dado instante. Ao iniciarmos a execução do programa, ainda não foi lido nenhum valor. Por esta razão é atribuído o valor zero para indicar que ainda não foi lido nenhum valor em cada uma destas três categorias.

Na linha

022   writeln('Entre com ',n,' numeros inteiros.');
é gerada uma mensagem na tela informando que são esperados n valores inteiros a serem fornecidos pelo usuário.

A seguir temos na linha

023   for i:= 1 to n do
um comando iterativo (também chamado de repetitivo) que executará o comando composto delimitado pelo begin na linha 024 e pelo end da linha 045 n vezes, incrementado a cada iteração a variável de controle em uma unidade. A variável de controle recebe inicialmente o valor 1.

O comando composto que se estende da linha 024 à linha 045 consiste em três comandos. O primeiro, na linha

025     write(i:3,') ');
informa o usuário que valor da seqüência está sendo esperado. O segundo, na linha
026     read(numero);
lê o valor a ser digitado pelo usuário. O processo de leitura se inicia após o usuário digitar o valor e, a seguir, pressionar a tecla ENTER. O terceiro comando consiste de um comando condicional encadeado, que inicia-se na linha
027     if numero > 0

Na linha acima verifica-se, primeiramente, se o valor lido é maior do que zero. Se este for o caso, então

Se a condição da linha 027 foi falsa, então é executado o comando condicional na linha

034       if numero < 0
Neste caso sabemos que o valor lido não é positivo e testamos se ele é negativo. Em caso afirmativo,

Se, por outro lado, a segunda condição também falhou, então é executado o comando composto nas linhas

041       begin
042         writeln('O numero ',numero,' e'' nulo');
043         nulos := nulos + 1;
044       end;
Nesta situação sabemos que o valor lido não é positivo nem negativo e, portanto, só pode ser um zero e

Uma vez encerrada a execução do comando iterativo iniciado na linha 023, o resultado computado é gerado pelos comandos nas linhas

047   writeln('Na sequencia de ',n,' numeros temos:');
048   writeln('  - Numeros positivos: ',positivos);
049   writeln('  - Numeros negativos: ',negativos);
050   writeln('  - Numeros nulos: ',nulos);








Possível Relatório para o Programa Exemplo

    Relatório

    Autor: José da Silva (RA 983208)
    Turma: MC111B
    Data de Entrega: 14/04/98
    Descrição Sucinta do Programa
    O programa computa quantos números de uma seqüência de n valores inteiros são positivos, quantos são negativos e quantos são nulos.
    Operação do Programa
    O usuário deve fornecer os valores conforme solicitados pelo programa. Os valores são solicitados, um por vez, por uma mensagem que indica a posição do valor esperado na seqüência de dados de entrada. Após a digitação o usuário deverá pressionar a tecla ENTER para disparar o processo de leitura. Para processar seqüências de tamanho diferente de 10, o valor da constante n deve ser alterado no código e o código recompilado.
    Algoritmo Utilizado
    Os números da seqüência de dados fornecidos pelo usuário são consumidos um por vez. A cada dado consumido, é verificado a que categoria (isto é, positivos, negativos e zeros) ele pertence e é efetuada a contabilidade adequada. Ao final deste processo, são apresentados os resultados.
    Condições de Contorno
    O programa aceita quaisquer valores inteiros no intervalo de inteiros representáveis pelo tipo integer.
    Obs: Os extremos deste intervalo variam de acordo com a plataforma onde for executado o programa. No caso do Turbo Pascal no ambiente Windows, este intervalo vai de -32768 até 32767. Dados, que não atendam a sintaxe de inteiros em Pascal, provocarão um "erro fatal" e, conseqüentemente, a interrupção da execução do programa.
    Recursos Peculiares do Turbo Pascal
    Não foram utilizados recursos desta natureza.
    Testes
    O programa foi testado com algumas seqüências de valores apenas positivos, apenas negativos, de zeros apenas e com valores mistos. O programa se comportou da maneira esperada.
    Dificuldades Encontradas
    As mensagens de solicitação de dados ao usuário apresentaram problemas de alinhamento sempre que o número de dígitos da variável i crescia. Para resolver o problema, passou-se a imprimir o valor de i de maneira "formatada" em um campo de 3 posições fixas. O código do programa funciona, portanto, para valores de n até 999. Para valores maiores, a dimensão do campo formatado precisa ser revisto.
    Especificação Implementada
    O programa implementou todos os requisitos fornecidos na especificação.
    Adições
    Nenhum recurso não especificado foi implementado
    Sugestões
    • O programa, ao invés de ter nele embutido o tamanho da seqüência, poderia solicitar este valor ao usuário.
    • O programa poderia ser estendido para processar mais de uma seqüência de dados conforme solicitação do usuário.
    Comentários
    A complexidade do programa foi adequada para exercitar os conceitos iniciais apresentados nas aulas teóricas.








Exercícios

  1. Compile e execute o código fonte do programa exemplo acima.
  2. Modifique o programa exemplo para que o tamanho da seqüência não seja mais constante, mas seja fornecida pelo usuário.
  3. Modifique o programa exemplo para que ele leia dados, enquanto não houver uma indicação explícita, por parte do usuário, de que a seqüência de dados terminou. O tamanho da seqüência de dados, portanto, não é conhecida a priori. De que maneira você poderia identificar a intenção do usuário de concluir a entrada da seqüência de dados?








Obs.: O presente documento foi derivado de um texto originalmente preparado por Allan Francis Dorrington Jr., no âmbito de um projeto de auxílio didático.

http://www.dcc.unicamp.br/~hans/mc111/98s1/document.html