Вы находитесь на странице: 1из 14
Bruno Brito de Souza Danilo Ferreira da Silva Jefferson da Silva Queiroz Marcelo de Camargo

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 PRÁTICAS SUPERVISIONADAS

(Programação Estruturada II / 2ºBIM)

Programação Estruturada II

Profª.: Vanessa

Faculdade Anhanguera

São Paulo

2013

RESUMO

Trabalho que visa desenvolver um algoritmo para a contagem de comentários em código fonte de arquivo C.

Palavras chave: algoritmo, linguagem c, contador, comentários;

1. OBJETIVO

Desenvolver um algoritmo para fazer a contagem de comentários contidos dentro

do arquivo fonte da linguagem C.

1.1. Definições de Comentários em C

O arquivo fonte em C possibilita dois tipos de comentários:

Comentário de única linha: representado por duas barras (//);

Exemplo:

//inclusão de uma biblioteca

<include> studio.h

Comentário de Múltiplas Linhas: representado por barra asterisco (/*) na

inicialização e por asterisco barra (*/) na finalização do comentário. Porém

esse tipo de comentário pode ser utilizado como uma única linha se desejar.

Exemplo:

/*inclusão de uma biblioteca*/

<include> studio.h

/*Inclusão de uma biblioteca*/ <include> studio.h

1.2.

Estudo do Problema

Para o desenvolvimento dessa lógica, temos que ter alguns parâmetros de base, conforme listado abaixo:

1. Todo comentário de única linha (//) será considerado apenas uma linha de comentário. Nesse caso, 1 comentário;

2. Todo comentário que se inicia por “/*“ e finaliza por “*/” será considerado comentário em múltiplas linhas;

3. Será apresentado o números de saltos de linha no código “\n”;

4. O algoritmo fará o cálculo do percentual de linhas comentadas no código.

2. DESENVOLVIMENTO ALGORITMO

Veremos a implementação do código solicitado:

Português Estruturado: é o algoritmo em forma de texto, escrito de uma forma simplificada, contendo os passos de execução, sendo restrito a poucas palavras, ou seja, executando o essencial ao entendimento humano. Também é conhecido como pseudocódigo.

Diagrama de Blocos: é a representação do algoritmo em uma forma gráfica, concebida através de formas geométricas padronizadas, ligadas através de setas de fluxos de dados, indicando as diversas ações no sistema.

Algoritmo em C: o algoritmo nos mostrando o que foi proposto no inicio do trabalho.

2.1.

Português Estruturado

Variáveis int caractere; char pesquisa []; int encontrei = 0; char arquivo; float i = 0; float n = 0; float j = 0; float porc;

Início abrir arquivo; se arquivo existir faça; enquanto caractere não chegar ao final faça; se caractere = '\n' faça; n++; fim_se se caractere = '//' faça; i++; fim_se se caractere = '/* */' faça; j++; fim_se se caractere = pesquisa e !encontrei faça; encontrei = 1; fim_se se encontrei = verdadeiro faça; se caractere = pesquisa faça encontrei = 1; se pesquisa = verdadeiro faça; i++; entao encontrei = 0; fim_se fim_se fim_se fim_se fechar arquivo; porc = n/(i+j); Imprima: Numero linhas no arquivo; imprima: Número Comentários em linha; imprima: Número Comentários várias linhas; imprima: Porcentagem de linhas com comentário; fim

2.2.

Diagrama de Blocos (Fluxograma)

2.2. Diagrama de Blocos (Fluxograma)

2.3.

Explicações do Algoritmo

No algoritmo existe as seguintes condições implementadas:

É declarada a variável e faz uma verificação se o arquivo existe e se ele está

vazio;

Se satisfatório o arquivo é aberto em memória e começamos a condição que,

enquanto tiver linha é feita alguns processos;

Nesse processo de looping, verificamos a existência dos caracteres de

comentários;

Para os comentários encontrados na linha corrente com o comentário “//”,

adicionamos mais um na variável e prossigamos para a próxima linha;

Se contiver comentário de múltiplas linhas ele armazena em uma outra variável

Sendo positivo é somado na variável para assim prosseguir a nova leitura nas

próximas linhas.

Ao final desse processo, o arquivo é fechado informando o total de comentários

encontrados;

Comentários do tipo “//” é considerado 1 comentário por linha.

Comentários de múltiplas linhas é considerado 1 comentário por um conjunto de

fechamento, não importando a quantidade de linhas envolvidas. Exibindo também

o percentual de comentário para as linhas do código

2.4.

Algoritmo em C

nome do arquivo: ATPS.c

//------------------------------------------------------------------------------

// PROGRAMA EM C ATPS 2º SEM. TADS

// módulo em linguagem C. O código apresentado a seguir é um extrato de

// desenvolvimento criado para a disciplina de Classificação e Pesquisa.

// Pede-se ao leitor identificar os tipos de linhas com comentários, em

// especial a diferenciação de comentários de uma ou de várias linhas.

// Autor: SAMIR MONTEIRO DE TOLEDO RA: 5644107797.

// Revisões:

//

26/05/2013: Criação do módulo.

//

31/05/2013: Expansão do módulo em função da lista de exercícios.

//

01/06/2013: Acrescido cálculo de percentual da média 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 início 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 não vai calcula a porcentagem corretamente

float i = 0; // mostrar número de comentários //

float n = 0; // mostrar número de linhas no código \n

float j = 0; // mostrar número de comentários /* //para calcular a porcentagem float porc; // calcula o percentual pFile = fopen (arquivo, "r"); if (pFile !=NULL)

{

// laço para ler o conteúdo 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 posição 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 posição de busca if(pos2 == strlen(pesquisa2)){ j++;

}

}else{ encontrei2 = 0;

}

}

}

}

fclose(pFile); // fecha o arquivo //calculando a porcentagem e armazenando na variável "porc" para exibição

porc = n/(i+j); printf("\n \n \n \n"); //exibe o número de linhas que contém o arquivo printf("Numero linhas no arquivo = %0.0f.\n", n); //exibe o número de comentários em linha que contém no arquivo printf("Numero Comentarios em linha = %0.0f.\n", i); //exibe o número de comentários em várias linhas que contém no arquivo printf("Numero Comentarios varias linhas = %0.0f.\n", j); //exibe o percentual de comentários em relação ao numero de linhas que contém 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 Executável: ATPS.exe Nome do Arquivo testado: arquivo.txt

2.4. Teste do algoritmo Nome do arquivo: ATPS.c Executável: ATPS.exe Nome do Arquivo testado: arquivo.txt

CONCLUSÃO

Algoritmos é um dos processos mais importantes na área da programação, pois através dele conseguimos criar uma lógica funcional para um problema específico.

Com isso ganhamos portabilidade em nosso código, pois uma vez criada, podemos importá - la para qualquer linguagem de programação, tendo apenas a necessidade de programar de acordo com as sintaxes que a ferramenta de programação propõe, tendo o algoritmo como base de escopo para o código.

BIBLIOGRAFIA

ANHANGUERA EDUCACIONAL. Manual para Trabalhos Acadêmicos. Disponível 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