Você está na página 1de 14

Bruno Brito de Souza Danilo Ferreira da Silva Jefferson da Silva Queiroz Marcelo de Camargo Samir Monteiro de Toledo

RA: 5294115435 RA: 5622109086 RA: 5822157575 RA: 5279975107 RA: 5644107797

ATIVIDADE PRTICAS SUPERVISIONADAS (Programao Estruturada II / 2BIM)

Programao Estruturada II Prof.: Vanessa

Faculdade Anhanguera So Paulo 2013

RESUMO

Trabalho que visa desenvolver um algoritmo para a contagem de comentrios em cdigo fonte de arquivo C.

Palavras chave: algoritmo, linguagem c, contador, comentrios;

1. OBJETIVO
Desenvolver um algoritmo para fazer a contagem de comentrios contidos dentro do arquivo fonte da linguagem C.

1.1.

Definies de Comentrios em C

O arquivo fonte em C possibilita dois tipos de comentrios:

Comentrio de nica linha: representado por duas barras (//);

Exemplo: //incluso de uma biblioteca <include> studio.h

Comentrio de Mltiplas Linhas: representado por barra asterisco (/*) na inicializao e por asterisco barra (*/) na finalizao do comentrio. Porm esse tipo de comentrio pode ser utilizado como uma nica linha se desejar.

Exemplo: /*incluso de uma biblioteca*/ <include> studio.h

/*Incluso de uma biblioteca*/ <include> studio.h

1.2.

Estudo do Problema

Para o desenvolvimento dessa lgica, temos que ter alguns parmetros de base, conforme listado abaixo: 1. Todo comentrio de nica linha (//) ser considerado apenas uma linha de comentrio. Nesse caso, 1 comentrio; 2. Todo comentrio que se inicia por /* e finaliza por */ ser considerado comentrio em mltiplas linhas; 3. Ser apresentado o nmeros de saltos de linha no cdigo \n; 4. O algoritmo far o clculo do percentual de linhas comentadas no cdigo.

2. DESENVOLVIMENTO ALGORITMO
Veremos a implementao do cdigo solicitado:

Portugus Estruturado: o algoritmo em forma de texto, escrito de uma forma simplificada, contendo os passos de execuo, sendo restrito a poucas palavras, ou seja, executando o essencial ao entendimento humano. Tambm conhecido como pseudocdigo.

Diagrama de Blocos: a representao do algoritmo em uma forma grfica, concebida atravs de formas geomtricas padronizadas, ligadas atravs de setas de fluxos de dados, indicando as diversas aes no sistema. Algoritmo em C: o algoritmo nos mostrando o que foi proposto no inicio do trabalho.

2.1.

Portugus Estruturado

Variveis int caractere; char pesquisa []; int encontrei = 0; char arquivo; float i = 0; float n = 0; float j = 0; float porc; Incio abrir arquivo; se arquivo existir faa; enquanto caractere no chegar ao final faa; se caractere = '\n' faa; n++; fim_se se caractere = '//' faa; i++; fim_se se caractere = '/* */' faa; j++; fim_se se caractere = pesquisa e !encontrei faa; encontrei = 1; fim_se se encontrei = verdadeiro faa; se caractere = pesquisa faa encontrei = 1; se pesquisa = verdadeiro faa; i++; entao encontrei = 0; fim_se fim_se fim_se fim_se fechar arquivo; porc = n/(i+j); Imprima: Numero linhas no arquivo; imprima: Nmero Comentrios em linha; imprima: Nmero Comentrios vrias linhas; imprima: Porcentagem de linhas com comentrio; fim

2.2.

Diagrama de Blocos (Fluxograma)

2.3.

Explicaes do Algoritmo

No algoritmo existe as seguintes condies implementadas: declarada a varivel e faz uma verificao se o arquivo existe e se ele est vazio; Se satisfatrio o arquivo aberto em memria e comeamos a condio que, enquanto tiver linha feita alguns processos; Nesse processo de looping, verificamos a existncia dos caracteres de comentrios; Para os comentrios encontrados na linha corrente com o comentrio //, adicionamos mais um na varivel e prossigamos para a prxima linha; Se contiver comentrio de mltiplas linhas ele armazena em uma outra varivel Sendo positivo somado na varivel para assim prosseguir a nova leitura nas prximas linhas. Ao final desse processo, o arquivo fechado informando o total de comentrios encontrados; Comentrios do tipo // considerado 1 comentrio por linha. Comentrios de mltiplas linhas considerado 1 comentrio por um conjunto de fechamento, no importando a quantidade de linhas envolvidas. Exibindo tambm o percentual de comentrio para as linhas do cdigo

2.4. Algoritmo em C nome do arquivo: ATPS.c //-----------------------------------------------------------------------------// PROGRAMA EM C ATPS 2 SEM. TADS // mdulo em linguagem C. O cdigo apresentado a seguir um extrato de // desenvolvimento criado para a disciplina de Classificao e Pesquisa. // Pede-se ao leitor identificar os tipos de linhas com comentrios, em // especial a diferenciao de comentrios de uma ou de vrias linhas. // Autor: SAMIR MONTEIRO DE TOLEDO RA: 5644107797. // Revises: // // // 26/05/2013: Criao do mdulo. 31/05/2013: Expanso do mdulo em funo da lista de exerccios. 01/06/2013: Acrescido clculo de percentual da mdia das linhas.

//-----------------------------------------------------------------------------#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int caractere; // caractere a ser lido int caractere2; // caractere a ser lido // string a ser pesquisada char pesquisa[] = "//"; char pesquisa2[] = "/*"; char arquivo[] = "arquivo.txt"; // posicao de incio da pesquisa int pos = 0; int pos2 = 0; // status da pesquisa int encontrei = 0; int encontrei2 = 0; FILE * pFile; //numeros em float para poder juntar com o resultado depois //int no vai calcula a porcentagem corretamente float i = 0; // mostrar nmero de comentrios // float n = 0; // mostrar nmero de linhas no cdigo \n

float j = 0; // mostrar nmero de comentrios /* //para calcular a porcentagem float porc; // calcula o percentual pFile = fopen (arquivo, "r"); if (pFile !=NULL) { // lao para ler o contedo do arquivo // um caractere de cada vez while((caractere = fgetc(pFile)) != EOF){ if (caractere == '\n') n++; // verifica se o caractere atual se iguala ao // primeiro caractere da string a ser pesquisada if((caractere == pesquisa[0]) && (!encontrei)){ encontrei = 1; // podemos continuar a pesquisa a partir daqui pos = 0; } if(encontrei){ if(caractere == pesquisa[pos]){ encontrei = 1; // continua a pesquisa pos++; // incrementa a posio de busca if(pos == strlen(pesquisa))i++; }else{ encontrei = 0; } } } } fclose(pFile); // fecha o arquivo pFile = fopen (arquivo, "r"); if (pFile !=NULL) { while((caractere2 = fgetc(pFile)) != EOF){ // verifica se o caractere atual se iguala ao // primeiro caractere da string a ser pesquisada if((caractere2 == pesquisa2[0]) && (!encontrei2)){ encontrei2 = 1; // podemos continuar a pesquisa a partir daqui

pos2 = 0; } if(encontrei2){ if(caractere2 == pesquisa2[pos2]){ encontrei2 = 1; // continua a pesquisa pos2++; // incrementa a posio de busca if(pos2 == strlen(pesquisa2)){ j++; } }else{ encontrei2 = 0; } } } } fclose(pFile); // fecha o arquivo //calculando a porcentagem e armazenando na varivel "porc" para exibio porc = n/(i+j); printf("\n \n \n \n"); //exibe o nmero de linhas que contm o arquivo printf("Numero linhas no arquivo = %0.0f.\n", n); //exibe o nmero de comentrios em linha que contm no arquivo printf("Numero Comentarios em linha = %0.0f.\n", i); //exibe o nmero de comentrios em vrias linhas que contm no arquivo printf("Numero Comentarios varias linhas = %0.0f.\n", j); //exibe o percentual de comentrios em relao ao numero de linhas que contm no arquivo printf("Porcentagem de linhas com comentario = %0.2f.\n", porc); printf("\n \n \n \n "); system("pause"); }

2.4.

Teste do algoritmo

Nome do arquivo: ATPS.c Executvel: ATPS.exe Nome do Arquivo testado: arquivo.txt

CONCLUSO

Algoritmos um dos processos mais importantes na rea da programao, pois atravs dele conseguimos criar uma lgica funcional para um problema especfico. Com isso ganhamos portabilidade em nosso cdigo, pois uma vez criada, podemos import - la para qualquer linguagem de programao, tendo apenas a necessidade de programar de acordo com as sintaxes que a ferramenta de programao prope, tendo o algoritmo como base de escopo para o cdigo.

BIBLIOGRAFIA

ANHANGUERA EDUCACIONAL. Manual para Trabalhos Acadmicos. Disponvel em: <http://www.anhanguera.com/anhanguera/bibliotecas/normas_bibliograficas/>. Acesso em: 25 maio. 2013. PLT Treinamento em linguagem C PLT Estrutura de dados usando C

Você também pode gostar