Trabalho / Estatísticas de linhas de arquivos texto

Introdução

O objetivo deste trabalho é a implementação de um mesmo programa em linguagens com sistema de tipos diferentes.

O trabalho é em equipe de até duas pessoas. O compartilhamento de informações entre as equipes é permitido (e aconselhado), mas o compartilhamento de código não é permitido. Trabalhos que tenham porções significativas de código iguais, ou copiados da internet, serão anulados. Veja a resolução Nº 008/2007-COU para as possíveis sansões disciplinares. Cada membro da equipe deverá apresentar o trabalho individualmente para o professor.

Este trabalho vale 5,0 pontos na nota do terceiro bimestre.

Data de entrega: até o dia 26/09/2013 às 23:00h.

Descrição

Implementar um programa chamado sstat que computa estatísticas de linhas de arquivos texto.

O programa deve receber como parâmetro na linha de comando uma lista de caminhos (arquivos ou diretórios) e escrever na saída padrão a quantidade de linhas em cada tipo de arquivo e o total das linhas, considerando todos os arquivos passados na linha de comando e todos os arquivos na árvore dos diretórios passados na linha de comando.

Por exemplo, considere a existência dos seguintes arquivos com os respectivos números de linhas

Arquivo Número de linhas
tests/hello/hello.c 5
tests/hello/hello.cpp 7
tests/command-line/sum/sum.c 10

Se o programa for chamado com os parâmetros tests/hello/hello.c e tests/command-line/sum/sum.c, a saída deve ser

15 c
15 total

O que significa que os arquivos com extensão .c têm 15 linhas, e o total de linhas dos arquivos também foi 15 (só tinha um tipo de arquivo).

Se o programa for chamado com o parâmetro tests/, a saída deve ser

15 c
 7 cpp
22 total

Neste caso, todos os arquivos da árvore do diretório tests/ foram contabilizados.

A saída deve ser ordenada pelo número de linhas do tipo de arquivo (maior número de linhas primeiro), e em caso de número de linhas iguais, pela ordem alfabética do tipo (extensão) do arquivo. Os aquivos sem extensão devem ser ignorados. Observe que os números de linhas estão alinhados a esquerda e as extensões alinhadas a direita.

Linguagens

Três versões deste programa devem ser escritas:

Não é permitido a utilização de nenhuma biblioteca que não seja padrão da linguagem/ambiente.

Desenvolvimento

Para facilitar o desenvolvimento dos programas, está disponível um “projeto” com os arquivos iniciais de código, um programa testador e um Makefile para compilar, testar e enviar os programas.

Para fazer o download do projeto é necessário ter o git instalado. Se você utiliza um sistema GNU/Linux baseado no Debian (Mint, Ubuntu, etc), o git pode ser instalado com o comando

sudo apt-get install git

Para fazer o download do projeto, execute o comando

git clone http://malbarbo.pro.br/git/sstat

Após a execução deste comando, um diretório chamado sstat terá sido criado.

O arquivo src/sstat.py contém uma implementação do programa em Python que pode ser usado como exemplo para outras implementações. Não faça apenas uma tradução deste código, tenha o cuidado de considerar as características (principalmente o sistema de tipos) de cada linguagem.

O código dos programas deve ser escrito nos arquivos src/sstat.js, src/sstat.go e src/Sstat.java. Para facilitar os testes, não separe o código de cada programa em mais que um arquivo.

Os programas necessários para desenvolver este trabalho podem ser instalados com o comando

sudo apt-get install make golang nodejs default-jdk

Execução dos testes

Para executar os testes, entre no diretório sstat e execute um dos comandos

make tests     # para testar todos os programa
make test-js   # para testar o programa em Javascript
make test-go   # para testar o programa em Go
make test-java # para testar o programa em Java

Envio do trabalho

Para enviar o trabalho, execute o comando

make enviar

O script de envio criará um arquivo compactado com os arquivos a serem entregues para correção e enviará para a página do professor.

Após enviar o trabalho, o aluno deverá entrar na página da disciplina, imprimir e assinar o termo de autoria. O termo de autoria é um documento em que o aluno afirma que ele é o autor do código do trabalho que ele enviou e que portanto, não copiou parte significativa do programa de outra pessoa ou da internet.

Avaliação

O trabalho será avaliado de acordo com os critérios: