Tutorial dev cpp 002 - criação, leitura e alteração de arquivos

5

Click here to load reader

description

Algoritmos e Estruturas de Dados III

Transcript of Tutorial dev cpp 002 - criação, leitura e alteração de arquivos

Page 1: 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

Page 2: Tutorial dev cpp   002 - criação, leitura e alteração de arquivos

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

Page 3: Tutorial dev cpp   002 - criação, leitura e alteração de arquivos

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

Page 4: Tutorial dev cpp   002 - criação, leitura e alteração de arquivos

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

Page 5: Tutorial dev cpp   002 - criação, leitura e alteração de arquivos

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