Вы находитесь на странице: 1из 5

2 Etapa 1 Passo A funo main() pode ter parmetros formais. Mas o programador no pode escolher quais sero eles.

A declarao mais completa que se pode ter para a funo main() : int main (int argc,char *argv[]); Os parmetros argc e argv do ao programador acesso linha de comando com a qual o programa foi chamado. O argc (argument count) um inteiro e possui o nmero de argumentos com os quais a funo main() foi chamada na linha de comando. Ele , no mnimo 1, pois o nome do programa contado como sendo o primeiro argumento. O argv (argument values) um ponteiro para uma matriz de strings. Cada string desta matriz um dos parmetros da linha de comando. O argv[0] sempre aponta para o nome do programa (que, como j foi dito, considerado o primeiro argumento). para saber quantos elementos temos em argv que temos argc. 2 Etapa 2 Passo Foram realizadas alteraes nos dois modulos para atender as novas solicitaes onde alm do nome do arquivo que um paramentro obrigatrio, esto sendo disponibilizados mais trs parametros opcionais que permitem ao usurio selecionar como as informaes sero passadas e tambm disponibiliza um help para utilizao do sistema. Essas opes sero passadas por paramento ao modulo secundrio que teve que ser alterado para receber os mesmos e processa-los corretamente para atender a solicitao do usurio. 2 Etapa 3 Passo Aqui temo os cdigos fontes dos arquivos alterados no desenvolvimento desta etapa. Arquivo: CodeCount.cpp #include #include #include //Inclui o arquivo que contm as funes de Calculo de nmero de linhas #include "LibCodeCount.c" int main(int argc, char *argv[]) { FILE *pFile; char car1, car2; int i,nLines = 0,nLinesComment = 0,nLinesEmpty = 0,noComment = 0,silent = 0,help = 0; for(i=2;i Comentrio de linha. /* e * / --> Comentrio em bloco e contar todas as linhas do comentrio. \n --> Quebra de linha, indica que a linha terminou. */ while (car1 != EOF){

//Se encontrar um \n conta uma linha em branco. if(car1 =='\n') { nLines++; } //Verifica se o caracter atual /, se esta afirmao for //verdadeira e o prximo caracter for = * ser iniciado o //processo de contagem das linhas do comentrio em bloco. if(car1== '/'){ car2 = fgetc(pFile); //Conta as linhas dos comentrios em bloco. if(car2 == '*'){ do{ do{ car1 = fgetc(pFile); if(car1 == '\n' && car1 != car2) { //Conta as linhas do bloco de comentrio. nLinesComment++; //Contagem de linhas do arquivo. nLines++; } //Se for encontrado um \n no bloco de comentrio, //o mesmo no contado como comentrio e sim //como linha em branco. else if(car1 == '\n' && car2 == '\n') { nLinesEmpty++; } car2 = car1; } while(car1 != '*'); car1 = fgetc(pFile); //At que seja encontrado */ a rotina de contagem de //linhas no bloco de comentrio ser execultada. } while(car1 != '/'); } //Conta os comentarios de uma unica linha if(car1 =='/' && car2 =='/') { nLinesComment++; } } car2 = fgetc(pFile); //Conta as linhas em branco if(car2 =='\n' && car1 == '\n') { nLinesEmpty++; nLines++; } car1 = car2;

} //Fecho o arquivo. fclose(pFile); //Chamada para a funo que ir exibri os contadores das linhas. ccRun(argv[1],nLines,nLinesComment,nLinesEmpty,noComment,silent); } //Se o arquivo no foi encontrado informado ao usurio. else { printf("\nNao foi possivel abrir o arquivo %s.\n\n",argv[1]); } } else { printf("\n\n Este programa foi desenvolvido para contar as linhas"); printf("\n de um codigo fonte desenvolvido em C, ele aponta o"); printf("\n total de linhas, linhas em branco e comentarios."); printf("\n\n"); printf("\n --------------HELP------------"); printf("\n\n"); printf("\n Para utilizar o programa deve informar os seguintes parametros:"); printf("\n\n Obrigatorio "CodeCount ""); printf("\n onde no paramentro deve conter o caminho e o nome do"); printf("\n arquivo a ser analizado."); printf("\n"); printf("\n Exemplo: CodeCount Listagem2.cpp"); printf("\n"); printf("\n Opcionais:"); printf("\n -c ou -comment"); printf("\n Para no exibir a contagem das linhas de comentarios"); printf("\n"); printf("\n Exemplo: CodeCount Listagem2.cpp -c"); printf("\n"); printf("\n -s ou -silent"); printf("\n Nao sera exibido na tela o resultado."); printf("\n O resultado ser exibido no arquivo "CodeCount_Result.txt""); printf("\n"); printf("\n -h ou -help"); printf("\n Exibe este help do sistema"); printf("\n\n"); } } 2 Etapa 3 Passo Arquivo: LibCodeCount.cpp #include #include #include void ccRun(char *file,int nLines,int nLinesComment, int nLinesEmpty, int noComment, int

silent) { float porcentagem; printf("\nCode Count - Programer's Tool"); printf("\n Version 1.0 2011\n"); if(silent == 0) { printf("\n\n Contagem para "%s"...\n",file); printf(" Numero de linhas : %d\n",nLines); if(noComment == 0) { porcentagem = (nLines * nLinesComment)/100; printf(" Numero de linhas com comentarios : %d\n",nLinesComment); printf(" Porcentagem de comenarios : %.02f \%\n",porcentagem); } printf(" Numero de linhas vazias : %d\n\n",nLinesEmpty); } else { FILE *pFile; //Abre o arquivo, se no existir cria um novo. pFile = fopen("CodeCount_Result.txt","w"); //Escrevendo no Arquivo. fprintf(pFile,"\nCode Count - Programer's Tool"); fprintf(pFile,"\n Version 1.0 2011\n"); fprintf(pFile,"\n\n Contagem para "%s"...\n",file); fprintf(pFile," Numero de linhas : %d\n",nLines); if(noComment == 0) { porcentagem = (nLines * nLinesComment)/100; fprintf(pFile," Numero de linhas com comentarios : %d\n",nLinesComment); fprintf(pFile," Porcentagem de comenarios : %.02f \%\n",porcentagem); } fprintf(pFile," Numero de linhas vazias : %d\n\n",nLinesEmpty); fclose(pFile); //Informando ao usurio que o arquivo foi criado. printf("\n\nFoi gerado o arquivo CodeCount_Result.txt"); printf("\nno diretorio do sistema com o resultado da contagem.\n"); } }

Bibliografia: http://www.mtm.ufsc.br/~azeredo/cursoC/aulas/c790.html PLT Programao Estruturada Autor: Victorine Viviane Mizrahi

Вам также может понравиться