












































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
Este documento contém um tutorial em português sobre os conceitos básicos da linguagem de programação c, abordando assuntos como declaração e atribuição de variáveis, entrada e saída de dados, estruturas de controle (if, else, switch, case) e comandos de repetição (for, while). Além disso, é apresentado um exemplo de programa que solicita a data de nascimento do usuário e confirma as opções escolhidas.
Tipologia: Notas de estudo
1 / 52
Esta página não é visível na pré-visualização
Não perca as partes importantes!
adm inis tração Rui M aia D avid Pintas s ilgo
coorde nador S érgio S antos
coorde nador adjunto M igue lPais
e ditor Joe lRam os
re dacção D anie lCorre ia Rui G onçalve s Pe dro Te ixe ira Bruno Vaz João Pe re ira R icardo Roch a G uilh e rm e Rodrigue s Nuno Corre ia M igue lW ah non Ce ls o Ram os Fe rnando M artins
colaboradore s Jos é O live ira
contacto re vis taprogram ar @ portugal-a-program ar.org
w e bs ite w w w .re vis ta-program ar.info
Criar, Agir e Apre s e ntar
Nos vários e ve ntos por onde te nh o pas s ado, um te m a te m s ido re corre nte : a inovação e m Portugalou, com o alguns indicaram , a falta de la. O e xe m plo m ais apre s e ntado e ra no de s e nvolvim e nto de aplicaçõe s w e b, um a áre a q ue actualm e nte e s tá e m franco de s e nvolvim e nto. Todos os dias s urge m novas e originais aplicaçõe s , m as ainda é raro e ncontrar um a e q uipa portugue s a e nvolvida. Foram apre s e ntadas várias e xplicaçõe s para e s ta gre ve de criação: a localização (cada ve z m e nos im portante ), a m e ntalidade , a falta de inve s tim e nto e , principalm e nte , a falta de corage m. Cada ve z m ais s e pe ns a duas ve ze s ante s de s e atirar de cabe ça nalgum proje cto arris cado. No e ntanto, o m e lh or cam inh o apre s e ntado para o s uce s s o foi m e s m o "te ntar"(m uitas ve ze s ), de dicar-s e a um proje cto e faze r tudo para q ue vingue. Fica aq ui o ince ntivo a todos os portugue s e s q ue e s tive re m a le r, s e m e s m o com toda a de dicação não obtive re m re s ultados (o q ue pode rá aconte ce r m uitas ve ze s ), apre ndam com a e xpe riência e avance m para novas ide ias. M as te nte m ...
A partir de s ta e dição ire m os te ntar acom panh ar m ais e ve ntos q ue aconte çam por Portugal, no s e ntido de divulgar o q ue s e vai faze ndo pe lo nos s o país e prom ove r a dis cus s ão nos m e s m os. Por is s o, pe dim os q ue nos notifiq ue m de futuros e ve ntos , para pode rm os divulgar na re vis ta, de ntro do pe ríodo pos s íve l. Tam bém pode rão e nviar-nos re s um os e fotos de e ve ntos já de corridos para s urgire m na nova s e cção Eve ntos , inaugurada com o e ve nto Te cnonov 2007, no q uale s tive pre s e nte.^ Sérgio Sant
os
A te cnologia W AP foi criada pe lo Fórum W AP, fundado e m 19 9 7 por m arcas com o a Nok ia ou a M otorola, com o obje ctivo de criar um protocolo de troca de inform ação e m dis pos itivos m óve is (w ire le s s ) com o os te le m óve is. O W AP cons is te num a linguage m de troca de inform ação própria de nom inada W M L. O W M Lé com patíve lcom os s tandards de TCP/IP, H TM L e XM L e inclui tam bém um a linguage m de s cripting s e m e lh ante ao Javas cript, m as m ais le ve de form a a s e r de rápida e xe cução por parte dos dis pos itivos m óve is , já q ue e s te s não pos s ue m grande pode r de proce s s am e nto, de nom inada W M LScript.
A s igla W AP s ignifica W ire le s s Application Protocol, ou s e ja, Protocolo para Aplicaçõe s W ire le s s e é de finida com o um a aplicação XM L1.0.
O s brow s e rs q ue cons e gue m inte rpre tar e s ta linguage m s ão e s pe cíficos , ou s e ja, não pode us ar o s e u brow s e r h abitual(a não s e r q ue pos s ua algum plugin para o e fe ito) para ve r páginas W AP. O s tipos de brow s e r com patíve is com o W AP s ão de nom inados M icro Brow s e rs , pe las s uas caracte rís ticas óbvias – não pode m te r grande s ne ce s s idade s ao níve l do h ardw are , m ais e s pe cificam e nte ao níve lda m e m ória e CPU, e por is s o s ão ide ais para s e r us ados nos dis pos itivos m óve is.
O W M L, com o foi e xplicado ante riorm e nte , é um a linguage m q ue a bas tante s program adore s pare ce rá fam iliar por s e r um m is to de H TM L e XM L, m as m ais rígida e m te rm os de inte rpre tação.
As páginas e m W M L não s ão de m uito dife re nte program ação das páginas e m H TM L, por is s o o program ador com e xpe riência e m H TM L pode facilm e nte iniciar-s e ne s ta linguage m. Es tas páginas têm a e xte ns ão .w m le s ão s e ns íve is a m aiús culas por te re m por bas e o XM L, ou s e ja, s e e s cre ve r
No W AP e xis te m te rm os e s pe cíficos para as páginas e o s e u conjunto, e cos tum a faze r-s e a analogia e ntre o W AP e um jogo de cartas. Im agine q ue te m um a torre de cartas , de nom inado por D e ck , e cada e le m e nto de s s a torre é, obviam e nte , um a carta – de nom inada por Card no código. O ra as s im s e ndo, um a página W M L é cons ide rado um de ck e de ntro da página W M L pode m e xis tir m últiplas cards. Q uando um utilizador ace de à página W M L s ão de s carre gadas todas as cards do de ck , s e ndo q ue a nave gação e ntre e las e s tará a cargo do dis pos itivo q ue as re q ue re u, q ue ne s s a altura não e s tará e m contacto com o s e rvidor.
O le itor ne s te m om e nto pode e s tar um pouco confus o e m re lação alguns tópicos m e nos e xplorados e por is s o é pre fe ríve lq ue obs e rve um e xe m plo de um de ck , para m e lh or cons olidar os conh e cim e ntos até agora adq uiridos :
**
**
Várias tags HTML funcionam aqui e serão abordadas mais à frente nesta introdução ao WML.
**
Segunda carta do deck
**
Re s ultado:
Várias tags H TM Lpode m s e r utilizadas da m e s m a form a e m W M L. Aq ui fica um a pe q ue na lis ta das m e s m as :
- Parágrafo - Q ue bra de linh a - Te xto G rande
(im age m e ncu rtada de vido ao tam anh o do e crã do s im u lador)
**
****
**
**
****
Nome:
Idade:
Sexo:
**
****
**
**
****
**
Em W M L, para a nave gação e ntre as dive rs as páginas e afins , te m os os s e guinte s e le m e ntos :
C om andos W M L
D irig e para a pág ina indicada no h re f.
Nota: Es te s im ulador não re produz o fie lds e t da m e lh or form a.
D irige para a página vis itada ante riorm e nte.
Actualiza a página ao clicar, e tam bém actualiza as variáve is dadas.
No O pe ration (noop) Pre vine um a acção de s e r re alizada.
D urante os últim os anos as s is tim os a um a grande divulgação da program ação orie ntada aos obje ctos (PO O ). Es ta ve io re s ponde r a re q uis itos e s s e nciais no de s e nvolvim e nto de s oftw are , nom e adam e nte no q ue diz re s pe ito às facilidade s de m anute nção e re utilização do código. M as ape s ar de todas e s tas e voluçõe s , ne m tudo aq uilo q ue a PO O s e propunh a cons e guir foi alcançado. É ne s te conte xto q ue s urge a program ação orie ntada aos as pe ctos (PO A). Es te novo paradigm a de program ação s urgiu e m 19 9 6 por G re ge r K iczalos e pe la s ua e q uipa no Xe rox PARC, q ue tam bém foram re s pons áve is pe lo de s e nvolvim e nto do As pe ctJ, a linguage m PO A m ais us ada.
Q uando vam os de s e nvolve r um a aplicação, é conve nie nte dividir o proble m a q ue nos foi propos to e m parte s. A s e paração do proble m a de acordo com os dados e as funcionalidade s a e le s as s ociadas facilita o e s tudo dos re q uis itos da aplicação. Is to é o q ue s e de s igna por s e paração de inte re s s e s. O paradigm a O O e s tabe le ce um a s e paração de inte re s s e s te ndo e m conta os tipos de dados , re pre s e ntados pe los obje ctos , e as funçõe s q ue utilizam cada tipo de dados , ou s e ja, os m étodos a q ue um obje cto re s ponde.
M as , com o já foi re fe rido ante riorm e nte , ape s ar da orie ntação aos obje ctos te r trazido m e lh orias na form a de program ar, não cons e guiu re s olve r alguns proble m as. Exe m plos clás s icos s ão o re gis tos das ope raçõe s e m fich e iros de log q ue e ncontram os e m m uitos s oftw are s , ou program ação concorre nte /dis tribuída. O código as s ociado a e s te tipo de funcionalidade s e ncontra-s e norm alm e nte e s palh ado por todos os m ódulos , o q ue dificulta a m anute nção e a e volução do código. Em PO A dize m os q ue is to s ão inte re s s e s e ntre cortante s , pois cortam trans ve rs alm e nte todos os m ódulos. A PO A ve m re s olve r e s te proble m a introduzindo um novo níve lde s e paração de inte re s s e s , os as pe ctos.
Bas icam e nte e s te s inte re s s e s trans ve rs ais à aplicação s ão e ncaps ulados ne s tas novas unidade s m odulare s e pos te riorm e nte fundidas com as clas s e s num único s is te m a. Is to não s ó aum e nta a facilidade de m anute nção de s tas funcionalidade s da aplicação, vis to q ue tudo s e e ncontra num único local, com o aum e nta as pos s ibilidade s de re utilização das clas s e s noutros conte xtos , pois e s tas e ncontram -s e lim pas de s tas funcionalidade s q ue norm alm e nte variam m uito de cas o para cas o.
A e xpre s s ão pode s e r um a palavra (nom e de um a clas s e , nom e de um m étodo, e tc.), m as tam bém te m os caracte re s e s pe ciais :
Ve jam os agora alguns e xe m plos :
Re pre s e nta todas as e xe cuçõe s do m étodo toString. Pode m os re s tringir ape nas à e xe cução do m étodo a obje ctos da clas s e Xpto s ubs tituindo String toString() por String Xpto.toString(), ou a obje ctos da clas s e Xpto e todas as s uas s ubclas s e s faze ndo String Xpto+ .toString();
Re pre s e nta a ch am ada de m étodos com e çados pe la palavra s e t de clas s e s com e çadas pe la palavra Xpto, com um núm e ro q ualq ue r de argum e ntos. Pode m os lim itar ape nas a m étodos q ue re ce bam argum e ntos de um de te rm inada tipo, por e xe m plo, faze ndo * Xpto.s e t(int,String) lim itaríam os ape nas aos m étodos cujo o prim e iro argum e nto fos s e um inte iro e o s e gundo um a s tring (para além de ve rificar todas as outras condiçõe s já indicadas ).
Re pre s e nta todos os ace s s os (para cons ulta) a atributos private do tipo String, com e çados por abc.
O As pe ctJ
O As pe ctJ (h ttp://w w w .e clips e .org/as pe ctj) foi a prim e ira linguage m O A de s e nvolvida e é, provave lm e nte , a m ais us ada. Es ta linguage m pe rm ite acre s ce ntar as pe ctos a program as fe itos e m Java. Para com pre e nde r o As pe ctJ é ne ce s s ário conh e ce r três conce itos fundam e ntais pre s e nte s na PO A :
Pointcuts
G e ne ricam e nte , a de finição de um pointcutobe de ce à s e guinte s intaxe :
pointcut
O nde :
D e s e guida indicam -s e os tipos de join points m ais im portante s :
O prim e iro proble m a q ue vam os re s olve r cons is te e m alte rar os m étodos toString(). Vam os alte rá- los de form a a q ue pas s e m a criar um a s tring q ue conte nh a tam bém o nom e da clas s e. Tal pode s e r cons e guido do s e guinte m odo:
pointcut tostr(Object obj) : execution(String toString()) && target(obj);
String around(Object o) : tostr(o) { String s = proceed(o); return ("<" + o.getClass().getName() + " @ " + s + ">"); }
Prim e iro de finim os o pointcut q ue , para além de re s tringir os m étodos à e xe cução do toString(), tam bém capta o obje cto ao q ualo m étodo é e nviado através do targe t. D e s ta form a foi pos s íve lutilizar o obje cto no advice , com o s e pode ve r nas linh as 5 e 6. Foi tam bém us ado proce e d, q ue e xe cuta o m étodo original. D e pois é s ó acre s ce ntar o nom e da clas s e e de volve r o re s ultado.
No próxim o e xe m plo vam os ve r com o us ar o args , q ue é s e m e lh ante ao targe t, m as e s te capta os argum e ntos do m étodo (ou cons trutor, com o s e rá o cas o). Es te as pe cto irá im prim ir um a m e ns age m s e m pre q ue um obje cto de um a clas s e com e çada por Clas s e for inicializado através de um cons trutor q ue re ce ba um argum e nto do tipo inte iro.
pointcut init(int x) : initialization(new(..)) && within(Classe) && args(x);*
after(int x) : init(x) { System.out.println("Classe: " + thisJoinPointStaticPart.getSignature().getDeclaringType().getName()); System.out.println("Argumentos: " + x); }
Ne s te e xe m plo foi tam bém us ada a variáve lth is JoinPointStaticPart, q ue contém um a s érie de inform açõe s s obre o join point e m q ue o as pe cto vai s e r e xe cutado. Exis te tam bém a variáve l th is JoinPoint, q ue pode ria s e r us ada ne s te cas o para s abe r q uais os argum e ntos re ce bidos. Tals e rá fe ito no próxim o e xe m plo.
Suponh am os agora q ue q ue ríam os re gis tar todas as alte raçõe s re alizadas e m q ualq ue r um a das clas s e s. Para alte rar o valor dos atributos é ne ce s s ário re corre r aos m étodos s e t*. Logo vam os criar um pointcut q ue agrupe todas as e xe cuçõe s de s te s m étodos. Tam bém vam os q ue re r re gis tar q ualo obje cto afe ctado, q uais os argum e ntos us ados no m étodo (s e ndo q ue o s e u tipo ne m s e m pre é o m e s m o) e q ualo nom e do m étodo.
pointcut sets(Object obj) : call( Classe.set(..)) && target(obj);*
before(Object obj) : sets(obj) { try { BufferedWriter bw = new BufferedWriter(new FileWriter("history.txt",true));
Rui G onçal
v e s
**Date d=(Calendar.getInstance()).getTime(); bw.write("Data: " + d + "\nObjecto: " + obj + "\nMetodo: "
Aq ui já re corre m os à variáve lth is JoinPoint para obte r os argum e ntos us ados no m étodo, as s im com o os ide ntificadore s dos argum e ntos. O re s ultado obtido s e rá algo com o:
D ata: SatD e c 09 17:56:30 W ET 2006 O bje cto: <Clas s e 1 @ x=12 /a=true > M e todo: s e tX Argum e ntos : x=
Conclus ão
Ao longo de s te artigo ficaram vis íve is alguns dos be ne fícios q ue pode m os obte r com a PO A. Contudo h á alguns factos q ue é ne ce s s ário re alçar. Em prim e iro, q ue um a abordage m dos proble m as s e gundo e s ta m e todologia, é bas tante m ais com plicada do q ue a abordage m O O. É difícilde finir a e s trutura do s oftw are , ide ntificando corre ctam e nte todas as parte s q ue o com põe m. M e s m o de pois de de finida a e s trutura, com e te m os facilm e nte e rros na de finição dos as pe ctos (aconte ce várias ve ze s de finir as pe ctos q ue originam ciclos infinitos , pois ao e xe cutá-los criávam os s ituaçõe s onde outros as pe ctos pode riam s e r e xe cutados ), q ue por ve ze s não s ão m uito vis íve is. Sublinh a-s e ainda q ue não é obje ctivo da PO A s ubs tituir a PO O , tratam -s e s im de dois paradigm as com ple m e ntare s.
Por últim o re fe ria-s e q ue e s te te xto é ape nas um a introdução à PO A/As pe ctJ e , com o tal, m uitas das capacidade s de s te novo paradigm a não foram aq ui de m ons tradas. Suge re -s e a q ue m q uis e r aprofundar os s e us conh e cim e ntos ne s ta áre a, a cons ulta da página w e b do As pe ctJ, onde pode rá e ncontrar um a vas ta docum e ntação s obre e s te te m a.
Re fe rências
h ttp://w w w .e clips e .org/as pe ctj h ttp://e n.w ik ipe dia.org/w ik i/As pe ct-orie nte d_program m ing h ttp://w w w .re s e arch .ibm .com /h ype rs pace h ttp://w w w .de vx.com /Java/Article / 28422
Agora vam os ve r pas s o a pas s o as funçõe s utilizadas :
Clie nte
#include <sys/types.h> #include <sys/socket.h> #include <netdb.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/ioctl.h> #include <unistd.h>
// definição da estrutura do servidor struct sockaddr_in target; // criar o socket, indicando a família // a que pertence (AF_INET), o tipo de // protocolo (neste caso TCP - // SOCK_STREAM) e o parâmetro do // protocolo (0). int sock = socket(AF_INET,SOCK_STREAM,0); // variáveis char palavra[50], palavra2[50]; // tamanho da estrutura do servidor int ad1 = sizeof(target);
*// inicializa a estrutura do servidor bzero((char )&target, ad1);
// indica a família do protocolo target.sin_family = AF_INET; // especifica o endereço (IP) do // servidor target.sin_addr.s_addr = inet_addr("127.0.0.1"); // porta que o programa vai usar target.sin_port = htons(8450);
*// efectua a ligação ao servidor. // Se falhar (por exemplo o servidor // estar em baixo) o programa termina if(connect(sock, (struct sockaddr )&target, ad1) == -1) { close(sock); puts("Conexao falhou!"); exit(0); }
do { scanf("%s", palavra); // envia para o servidor os dados // contidos na variável “palavra” write(sock, palavra, 50); if(strcmp(palavra, "exit") != 0){ // recebe do servidor os dados // e guarda-os na variável // “palavra2” read(sock, palavra2, 50); printf("%s\n", palavra2); } }while(strcmp(palavra, "exit") != 0);
close(sock);
Se rvidor
#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #include <ctype.h>
// definição das estruturas do // cliente e do servidor struct sockaddr_in me, from; // criação dos sockets.o “sock” é // declarado identicamente ao cliente int newSock, sock = socket(AF_INET,SOCK_STREAM,0); // declaração das variáveis int tam = 0, i = 0; int ad1 = sizeof(me); char palavra[50], palavra2[50];
*// inicializa a estrutura do servidor bzero((char )&me, ad1);
// indica a família do protocolo me.sin_family = AF_INET; // fica associado a todos os // endereços IP do host local me.sin_addr.s_addr = htonl(INADDR_ANY); // porta em que o servidor vai // estar à escuta me.sin_port = htons(8450);
*// se a porta estiver ocupada o servidor não pode correr e é terminado if(bind(sock, (struct sockaddr )&me, ad1) == -1) { close(sock); puts("Porta Ocupada!"); exit(0); }
**// coloca o socket à escuta. // Podem ser mantidos em espera 5 // pedidos de ligação listen(sock, 5); // gera um novo socket específico // para essa ligação newSock = accept(sock, (struct sockaddr )&from, (void )&ad1); // fechar o socket antigo close(sock);
for(;;){ // recebe os dados do cliente e guarda-os na variável “palavra” read(newSock, palavra, 50); if(strcmp(palavra, "exit") != 0){ tam = strlen(palavra); for(i=0;i<tam;i++){ if((palavra[i]>='a') && (palavra[i]<='z')){ palavra2[i] = toupper(palavra[i]); } } palavra2[i] = '\0'; // envia os dados que estão na variável “palavra2” para o cliente write(newSock, palavra2, 50); } else{ close(newSock); exit(0); } }
Clie nte
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/ioctl.h> #include <unistd.h>
int main() { struct sockaddr_in target; int sock = socket(AF_INET, SOCK_STREAM, 0); char palavra[50], palavra2[50]; int ad1 = sizeof(target);
*bzero((char )&target, ad1);
target.sin_family = AF_INET; target.sin_addr.s_addr = inet_addr("127.0.0.1"); target.sin_port = htons(8450);
*if(connect(sock, (struct sockaddr )&target, ad1) == -1) { close(sock); puts("Conexao falhada!"); exit(0); }
do { scanf("%s", palavra); write(sock, palavra, 50); if(strcmp(palavra, "exit") != 0){ read(sock, palavra2, 50); printf("%s\n", palavra2); } }while(strcmp(palavra, "exit") != 0); close(sock); return 0; }
Para conh e ce r m e lh or com o s ão com pos tas algum as e s truturas o le itor pode vis itar os link s : h ttp://jan.ne tcom p.m onas h .e du.au/Clie ntSe rve r/s ock e t/s ock e t.h tm l e h ttp://w w w .de i.is e p.ipp.pt/~ andre /docum e ntos /s ock e ts -be rk e le y.h tm l
Se não pode tam bém pe s q uis ar na Inte rne t já q ue e xis te inúm e ra inform ação no q ue diz re s pe ito à API s ock e ts de Be rk e le y.
P e dro T
e ixe ira
Es tatís ticas e m PH P
1ª Parte
Q ue m já criou um w e bs ite ce rtam e nte te ve a curios idade de s abe r q uantas pe s s oas por lá pas s aram e de onde s e riam e s s as pe s s oas. A curios idade h um ana é natural e le va a e s tas q ue s tõe s. Es ta é a prim e ira parte dum tutorialq ue s e rá concluído na próxim a e dição.
Para re s olve r de um a form a s im ple s e inte iram e nte ao nos s o gos to irá s e r de s e nvolvido aq ui um tutorial “pas s o-a- pas s o” de form a a q ue no finalde s te artigo te nh a um s is te m a de e s tatís ticas s im ple s e funcionalcom as inform açõe s m ais utilizadas. Todas e s tas inform açõe s s e rão m os tradas com auxílio vis ualde gráficos , para q ue os re s ultados s e jam m ais ape lativos aos vis itante s.
Ante s de com e çar a program ar, convém faze r o dow nload de algum as clas s e s e m PH P q ue irá utilizar de form a a m inim izar o s e u trabalh o. São e las :
D e vido à e xte ns ão do s cript, ne s te artigo ape nas ire i falar das funçõe s m ais re le vante s. O s cript na s ua totalidade , im ple m e nta 4 gráficos ( 2 de barras , e 2 circulare s ), e 4 tabe las re s um o. No e ntanto ape nas ire m os falar aq ui da cons trução de um gráfico e de um a tabe la re s um o. Na conclus ão do artigo (na próxim a e dição) s e rá re fe rido um link para o s criptcom ple to.
Ins talação
Após te r fe ito o dow nload de am bas as fe rram e ntas (G e oIP e M aani Ch arts ), de ve rá de s com pactá-las para a raiz do s e u w e bs ite. O s fich e iros de s critos nas próxim as páginas de ve rão tam bém s e r guardados na raiz do w e bs ite.
SQ L
Com o o proje cto irá s alvaguardar os dados de todos os vis itante s q ue pas s am no w e bs ite , de ve rá guardar os re s pe ctivos dados num a bas e de dados e m M y SQ L.