1º Trabalho Prático de Programação II


1. Organização e calendário


2. Descrição

O objectivo do trabalho é a realização de um programa de formatação de ficheiros de texto. A formatação será feita de acordo com directivas contidas nos ficheiros de texto. O programa deve aceitar dois argumentos de linha de programa opcionais. Por exemplo, se o programa se chamar formata.exe, as seguintes formas de chamada devem ser possíveis:

formata
Formata texto lido a partir do teclado (até ao Ctr-Z, em MS-DOS, que assinala um "pseudo fim do ficheiro"). O texto formatado deve ser escrito no ecrã.
formata nome_entrada
Formata texto contido no ficheiro nome_entrada. O texto formatado deve ser escrito no ecrã.
formata nome_entrada nome_saida
Formata o texto contido no ficheiro nome_entrada e coloca o texto formatado no ficheiro nome_saida.

2.1 Directivas de formatação

O texto será formatado de acordo com determinadas directivas de formatação encontradas no início das linhas. As directivas começam sempre pelo caracter '.'. Qualquer linha começada por '.' deverá ser interpretada como uma linha contendo apenas directivas. Se uma linha contiver directivas inválidas deverá ser ignorada. Caracteres expúrios numa directiva devem ser ignorados.

Deverão ser usadas as seguintes directivas de formatação:

2.2 Texto de entrada

A interpretação do texto de entrada será feita como se segue:

  1. Qualquer sequência de espaços e tabuladores deve ser interpretada como um único espaço separador de palavras.
  2. Cada fim-de-linha na entrada (salvo os que se encontrarem em linhas com directivas) assinala o final dum parágrafo de texto. As únicas excepções são:
    1. Sequências de fins-de-linha, espaços e tabuladores no início do ficheiro de entrada devem ser ignorados.
    2. Sequências de fins-de-linha, espaços e tabuladores (contendo pelo menos um fim-de-linha) que não estejam no início do ficheiro de entrada devem ser interpretados como assinalando o final de um único parágrafo.
  3. As directivas de formatação, como é óbvio, não deverão constar no ficheiro de resultado.
  4. Não se deverá impor nenhum limite quer ao tamanho das palavras quer ao comprimento das linhas (gerando um parágrafo) constantes no ficheiro de entrada.
  5. A largura inicial desejada para as linhas deverá ser de 70 caracteres.
  6. A justificação inicial deverá ser à esquerda.

2.3 Texto de saída

  1. Cada parágrafo deve ser terminado por um duplo fim-de-linha. Assim, ficará uma linha em branco entre cada um deles.
  2. Palavras maiores que a largura de linha desejada devem ser escritas inteiras numa linha separada.

2.4 Exemplos

Apresenta-se de seguida um exemplo simples:

.L20 número de colunas passa de 70 a 20
.C justificação ao centro
         Isto é um texto que vai ficar centrado com 20 colunas.

Ainda centrado.
.E justificação à esquerda
Um novo parágrafo justificado à esquerda.
.L30 número de colunas passa a 30
Continuação do           parágrafo anterior mas agora com 30 caracteres por linha.
Novo parágrafo.
.D justificação à direita
Agora a justificação é à direita.

O resultado da formatação deverá ser (as linhas com traços verticais não constam da saída, servindo apenas para os leitores deste documento contarem as colunas com maior facilidade):

||||||||||||||||||||
 Isto é um texto que
 vai ficar centrado
   com 20 colunas.
||||||||||||||||||||

||||||||||||||||||||
   Ainda centrado.
||||||||||||||||||||

||||||||||||||||||||
Um novo parágrafo
justificado à
esquerda.

||||||||||||||||||||||||||||||
Continuação do parágrafo
anterior mas agora com 30
caracteres por linha.

||||||||||||||||||||||||||||||
Novo parágrafo.

||||||||||||||||||||||||||||||
      Agora a justificação é à
                      direita.

Um exemplo mais completo pode ser encontrado em (recomenda-se vivamente que se teste o programa com estes ficheiros):

Nota

Todos os casos que não sejam cobertos por este enunciado deverão ser resolvidos com bom senso.


Página concebida e mantida por Eng. Manuel Menezes de Sequeira (última actualização 2006/07/07)
Copyright © 1996-2001 ISCTE