Atps PE
Dissertações: Atps PE. Pesquise 861.000+ trabalhos acadêmicosPor: biscoitow • 3/6/2012 • 5.399 Palavras (22 Páginas) • 1.092 Visualizações
Anhanguera Educacional
Atividades Práticas Supervisionadas
PROGRAMAÇÃO ESTRUTURADA II
Filipe Santos Rodrigues (RA:4200058163)
Sistemas de Informação 2º A
Profº Wesley
Brasilia, DF
2012
1ª Etapa
1° Passo
Leitura para entendimento da solicitação do ATPS, com a identificação dos dois principais tipos de comentários disponíveis na linguagem C.
Os principais tipos de comentário são o // que indica comentário em uma única linha e /* */ que permite realizar comentários com multiplas linhas.
2° Passo
Para a solução do problema proposto serão criados dois modulos.
O arquivo principal é o CodeCout.cpp que contém o modulo toda a rotina de contagem das linhas do arquivo. Esta modulo realiza a leitura do arquivo informado para analiza. Após realizada a análise é chamada a função ccRun que esta continda no arquivo LibCodeCount.c, passando alguns parametra necessários para realização da rotina.
A função ccRun é responsável por receber os dados passados por paramentros, pelo modulo principal, formatalos e exibir as informações ao usuário.
1ª Etapa
3° Passo
Aqui temo os códigos fontes dos arquivos gerados no desenvolvimento desta etapa.
Arquivo: CodeCount.cpp
#include <stdio.h>
#include <stdlib.h>
#include <string.h> //Inclui o arquivo que contém as funções de Calculo de número de linhas
#include "LibCodeCount.c"
int main(int argc, char *argv[])
{
FILE *pFile;
char car1, car2;
int nLines = 0, nLinesComment = 0, nLinesEmpty = 0;
//Abro o arquivo para verificar se o mesmo existe.
pFile = fopen(argv[1],"r");
//Verifica se o arquivo foi aberto.
if(pFile != NULL)
{
car1 = fgetc(pFile);
/*Irá verificar todos os caracteres do arquivo, para localizar
// --> Comentário de linha.
/* e * / --> Comentério em bloco e contar todas as linhas do
comentário.
\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 afirmação for
//verdadeira e o próximo caracter for = * será iniciado o
//processo de contagem das linhas do comentário em bloco.
if(car1== '/'){
car2 = fgetc(pFile);
//Conta as linhas dos comentários em bloco.
if(car2 == '*'){
do{
do{
car1 = fgetc(pFile);
if(car1 == '\n' && car1 != car2)
{
//Conta as linhas do bloco de comentário.
nLinesComment++;
//Contagem de linhas do arquivo.
nLines++;
}
//Se for encontrado um \n no bloco de comentário,
//o mesmo não é contado como comentário 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 comentário
...