Tutorial dev cpp 002 - criação, leitura e alteração de arquivos
Click here to load reader
-
Upload
flavio-freitas -
Category
Education
-
view
1.236 -
download
0
description
Transcript of Tutorial dev cpp 002 - criação, leitura e alteração de arquivos
Flaacutevio Augusto de Freitas
Algoritmos e Estruturas de Dados III usando CC++
httpflavioafblogspotcom
2012
CC++ Tutorial 2 (usando Dev-C++ versatildeo 4992)
1 INTRODUCcedilAtildeO Esta seacuterie de tutoriais foi escrita usando o
Microsoft Windows 7 Ultimate e o Bloodshed
Dev-C++ versatildeo 4992 que pode ser baixada em
httpwwwbloodshednet
2 ENTRADA E SAIacuteDA DE DISCO Agora que jaacute relembramos o uso do DevC++ e um
pouquinho de linguagem CC++ vamos ao que
realmente interessa nesse tutorial ou seja
trabalhar com arquivos em disco
Se vocecirc ainda natildeo estaacute familiarizado com
arquivos em disco leia novamente o Tutorial 1
3 FUNCcedilOtildeES DE DATA E HORA As funccedilotildees de data e hora servem para obtermos
o reloacutegio atual do computador Usaremos essas
funccedilotildees para obtermos dados de funcionamento e
desempenho de nossos programas Em
algoritmos de ordenaccedilatildeo essa eacute uma medida do
desempenho e pode ser usada para comparar
algoritmos entre si
Por exemplo em um algoritmo de ordenaccedilatildeo o
modo mais simples eacute obter a hora de iniacutecio antes
da chamada agrave funccedilatildeo de ordenaccedilatildeo e depois a
hora de teacutermino Em seguida calculamos o
tempo decorrido e assim podemos comparar
diversos meacutetodos de ordenaccedilatildeo e verificar qual eacute
o mais raacutepido Ou ainda podemos ordenar o
mesmo conjunto de dados para diferentes
algoritmos alterando-se a quantidade de dados
em cada execuccedilatildeo do algoritmo e depois
comparaacute-los entre si conseguindo informaccedilotildees a
respeito do desempenho dos algoritmos de acordo
com a quantidade de dados a ser ordenada Isto
nos permitiraacute por exemplo decidir qual
algoritmo se sai melhor com determinada
quantidade de dados
31 OBTENDO A HORA ATUAL
obtendo a hora local usando localtime
include ltstdiohgt
include lttimehgt
int main ()
time_t rawtime
struct tm timeinfo
time(amprawtime)
timeinfo = localtime (amprawtime)
printf(Tempo local s asctime(timeinfo))
return 0
32 OBTENDO O TEMPO DECORRIDO
obtendo tempo decorrido usando difftime
include ltstdiohgt
include lttimehgt
int main ()
time_t startend
char szInput[256]
double dif
time(ampstart)
printf(Por favor digite seu nome completo )
gets(szInput)
time(ampend)
dif = difftime(end start)
printf(Oi sn szInput)
printf(Vocecirc levou 2lf segundos para digitar
seu nomen dif)
return 0
4 LENDO O ARQUIVO DE DADOS
FORNECIDO NO BLOG Baixe o arquivo clicando em
httpflavioafblogspotcom20120210000-
dez-mil-numeros-inteiroshtml Salve-o na Aacuterea
de Trabalho (Desktop)
Este arquivo conteacutem 10000 nuacutemeros inteiros
aleatoacuterios (randocircmicos) dispostos em 2000
linhas de 5 colunas cada Cada nuacutemero pode
variar entre 0 e 99999
Primeiramente para trabalhar com esses dados
precisaremos de um grande vetor de inteiros
Infelizmente o maior inteiro sem sinal em CC++
unsigned int pode armazenar valores ateacute 65535
Precisamos usar um tipo maior por exemplo
unsigned long int que pode armazenar valores
ateacute 4294967296 Este tipo usa 4 bytes de espaccedilo
em memoacuteria Satildeo entatildeo 4 x 10000 = 40000 bytes
ou 40 KB ou ainda pouco mais de 39 KiB
41 LENDO E IMPRIMINDO O ARQUIVO
include ltcstdlibgt
include ltiostreamgt
include lttimehgt
using namespace std
const char fPath[100] = C altere isto
const char fName[20] = 10000inttxt
1
int main(int argc char argv[])
FILE fp
int x
int n
int l
time_t start
time_t end
double dif
char fFullName[200]
struct tm timeinfo
time(ampstart)
strcpy(fFullName fPath)
strcat(fFullName fName)
strcat(fFullName 0)
fp=fopen(fFullName rt) rt Tutorial 1
if(fp = NULL)
printf(Arquivo aberto com sucesson)
else printf(Nao foi possivel abrir o
arquivon)
for(l=0llt1000l++)
for(n=0nlt10n++)
fscanf(fp d ampx)
printf(dt x)
fclose(fp)
time(ampend)
dif = difftime(end start)
printf(nnProcessado o arquivo sn
fName)
printf(Local snn fPath)
timeinfo = localtime(ampstart)
printf(Hora de inicio s
asctime(timeinfo))
timeinfo = localtime(ampend)
printf(Hora de termino sn
asctime(timeinfo))
printf(Tempo decorrido f segundos nn
dif)
system(PAUSE)
return EXIT_SUCCESS
5 ARQUIVOS COM FORMATOS
ESPECIAIS
51 GERANDO UM ARQUIVO
511 GERANDO UM ARQUIVO PARA
IMPORTACcedilAtildeO EM PLANILHA ELETROcircNICA
O programa a seguir grava um arquivo de texto
chamado momentocsv no disco Digite-o no
DevC++ e salve-o na sua pasta Aacuterea de Trabalho
(Desktop)
Note que o programa usa uma viacutergula entre os
valores gravados
include ltstdiohgt
include ltstdlibhgt
float momento(float f float d)
return (f d)
int main(void)
FILE arq
float d f m
arq = fopen(ldquomomentocsvrdquordquowrdquo)
if (arq == NULL)
printf(ldquoErro ao criar o arquivonrdquo)
exit(1)
fprintf(arqldquos snrdquordquodistrdquordquomomentordquo)
f=120
for (d=00 d lt= 100 d = d + 05)
m = momento(f d) calcula
fprintf(arqldquof fnrdquodm) grava
fclose(arq)
printf(ldquoArquivo gravado com sucessonrdquo)
return (0)
2
Use o BrOfficeorg Calc para abrir o arquivo
receacutem-criado momentocsv Deixe a janela de
importaccedilatildeo como na figura abaixo e clique no
botatildeo OK
Ainda o DevC++ usa um ponto no lugar de uma
viacutergula para separar a parte inteira da parte
decimal de um nuacutemero o que tambeacutem deve ser
informado ao BrOfficeorg Calc Assim que os
dados aparecerem na planilha clique no menu
Editar e escolha a opccedilatildeo Localizar e substituirhellip
No campo Localizar digite (ponto) e no campo
Substituir por digite (viacutergula) Use a figura
abaixo como referecircncia
Clique no botatildeo Substituir todos e depois no
botatildeo Fechar
No BrOfficeorg Calc selecione os dados
arrastando o mouse sobre eles desde a ceacutelula A1
ateacute a ceacutelula B22 Clique no menu Inserir e
escolha Graacuteficohellip Deixe a janela Assistente de
graacuteficos como na figura a seguir e clique no botatildeo
Concluir
Salve a pasta de trabalho e feche o BrOfficeorg
Calc
512 GERANDO UM ARQUIVO PARA
EXIBICcedilAtildeO EM UM BROWSER
Vocecirc jaacute deve saber como criar um arquivo
contendo marcas (tags) HTML para ser aberto em
um browser (navegador) Se natildeo souber decirc uma
olhada em httpwwwfreewebscomaprenderhtml
Agora veraacute uma adaptaccedilatildeo do programa anterior
para salvar os dados em uma tabela dentro de
uma paacutegina HTML As marcas lttablegt e lttablegt
delimitam uma tabela Dentro delas isto eacute entre
elas as marcas lttrgt e lttrgt (de table row)
delimitam uma linha da tabela Dentro de uma
linha as marcas lttdgt e lttdgt delimitam uma
ceacutelula (coluna) Vocecirc pode usar tambeacutem as
marcas ltthgt e ltthgt para delimitar uma ceacutelula
de uma linha de cabeccedilalho da tabela com um
formato diferente do corpo O trecho abaixo
mostra o coacutedigo HTML para criar uma tabela com
uma linha de cabeccedilalho e uma linha de dados
ambas com duas colunas O paracircmetro border
dentro da marca lttablegt indica a largura
desejada para a borda da tabela
lttable border=rdquo1rdquogt
lttrgt
ltthgtDistltthgt ltthgtMomentoltthgt
lttrgt
lttrgt
lttdgt00lttdgtlttdgt00lttdgt
lttrgt
lttablegt
O programa a seguir grava um arquivo de texto
chamado momentohtm no disco Digite-o no
DevC++ e salve-o na sua pasta Aacuterea de Trabalho
(Desktop)
Execute o programa Usando o atalho Meu
Computador localize o iacutecone do arquivo
momentohtm que seu programa acabou de
criar Decirc um duplo clique nele para abri-lo no
navegador Web padratildeo
3
Veja que os dados aparecem dentro de uma
tabela Clique com o botatildeo direito do mouse em
algum ponto da paacutegina e selecione a opccedilatildeo Exibir
coacutedigo fonte para ver o coacutedigo da paacutegina Lembre
que esse conteuacutedo foi escrito pelo programa em
linguagem C Feche a janela de exibiccedilatildeo do
coacutedigo fonte e a janela do Navegador
include ltcstdlibgt
include ltiostreamgt
using namespace std
float momento(float f float d)
return (f d)
int main(void)
FILE arq
float d f m
arq = fopen(ldquomomentohtmrdquordquowrdquo)
if (arq == NULL)
printf(ldquoErro ao criar o arquivonrdquo)
exit(1)
fprintf(arqrdquolthtmlgtnnltheadgtnrdquo)
fprintf(arqrdquolttitlegtMomentolttitlegtnrdquo)
fprintf(arqrdquoltheadgtnltbodygtnrdquo)
fprintf(arqrdquolttable border=1gtnrdquo)
fprintf(arqrdquolttrgtnrdquo)
fprintf(arqrdquoltthgtDistltthgtltthgtMomentoltthgtnrdquo)
fprintf(arqrdquolttrgtnrdquo)
fica calculando o momento e gravando
f = 120
for (d=00 d lt= 100 d = d + 05)
m = momento(f d) calcula
fprintf(arqldquolttrgtnrdquo)
fprintf(arqrdquolttdgtflttdgtlttdgtflttdgtnrdquodm)
fprintf(arqrdquolttrgtnrdquo)
fprintf(arqrdquolttablegtnltbodygtnlthtmlgtnrdquo)
fclose(arq)
printf(ldquoArquivo gravado com sucessonrdquo)
system(ldquoPAUSErdquo)
return (0)
6 EXERCIacuteCIOS 1 Um carro des-
liza sobre tri-
lhos movido
por um para-
fuso acoplado
a um motor Sabendo que o passo da rosca
do parafuso eacute igual a 2 mmvolta e que a
velocidade do motor eacute de 1800 rpm (lembre
que 1800 rpm = 30 voltas por segundo)
escreva um programa em linguagem C que
calcule a posiccedilatildeo (distacircncia da origem) do
carro em 11 instantes de tempo iniciando
com t = 0s e terminando em t = 60s e grave os
pares de valores (instante de tempo posiccedilatildeo
do carro) em um arquivo de texto chamado
movimentocsv Considere que o carro estaacute
na origem no instante t = 0s Cada par de
valores deve ser gravado em uma linha do
arquivo e os valores devem ser separados por
um caractere de tabulaccedilatildeo (ASCII 9 ou lsquotrsquo)
2 Escreva outro programa que grave os valores
calculados em uma paacutegina HTML chamada
movimentohtm A paacutegina deve apresentar
os dados dentro de uma tabela Lembre que
1800 rpm = 30 voltas por segundo Usando o
BrOfficeorg Calc produza um graacutefico do
movimento do carro no periacuteodo de tempo
considerado pelo seu programa
3 Escreva um programa que gere um graacutefico da
funccedilatildeo x3 de forma que fique com um
aspecto parecido com a figura a
seguir O graacutefico deve ser
gerado em um arquivo
denominado graficotxt No
lugar da linha azul vocecirc deveraacute
usar o siacutembolo A variaacutevel x
deve variar de -8 a 8 em
intervalos 2 deacutecimos X varia de
cima para baixo no arquivo
gerado Cada linha do arquivo
gerado teraacute no maacuteximo 80 colunas Os eixos
tambeacutem deveratildeo ser traccedilados A dificuldade
neste exerciacutecio estaacute em ter de fazer tudo ao
mesmo tempo ou seja traccedilar a funccedilatildeo
desenhar os eixos e escrever os valores junto
aos eixos nos lugares corretos soacute pode ser
realizado de forma contiacutenua Natildeo haacute como
retornar e fazer cada parte em separado Seu
coacutedigo deve ser parametrizado de tal forma
que seja possiacutevel traccedilar o graacutefico de qualquer
funccedilatildeo solicitada por exemplo x3 - x5 Se
precisar digite a funccedilatildeo por exemplo x^3 -
x^5 na busca do Google para ter uma noccedilatildeo
de como o graacutefico ficaraacute
7 TERMINAMOS Terminamos por aqui Clique no menu Arquivo
depois clique na opccedilatildeo Sair Corra para o
proacuteximo tutorial
1 INTRODUCcedilAtildeO Esta seacuterie de tutoriais foi escrita usando o
Microsoft Windows 7 Ultimate e o Bloodshed
Dev-C++ versatildeo 4992 que pode ser baixada em
httpwwwbloodshednet
2 ENTRADA E SAIacuteDA DE DISCO Agora que jaacute relembramos o uso do DevC++ e um
pouquinho de linguagem CC++ vamos ao que
realmente interessa nesse tutorial ou seja
trabalhar com arquivos em disco
Se vocecirc ainda natildeo estaacute familiarizado com
arquivos em disco leia novamente o Tutorial 1
3 FUNCcedilOtildeES DE DATA E HORA As funccedilotildees de data e hora servem para obtermos
o reloacutegio atual do computador Usaremos essas
funccedilotildees para obtermos dados de funcionamento e
desempenho de nossos programas Em
algoritmos de ordenaccedilatildeo essa eacute uma medida do
desempenho e pode ser usada para comparar
algoritmos entre si
Por exemplo em um algoritmo de ordenaccedilatildeo o
modo mais simples eacute obter a hora de iniacutecio antes
da chamada agrave funccedilatildeo de ordenaccedilatildeo e depois a
hora de teacutermino Em seguida calculamos o
tempo decorrido e assim podemos comparar
diversos meacutetodos de ordenaccedilatildeo e verificar qual eacute
o mais raacutepido Ou ainda podemos ordenar o
mesmo conjunto de dados para diferentes
algoritmos alterando-se a quantidade de dados
em cada execuccedilatildeo do algoritmo e depois
comparaacute-los entre si conseguindo informaccedilotildees a
respeito do desempenho dos algoritmos de acordo
com a quantidade de dados a ser ordenada Isto
nos permitiraacute por exemplo decidir qual
algoritmo se sai melhor com determinada
quantidade de dados
31 OBTENDO A HORA ATUAL
obtendo a hora local usando localtime
include ltstdiohgt
include lttimehgt
int main ()
time_t rawtime
struct tm timeinfo
time(amprawtime)
timeinfo = localtime (amprawtime)
printf(Tempo local s asctime(timeinfo))
return 0
32 OBTENDO O TEMPO DECORRIDO
obtendo tempo decorrido usando difftime
include ltstdiohgt
include lttimehgt
int main ()
time_t startend
char szInput[256]
double dif
time(ampstart)
printf(Por favor digite seu nome completo )
gets(szInput)
time(ampend)
dif = difftime(end start)
printf(Oi sn szInput)
printf(Vocecirc levou 2lf segundos para digitar
seu nomen dif)
return 0
4 LENDO O ARQUIVO DE DADOS
FORNECIDO NO BLOG Baixe o arquivo clicando em
httpflavioafblogspotcom20120210000-
dez-mil-numeros-inteiroshtml Salve-o na Aacuterea
de Trabalho (Desktop)
Este arquivo conteacutem 10000 nuacutemeros inteiros
aleatoacuterios (randocircmicos) dispostos em 2000
linhas de 5 colunas cada Cada nuacutemero pode
variar entre 0 e 99999
Primeiramente para trabalhar com esses dados
precisaremos de um grande vetor de inteiros
Infelizmente o maior inteiro sem sinal em CC++
unsigned int pode armazenar valores ateacute 65535
Precisamos usar um tipo maior por exemplo
unsigned long int que pode armazenar valores
ateacute 4294967296 Este tipo usa 4 bytes de espaccedilo
em memoacuteria Satildeo entatildeo 4 x 10000 = 40000 bytes
ou 40 KB ou ainda pouco mais de 39 KiB
41 LENDO E IMPRIMINDO O ARQUIVO
include ltcstdlibgt
include ltiostreamgt
include lttimehgt
using namespace std
const char fPath[100] = C altere isto
const char fName[20] = 10000inttxt
1
int main(int argc char argv[])
FILE fp
int x
int n
int l
time_t start
time_t end
double dif
char fFullName[200]
struct tm timeinfo
time(ampstart)
strcpy(fFullName fPath)
strcat(fFullName fName)
strcat(fFullName 0)
fp=fopen(fFullName rt) rt Tutorial 1
if(fp = NULL)
printf(Arquivo aberto com sucesson)
else printf(Nao foi possivel abrir o
arquivon)
for(l=0llt1000l++)
for(n=0nlt10n++)
fscanf(fp d ampx)
printf(dt x)
fclose(fp)
time(ampend)
dif = difftime(end start)
printf(nnProcessado o arquivo sn
fName)
printf(Local snn fPath)
timeinfo = localtime(ampstart)
printf(Hora de inicio s
asctime(timeinfo))
timeinfo = localtime(ampend)
printf(Hora de termino sn
asctime(timeinfo))
printf(Tempo decorrido f segundos nn
dif)
system(PAUSE)
return EXIT_SUCCESS
5 ARQUIVOS COM FORMATOS
ESPECIAIS
51 GERANDO UM ARQUIVO
511 GERANDO UM ARQUIVO PARA
IMPORTACcedilAtildeO EM PLANILHA ELETROcircNICA
O programa a seguir grava um arquivo de texto
chamado momentocsv no disco Digite-o no
DevC++ e salve-o na sua pasta Aacuterea de Trabalho
(Desktop)
Note que o programa usa uma viacutergula entre os
valores gravados
include ltstdiohgt
include ltstdlibhgt
float momento(float f float d)
return (f d)
int main(void)
FILE arq
float d f m
arq = fopen(ldquomomentocsvrdquordquowrdquo)
if (arq == NULL)
printf(ldquoErro ao criar o arquivonrdquo)
exit(1)
fprintf(arqldquos snrdquordquodistrdquordquomomentordquo)
f=120
for (d=00 d lt= 100 d = d + 05)
m = momento(f d) calcula
fprintf(arqldquof fnrdquodm) grava
fclose(arq)
printf(ldquoArquivo gravado com sucessonrdquo)
return (0)
2
Use o BrOfficeorg Calc para abrir o arquivo
receacutem-criado momentocsv Deixe a janela de
importaccedilatildeo como na figura abaixo e clique no
botatildeo OK
Ainda o DevC++ usa um ponto no lugar de uma
viacutergula para separar a parte inteira da parte
decimal de um nuacutemero o que tambeacutem deve ser
informado ao BrOfficeorg Calc Assim que os
dados aparecerem na planilha clique no menu
Editar e escolha a opccedilatildeo Localizar e substituirhellip
No campo Localizar digite (ponto) e no campo
Substituir por digite (viacutergula) Use a figura
abaixo como referecircncia
Clique no botatildeo Substituir todos e depois no
botatildeo Fechar
No BrOfficeorg Calc selecione os dados
arrastando o mouse sobre eles desde a ceacutelula A1
ateacute a ceacutelula B22 Clique no menu Inserir e
escolha Graacuteficohellip Deixe a janela Assistente de
graacuteficos como na figura a seguir e clique no botatildeo
Concluir
Salve a pasta de trabalho e feche o BrOfficeorg
Calc
512 GERANDO UM ARQUIVO PARA
EXIBICcedilAtildeO EM UM BROWSER
Vocecirc jaacute deve saber como criar um arquivo
contendo marcas (tags) HTML para ser aberto em
um browser (navegador) Se natildeo souber decirc uma
olhada em httpwwwfreewebscomaprenderhtml
Agora veraacute uma adaptaccedilatildeo do programa anterior
para salvar os dados em uma tabela dentro de
uma paacutegina HTML As marcas lttablegt e lttablegt
delimitam uma tabela Dentro delas isto eacute entre
elas as marcas lttrgt e lttrgt (de table row)
delimitam uma linha da tabela Dentro de uma
linha as marcas lttdgt e lttdgt delimitam uma
ceacutelula (coluna) Vocecirc pode usar tambeacutem as
marcas ltthgt e ltthgt para delimitar uma ceacutelula
de uma linha de cabeccedilalho da tabela com um
formato diferente do corpo O trecho abaixo
mostra o coacutedigo HTML para criar uma tabela com
uma linha de cabeccedilalho e uma linha de dados
ambas com duas colunas O paracircmetro border
dentro da marca lttablegt indica a largura
desejada para a borda da tabela
lttable border=rdquo1rdquogt
lttrgt
ltthgtDistltthgt ltthgtMomentoltthgt
lttrgt
lttrgt
lttdgt00lttdgtlttdgt00lttdgt
lttrgt
lttablegt
O programa a seguir grava um arquivo de texto
chamado momentohtm no disco Digite-o no
DevC++ e salve-o na sua pasta Aacuterea de Trabalho
(Desktop)
Execute o programa Usando o atalho Meu
Computador localize o iacutecone do arquivo
momentohtm que seu programa acabou de
criar Decirc um duplo clique nele para abri-lo no
navegador Web padratildeo
3
Veja que os dados aparecem dentro de uma
tabela Clique com o botatildeo direito do mouse em
algum ponto da paacutegina e selecione a opccedilatildeo Exibir
coacutedigo fonte para ver o coacutedigo da paacutegina Lembre
que esse conteuacutedo foi escrito pelo programa em
linguagem C Feche a janela de exibiccedilatildeo do
coacutedigo fonte e a janela do Navegador
include ltcstdlibgt
include ltiostreamgt
using namespace std
float momento(float f float d)
return (f d)
int main(void)
FILE arq
float d f m
arq = fopen(ldquomomentohtmrdquordquowrdquo)
if (arq == NULL)
printf(ldquoErro ao criar o arquivonrdquo)
exit(1)
fprintf(arqrdquolthtmlgtnnltheadgtnrdquo)
fprintf(arqrdquolttitlegtMomentolttitlegtnrdquo)
fprintf(arqrdquoltheadgtnltbodygtnrdquo)
fprintf(arqrdquolttable border=1gtnrdquo)
fprintf(arqrdquolttrgtnrdquo)
fprintf(arqrdquoltthgtDistltthgtltthgtMomentoltthgtnrdquo)
fprintf(arqrdquolttrgtnrdquo)
fica calculando o momento e gravando
f = 120
for (d=00 d lt= 100 d = d + 05)
m = momento(f d) calcula
fprintf(arqldquolttrgtnrdquo)
fprintf(arqrdquolttdgtflttdgtlttdgtflttdgtnrdquodm)
fprintf(arqrdquolttrgtnrdquo)
fprintf(arqrdquolttablegtnltbodygtnlthtmlgtnrdquo)
fclose(arq)
printf(ldquoArquivo gravado com sucessonrdquo)
system(ldquoPAUSErdquo)
return (0)
6 EXERCIacuteCIOS 1 Um carro des-
liza sobre tri-
lhos movido
por um para-
fuso acoplado
a um motor Sabendo que o passo da rosca
do parafuso eacute igual a 2 mmvolta e que a
velocidade do motor eacute de 1800 rpm (lembre
que 1800 rpm = 30 voltas por segundo)
escreva um programa em linguagem C que
calcule a posiccedilatildeo (distacircncia da origem) do
carro em 11 instantes de tempo iniciando
com t = 0s e terminando em t = 60s e grave os
pares de valores (instante de tempo posiccedilatildeo
do carro) em um arquivo de texto chamado
movimentocsv Considere que o carro estaacute
na origem no instante t = 0s Cada par de
valores deve ser gravado em uma linha do
arquivo e os valores devem ser separados por
um caractere de tabulaccedilatildeo (ASCII 9 ou lsquotrsquo)
2 Escreva outro programa que grave os valores
calculados em uma paacutegina HTML chamada
movimentohtm A paacutegina deve apresentar
os dados dentro de uma tabela Lembre que
1800 rpm = 30 voltas por segundo Usando o
BrOfficeorg Calc produza um graacutefico do
movimento do carro no periacuteodo de tempo
considerado pelo seu programa
3 Escreva um programa que gere um graacutefico da
funccedilatildeo x3 de forma que fique com um
aspecto parecido com a figura a
seguir O graacutefico deve ser
gerado em um arquivo
denominado graficotxt No
lugar da linha azul vocecirc deveraacute
usar o siacutembolo A variaacutevel x
deve variar de -8 a 8 em
intervalos 2 deacutecimos X varia de
cima para baixo no arquivo
gerado Cada linha do arquivo
gerado teraacute no maacuteximo 80 colunas Os eixos
tambeacutem deveratildeo ser traccedilados A dificuldade
neste exerciacutecio estaacute em ter de fazer tudo ao
mesmo tempo ou seja traccedilar a funccedilatildeo
desenhar os eixos e escrever os valores junto
aos eixos nos lugares corretos soacute pode ser
realizado de forma contiacutenua Natildeo haacute como
retornar e fazer cada parte em separado Seu
coacutedigo deve ser parametrizado de tal forma
que seja possiacutevel traccedilar o graacutefico de qualquer
funccedilatildeo solicitada por exemplo x3 - x5 Se
precisar digite a funccedilatildeo por exemplo x^3 -
x^5 na busca do Google para ter uma noccedilatildeo
de como o graacutefico ficaraacute
7 TERMINAMOS Terminamos por aqui Clique no menu Arquivo
depois clique na opccedilatildeo Sair Corra para o
proacuteximo tutorial
1
int main(int argc char argv[])
FILE fp
int x
int n
int l
time_t start
time_t end
double dif
char fFullName[200]
struct tm timeinfo
time(ampstart)
strcpy(fFullName fPath)
strcat(fFullName fName)
strcat(fFullName 0)
fp=fopen(fFullName rt) rt Tutorial 1
if(fp = NULL)
printf(Arquivo aberto com sucesson)
else printf(Nao foi possivel abrir o
arquivon)
for(l=0llt1000l++)
for(n=0nlt10n++)
fscanf(fp d ampx)
printf(dt x)
fclose(fp)
time(ampend)
dif = difftime(end start)
printf(nnProcessado o arquivo sn
fName)
printf(Local snn fPath)
timeinfo = localtime(ampstart)
printf(Hora de inicio s
asctime(timeinfo))
timeinfo = localtime(ampend)
printf(Hora de termino sn
asctime(timeinfo))
printf(Tempo decorrido f segundos nn
dif)
system(PAUSE)
return EXIT_SUCCESS
5 ARQUIVOS COM FORMATOS
ESPECIAIS
51 GERANDO UM ARQUIVO
511 GERANDO UM ARQUIVO PARA
IMPORTACcedilAtildeO EM PLANILHA ELETROcircNICA
O programa a seguir grava um arquivo de texto
chamado momentocsv no disco Digite-o no
DevC++ e salve-o na sua pasta Aacuterea de Trabalho
(Desktop)
Note que o programa usa uma viacutergula entre os
valores gravados
include ltstdiohgt
include ltstdlibhgt
float momento(float f float d)
return (f d)
int main(void)
FILE arq
float d f m
arq = fopen(ldquomomentocsvrdquordquowrdquo)
if (arq == NULL)
printf(ldquoErro ao criar o arquivonrdquo)
exit(1)
fprintf(arqldquos snrdquordquodistrdquordquomomentordquo)
f=120
for (d=00 d lt= 100 d = d + 05)
m = momento(f d) calcula
fprintf(arqldquof fnrdquodm) grava
fclose(arq)
printf(ldquoArquivo gravado com sucessonrdquo)
return (0)
2
Use o BrOfficeorg Calc para abrir o arquivo
receacutem-criado momentocsv Deixe a janela de
importaccedilatildeo como na figura abaixo e clique no
botatildeo OK
Ainda o DevC++ usa um ponto no lugar de uma
viacutergula para separar a parte inteira da parte
decimal de um nuacutemero o que tambeacutem deve ser
informado ao BrOfficeorg Calc Assim que os
dados aparecerem na planilha clique no menu
Editar e escolha a opccedilatildeo Localizar e substituirhellip
No campo Localizar digite (ponto) e no campo
Substituir por digite (viacutergula) Use a figura
abaixo como referecircncia
Clique no botatildeo Substituir todos e depois no
botatildeo Fechar
No BrOfficeorg Calc selecione os dados
arrastando o mouse sobre eles desde a ceacutelula A1
ateacute a ceacutelula B22 Clique no menu Inserir e
escolha Graacuteficohellip Deixe a janela Assistente de
graacuteficos como na figura a seguir e clique no botatildeo
Concluir
Salve a pasta de trabalho e feche o BrOfficeorg
Calc
512 GERANDO UM ARQUIVO PARA
EXIBICcedilAtildeO EM UM BROWSER
Vocecirc jaacute deve saber como criar um arquivo
contendo marcas (tags) HTML para ser aberto em
um browser (navegador) Se natildeo souber decirc uma
olhada em httpwwwfreewebscomaprenderhtml
Agora veraacute uma adaptaccedilatildeo do programa anterior
para salvar os dados em uma tabela dentro de
uma paacutegina HTML As marcas lttablegt e lttablegt
delimitam uma tabela Dentro delas isto eacute entre
elas as marcas lttrgt e lttrgt (de table row)
delimitam uma linha da tabela Dentro de uma
linha as marcas lttdgt e lttdgt delimitam uma
ceacutelula (coluna) Vocecirc pode usar tambeacutem as
marcas ltthgt e ltthgt para delimitar uma ceacutelula
de uma linha de cabeccedilalho da tabela com um
formato diferente do corpo O trecho abaixo
mostra o coacutedigo HTML para criar uma tabela com
uma linha de cabeccedilalho e uma linha de dados
ambas com duas colunas O paracircmetro border
dentro da marca lttablegt indica a largura
desejada para a borda da tabela
lttable border=rdquo1rdquogt
lttrgt
ltthgtDistltthgt ltthgtMomentoltthgt
lttrgt
lttrgt
lttdgt00lttdgtlttdgt00lttdgt
lttrgt
lttablegt
O programa a seguir grava um arquivo de texto
chamado momentohtm no disco Digite-o no
DevC++ e salve-o na sua pasta Aacuterea de Trabalho
(Desktop)
Execute o programa Usando o atalho Meu
Computador localize o iacutecone do arquivo
momentohtm que seu programa acabou de
criar Decirc um duplo clique nele para abri-lo no
navegador Web padratildeo
3
Veja que os dados aparecem dentro de uma
tabela Clique com o botatildeo direito do mouse em
algum ponto da paacutegina e selecione a opccedilatildeo Exibir
coacutedigo fonte para ver o coacutedigo da paacutegina Lembre
que esse conteuacutedo foi escrito pelo programa em
linguagem C Feche a janela de exibiccedilatildeo do
coacutedigo fonte e a janela do Navegador
include ltcstdlibgt
include ltiostreamgt
using namespace std
float momento(float f float d)
return (f d)
int main(void)
FILE arq
float d f m
arq = fopen(ldquomomentohtmrdquordquowrdquo)
if (arq == NULL)
printf(ldquoErro ao criar o arquivonrdquo)
exit(1)
fprintf(arqrdquolthtmlgtnnltheadgtnrdquo)
fprintf(arqrdquolttitlegtMomentolttitlegtnrdquo)
fprintf(arqrdquoltheadgtnltbodygtnrdquo)
fprintf(arqrdquolttable border=1gtnrdquo)
fprintf(arqrdquolttrgtnrdquo)
fprintf(arqrdquoltthgtDistltthgtltthgtMomentoltthgtnrdquo)
fprintf(arqrdquolttrgtnrdquo)
fica calculando o momento e gravando
f = 120
for (d=00 d lt= 100 d = d + 05)
m = momento(f d) calcula
fprintf(arqldquolttrgtnrdquo)
fprintf(arqrdquolttdgtflttdgtlttdgtflttdgtnrdquodm)
fprintf(arqrdquolttrgtnrdquo)
fprintf(arqrdquolttablegtnltbodygtnlthtmlgtnrdquo)
fclose(arq)
printf(ldquoArquivo gravado com sucessonrdquo)
system(ldquoPAUSErdquo)
return (0)
6 EXERCIacuteCIOS 1 Um carro des-
liza sobre tri-
lhos movido
por um para-
fuso acoplado
a um motor Sabendo que o passo da rosca
do parafuso eacute igual a 2 mmvolta e que a
velocidade do motor eacute de 1800 rpm (lembre
que 1800 rpm = 30 voltas por segundo)
escreva um programa em linguagem C que
calcule a posiccedilatildeo (distacircncia da origem) do
carro em 11 instantes de tempo iniciando
com t = 0s e terminando em t = 60s e grave os
pares de valores (instante de tempo posiccedilatildeo
do carro) em um arquivo de texto chamado
movimentocsv Considere que o carro estaacute
na origem no instante t = 0s Cada par de
valores deve ser gravado em uma linha do
arquivo e os valores devem ser separados por
um caractere de tabulaccedilatildeo (ASCII 9 ou lsquotrsquo)
2 Escreva outro programa que grave os valores
calculados em uma paacutegina HTML chamada
movimentohtm A paacutegina deve apresentar
os dados dentro de uma tabela Lembre que
1800 rpm = 30 voltas por segundo Usando o
BrOfficeorg Calc produza um graacutefico do
movimento do carro no periacuteodo de tempo
considerado pelo seu programa
3 Escreva um programa que gere um graacutefico da
funccedilatildeo x3 de forma que fique com um
aspecto parecido com a figura a
seguir O graacutefico deve ser
gerado em um arquivo
denominado graficotxt No
lugar da linha azul vocecirc deveraacute
usar o siacutembolo A variaacutevel x
deve variar de -8 a 8 em
intervalos 2 deacutecimos X varia de
cima para baixo no arquivo
gerado Cada linha do arquivo
gerado teraacute no maacuteximo 80 colunas Os eixos
tambeacutem deveratildeo ser traccedilados A dificuldade
neste exerciacutecio estaacute em ter de fazer tudo ao
mesmo tempo ou seja traccedilar a funccedilatildeo
desenhar os eixos e escrever os valores junto
aos eixos nos lugares corretos soacute pode ser
realizado de forma contiacutenua Natildeo haacute como
retornar e fazer cada parte em separado Seu
coacutedigo deve ser parametrizado de tal forma
que seja possiacutevel traccedilar o graacutefico de qualquer
funccedilatildeo solicitada por exemplo x3 - x5 Se
precisar digite a funccedilatildeo por exemplo x^3 -
x^5 na busca do Google para ter uma noccedilatildeo
de como o graacutefico ficaraacute
7 TERMINAMOS Terminamos por aqui Clique no menu Arquivo
depois clique na opccedilatildeo Sair Corra para o
proacuteximo tutorial
2
Use o BrOfficeorg Calc para abrir o arquivo
receacutem-criado momentocsv Deixe a janela de
importaccedilatildeo como na figura abaixo e clique no
botatildeo OK
Ainda o DevC++ usa um ponto no lugar de uma
viacutergula para separar a parte inteira da parte
decimal de um nuacutemero o que tambeacutem deve ser
informado ao BrOfficeorg Calc Assim que os
dados aparecerem na planilha clique no menu
Editar e escolha a opccedilatildeo Localizar e substituirhellip
No campo Localizar digite (ponto) e no campo
Substituir por digite (viacutergula) Use a figura
abaixo como referecircncia
Clique no botatildeo Substituir todos e depois no
botatildeo Fechar
No BrOfficeorg Calc selecione os dados
arrastando o mouse sobre eles desde a ceacutelula A1
ateacute a ceacutelula B22 Clique no menu Inserir e
escolha Graacuteficohellip Deixe a janela Assistente de
graacuteficos como na figura a seguir e clique no botatildeo
Concluir
Salve a pasta de trabalho e feche o BrOfficeorg
Calc
512 GERANDO UM ARQUIVO PARA
EXIBICcedilAtildeO EM UM BROWSER
Vocecirc jaacute deve saber como criar um arquivo
contendo marcas (tags) HTML para ser aberto em
um browser (navegador) Se natildeo souber decirc uma
olhada em httpwwwfreewebscomaprenderhtml
Agora veraacute uma adaptaccedilatildeo do programa anterior
para salvar os dados em uma tabela dentro de
uma paacutegina HTML As marcas lttablegt e lttablegt
delimitam uma tabela Dentro delas isto eacute entre
elas as marcas lttrgt e lttrgt (de table row)
delimitam uma linha da tabela Dentro de uma
linha as marcas lttdgt e lttdgt delimitam uma
ceacutelula (coluna) Vocecirc pode usar tambeacutem as
marcas ltthgt e ltthgt para delimitar uma ceacutelula
de uma linha de cabeccedilalho da tabela com um
formato diferente do corpo O trecho abaixo
mostra o coacutedigo HTML para criar uma tabela com
uma linha de cabeccedilalho e uma linha de dados
ambas com duas colunas O paracircmetro border
dentro da marca lttablegt indica a largura
desejada para a borda da tabela
lttable border=rdquo1rdquogt
lttrgt
ltthgtDistltthgt ltthgtMomentoltthgt
lttrgt
lttrgt
lttdgt00lttdgtlttdgt00lttdgt
lttrgt
lttablegt
O programa a seguir grava um arquivo de texto
chamado momentohtm no disco Digite-o no
DevC++ e salve-o na sua pasta Aacuterea de Trabalho
(Desktop)
Execute o programa Usando o atalho Meu
Computador localize o iacutecone do arquivo
momentohtm que seu programa acabou de
criar Decirc um duplo clique nele para abri-lo no
navegador Web padratildeo
3
Veja que os dados aparecem dentro de uma
tabela Clique com o botatildeo direito do mouse em
algum ponto da paacutegina e selecione a opccedilatildeo Exibir
coacutedigo fonte para ver o coacutedigo da paacutegina Lembre
que esse conteuacutedo foi escrito pelo programa em
linguagem C Feche a janela de exibiccedilatildeo do
coacutedigo fonte e a janela do Navegador
include ltcstdlibgt
include ltiostreamgt
using namespace std
float momento(float f float d)
return (f d)
int main(void)
FILE arq
float d f m
arq = fopen(ldquomomentohtmrdquordquowrdquo)
if (arq == NULL)
printf(ldquoErro ao criar o arquivonrdquo)
exit(1)
fprintf(arqrdquolthtmlgtnnltheadgtnrdquo)
fprintf(arqrdquolttitlegtMomentolttitlegtnrdquo)
fprintf(arqrdquoltheadgtnltbodygtnrdquo)
fprintf(arqrdquolttable border=1gtnrdquo)
fprintf(arqrdquolttrgtnrdquo)
fprintf(arqrdquoltthgtDistltthgtltthgtMomentoltthgtnrdquo)
fprintf(arqrdquolttrgtnrdquo)
fica calculando o momento e gravando
f = 120
for (d=00 d lt= 100 d = d + 05)
m = momento(f d) calcula
fprintf(arqldquolttrgtnrdquo)
fprintf(arqrdquolttdgtflttdgtlttdgtflttdgtnrdquodm)
fprintf(arqrdquolttrgtnrdquo)
fprintf(arqrdquolttablegtnltbodygtnlthtmlgtnrdquo)
fclose(arq)
printf(ldquoArquivo gravado com sucessonrdquo)
system(ldquoPAUSErdquo)
return (0)
6 EXERCIacuteCIOS 1 Um carro des-
liza sobre tri-
lhos movido
por um para-
fuso acoplado
a um motor Sabendo que o passo da rosca
do parafuso eacute igual a 2 mmvolta e que a
velocidade do motor eacute de 1800 rpm (lembre
que 1800 rpm = 30 voltas por segundo)
escreva um programa em linguagem C que
calcule a posiccedilatildeo (distacircncia da origem) do
carro em 11 instantes de tempo iniciando
com t = 0s e terminando em t = 60s e grave os
pares de valores (instante de tempo posiccedilatildeo
do carro) em um arquivo de texto chamado
movimentocsv Considere que o carro estaacute
na origem no instante t = 0s Cada par de
valores deve ser gravado em uma linha do
arquivo e os valores devem ser separados por
um caractere de tabulaccedilatildeo (ASCII 9 ou lsquotrsquo)
2 Escreva outro programa que grave os valores
calculados em uma paacutegina HTML chamada
movimentohtm A paacutegina deve apresentar
os dados dentro de uma tabela Lembre que
1800 rpm = 30 voltas por segundo Usando o
BrOfficeorg Calc produza um graacutefico do
movimento do carro no periacuteodo de tempo
considerado pelo seu programa
3 Escreva um programa que gere um graacutefico da
funccedilatildeo x3 de forma que fique com um
aspecto parecido com a figura a
seguir O graacutefico deve ser
gerado em um arquivo
denominado graficotxt No
lugar da linha azul vocecirc deveraacute
usar o siacutembolo A variaacutevel x
deve variar de -8 a 8 em
intervalos 2 deacutecimos X varia de
cima para baixo no arquivo
gerado Cada linha do arquivo
gerado teraacute no maacuteximo 80 colunas Os eixos
tambeacutem deveratildeo ser traccedilados A dificuldade
neste exerciacutecio estaacute em ter de fazer tudo ao
mesmo tempo ou seja traccedilar a funccedilatildeo
desenhar os eixos e escrever os valores junto
aos eixos nos lugares corretos soacute pode ser
realizado de forma contiacutenua Natildeo haacute como
retornar e fazer cada parte em separado Seu
coacutedigo deve ser parametrizado de tal forma
que seja possiacutevel traccedilar o graacutefico de qualquer
funccedilatildeo solicitada por exemplo x3 - x5 Se
precisar digite a funccedilatildeo por exemplo x^3 -
x^5 na busca do Google para ter uma noccedilatildeo
de como o graacutefico ficaraacute
7 TERMINAMOS Terminamos por aqui Clique no menu Arquivo
depois clique na opccedilatildeo Sair Corra para o
proacuteximo tutorial
3
Veja que os dados aparecem dentro de uma
tabela Clique com o botatildeo direito do mouse em
algum ponto da paacutegina e selecione a opccedilatildeo Exibir
coacutedigo fonte para ver o coacutedigo da paacutegina Lembre
que esse conteuacutedo foi escrito pelo programa em
linguagem C Feche a janela de exibiccedilatildeo do
coacutedigo fonte e a janela do Navegador
include ltcstdlibgt
include ltiostreamgt
using namespace std
float momento(float f float d)
return (f d)
int main(void)
FILE arq
float d f m
arq = fopen(ldquomomentohtmrdquordquowrdquo)
if (arq == NULL)
printf(ldquoErro ao criar o arquivonrdquo)
exit(1)
fprintf(arqrdquolthtmlgtnnltheadgtnrdquo)
fprintf(arqrdquolttitlegtMomentolttitlegtnrdquo)
fprintf(arqrdquoltheadgtnltbodygtnrdquo)
fprintf(arqrdquolttable border=1gtnrdquo)
fprintf(arqrdquolttrgtnrdquo)
fprintf(arqrdquoltthgtDistltthgtltthgtMomentoltthgtnrdquo)
fprintf(arqrdquolttrgtnrdquo)
fica calculando o momento e gravando
f = 120
for (d=00 d lt= 100 d = d + 05)
m = momento(f d) calcula
fprintf(arqldquolttrgtnrdquo)
fprintf(arqrdquolttdgtflttdgtlttdgtflttdgtnrdquodm)
fprintf(arqrdquolttrgtnrdquo)
fprintf(arqrdquolttablegtnltbodygtnlthtmlgtnrdquo)
fclose(arq)
printf(ldquoArquivo gravado com sucessonrdquo)
system(ldquoPAUSErdquo)
return (0)
6 EXERCIacuteCIOS 1 Um carro des-
liza sobre tri-
lhos movido
por um para-
fuso acoplado
a um motor Sabendo que o passo da rosca
do parafuso eacute igual a 2 mmvolta e que a
velocidade do motor eacute de 1800 rpm (lembre
que 1800 rpm = 30 voltas por segundo)
escreva um programa em linguagem C que
calcule a posiccedilatildeo (distacircncia da origem) do
carro em 11 instantes de tempo iniciando
com t = 0s e terminando em t = 60s e grave os
pares de valores (instante de tempo posiccedilatildeo
do carro) em um arquivo de texto chamado
movimentocsv Considere que o carro estaacute
na origem no instante t = 0s Cada par de
valores deve ser gravado em uma linha do
arquivo e os valores devem ser separados por
um caractere de tabulaccedilatildeo (ASCII 9 ou lsquotrsquo)
2 Escreva outro programa que grave os valores
calculados em uma paacutegina HTML chamada
movimentohtm A paacutegina deve apresentar
os dados dentro de uma tabela Lembre que
1800 rpm = 30 voltas por segundo Usando o
BrOfficeorg Calc produza um graacutefico do
movimento do carro no periacuteodo de tempo
considerado pelo seu programa
3 Escreva um programa que gere um graacutefico da
funccedilatildeo x3 de forma que fique com um
aspecto parecido com a figura a
seguir O graacutefico deve ser
gerado em um arquivo
denominado graficotxt No
lugar da linha azul vocecirc deveraacute
usar o siacutembolo A variaacutevel x
deve variar de -8 a 8 em
intervalos 2 deacutecimos X varia de
cima para baixo no arquivo
gerado Cada linha do arquivo
gerado teraacute no maacuteximo 80 colunas Os eixos
tambeacutem deveratildeo ser traccedilados A dificuldade
neste exerciacutecio estaacute em ter de fazer tudo ao
mesmo tempo ou seja traccedilar a funccedilatildeo
desenhar os eixos e escrever os valores junto
aos eixos nos lugares corretos soacute pode ser
realizado de forma contiacutenua Natildeo haacute como
retornar e fazer cada parte em separado Seu
coacutedigo deve ser parametrizado de tal forma
que seja possiacutevel traccedilar o graacutefico de qualquer
funccedilatildeo solicitada por exemplo x3 - x5 Se
precisar digite a funccedilatildeo por exemplo x^3 -
x^5 na busca do Google para ter uma noccedilatildeo
de como o graacutefico ficaraacute
7 TERMINAMOS Terminamos por aqui Clique no menu Arquivo
depois clique na opccedilatildeo Sair Corra para o
proacuteximo tutorial