ATPS - PROGRMAÇÃO ESTRUTURADA 1a. ETAPA
Casos: ATPS - PROGRMAÇÃO ESTRUTURADA 1a. ETAPA. Pesquise 862.000+ trabalhos acadêmicosPor: CarlosRAlves • 26/11/2012 • 5.371 Palavras (22 Páginas) • 1.038 Visualizações
01ª 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 múltiplas linhas.
2° Passo
Para a solução do problema proposto serão criados dois módulos.
O arquivo principal é o CodeCout.cpp que contém o modulo toda a rotina de contagem das linhas do arquivo. Este modulo, realiza a leitura do arquivo informado para analisar. Depois de realizada a análise é chamada a função ccRun que esta contida no arquivo LibCodeCount.c, passando alguns parâmetro necessários para realização da rotina.
A função ccRun é responsável por receber os dados passados por parâmetros, pelo modulo principal, formatá-los e exibir as informações ao usuário.
1ª Etapa
3° Passo
Aqui temos os códigos fontes dos arquivos gerados no desenvolvimento desta etapa.
Arquivo: CodeCount.cpp
#include <conio.h>
#include <stdio.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 será executada.
}
while(car1 != '/');
}
//Conta os comentarios de uma unica linha
if(car1 =='/' && car2 =='/')
{
nLinesComment++;
}
}
...