Sie sind auf Seite 1von 8

ANHANGUERA EDUCACIONAL

AMANDA BOTELHO DE MORAES 4211806286 CAROLINE GOMES IGNCIO 4241841782 DOUGLAS ARAJO DO NASCIMENTO 5847158978 ELEN DA MOTA BOAVENTURA 4236819182 FABIANA APARECIDA DA SILVA 5213975138

ATPS: Programa Contagem de Comentrios

PROF. FBIO RENER

GUARULHOS 2013

ANHANGUERA EDUCACIONAL

AMANDA BOTELHO DE MORAES 4211806286 CAROLINE GOMES IGNCIO 4241841782 DOUGLAS ARAJO DO NASCIMENTO 5847158978 ELEN DA MOTA BOAVENTURA 4236819182 FABIANA APARECIDA DA SILVA 5213975138

ATPS: Programa Contagem de Comentrios

Documentao da Atividade Prtica Supervisionada (ATPS) das Faculdades Integradas Torricelli, Guarulhos - Anhanguera Educacional, como requisito parcial a aprovao na disciplina de Programao Estruturada II, do curso Sistemas de Informao, sob a orientao do professor Fbio Rener.

GUARULHOS 2013

1. INTRODUO O programa desenvolvido em linguagem C, foi feito na plataforma Dev C++. O objetivo ler um arquivo e contar quantas linhas so de comentrios e mostrar a quantidade na tela. Para desenvolvermos, tivemos que levar em considerao que existem dois tipos de comentrios: simples e de blocos. E que teramos que varrer o arquivo procurando pelos smbolos que indicam o incio de cada um. Como forma de nos organizarmos, utilizamos funes para estas e outras aes do nosso programa. Estudamos a manipulao de arquivos e ponteiros para aprimorar o uso no cdigo.

2. PROGRAMA CONTAGEM DE COMENTRIOS 2.1 MAIN Na funo que executa o programa, o ideal colocar menos coisas possveis. nela que chamaremos as funes para que estas executem as devidas aes necessrias. Quando chamamos uma funo, mandamos dados para que esta trabalhe com valores especficos que a main adquiriu. Pois at ento, a funo no tem acesso aos dados da main e nem vice-versa. Por isso importante passarmos os parmetros na hora de desenvolvermos o programa.
main () { FILE *p; // ponteiro para ler arquivo char at,ant,com,nom[30]; // at para caracter atual ; ant para anterior ; com para controlar quando vai entrar no if de contagem de linhas do comentario em trecho e nom para receber o nome do arquivo int contb=0,conts=0; // cont para contar linhas de comentarios simples ; contc para comentarios em blocos e cl para somar as linhas dos dois tipos printf("Arquivo a ser aberto:"); scanf("%s",nom); //ler nome de arquivo a ser aberto printf ("Carregando %s",nom); p = lerarq(nom); // chamando funo de ler arquivo com nome do arquivo como parmetro de entrada while ((at=fgetc(p)) != EOF) { //enquanto c recebe caracter de arquivo aberto em p diferente do fim do arquivo faa printf ("%c",at); //imprime conteudo na tela por caracter contb=com_bloco(contb,ant,at,&com); //funo contagem comentarios em blocos conts=com_simples(conts,ant,at); //funo contagem comentrios simples ant=at; } printf("\n\nQtde de linhas comentadas: %d",soma(contb,conts));//exibe quantidade fclose(p); // fecha arquivo system("pause"); //pausa o sistema }

2.2 FUNES As funes podem ser reutilizadas em vrios outros trabalhos com tarefas parecidas. Assim agilizar programas futuros. importante criar funes especficas, pois se muito complexas acaba sendo mais difcil de reutiliz-las.

2.2.1 Abrir arquivos Comeamos com a de abrir o arquivo.


int lerarq(char arq[30]); //funo para ler arquivo

Definimos uma funo que retorne inteiro para o main, cujo nome lerarq que tenha parmetros de entrada um caracter, arq, de tamanho 30.
lerarq(char arq[30]){ FILE *p; p = fopen(arq,"r"); //abrindo arquivo cujo nome foi inserido pelo usuario, para modo leitura -> r if (!p){ // se der erro na leitura do arquivo printf ("\n\nErro de arquivo!"); //escreve na tela return 0; //retorna 0 } return (p); }

Note que arq uma varivel, pois ela pode conter o nome de arquivo que o usurio estabelecer para abertura. A p recebe a funo de abertura de arquivo, fopen(), em que abre o arquivo arq em modo leitura r(read). Logo aps, colocamos uma condio para caso d erro na abertura, if (!p){... , o programa ir exibir a mensagem de erro e retorna 0. 2.2.2 Comentrios s vezes fazemos programas to complexos que acaba sendo necessrio deixar uma anotao para que possamos nos lembrar o que est acontecendo nele. Para tanto utilizamos os comentrios. Existem dois tipos de comentrios dentro do cdigo C: simples e em bloco. 2.2.2.1 Comentrios simples O simples comea em // at o final da linha. Normalmente til quando precisa comentar depois da linha de comando.
int com_simples(int cont,char a, char b); //funo para comentarios simples

Na funo, definimos como nome com_simples de retorno inteiro, com parmetros de entrada um inteiro cont para fazer a contagem das linhas, a varivel a para receber a

letra atual do contedo do arquivo e a b para guardar a a para que no prximo loop esta vira a anterior. Esta foi uma maneira que adotamos para comparar duas variveis de uma vez: a anterior e a atual. Segue como fizemos.
com_simples(int cont,char a, char b){ if ((a=='/') && (b=='/')) { // se comentario simples cont++; //conta b='n'; //caracter recebe outro valor para garantir no duplicidade } return(cont); }

Primeiro, definimos a condio: se caracter anterior igual a barra e o atual igual a barra ento... Como vemos se enquadra no comentrio simples, sendo assim conta + 1. Pensamos na possibilidade de o prximo caracter do arquivo ser uma outra barra, contanto no necessariamente teramos outro comentrio. Assim para extinguir este problema, resolvemos atribuir um valor a princpio qualquer, mas estabelecido como exemplo n para a variavel atual para no termos duplicidade. E o programa retorna assim contagem das linhas. 2.2.2.2 Comentrios em bloco J o em bloco, tem de inicio o /* e finaliza em */. Quando o de linha no passa ser o suficiente ou quando se precisa comentar entre comandos ele acaba sendo muito til. Nos comentrios em bloco contamos da primeira linha at a penltima, ou seja, a linha com */ fica fora da contagem. Entrando nesse raciocnio, se anterior igual a / e atual igual a * ou se j estiver dentro do bloco do comentrio, conta. Se chegar os mesmos igual a respectivamente * e /, com recebe n porque j est na ltima linha do bloco. A funo para a contagem deste tipo de comentrio foi:
int com_bloco(int cont,char a, char b,char *com); //funo para comentarios em blocos

Funo de nome com_bloco que retorna inteiro, com quatro parmetros de entrada: um inteiro cont que ir contar todas as linhas desejadas, uma varivel a para caracter atual, b para anterior e o ponteiro com para contar as linhas que sucedem o bloco.
com_bloco (int cont,char a, char b,char *com){ if (((a=='/') && (b=='*')) || (*com=='s')){

//a com para caso esteja ainda dentro do

bloco do comentrio if (a=='\n'){ cont++; } *com='s'; comentario if ((a=='*') && (b=='/')) { *com='n'; comentrio } } return(cont); }

//se pular linha //conta //com recebe s para varrer todas linhas deste //se fim do comentario //com recebe n para parar de contar linhas do

O com est definido como ponteiro para conseguirmos manter seu valor toda vez que sair e entrar de novo na funo. 2.2.2.3 Soma dos comentrios Para a soma dos comentrios, utilizamos a seguinte funo:
int soma(int a,int b); comentadas //funo para soma da quantidade de linhas

Cujo nome soma, retorna inteiro e tem como parmetros de entrada variaveis inteiras: a e b.
soma(int a,int b){ int c; c=a+b; return (c); }

//soma

REFERNCIAS BIBLIOGRFICAS Apostila Linguagem C. Disponivel em: <http://pessoal.utfpr.edu.br/juliano/sistemas /Apostila%20Linguagem%20C.pdf >. Acesso em: 05 de maio de 2013. Programar em C: Funes. Disponivel em: <http://pt.wikibooks.org/wiki/Programar_em_ C/Fun%C3%A7%C3%B5es >. Acesso em: 09 de maio de 2013. Linguagem C: Ponteiros. Disponivel em: <http://www.juliobattisti.com.br/tutoriais/katia duarte/cbasico007.asp >. Acesso em: 09 de maio de 2013. Victorine, Viviane. Treinamento em Linguagem C. Ed. 2. So Paulo: 2008.

Das könnte Ihnen auch gefallen