Você está na página 1de 52

e ditorial

índice

3 notícias
4 te m a de capa
10 a program ar
30 s e gurança
34 e le ctrónica
39 tutorial
45 gnu/l inux
48 anál is e s
49 inte rne t
50 bl ue s cre e n
51 com unidade

e q u ipa PR O G R A M A R

adm inis tração


Rui M aia
D avid Pintas s il
go

coorde nador
A Eq u ipa
S érg io S antos
É dito q ue , para al ém de te r um a boa ide ia, te r um a boa e q uipa
coorde nador adjunto é e s s e ncialpara obte r s uce s s o num proje cto. Com e çar e te ntar
M ig ue lPais acabar um proje cto s ozinh o é, m uitas ve ze s , s uicídio para o
próprio proje cto. M e s m o q ue as nos s as capacidade s e s te jam à
e ditor altura, é s e m pre ne ce s s ário outros pontos de vis ta, opiniõe s ,
Joe lRam os outras s oluçõe s para um de te rm inado probl ema e,
principal m e nte , apoio e m otivação. A probabil idade de um
re dacção proje cto ficar a m e io, q ue r por de s inte re s s e ou fal ta de te m po, é
Fábio Pe dros a
Bruno Vaz m uito m aior q uando e s tam os s ozinh os à vol ta de l
e.
Fábio Corre ia
Pe dro Te ixe ira M uitas ve ze s a ide ia ne m é o principaljá q ue ne m s e m pre a
R icardo Roch a ide ia q ue com e çam os é a final . Exis te m m uitos cas os de s uce s s o
S andro Pinto actual m e nte q ue de m ons tram is s o m e s m o. Ainda m ais , um a boa
M ig ue lW ah nan
M arco S ilva e q uipa cons e gue s e m pre criar boas ide ias q uando é pre cis o.
Jos é O live ira
O tam anh o das e q uipas tam bém é m uitas ve ze s dis cutido. Na
col
aboradore s m inh a opinião, para com e çar do ze ro o m e l h or é m e s m o
Rui G onçal ve s com e çar com um grupo re duzido. Todos os factore s "e xtra-
D anie lCorre ia
proje cto" com o a com unicação e organização aum e ntam
e xpone ncial m e nte com o núm e ro de pe s s oas e nvol vidas no
Sérgio Santos

contacto
re vis taprog ram ar proje cto. M as irá ch e gar o te m po e m q ue s e rão pre cis as m ais
@ portug al -a-prog ram ar.org pe s s oas . M as , e m ve z de atirar m ais ge nte para um probl e m a,
m uitas ve ze s é m ais útildividir a e q uipa e m vários grupos com
w e bs ite dife re nte s áre as de foco. E o principal : re s pe itar s e m pre o
w w w .re vis ta-prog ram ar.info trabal h o e as opiniõe s de todos os m e m bros da e q uipa.

<2 >
notícias

De l
le Ubuntu G aim m uda nom e para
Pidgin
D e pois de um a votação no s ite da D e l l
de dicado aos cons um idore s , o Ide aStorm , D e pois dum l ongo e confl ituos o proce s s o
a De l lde cidiu com e çar a com e rcial izar de ne gociaçõe s com a AO L, um dos
com putadore s com o Ubuntu 7.04 (Fe is ty principais ISPs dos EUA, a e q uipa do G aim
Faw n) com o s is te m a ope rativo pré- de cidiu m udar o nom e do fam os o Ins tant
ins talado. A e s colh a re caiu s obre o Ubuntu M e s s e nge r para Pidgin. Em caus a e s tava o
de vido à m aioria dos cons um idore s o te r s is te m a de com unicação e m te m po re al
pre fe rido. A D e l
lnão irá dis tribuir a variante AIM , de tido e re gis tado pe l a AO L, pouco
K D E, o K ubuntu, ape nas o Ubuntu q ue us a te m po de pois das prim e iras ve rs õe s do
G NO M E. G aim te re m vindo a públ ico.

A votação no Ide aStorm e nvol ve u m ais de Após m uito te m po e m tribunal , a e q uipa


100 m ilpe s s oas e re ve l ou q ue ce rca de do G aim de cidiu dar o braço a torce r um a
70% de s tas e s tavam dis pos tas a util izar ve z q ue o proce s s o e s tava a im pe dir o
s is te m as ope rativos Linux. l
ançam e nto de ve rs õe s non-be ta do G aim .

Num a fas e inicial e s te s com putadore s As s im , foi pos s íve la tão aguardada ve rs ão
ape nas e s tarão dis poníve is para ve nda 2.0.0. A nova ve rs ão te m um novo vis ual ,
nos EUA, m as a D e l lnão re je ita a h ipóte s e m uitas novas funcional idade s e cl
aro, um
de e xpandir e s ta iniciativa a outros país e s . novo nom e : Pidgin.

G oogl
e é a m arca m ais val
ios a do m undo
Se gundo um e s tudo da e m pre s a de pe s q uis a de m e rcado M illw ard Brow n e m conjunto com
o FinancialTim e s , o m otor de bus ca G oogl e é a m arca m ais cara do m undo e s tando
aval iada e m q ual q ue r cois a com o 49 m ilm il h õe s de e uros . D e acordo com o rank ing
BrandZ - As 100 M arcas M ais Pode ros as , o G oogl e aum e ntou 77% num ano, te ndo
ultrupas s ado a M icros oft, a m ais val
ios a e m 2006.

Es te ano, a M icros oft pas s ou para te rce iro lugar val e ndo 40,5 m ilm il h õe s de e uros , e s tando
abaixo da G e ne ralEl e ctrics q ue vale 45,6 m ilm il h õe s de e uros . O q uarto pos to é ocupado
pe l a Coca-Col a, com 32,5 m ilm il h õe s de e uros , um pouco aq uém do val or da M icros oft.

Entre as 10 m arcas com val ore s m ais e l


e vados , oito s ão norte - am e ricanas , s e ndo as de
te cnol
ogias e as de cons um o ge ralas m ais pre s e nte s na l
is ta.

No conjunto, e s tas 10 m arcas - G oogl


e , M icros oft, Ch ina M obile , W al
-M art, Coca-Col a, Citi,
IBM , Toy ota, M cD onal
d's e Bank ofAm érica - val e m 1,2 biliõe s de e uros , m ais 10,6% do q ue
no ano pas s ado.

O s e gm e nto de te cnol ogias é aq ue l e onde as m arcas val e m m ais , s e ndo q ue as cinco m ais
pode ros as (G oogl e , M icros oft, IBM , Nok ia e H P) ch e gam aos 155,6 m ilm il h õe s de e uros .

<3>
te m a de capa

W indow s Vis ta
para
Program adore s

Introdução
W indow s Vis ta (antigo code nam e :
Longh orn) é o m ais re ce nte l ançam e nto
da M icros oft, m ais de 5 anos após o s e u
s uce s s or W indow s XP , contém ce nte nas de de s igne rs . Juntam e nte com e s ta
novas caracte rís ticas , e ntre as q uais , um a te cnol ogia, a M icros oft introduziu um a
nova inte rface gráfica, m e l h orias de nova l inguage m de m arcação bas e ada
pe s q uis a, fe rram e ntas m ul tim édia, áudio, e m XM L, ch am ada XAM L.
s e gurança, … e principal m e nte no as s unto
q ue nos inte re s s a (plataform a de •W indow s Com m unication Foundation
de s e nvol vim e nto), a nova ve rs ão da (W CF) forne ce um a Fram e w ork única para
pl ataform a .NET. a cons trução rápida de aplicaçõe s
s e guras , fiáve is e orie ntadas
Juntam e nte com o API, de Appl
ication a s e rviços .
lançam e nto do s is te m a, Program m ing Inte rface (ou
ve m tam bém inte grada a Inte rface de Program ação • W indow s W ork flow
nova ve rs ão da Plataform a de Apl icativos ) é um conjunto Foundation (W W F) ofe re ce
.NET 3.0 (antigo code nam e : de rotinas e padrõe s tare fas de autom ação e
W inFX). e s tabe le cidos por um s oftw are trans acçõe s inte gradas
para util
ização das s uas util izando gráficos de fl uxo.
Bas e ada na ve rs ão 2.0, a funcional idade s por program as É um m ode lo de
nova ve rs ão da pl ataform a apl icativos , is to é: program as program ação, m otor e
traz novas APIs , com o: q ue não q ue re m e nv olv e r-s e fe rram e ntas para pe rm itir
em de tal hes da apl icaçõe s bas e adas e m
• W indow s Pre s e ntation im ple m e nt ação do s oftw are , fl
uxo e m W indow s .
Foundation (antigo Aval on) m as ape nas us ar os s e us
s im pl ifica a cons trução de s e rviços . • W indow s CardSpace
apl icaçõe s cl ie nte ricas , (W CS) é um com pone nte
um a ve z q ue facil ita a inte gração de q ue guarda ide ntidade s digitais dum a
m ul tim édia, docum e ntos e UI. O W PF pe s s oa e m s e gurança, e ofe re ce um a
introduz um s is te m a avançado de l ay outs , inte rface unificada para e s col h e r um a
fácilinte gração de m ul tim édia e gráficos ide ntidade para um a particular
ve ctoriais e 3D , facil itando ainda a trans acção, tal com o o l ogin de um
col aboração e ntre program adore s e w e bs ite .

<4>
te m a de capa

Es tas te cnol ogias tam bém e s tão dis poníve is Com e s ta “nova” Fram e w ork e s te probl ema
para W indow s XPe W indow s Se rve r 2003. de s apare ce , pois é garantida 100%
Exis te m tam bém novas APIs im portante s no com patibil idade . Até à ve rs ão 2.0 da
núcl e o do s is te m a ope rativo, incl us ive o Fram e w ork , q ualq ue r apl icação
re novado inte rface áudio, re de , im pre s s ão e de s e nvolvida utilizando a pl ataform a corria
víde o. Al te raçõe s na infra-e s trutura de e s táve l e pe rfe itam e nte em s is te m as
s e gurança, m e l h oram e ntos na dis tribuição e W indow s 9 8 e s upe riore s . Com a nova ve rs ão
ins tal ação de apl icação (“Cl ick O nce ” e (3.0) ape nas o W indow s XP SP2 e s upe riore s a
W indow s Ins tal le r 4.0), novo m ode l o de s uportam . Exis te m outras m e l h orias na
de s e nvolvim e nto de drive rs (W indow s D rive r util ização de s ta Fram e w ork , m as não é do
Foundation), Trans action NTFS, âm bito de s te artigo.
de s e nvolvim e nto na API de com putação
m óve l(ge s tão de e ne rgia, Suporte Tabl e t PC W in32 vs . NET
Ink , Side Sh ow ) e grande s de s e nvol vim e ntos
dos s ubs is te m as com o W inl ogon e CAPI. Com o é h abitualnos s is te m as ope rativos , um
grande e s forço é fe ito para m ante r
.NET 3.0 e os novos com patibil idade nas apl icaçõe s , com o a
s ubs is te m as e xe cução de apl icaçõe s W in32 e m W indow s
Inicial m e nte o Longh orn, agora ch am ado Vis ta. Al gum as apl icaçõe s pode m não tirar
W indow s Vis ta, e ra um proje cto ainda m ais vantage m das novas APIs incl uídas nas novas
am bicios o onde a nova Fram e w ork iria ve rs õe s da Fram e w ork , m as de ve m continuar
s ubs tituir a actual API bas e dos s is te m as a trabal h ar igual m e nte às ve rs õe s ante riore s
ope rativos W indow s (W in32) e al te rava o do SO .Por outro l ado, a M icros oft garante
am bie nte de de s e nvol vim e nto e m W indow s continuar a adicionar APIs ge ridas (m anage d
para s e m pre , util izando código ge rido APIs ) à Fram e w ork , o q ue pode não
(m anage d code ). D e facto e s ta ide ia foi aconte ce r na W in32.
abandonada al
gure s durante o
de s e nvol vim e nto do s is te m a, m as no e ntanto Cabe aos program adore s e s col h e re m e ntre
e s ta nova Fram e w ork continua a s e r um a continuar a util izar a API antiga, adaptar as
grande m udança. apl icaçõe s para utilizar as novas APIs ge ridas
(m anage d APIs ) util izando código de
Porq uê um a nova API? adaptação ou “s im pl e s m e nte ” re e s cre ve r a
Parte da razão, é s e m dúvida a ve l ocidade a apl icação util
izando código ge rido
q ue as te cnol ogias H ardw are e s tão a s e r (m anage d code ).Com o é óbvio e xis te m
de s e nvol vidas . O s com putadore s pe s s oais já grande s melh orias de produtividade ,
com e çam a util izar dis cos rígidos com s im plicidade e com patibil idade e m faze r a
capacidade s e norm e s , m onitore s de al ta- pas s age m para código ge rido (m anage d
re s olução, ve l ocidade s de proce s s am e nto code ).
e norm e s , e tc. Cone ctividade é tam bém de
grande inte re s s e , juntam e nte com a O utra das vantage ns na util ização de código
ne ce s s idade de m e l h or s e gurança. Standards ge rido é o be ne fício de pode r util izar várias
com o o RSS e Se rviços W e b e s tão a ganh ar linguage ns , q ue no cas o da Fram e w ork da
adopção e a re s ol ve r probl e m as de M icros oft actual m e nte corre s ponde ao C+ + ,
inte gração. O utra razão é o l e m a “W rite once , C# , VB.NET, ASP .NET e J# . Com novas ve rs õe s
run e ve ry w h e re ”, bas tante util izada para da Fram e w ork s ão im pl e m e ntadas novas
de s cre ve r e s ta pl ataform a, vis to q ue a al te raçõe s nas l inguage ns , talcom o outras
principalfal h a q ue a API W in32 (m ais de 12 fe rram e ntas . É tam bém pos s íve lutilizar outras
anos de e xis tência) acarre tava e ra a linguage ns com a Fram e w ork , com o o
ne ce s s idade de m ante r com patibil idade IronPy th on (im pl e m e ntação do Py th on) e
e ntre al te raçõe s s e m afe ctar as apl icaçõe s Ruby .NET (im pl e m e ntação do Ruby ).
q ue a util izavam .

<5>
te m a de capa

W indow s Pre s e ntation M uitos pe ns am q ue o W PF de pe nde do


XAM L, m as is to não é ve rdade . Al iás , tudo o
Foundation q ue s e cons trói util izando XAM L pode s e r
fe ito e m q ual q ue r l inguage m .NET. Até
porq ue o XAM Lnão é ape nas util izado pe l o
Com o fal
ado ante riorm e nte , W indow s
W PF , é tam bém por outras te cnol ogias
Pre s e ntation Foundation (W PF) é o nom e de
(W indow s W ork fl ow Foundation [W W F] por
um conjunto novo de API’s na nova ve rs ão
e xe m pl
o). Apl icaçõe s W PF pode m corre r e m
da Pl ataform a .NET q ue pe rm ite a q ualq ue r
duas dife re nte s form as :
program ador dar us o ao novo m ode l o
gráfico q ue util iza m e l
h or do q ue nunca o
•Apl icaçõe s de brow s e r XAM L: El as corre m
pode r gráfico do proce s s ador gráfico (G PU).
com o apl icaçõe s al ojadas no brow s e r. El as
não corre m no s is te m a do util izador e não
Q ual q ue r apl icação cons truída util izando
corre m offl ine . D o ponto de vis ta da
W PF cons titui tipicam e nte de um núm e ro de
s e gurança, e l as e xe cutam na zona de
páginas Exte ns ible Appl ication M ark up
s e gurança de Inte rne t, q ue l im ita o s e u
Language (XAM L) juntam e nte com o s e u
ace s s o a re curs os do s is te m a. Vis to q ue
código s uporte . O bviam e nte a
corre m com um al to níve lde s e gurança, não
funcional idade q ue um a col e cção de
ne ce s s itam de pe rm is s ão do util izador para
páginas inde pe nde nte s pode ofe re ce r é
corre r.
lim itada, e nâo é s uficie nte para grande
parte das ne ce s s idade s . Por e xe m pl o, o
• Apl icaçõe s ins tal adas : Ne s ta form a, as
proce s s am e nto q ue ocorre ao níve l da
apl icaçõe s ou s ão al ojadas num a jane l a
página não s uporta ne ce s s idade s com o
(com o q ual q ue r apl icaçõe s W indow s ) ou
guardar o e s tado da página e nq uando o
alojadas na jane l a de nave gação W PF . Es ta
utilizador nave ga, m uda de página, carre ga
jane l a contém um a banda de nave gação
páginas , ge re variáve is gl obais , e tc.
na re gião do cl ie nte com botõe s de
nave gação. Es ta banda é s ubs tituíve lpe l os
W PFou W indow s Form ? program adore s q ue q ue iram cons truir a s ua
W PF é claram e nte para própria barra util
izando a cl as s e
apl icaçõe s com us o Sy s te m .W indow s .Navigation.NavigationW indo
m ul tim édia e l ay out avançado. w s.
A não s e r q ue o s uporte a
W indow s 98 s e ja m e sm o Para cada um de s te s dois tipos de
ne ce s s ário, e ntão o W PF é um apl icação e três de dis tribuição, com a
e xce l e nte s ubs tituto para o e s colh a do m étodo a util izar, e xis te im pacto
“antigo” W inForm s . na s e gurança. Com o tal , convém ao
program ador conh e ce r concre tam e nte
cada tipo.
Com o tal , o m ode l
o da apl icação W PF
s uporta a col
e cção de páginas XAM L e m
um a única apl
icação do m odo tradicional
. XAM L
Em te rm os de apl icaçõe s W indow s Form s , e m XAM L (pronuncia-s e "zam e l ") é um dos
q ue um a página XAM L é s e m e l h ante a um principais conce itos as s ociados com o W PF ,
fich e iro de form ul
ário (W inForm ), a apl icação pois forne ce ao de s igne r e program ador
W indow s Form s re une os form ul ários num um a form a concis a de re pre s e ntar um a
único e xe cutáve ldo m e s m o m odo q ue um a inte rface gráfica ou outras h ie rarq uias de
apl icação W PFre une as s uas páginas XAM L. obje ctos . XAM L é um a l
inguage m
de cl arativa de m arcação bas e ada e m XM L.

<6 >
te m a de capa

M uitos pe ns am q ue o W PF de pe nde do Exis te m m uitas fe rram e ntas para e xe cução e


XAM L, m as is to não é ve rdade . Al
iás , tudo o criação de Xam l . Juntam e nte com o Vis ual
q ue s e cons trói util izando XAM L pode s e r Studio 2005 vêm o Xam l Pad q ue pe rm ite
fe ito e m q ual q ue r linguage m .NET. Até introduzir código Xam l e ve r o re s ul tado
porq ue o XAM Lnão é ape nas util izado pe l o im e diato. Pode tam bém ape nas guardar o
W PF , é tam bém por outras te cnol ogias código num fich e iro de e xte ns ão .xam le
(W indow s W ork flow Foundation [W W F] por abrir no Inte rne t Expl ore r (ne ce s s ita do .NET
e xe m pl
o). 3.0 ins talado).

D as inúm e ras vantage ns e m util izar e s tas Com o o W PF introduz tantos novos conce itos ,
páginas XAM L, q ue bas icam e nte s ão não é prático de s e nvol ve r código e de s ign
fich e iros XM L, um a das principais vantage ns s e m novas fe rram e ntas apropriadas . D e s de o
de s te proce s s o é a s e paração e ntre o lançam e nto do Vis ualStudio 2005 q ue e s te
de s ign do inte rface gráfico e o código de juntam e nte com a e xte ns ão para .NET 3.0
fundo. Es ta s e paração ajuda ofe re ce um bom am bie nte para cons truir
cons ide ral m e nte q uando a e q uipa ou apl icaçõe s W PF , com novos tipos de
pe s s oa q ue faz o de s ign não é a m e s m a q ue proje ctos e e ditore s vis uais e s pe cíficos para
a as s ociada com a program ação.Por XAM L.
e xe m pl o, a s e guinte im age m m os tra a Com a nova ve rs ão Vis ual Studio “O rcas ”
dife re nça e ntre C# /VB.NET/XAM L na (ainda e m de s e nvol vim e nto) e s te s uporte
cons trução de um s im pl e s botão: ainda s e rá am brangido.

Re pare q ue por e xe m pl o, o código Xam l Exis te m ainda outras fe rram e ntas profis s ionais
não ne ce s s ita do Ligh tBl ue de cl
arado com o para criação de conte údo W PF , al gum as
m e m bro de Col ors , é re conh e cido de s tas tam bém da M icros oft.
autom aticam e nte . Util izando e s te e xe m pl o
dado, pode m os tam bém m os trar a M icros oft Expre s s ion Bl e nd é um a das
de claração de e ve ntos . principais fe rram e ntas util izadas para e s te s
form atos , principal m e nte porq ue partil ha o
Ao adicionar o atributo Cl ick =”button_cl ick ” m e s m o s is te m a de fich e iros q ue os proje ctos
na tag Button no código XAM L s e ria o do Vis ualStudio, facil itando o trabal ho em
e q uival
e nte a adicionar um e ve nto, q ue s im ultâne o no código e de s ign.
e xe cutaria o m étodo button_cl ick s e m pre
q ue o util izador clicas s e no botão criado. M icros oft Expre s s ion D ata tam bém é outra
Es ta adição, im pl icaria a ne ce s s idade de fe rram e nta M icros oft q ue pe rm ite criação de
juntar o XAM L com um a l inguage m im age ns bitm ap e ve ctoriais com
proce dim e ntal.NET. e xportação para XAM L.

<7>
te m a de capa

Sil
ve rl
igh t W CF ofe re ce o m ode l o orie ntado a s e rviço,
cons truído no topo da pl ataform a .NET e
Conh e cido por W PF/E (W indow s Pre s e ntation unifica as dife re nte s capacidade s de
Foundation/Eve ry w h e re ), Sil ve rl
igh t é um a s is te m as dis tribuídos , incl uindo s e rviços w e b
ve rs ão gratuita e re duzida da pl ataform a e s táticos , m e ns age ns , trans acçõe s e
W PF com patíve lcom vários brow s e rs e vários re m oting num a única API.
s is te m as ope rativos , garantindo as s im a
com patibil idade de apl icaçõe s W PF para W CF ofe re ce um a nova nam e s pace ,
Brow s e r e m grande parte dos s is te m as ch am ada Sy s te m .Se rvice M ode l, q ue forne ce
e xis te nte s . Actual
m e nte já s uporta W indow s , as fe rram e ntas para al guns dos ce nários
Linux e M ac. util
izados e m apl icaçõe s dis tribuídas :
•M e ns age ns , num único s e ntido ou am bos
Em com pe tição dire cta ao Fl as h pl
ay e r da •Ch am adas a proce dim e ntos re m otos
Adobe , e s te pl
ug-in traz o m undo m ultim édia •Cal l back s
do W PFao brow s e r. •Se s s õe s
•Se gurança
W indow s Com m unication •Trans acçõe s
Foundation •e tc

W CF é o núcl e o das apl icaçõe s com


com unicaçõe s orie ntadas a s e rviços para a W CF é um a e norm e e im portante API, o l
e itor
pl ataform a W indow s . Es tá cons truído no topo s e inte re s s ado já pode e ncontrar al guns
dos s tandards de s e rviços w e b e e s tá livros q ue cobre m o as s unto (ne nh um e m
de s e nh ado para as ne ce s s idade s do s e rvice - português actual m e nte ).
orie nte d arch ite cture (SO A) e s oftw are as a
s e rvice (SA AS). A fil os ofia por de trás de s te s é
q ue o s oftw are de ve s e r e s crito util izando W indow s W ork fl
ow Foundation
inte rface s q ue com unicam util
izando
protocol os s tandard. W W F é m ais um a das novas te cnol ogias
incl uída no .NET 3.0 e pe rm ite de finir,
Se rviços w e b foram o ínicio de s ta h is tória, e xe cutar e ge rir fl
uxos de trabal h o. Util
izando
onde l ógica dos ne gócios é im pl e m e ntada um fl uxo de trabal h o pode m os de clarar um
e m puro te xto, bas e ado e m XM L, util izando program a com o um a s érie de pas s os
um a l inguage m ch am ada W e b Se rvice com pos tos de actividade s . Es tas actividade s
D e s cription Language (W SD L). Program adore s pode m s e r facil m e nte criadas por código,
pode m e ntão util izar um a m e ns age m num m arcação ou através de outras actividade s
form ato ch am ado Sim pl e O bje ct Acce s s criadas .
Protocol (SO AP) q ue util iza o XM L, para
com unicar com o s e rviço. No e ntanto Exis te m inúm e ras vantage ns e m util izar e s te s
s e rviços w e b e s tão l im itados e não s uportam fluxos de trabal h o ao invés de e s cre ve r código.
al gum as funcional idade s com o s e gurança, Em prim e iro l ugar, para program adore s , fl uxos
re ntabil idade , e trans acçõe s se m de trabal h o s ão m ais fáce is de e nte nde r do
com pl icadas adiçõe s no m ínim o. q ue código, porq ue fl uxos de trabal ho
ofe re ce m um a re pre s e ntação do proce s s o.
W CF e s tá de s e nh ado para pe rm itir tudo is to Cons e q ue nte m e nte , facil
ita o trabal h o q uando
e m uito m ais ;ofe re ce um a API q ue pe rm ite o program ador pre cis a de m odificar o fl uxo
im pl e m e ntar s e rviços s e m pre ocupação com as s ociado a um proce s s o, q ue ge ral m e nte não
e s te s de tal h e s, l ibe rtando te m po útil para é nada fácilpara o program ador m odificar no
mel h or conce ntração na l ógica do ne gócio. código.

<8>
te m a de capa

Se m e l
h ante ao W PF , o W W F tam bém util iza O q ue é o CardSpace ?
m arcação XAM L para de cl arar a e s trutura
do fl uxo de trabal h o. Contudo, e s ta CardSpace é o nom e de um a nova
de claração tam bém pode s e r fe ita por te cnol ogia do W indow s q ue s im pl ifica e
código de um a das l inguage ns .NET. mel h ora a s e gurança de ace s s o a re curs os
M ais inform ação s obre e s ta te cnol ogia e partil h a de inform ação pe s s oal na
pode se r e ncontrada no s ite Inte rne t. CardSpace ajuda a ge rir a
m s dn.m icros oft.com /w ork fl
ow . inform ação pe s s oale a control ar a q ue m
e ssa inform ação é dada,
re duzindo o núm e ro de
probl e m as as s ociados ao
m étodo tradicional de
utilizador/pal avra-ch ave .

Em ve z de forçar os util izadore s a


le m brar um a q uantidade e norm e
de util izadore s e pal avras -ch ave ,
o CardSpace forne ce aos
utilizadore s um m étodo m ais
s e guro e q uival e nte aos
utilizadore s e pal avras -ch ave ,
utilizando um conjunto de
cartõe s de ide ntificação virtual
W indow s C ardS pace q ue pode m s e r ace didos por um inte rface .
Es te s cartõe s pode m s e r util izados para faze r
H oje , a m aior parte dos w e bs ite s com o o login ape nas com um cl iq ue e m w e bs ite s
H otm ail , e Bay, Am azon, Pay pal util izam com com patibil idade à te cnol ogia.
um a com binação de nom e e pal avra-
ch ave para garantir ace s s o a inform açõe s
pe s s oais as s ociadas a um a conta. Exis te m Concl
us ão
dois probl e m as fundam e ntais com e s te
m étodo de s e gurança. Prim e iro, A M icros oft e os s e us re ce nte s lançam e ntos
util izadore s s ão obrigados a criar e vie ram novam e nte s ubir a fas q uia na
re l e m brar um a l is ta s e m pre a cre s ce r de program ação e m am bie nte s W indow s .
nom e s /pal avras -ch ave (tipicam e nte um a D e pois de um a pe q ue na e s im pl e s vis ita
com binação por cada w e bs ite q ue vis ita). guiada pe l as principais introduçõe s na
Is to ge ral m e nte ge ra práticas ins e guras , pl ataform a .NET 3.0, cabe agora ao
com o util izar o m e s m o nom e e pal avra- l
e itor/program ador pre parar-s e para os
ch ave para vários w e bs ite s , ou guardar novos de s afios q ue com is to vão ch e gar.
lis tas e m te xto ins e guro (de s e ncriptado) no
com putador ou pape l .

Se gundo, nom e s de util izador e pal avras -


ch ave s ão s us ce ptíve is a um a am e aça e m
cre s cim e nto de ataq ue s de fraude de
Fábio Pe dros a

várias form as , incl uído “ph is h ing”. Ataq ue s


Ph is h ing e nganam os util izadore s pe dindo
para forne ce r as inform açõe s de
ide ntificação a w e bs ite s fraudul e ntos .
Le vam a vantage m da incapacidade do
utilizador confirm ar a val idade do w e bs ite
q ue vis itam .
<9 >
a program ar

Es tatís ticas e m PH P
2ª Parte
D e pois de um a prim e ira parte na e dição ante rior de s ta re vis ta, o artigo s obre a
criação de e s tatís ticas e m PH Ps e rá concl
uído ne s ta e dição.

Tabe l
as Re s um o
A próxim a função irá ge rar um a tabe l a de 3 col unas com os re s pe ctivos dados re s um o
pre e nch idos . No e ntanto e xis te m ais 3 tabe l
as re s um o no Script Com pl
e to q ue pe rm ite ge rar
re s um os com inform ação dife re nte .

function getCountrys ( $beginDate , $endDate ) {


include ( "connection.php" );
mysql_select_db ( $database , $connection );
$sql_countrys = "SELECT cod_pais, nome_pais, count(nome_pais) as total
FROM estatisticas WHERE data >=
".changeDate($beginDate)."' AND data <=
'".changeDate($endDate)."' GROUP BY cod_pais
ORDER BY total DESC";

$countrys = mysql_query($sql_countrys,$connection) or die(mysql_error());

while($row_countrys = mysql_fetch_array ($countrys , MYSQL_ASSOC ) ) {


$total_hits += $row_countrys[ 'total' ];
}

$countrys = mysql_query($sql_countrys,$connection) or die(mysql_error());

$table = "<table width='390' border='0' cellspacing='0' cellpadding='0'


align='center'>
<tr bgcolor='#E4E4EC' class='big_titles'>
<td colspan='4' align='center'>
Ranking de Visitas por Pa&#237;s
</td>
</tr>
<tr bgcolor='#E4E4EC' class='item' align='center' valign='middle'>
<td width='75' height='45'>
C&#243;digo Pa&#237;s
</td>
<td width='125'>
Nome Pa&#237;s
</td>
<td width='100'>
Total P&#225;ginas Visitadas
</td>

<10>
a program ar

<td width='90'>
% (Relev&#226;ncia)
</td>
</tr>";

while($row_countrys = mysql_fetch_array($countrys , MYSQL_ASSOC ) ) {

$table .= "<tr bgcolor='#F8F8F8' class='general_text'>


<td height='35' align='left'>
".$row_countrys[ 'cod_pais' ]."
</td>
<td align='left'>
".$row_countrys[ 'nome_pais' ]."
</td>
<td align='center'>
".$row_countrys[ 'total' ]."
</td>
<td align='center'>
".(round((($row_countrys['total'] / $total_hits)*100),2))." %
</td>
</tr>";
}

$table .= "<tr height='25' bgcolor='#E4E4EC' class='item'>


<td>
&nbsp;
</td>
<td align='right'>
Total:
</td>
<td align='center'>
".$total_hits."
</td>
<td>
&nbsp;
</td>
</tr>
</table>";

return $table;

} // FIM DE "getCountrys"

D e s ta form a te rm ina-s e a Clas s e , e m bora o fich e iro 's tatis tics .ph p' não e s te ja final
izado, já q ue
vai s e r ace dido dire ctam e nte pe l a Clas s e Ch arts para a ge ração dos gráficos . H ave rá q ue
pre parar o fich e iro para e s s as ope raçõe s .

Se guidam e nte à Cl
as s e s e rá introduzido o s e guinte código:

<11>
a program ar

if ( isset ( $_REQUEST[ 'graph' ] ) && $_REQUEST[ 'graph' ] == 1 ) { //


include ( "charts.php" );
$statistics = new Statistics;
SendChartData ( $statistics->getPageViewsGraph ( $_REQUEST[ 'begin_date' ] ,
$_REQUEST[ 'end_date' ] ) );
}
elseif ( isset ( $_REQUEST[ 'graph' ] ) && $_REQUEST[ 'graph' ] == 2 ) {
include ( "charts.php" );
$statistics = new Statistics;
SendChartData ( $statistics->getVisitGraph ( $_REQUEST[ 'begin_date' ] ,
$_REQUEST[ 'end_date' ] ) );
}
elseif ( isset ( $_REQUEST[ 'graph' ] ) && $_REQUEST[ 'graph' ] == 3 ) {
include ( "charts.php" );
$statistics = new Statistics;
SendChartData ( $statistics->getBrowserGraph ( $_REQUEST[ 'begin_date' ] ,
$_REQUEST[ 'end_date' ] ) );
}
elseif ( isset ( $_REQUEST[ 'graph' ] ) && $_REQUEST[ 'graph' ] == 4 ) {
include ( "charts.php" );
$statistics = new Statistics;
SendChartData ( $statistics->getOsGraph ( $_REQUEST[ 'begin_date' ] ,
$_REQUEST[ 'end_date' ] ) );
}
?>

Q uando a cl as s e ‘s tatis tics .ph p’ e s tá a s e r ace dida e xte rnam e nte e s pe ra s e r ace dida através
de um a variáve l‘graph ’ na URL. Es ta variáve lpode tom ar 4 val ore s , s e ndo e l
e s re s pe ctivos aos
4 gráficos q ue re torna.

Para cada um dos gráficos é criada um a ins tanciação da cl as s e , e proce de -s e à ch am ada


das funçõe s q ue re tornam o array de dados corre s ponde nte . Com e s s e array, e util izando a
função ‘Se ndCh artD ata()’ q ue faz parte da Cl
as s e Ch arts é m os trado o gráfico na página.

Te rm ina as s im o fich e iro ‘s tatis tics .ph p’.

Funçõe s de datas
No de corre r da Cl as s e ‘s tatis tics .ph p’ ce rtam e nte notou q ue s ão util
izadas funçõe s q ue ainda
não e s tão de s e nvolvidas . Es s as funçõe s vão trans form ar os form atos de data q ue util izam os na
Bas e de D ados .

Com o na Bas e de D ados a data e s tá a s e r guardada no form ato ‘A A A A-M M -D D ’ de form a a


tornar m ais unive rs alo Script, e e s tarm os m ais h abituados ao form ato Português ‘D D -M M -A A A A’
criam os um a função q ue inve rte a data pre te ndida para o form ato Am e ricano.

Cria-s e e ntão o fich e iro re s pons áve lpe lo vários tratam e ntos ne ce s s ários às datas util
izadas no
s cript. O fich e iro a criar te rá o nom e de ‘date _functions .ph p’.

<12>
a program ar

<?php

function date_validation ( $date_to_check ) {


$valid = true;

if ( ( substr_count ( $date_to_check , "/" ) ) != 2 ) {


$valid = false;
}

Para ve rificar s e um a data é vál


ida irá proce de r a um a s érie de te s te s , o prim e iro irá ve rificar s e
a data introduzida te m ape nas duas barras “/”. Cas o te nh a m ais ou m e nos q ue 2 barras , e ntão
e s tam os pe rante um a data inválida.

else {
if((ereg("([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})",$date_to_check, $separated_date))){
$day = $separated_date[ 1 ]; // atribuicao do dia
$month = $separated_date[ 2 ]; // atribuicao do mes
$year = $separated_date[ 3 ]; // atribuicao do ano

No 2º te s te ve rifica-s e s e a data contém ape nas núm e ros com o form ato de ‘D D -M M -A A A A’.
Cas o s e ja um a condição ve rdade ira, s e para a data e m 3 te rm os , s e ndo e l
e s : o dia, o m ês e o
ano.

if ( ( $year < 1900 ) || ( $year > 2200 ) ) {


$valid = false;
}
elseif ( $month > 12 ) {
$valid = false;
}

Se o ano fôr infe rior a 19 00 ou s upe rior a 2200, ou o m ês fôr s upe rior a 12 e s tá pe rante um a
data Invál
ida.

Se guidam e nte vai te s tar os dias pos s íve is de te r nos vários m e s e s do ano.

else {
switch ( $month ) {
case 2: // Fevereiro
if ( $day > 29 ) {
$valid = false;
}

Se o dia fôr s upe rior a 29 no m ês de Fe ve re iro e ntão te rá um a data invál


ida.

elseif ( ( $day == 29 ) && ( $year % 4 != 0 ) ) {


$valid = false;
}
break;

<13>
a program ar

Se tive r s ido introduzido o dia 29 , m as o ano não fôr bis s e xto e ntão a data introduzida é invál
ida.

case 4: // Abril
case 6: // Junho
case 9: // Setembro
case 11: // Novembro
if ( $day > 30 ) {
$valid = false;
}
break;

Para todos os m e s e s q ue têm 30 dias (Abril


, Junh o, Se te m bro, Nove m bro), s e o dia introduzido
fôr m aior q ue 30 é e ntão um a data inválida.

case 1: // Janeiro
case 3: // Marco
case 5: // Maio
case 7: // Julho
case 8: // Agosto
case 10: // Outubro
case 12: // Dezembro
if ( $day > 31 ) {
$valid = false;
}
break;
}

Se o dia fôr s upe rior a 31 nos re s tante s m e s e s (Jane iro, M arço, M aio, Jul
h o, Agos to, O utubro,
D e ze m bro) é tam bém um a data invál ida.

}
}
}
return $valid;
}

Se e m q ual q ue r al tura dos te s te s s e ve rificar q ue a data é inválida o e s tado da variáve l‘$val id’
pas s a a ‘fal
s e ’ indicando as s im q ue a data é invál ida. Se a data pas s ar por todos os te s te s com
condição pos itiva e ntão o re torno da variáve ls e rá ‘true ’.

function ch ange D ate ( $inputD ate ) {


$s plit= e xpl
ode ( "/", $inputD ate );
$outputD ate = "". $s pl it[2]. "/". $s pl
it[1]. "/". $s pl
it[0]
;
re turn $outputD ate ;
}

Com a função ‘ch ange D ate ()’ proce de -s e e ntão à al


te ração do form ato da data talcom o já
foi re fe rido ante riorm e nte .

<14>
a program ar

function get_dates ( ) {
$end_date=date("d/m/Y");
$begin_date=date("d/m/Y",strtotime("-1 week",strtotime(changeDate($end_date))));

$date_interval[ 'begin_date' ] = $begin_date;


$date_interval[ 'end_date' ] = $end_date;

return $date_interval;
}

Na página principaldo s cript e xis te a pos s ibil idade do util


izador s e l
e ccionar as datas q ue pre te nde .
No e ntanto, por de fe ito e s s as datas e s tão pre e nch idas com um a s e m ana ante rior ao dia actual
.
Ne s ta função ve rifica-s e q ualé o dia actuale guarda-s e e s s a data, ve rifica-s e o q ualo dia h á
um a s e m ana atrás de s s a data e re tornam -s e as duas .

function date_interval_form ( $begin_date , $end_date ) {

$form = "<form action='".$_SERVER[‘PHP_SELF’]."' method='post' target='_self'


id='frmIntervaloDatas'>
<div align='center'>
<br /><table width='600' border='0' cellspacing='0' cellpadding='0'>
<tr class='big_titles'>
<td height='40' colspan='5' align='center'>
Per&iacute;odo a que correspondem as estatisticas
</td>
</tr>
<tr>
<td width='100' height='40' align='center' class='item'>
Data In&iacute;cio:
</td>
<td width='150'>
<input name='begin_date' type='text' id='begin_date'
maxlength='10' value='".$begin_date."' />
</td>
<td width='100' class='messagem' align='center'>
Formato:<br />(dd/mm/aaaa)
</td>
<td width='100' class='item' align='center'>
Data Fim:
</td>
<td width='150'>
<input name='end_date' type='text' id='end_date'
maxlength='10' value='".$end_date."' />
</td>
</tr><tr>
<td height='40' colspan='5' align='center'>
<input name='btnOK' type='submit' id='btnOK' value='Gerar Estatisticas'/>
</td>
</tr></table></div></form>";

return $form;
}
?>

<15>
a program ar
D e form a a tornar m ais s im ple s a inte gração do s cript e m q ual
q ue r página, cria-s e um a função
q ue pe rm ite criar o form ul
ário de s e l
e cção do inte rvalo de datas .

Te rm ina e ntão a criação do fich e iro ‘date _functions .ph p’.

Ligação à Bas e de D ados


Para ace de r à inform ação re l ativa à bas e de dados de form a rápida e e ficie nte cria-s e um
fich e iro ‘conne ction.ph p’ q ue s e rá guardado na raiz do w e bs ite . Es te fich e iro te rá todas os dados
re l
e vante s à ligação da Bas e de D ados util izada para o bom funcionam e nto do s cript.

<?php

$hostname = "localhost";
$database = "nome_da_bd";
$username = "utilizador";
$password = "password";
$connection = mysql_pconnect($hostname, $username, $password) or
trigger_error(mysql_error(),E_USER_ERROR);

?>

Página principal
Agora q ue e s tá cons truído o s cript, fal
ta ape nas pô-l
o a trabal
h ar.

<?php

include ( "statistics.php" );
include ( "date_functions.php" );

$statistics = new Statistics;


$statistics -> saveStatistics ( );
?>

Es te s e rá o código q ue de ve rá s e r col
ocado e m todas as páginas q ue q ue ira incl
uir no s is te m a
de e s tatís ticas . Ape nas e s te código s e rá re s pons áve lpe l
a re col
h a de dados do vis itante ,
guardando-os na bas e de dados para pos te rior tratam e nto.

Agora para re al
izar a página de re s um o das e s tatís ticas :

<?php

if ((isset($_POST['begin_date'])) && (isset($_POST['end_date']))){


if(date_validation($_POST['begin_date']) && date_validation($_POST['end_date'])){
if ( $_POST[ 'begin_date' ] > $_POST[ 'end_date' ] ) {
$date_interval = get_dates ( );
$begin_date = $date_interval[ 'begin_date' ];
$end_date = $date_interval[ 'end_date' ];
} else {
$begin_date = $_POST[ 'begin_date' ];
$end_date = $_POST[ 'end_date' ];
}
}
} else {

<16>
a program ar

$date_interval = get_dates ( );
$begin_date = $date_interval[ 'begin_date' ];
$end_date = $date_interval[ 'end_date' ];
}
?>

Coloca-s e e s te bl oco de código no topo da página q ue q ue ira ve r incl uída no s is te m a, ante s do


código H TM L. Es te conjunto de código s e rá re s pons áve lpor te s tar s e o util
izador já introduziu
datas , ou s e de ve rá s e r util
izado as datas por de fe ito.

As datas q ue o util izador e ve ntual m e nte te nh a introduzido s e rão validadas e ape nas s e rão
util
izadas cas o s e ve rifiq ue m vál
idas , de outra form a s e rão util
izadas as datas por de fe ito.

D e s e guida s ão de m ons tradas as ins truçõe s para com pl


e tar a página com :

M e nu de introdução de datas
<?php echo date_interval_form ( $begin_date , $end_date ); ?>

G ráfico de Totalde vis itas por dia


<?php echo InsertChart ( "charts.swf", "charts_library",
"statistics.php?graph=1&begin_date=".$begin_date."&end_date=".$end_date ,390 ,250
,"F8F8F8", false); ?>

Re s um o de Páginas vis itadas


<?php echo $statistics -> getPageVisits ( $begin_date , $end_date ); ?>

Concl
us ão
Te rm ina-s e de s ta form a e s te tutorialpas s o-a-pas s o q ue pe rm ite de um a form a s im pl
e s , conh e ce r
as inform açõe s e s s e nciais de um vis itante tais com o, País , de onde vêm e ntre outras .

Exis te m um a ‘infinidade ’ de s is te m as on-l


ine q ue pe rm ite m control ar as vis itas a um w e bs ite de
form a e ficaz, com o por e xe m pl o, o G oogl e Anal y tics , m as o de fe ito de s te s s is te m as , é a
q uantidade e xce s s iva de inform ação de s ne ce s s ária para um a vis ual ização rápida.

A e norm e vantage m de s te s is te m a é a pos s ibil idade de s e r total


m e nte inte grado num w e bs ite ,
q ue s e traduz num a m ais val ia, pois o util izador pode rá optar por partil h ar a inform ação com
todos os vis itante s do s e u w e bs ite ou m ante r e s ta inform ação num a áre a de ace s s o re s e rvado.
Bruno Vaz

Q ue m q uis e r faze r dow nl oad do s cript com pl


e to pode ace de r a
h ttp://w w w .nul lde s ign.online .pt/proje ct/e s tatis ticas /.

<17>
a program ar

Por e s tas razõe s o us o de JNI de ve s e r fe ito


de form a cuidada e ape nas cas o não s e ja
JNI pos s íve l im pl
l
inguage m Java.
e m e ntar ape nas com a

Java Native D e pois de s ta bre ve introdução vam os


Inte rface pas s ar e ntão à prática, vam os ve r q uais os
pas s os ne ce s s ários para a criação de um
program a e m Java com JNI.

Java Native Inte rface (JNI) é um


fram e w ork de program ação q ue
pe rm ite o código e xe cutado
pe l a Java Virtual M ach ine
ch am ar e s e r ch am ado por
apl icaçõe s nativas (apl icaçõe s
e s pe cíficas para um h ardw are e
s is te m a ope rativo) e por
bibl iote cas e s critas e m outras
linguage ns , tais com o C, C+ + ,
De l ph i e As s e m bl
y.

Com o todos os fram e w ork s JNI


tam bém te m as s uas im pl icaçõe s , o
us o do JNI col oca e m ris co dois
be ne fícios da pl ataform a Java.
Prim e iro as apl icaçõe s Java q ue
utilizam JNI ficam de pe nde nte s do
am bie nte de e xe cução, contrário
de Java puro q ue pode se r
e xe cutado e m m úl tipl
os am bie nte s
com JNI a parte nativa te m de s e r
re com pil ada e m cada um dos
am bie nte s de e xe cução, pe rde ndo
a portabil idade do Java.

Se gundo a linguage m de
program ação Java é um a
linguage m ty pe -s afe e s e gura, ao
contrario das l inguage ns nativas
com o C ou C+ + q ue não s ão
s e guras .

<18>
a program ar

D e pois de ve rm os o pe rcurs o a pe rcorre r Com o pode m os ve r na l inh a 15 é


vam os com e çar com a im pl e m e ntação da de clarado o h e ade r para o m étodo nativo
cl as s e H e l
l
oW orl
d.java q ue ire m os im pl
e m e ntar, vam os us ar e s s a
h e ade r para criar o fich e iro de código
public class HelloWorld{ nativo (H e ll
oW orl
d.c), com o pode m os ve r
private native void print(); e m s e guida.
public static void main(String
args[]){ #include <jni.h>
new HelloWorld().print(); #include <stdio.h>
} #include "HelloWorld.h"
static{
System.loadLibrary("HelloWorld"); JNIEXPORT void JNICALL
} Java_HelloWorld_print(JNIEnv *env,
} jobject obj){
printf("Hello World!\n");
Na l inh a 3 foi de cl arado o m étodo nativo return;
print e nas l inh as 9 e 10 é dito ao Java para }
carre gar o bibl iote ca “H e lloW orl
d”, q ue
vam os criar de pois de re al izar m ais al
guns Se obs e rvarm os vam os ve r q ue a l inh a 15 do
pas s os . Em s e guida vam os com pil ar a cl
as s e fich e iro H e l
loW orld.h é praticam e nte igualao
criada : javac H e l loW orld.java. código na l inh a 5 do fich e iro H e l
l
oW orld.c.

D e pois de obte rm os o fich e iro Agora q ue já dis pom os de todos os fich e iros
Hel l
oW orld.clas s vam os us ar a fe rram e nta ne ce s s ários “H e l
l
oW orld.java”,
javah do Java para criar o fich e iros h e ade r “H e ll
oW orl d.clas s ”, “H e lloW orl
d.h ” e
(H e l
loW orl
d.h ), com o com ando javah -jni “H e ll
oW orl d.c” vam os criar a nos s a
Hel l
oW orld vam os obte r o fich e iro bibl iote ca nativa. Vam os ve r com o o faze r
Hel l
oW orld.h com o s e guinte conte údo. e m dife re nte s s is te m as ope rativos .

/* DO NOT EDIT THIS FILE - it is Linux com G CC


machine generated */
#include <jni.h> gcc -fPIC -I jdk/include -I
/* Header for class HelloWorld */ jdk/include/linux -shared -o
libHelloNative.so HelloNative.c
#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
Sol
aris com Sun Com pil
er
extern "C" {
#endif
/* cc -G -I jdk /incl ude -I jdk /incl
ude /s ol
aris -o
* Class: HelloWorld l
ibH e l
l
oNative .s o H e l
l
oNative .c
* Method: print
* Signature: ()V
*/ W indow s com M S C+ + Com pil
er

JNIEXPORT void JNICALL cl -I jdk\include -I


Java_HelloWorld_print (JNIEnv *, jdk\include\win32 -LD HelloNative.c -
jobject); FeHelloNative.dll

#ifdef __cplusplus O nde jdk é o cam inh o para a pas ta de


} ins tal
ação do Java.
#endif
#endif

<19 >
a program ar

Vam os agora ve r com o re al izar a pas s age m Até aq ui não h á nada de novo
de dados e ntre Java e C através do JNI. Para re l
ativam e nte ao H e lloW orld im pl
e m e ntado
is s o criam os um pe q ue no program a e m q ue ante riorm e nte , as novidade s e ntão agora
vam os im prim ir um a pe rgunta, us ar a função na im pl e m e ntação do fich e iro Prom pt.c
s canfdo C para re col h e r o input e re torná-lo q ue vai conte r al gum as novidade ao níve l
para o Java com o um O bje cto String. Para de JNI e no tratam e nto de Strings e m JNI-C.
is s o vam os com e çar cl aro pe l a criação do Vam os e ntão im pl e m e ntar o s e guinte
fich e iro Prom pt.java. código.

public class Prompt{ #include <stdio.h>


private native String getLine(String #include <jni.h>
prompt); #include "Prompt.h"

public static void main(String args[]){ JNIEXPORT jstring JNICALL


Prompt p = new Prompt(); Java_Prompt_getLine(JNIEnv *env,
String input = p.getLine("Qual jobject obj, jstring prompt){
o seu nome ? ");
System.out.println("Escreveu : " char buf[128];
+input); const jbyte *str;
}
str = (*env)->GetStringUTFChars(
static{ env,prompt,NULL);
System.loadLibrary("Prompt");
} if(str == NULL){
} return NULL;
}

printf("%s",str);
(*env)->ReleaseStringUTFChars(
Em s e guida vam os ge rar o fich e iro Prom pt.h
env,prompt,str);
q ue irá conte r al
go s e m e l
h ante a e s te :
scanf("%s",buf);
return (*env)->NewStringUTF(env,buf);
/* DO NOT EDIT THIS FILE - it is
}
machine generated */
#include <jni.h>
/* Header for class Prompt */
Com o pode m os ve r na l inh a 5 nos
#ifndef _Included_Prompt argum e ntos do m étodo para al ém das
#define _Included_Prompt variáve is de am bie nte q ue por de fe ito s ão
#ifdef __cplusplus col ocadas , ne s te cas o foi adicionada m ais
extern "C" { um a a variáve lprom pt do tipo js tring q ue
#endif corre s ponde à String dada com o argum e nto
/* da cl as s e Java. Com o o C não te m o O bje cto
* Class: Prompt String com o o Java vam os te r de pas s ar a
* Method: getLine String para outra form a trabal h áve le m JNI-C,
* Signature: (Ljava/lang/String;) para is s o é criada um a variáve lapontador
* Ljava/lang/String;
do tipo jby te , q ue de um a form a bás ica é o
*/
JNIEXPORT jstring JNICALL
by te do JNI da m e s m a form a q ue o js tring é a
Java_Prompt_getLine(JNIEnv *, String do JNI. O pas s o final para faze r a
jobject, jstring); conve rs ão é us ar a função do JNI
G e tStringUTFCh ar q ue re torna um a cópia da
#ifdef __cplusplus String dada no s e gundo argum e nto (l inh a 10)
} e as s im a variáve ls tr vai ficar com o val or da
#endif String dado com o argum e nto ao m étodo
#endif ge tLine .

<20>
a program ar

D e pois de s te proce dim e nto bas ta util izar a Com o pode m os ve r o código
função printf do C para im prim ir a String e im pl e m e ntado vai criar um array com 10
para te rm inar o proce s s am e nto da String pos içõe s e vai pre e nch e l as com os
vam os us ar a função Re l e as e StringUTFCh ars núm e ros de 0 a 9 , e m s e guida vai e xe cutar
(linh a 17) q ue vai libe rtar a m e m ória us ada o m étodo nativo s um Array q ue vai s om ar
para guardar a String, ate nção q ue e s te todos os val ore s pre s e nte s no array e vai
m étodo ape nas de ve s e r util izado de pois de re tornar o totalda s om a.
te re m te rm inado todas as ope raçõe s na
String.
Vam os agora pas s ar à im pl e m e ntação do
Vam os agora para final izar o nos s o program a m étodo nativo e para is s o vam os com e çar
capturar o input do util izador através da com o s e m pre por ge rar o fich e iro IntArray.h .
função s canf(l inh a 18) e guardar o input s ob
a form a de String no array de ch ar de finido
na l inh a 7, e m s e guida bas ta conve rte r o /* DO NOT EDIT THIS FILE - it is
array de ch ar para um O bje cto String e machine generated */
re torná-l o para o Java, para is s o vam os us ar #include <jni.h>
a função Ne w StringUTFcom o pode m os ve r na /* Header for class IntArray */
linh a 19 . Ao e xe cutar e s te e xe m plo o q ue vai
#ifndef _Included_IntArray
aconte ce r s e rá um inte rcâm bio de dados
#define _Included_IntArray
bas tante s im pl e s , o Java e nvia um a String #ifdef __cplusplus
q ue é im pre s s a pe l o C, e m s e guida a função extern "C" {
s canf vai capturar o input do util izador e irá #endif
re tornar e s s e input para o Java q ue o irá
im prim ir com o m étodo printl n(). /*
* Class: IntArray
Pas s am os agora ao tratam e nto de array s de * Method: sumArray
Java para C, para is s o vam os im pl
e m e ntar o * Signature: ([I)I
s e guinte código. */

JNIEXPORT jint JNICALL


public class IntArray{
Java_IntArray_sumArray(JNIEnv *,
jobject, jintArray);
private native int sumArray(int []
arr);
#ifdef __cplusplus
}
public static void main(String args
#endif
[]){
#endif
IntArray p = new IntArray();
int arr[] = new int[10];
for(int i = 0; i < 10; i++){
arr[i] = i;
} Ao ve rm os os argum e ntos do m étodo
int sum = p.sumArray(arr); pode m os ve rificar q ue e s tá agora pre s e nte
System.out.println("sum = "+ sum); um jintArray q ue corre s ponde ao array de
} inte iros do Java q ue é dado com o
argum e nto na ch am ada do m étodo.
static{
System.loadLibrary("IntArray");
}
}

<21>
a program ar

Agora o código nativo do nos s o m étodo. O JNI te m e ntre outras um a função


bas tante im portante para o tratam e nto de
array s , trata-s e da função G e tArray Le ngth
#include <jni.h> q ue com o o próprio nom e indica re torna o
#include <stdio.h> tam anh o de um array, e s ta função pode
#include "IntArray.h" s e r us ada da s e guinte form a :
JNIEXPORT jint JNICALL
Java_IntArray_sumArray(JNIEnv *env,
jsize len = (*env)->GetArrayLength(
jobject obj, jintArray arr){
env, arr);
jint *carr;
jint i = 0;
jint sum = 0; Concl
us ão
carr = (*env)->GetIntArrayElements(
env,arr,NULL);
if(carr == NULL){ E com is to e nce rram os e s te artigo s obre
return 0; Java Native Inte rface , com o pode m ve r é
} um fram e w ork m uito pode ros o m as m as
q ue de ve s e r ape nas us ado com o re curs o
for(i = 0; i < 10; i++){ à fal ta de outro re curs o por parte do Java
sum += carr[i]; ou no cas o de criação de novas
}
bibl iote cas . Em todo o cas o de ve s e r
utilizado com bas tante cuidado vis to tratar-
(*env)->ReleaseIntArrayElements(
env,arr,carr,0); s e de program ação não s e gura.

return sum;
}

Anal is ando o código pode m os ve r q ue na


linh a 7 é criado um apontador do tipo jint
q ue vai s e r us ado para guardar o array dado
com o argum e nto ao m étodo, para is s o
us am os a função G e t<Tipo> Array El e m e nts
e m q ue o <Tipo> é s ubs tituído ne s te cas o
por Int, e s ta função vai re tornar um
apontador para o array dado com o
argum e nto com o s e pode ve r na linh a 10.

Nas l inh as 15 a 17 é e xe cutado um cicl o for(),


q ue faz a s om a de todo o array e guarda o
val or na variáve l s um pre viam e nte criada.
D e pois dis to bas ta us ar a função
Re le as e <Tipo> Array Ele m e nts para l ibe rtar o
Fábio Corre ia

apontador q ue contém o array (l inh a 19 ) e


por fim na l inh a 21 vam os re tornar a s om a.

<22>
a program ar

LUA
Q ue m não s e l e m bra do grande títul o de
jogo “Es cape from M onk e y Is l and” na

Linguage m
década de 9 0. Provave l m e nte o q ue o
le itor não s abe é q ue LUA foi util izada ne s s e

de
jogo para o de s e nvol vim e nto da
program ação re s pons áve lpe l o control o da

Program ação
pe rs onage m principal , todos os cál cul os
ne ce s s ários à m ovim e ntação das
pe rs onage ns e ram re al izados através de
s cripts e m LUA.
Provave l m e nte s e o le itor ouvir al
guém
falar e m LUA, irá l ogo pe ns ar no Com a e ntrada no m undo dos jogos , a
plane ta s atél ite q ue o as tronauta Ne il rapide z e portabil idade da l inguage m
Arm s trong te ve o privil égio de pis ar de s pe rtou a ate nção de outras Entidade s .
pe la prim e ira ve z. No e ntanto ne s te O s Es tados Unidos da Am érica foi a próxim a
artigo ire m os fal ar de al go be m conq uis ta, te ndo inúm e ras Em pre s as do
dife re nte , m ais ao al cance de um a Parq ue Indus trialde Sil icon Val le y optado
pe s s oa com um … pe l a LUA para de s e nvolve r grande parte do
s e u s oftw are .

Pos te riorm e nte a afirm ação finalde LUA é


H is tória e Caracate rís ticas cons ol idada com a inte racção dos
s is te m as do program a e s pacialda NASA e
A LUA foi de s e nvolvida e m l íngua Portugue s a
com al guns dos proje ctos inte rnos .NET da
por um a e q uipa de program adore s do
M icros oft.
de partam e nto Te cgraf da Unive rs idade
Catól ica do Rio de Jane iro, e m código ope n-
M ais inform ação e m :
s ource . O obje ctivo inicialfoi a ge s tão de um
Página oficialda Linguage m LUA
proje cto indus trialda Pe trobras .
h ttp://w w w .lua.org
Te cgraf
G raças à s ua portabil idade , facil idade de
h ttp://w w w .te cgraf.puc-rio.br/
apre ndizage m , rapide z e e ficiência,
rapidam e nte cre s ce u para outras áre as de
program ação, e s tando actual m e nte a faze r
parte de apl icaçõe s inform áticas de grande A e vol
ução de LUA
porte .
Com um cre s cim e nto bas tante ace ntuado,
A LUA é um a l inguage m de program ação cada ve z m ais program adore s tive ram a
proce duraldo géne ro de Pas cal , C, Py th on, curios idade de l e r e s e inform ar o porq uê
PH P, Cobol , e ntre outras . Por e s te facto de tanto s e ouvir fal ar e m LUA.
q ual q ue r program ador te rá um a curva de Rapidam e nte os grupos de de bate da
apre ndizage m curta e rápida. No e ntanto a com unidade foram aum e ntando e os
m aior vantage m da LUA é tal ve z a s ua proje ctos novos s urgiam a um a rapide z
e norm e portabilidade q ue lhe pe rm ite al ucinante . Por tudo is to a e vol ução de LUA
inte racção com q ual q ue r outra l inguage m te ria de pas s ar por al go q ue s e tornou
de program ação ou s is te m a ope rativo. indis pe ns áve l no nos s o dia-a-dia… . a
Inte rne t. Capaz de de s e nvol ve r W e bs ite s
Com a s ua s intaxe s im pl e s , q ual q ue r s cript é com pl e tos através da bibl iote ca CG I/LUA e
de de s e nvolvim e nto rápido, e com um m e nor LuaSQ L.
te m po de proce s s am e nto, tal ve z te nh a s ido Im agine o q ue s e rá de s e nvol ve r um w e bs ite
e s ta caracte rís tica q ue cativou a grande com pl e tam e nte e m CG I/LUA (e q uival e nte
Em pre s a de Jogos para PC “Lucas Arts ”. para a LUA, talcom o o IIS é para o ASP)
com re curs o a LuaSQ L.

<23>
a program ar

Com o Back -e nd com pil ado e m ANSI C ou Atribuição m úl


tipl
a de variáve is
Lua pré-com pil ado, s e um dia de cidir trocar D e form a a m axim izar o código, com a LUA
o s e rvidor de W indow s para Sol aris por pode m os faze r atribuiçõe s m úl tipl
as de
e xe m pl
o, não s e rá ne ce s s ário de s e nvol ve r a variáve is :
pl ataform a toda de novo, bas ta re com pil ar o n, i = “Olá, Mundo” , 2;
código C e configurar o novo W e bs e rve r.
Ficando de s ta form a a variáve ln com a
M ais inform ação e m : s tring “O l á M undo” e a variáve li com o
M ódul o Lua para o Apach e val or “2”.
h ttp://os s .digirati.com .br/m od_l ua/1.0/ Troca de val ore s e ntre atribuiçõe s m úl tipl
as
Pl ataform a de D e s e nvol vim e nto de É pos s íve lno e ntanto a atribuição m úl tipl
a
apl icaçõe s W EB e m LUA h t com troca de val ore s e ntre variáve is :
tp://w w w .k e ple rproje ct.org/
Al ojam e nto de proje ctos e m LUA h t a, b = b, a;
tp://luaforge .ne t/
Com unidade de util izadore s LUAh tt Faze ndo com q ue a re ce ba o val or
p://l ua-us e rs .org/ ante riorm e nte arm aze nado por b e q ue b,
re ce ba o val or ante riorm e nte arm aze nada
por a, s e m ne ce s s idade de variáve is
A program ação te m porárias . Im agine o q ue s e rá os ve l h os
al goritm os de bubbl e s ort para orde nação
Com o e s te artigo não pre te nde de m ons trar a
de dados com e s ta vantage m .
total idade da l inguage m de program ação
LUA, m as s im abordar as principais
Concate nação
caracte rís ticas q ue tornam e s ta l inguage m
Para s e pode r concate nar variáve is com
única, re com e nda-s e a l e itura do m anuale m
conte údos s tring util
iza-s e o ope rador “..”:
h ttp://w w w .l
ua.org .
a = “Olá”;
Tal com o e xis te no JAVA a Java Virtual b = “, Mundo”;
M ach ine , tam bém LUA te m al go pare cido, z = a .. b;
q ue te m o nom e de Am bie nte G l obalÚnico, Re s ul
tado e m z s e rá “O l
á, M undo”.
e s te am bie nte guarda todas as variáve is
gl obais e de finiçõe s de funçõe s . É Variáve is Locais
autom aticam e nte activado q uando o Q uando s e e xe cuta cicl os (if..e ls e ..e nd,
inte rpre tador é inicial izado, e e s tá activo re pe at..until
, do..w h il
e , e tc..) e xis te a
durante toda a e xe cução do s cript. O pos s ibil
idade de criarm os variáve is l ocais
Am bie nte G l obalÚnico é m anipul ado ape nas dis poníve is ape nas de ntro de s s e cicl
o.
por código e s crito e m LUA ou por bibl iote cas
e m C, q ue utilize m funçõe s da inte rface C-Lua. a = 2;
if a > 0 then
Variáve is local a = ( a + 2 ) * 5;
print( a );
Talcom o aconte ce e m PH P ou Py th on as end
variáve is gl obais não pre cis am de s e r print( a );
de claradas , bas ta util
izar al
go do géne ro:
O re s ul tado do prim e iro print é 20 e do
a = 2.3; s e gundo print é 2. Com e s ta caracte rís tica
de LUA, pode m os criar um a variáve lq ue
É im portante re fe rir q ue as variáve is gl obais ape nas dura e nq uanto o cicl o e xis tir,
não têm tipos de dados de finidos , ape nas o pode ndo re al izar as ope raçõe s q ue
conte údo de fine o tipo de variáve l , e xis tindo q uis e rm os m e s m o q ue a variáve lte nh a o
s e te tipos bás icos : nil
, num be r, s tring, function, nom e igual , e q uando s airm os do cicl o a
cfunction, us e rdata e tabl e. variáve loriginalcontinua com o val or inicial.

<24>
a program ar
M úl
tipl
o re torno e m funçõe s Ins talação e am bie nte de
D a m e s m a form a q ue é pos s íve l re alizar de s e nvol
vim e nto
m úl tipl
as atribuiçõe s e m variáve is pode m os
te r m úl
tipl
os re tornos de um a função e aliar a Ne s ta fas e o l e itor ce rtam e nte de ve e s tar
m úl tipl
as variáve is : de s e jos o de e xpe rim e ntar a LUA. Então vam os
prim e iro proce de r à ins tal ação. Para pode r
function num_anterior_e_seguinte ( x ) ins talar o Am bie nte G e ralÚnico de LUA de ve rá
anterior = x -1; re alizar o dow nl oad do Inte rpre tador e m :
seguinte = x +1;
h ttp://prdow nl oads .s ource forge .ne t/l
uach e ia/
return anterior , seguinte;
end
luach e ia5-w in32-5.0.1a5.e xe ? dow nl oad

num_actual = 5; Exis te m várias opçõe s e ve rs õe s de dow nl oad,


anterior, seguinte = no e ntanto vam o-nos ce ntrar na ins tal ação
num_anterior_e_seguinte( num_actual ); para W indow s . Após re al izar o dow nl oad do
inte rpre tador vam os e ntão ins tal ar a LUA
m ante ndo o dire ctório s uge rido por de fe ito
Com e s te código pode m os faze r us o de um a (c:\l uach e ia\). Após al guns cl iq ue s m ais , e
função q ue nos irá re tornar os núm e ros q ue e s tam os aptos a program ar e m LUA. Para
ante ce de e s e gue o introduzido na função. O de s e nvol ve r código e m LUA q ual q ue r e ditor de
re s ul
tado s e rá: a variáve lante rior irá conte r o te xto s e rve o propós ito, até m e s m o o s im pl es
núm e ro 4 e a variáve ls e guinte irá conte r o bl oco de notas (Note pad) do W indow s , no
núm e ro 6. e ntanto s ugiro a util ização do fam os o ID E
Ecl ips e e a ins talação do m ódul o LuaEcl ips e
Re curs ividade e m : h ttp://l
uae clips e .l
uaforge .ne t/br/inde x.h tm l .
Em l inguage ns proce durais a re curs ividade é
por ve ze s m uito util
izada, o s e u us o e m LUA é O prim e iro s criptde LUA
algo s im pl e s e rápido o q ue torna a s ua
util
ização m uito grande : Para faze rm os cum prir a tradição o nos s o
prim e iro s cript s e rá o fam os o “O l
á M undo!”
function factorial( n ) apare ce r no nos s o e crã. Para talabrim os o
if n == 0 then
Bl oco de notas do W indow s e incl uím os o
return 1;
else
s e guinte código:
return n * factorial( n -1 )
print( “Olá Mundo!” );
end
end
E e s tá concl uído o nos s o s cript. Sim pl
e s , não
Com a util ização de s ta função pode -s e ve rificar é? Ao contrário de várias l inguage ns q ue
q ue a util ização da re curs ividade é al go nos obrigam a s e guir um a e s trutura, e m LUA
s im pl
e s de im pl e m e ntar. Para program adore s tudo é e m função da rapide z… s e ja e l a de
de Java e s ta caracte rís tica não é inovadora, proce s s am e nto ou de s e nvolvim e nto.
m as e m grande parte de l inguage ns de
program ação, a re curs ividade de funçõe s é No fim de guardar na pas ta C:\l uach e ia\ e
al go q ue ainda não e xis te , obrigando os de ace de r pe l o D O S (e s cre ve ndo cm d no
program adore s a um e s forço e xtra no código m e nu e xe cutar) bas ta e s cre ve r cd
para re alizar o m e s m o obje ctivo. \l
uach e ia\ s e guido de l
uach e ia5
olam undo.l ua. E apare ce -nos no e crã O l á
M ais inform ação e m : M undo!.
M anualda Linguage m LUA 5.0 (ENG )
Bruno Vaz

h ttp://w w w .l
ua.org/ftp/re fm an-5.0.pdf O util izador agora ape nas te m de dar
M anualda Linguage m LUA 3.1 (PT) l
argas à s ua im aginação e com e çar a
h ttp://w w w .l
ua.org/ftp/nocoe s -3.1.pdf de s e nvolve r e m LUA.

<25>
a program ar

Ne s te s e ntido, e s te com pl
e m e nto do H TM L
torna a tare fa do program ador bas tante

CSS: m ais s im pl
al
ificada, vis to q ue e s te pode
te rar proprie dade s de várias páginas ,

Cas cading Sty l


e alte rando ape nas um re s pe ctivo cam po na
folh a de e s tilos .

Sh e e t Re gras e Sintaxe
Um a fol h a de e s til os não é m ais do q ue um
Introdução conjunto de re gras CSS. Por s e u turno, um a
re gra CSS é um a de cl aração com um a
H oje e m dia, com a gl obal ização das s intaxe própria cons tituída, na s ua form a
te cnologias e s obre tudo da Inte rne t, poucos m ais s im pl
e s , por três parte s : um
s ão aq ue le s q ue nunca cons ul taram um a se le ccionador (e l e m e nto H TM L ide ntificado
página w e b. Todavia, a s ua grande m aioria por um a tag, cl as s e , id, e tc, à q uals e rá
não im agina com o é e l aborada, e m uito apl icada a re gra e m q ue s tão – e xe m pl o:
m e nos q ue por de trás daq ue l a be l a <body > , <h 1> , .m inh acl as s e ), um a
aparência e xis te , principal m e nte , um a proprie dade (q ual idade à q ual vai s e r
linguage m de program ação ch am ada apl icada a re gra – e xe m pl o: font, borde r,
H TM L. Contudo, e s s a l inguage m , um a ve z col or – no e l e m e nto H TM L) e um val or
q ue foi conce bida para us os dife re nte s dos (caracte rís tica adoptada pe l a proprie dade
actuais , pos s ui algum as lim itaçõe s , e m uita –e xe m pl o: l
e tra tipo ve rdana, l inh a dupl a,
da “be l e za” q ue e la proporciona m uito s e fundo branco), com o s e e xe m pl ifica de
de ve ao s e u al iado CSS. s e guida:

seleccionador {
O q ue é? }
propriedade: valor;

O CSS é, e ntão, a s igl a ingl e s a de


Cas cading Sty l e Sh e e t, q ue e m português Com o pode m os ve rificar, na s intaxe de
s ignifica fol h a de e s til o e m cas cata, e é um a re gra CSS prim e iro e s cre ve -s e o
nada m ais do q ue um m e canis m o para se le ccionador, e pos te riorm e nte a
adicionar e s til os (core s , e s paçam e ntos , proprie dade e o val or s e parados por dois
avanços , tipos de l e tra, back grounds , e tc) pontos e e ntre ch ave tas . Contudo, s e
aos docum e ntos w e b. Por outras pal avras , pre te nde rm os de finir m ais de um a
pode m os dize r q ue e nq uanto o H TM L te m proprie dade para um de te rm inado
com o função e s truturar os te xtos , el e m e nto, é cos tum e e h ábito (e m bora s e ja
cabe çal h os , botõe s , tabe las , l
ink s , opcional ) util
izar-s e o ponto e vírgul a para
im age ns , ou s e ja, o conte údo da página, o as s e parar, e us ar l inh as dis tintas para as
CSS e ncarre ga-s e de de finir as core s , o e s cre ve r, de form a a criar um a m e l h or
pos icionam e nto, o e s til o das l inh as , is to é, le gibil idade .
tudo q ue diz re s pe ito ao vis ualda m e s m a.
Por s ua ve z, e s ta tare fa de e s til ização, Ne s te s e ntido, de form a a e lucidar o le itor,
inde pe nde nte m e nte da form a de de finição ne s te m om e nto torna-s e inte re s s ante o
(e xte rna, incorporada ou inl ine ) é s e m pre e nte ndim e nto dos e xe m pl os dados de
fe ita aparte do H TM L, porção e s ta q ue s e guida:
contém todas as re gras de e s til o para os
body {
el e m e ntos do docum e nto. background: #999999;
}

<26>
a program ar

No e xe m pl
o acim a, o s e l
e ccionador é todo Re s ul
tado:
o docum e nto (body ), a proprie dade é o
fundo e o valor é a cor cinza. Titul
o ve rm e l
h o e al
inh ado à
dire ita
h1 { Parágrafo ve rm e l
h o e al
inh ado à dire ita
font-size: 40px;
font-style: italic;
color:#00FF66;
Se guindo a l inh a das cl as s e s , torna-s e
font-family: verdana;
igual m e nte im portante re fe rir q ue um a
text-align: center;
} m e s m a tag pode s e r pe rs onal izada com
proprie dade s dife re nte s . Por outras
Ne s te e xe m pl o m ais e laborado, o e l e m e nto é pal avras , as pote ncial idade s do CSS
o “títul o1” (h 1), e as cinco proprie dade s com pe rm ite m q ue no m e s m o docum e nto
os re s pe ctivos val ore s , faze m com q ue o te nh am os , por e xe m pl o, dois tipos de títul os
re s ul
tado s e ja q ue todos os títul os principais principais (h 1): um com l e tras ve rm e l h as e
(s e guindo as caracte rís ticas pe l a orde m e m outro com l e tras azuis . Para is s o, bas ta q ue
q ue s ão de cl aradas ) te nh am um tam anh o de e s pe cifiq ue m os atrás do ponto da cl as s e
40 pixe is , s e jam e m itál ico, de cor ve rde , com por nós criada a e tiq ue ta H TM L q ue
o tipo de l e tra ve rdana e al inh ados ao ce ntro. pre te nde m os al te rar. Ve jam os o s e guinte
O re s ultado pode ve r-s e im e diatam e nte : e xe m pl o:

h1.vermelho {
color: #FF0000;
}

Contudo, ne m s ó as tags (e tiq ue tas ) do H TM L h1.azul {


pode m s e r e s til izadas . Com a e vol ução do color: #0000CC;
CSS1 para o CSS2, para al ém de }
aum e ntare m o núm e ro de proprie dade s
pos s íve is de pe rs onal izar, pas s ou-s e tam bém
a pode r criar l ivre m e nte um a cl as s e e apl icá- Na nos s a fol h a de e s tilos de finim os , e ntão,
la a q ual q ue r e le m e nto H TM L. Para tal , bas ta dois e s til
os dife re nte s para o títul
o principal ,
q ue s e om ita o tag a pe rs onal izar, e q ue s e pe lo q ue no e xe m pl o abaixo s e
col oq ue um ponto ante s do nom e da cl as s e de m ons trará com o s e riam apl icados na
q ue pre te nde m os criar. Por e xe m pl o: folh a H TM L:

.minhaclasse { <h1 class="vermelho">


color: #FF0000; Título vermelho.
text-align: right; </h1>
} <h1 class="azul">
Título azul.
</h1>
As s im , e s tá criada a cl
as s e , pe l
o q ue pode rá
agora apl icá-la a q ual q ue r e l
e m e nto do
docum e nto w e b:

<h1 class=”minhaclasse”>
Título vermelho e alinhado à direita.
</h1>
<p class=”minhaclasse”>
Parágrafo vermelho e alinhado à
direita.
</p>

<27>
a program ar

Por fim , re l ativam e nte aos s e l e ccionadore s Fol


h a de e s til
o incorporada:
ID , e s te s dife re m das cl as s e s na m e dida e m Um a fol h a de e s til
o diz-s e incorporada
q ue s om e nte pode m s e r apl icados a um q uando a e s til ização é fe ita no próprio
el e m e nto H TM L de ntro do docum e nto. Por docum e nto H TM L. As re gras , vál idas
outras pal avras , os ID s ão cl as s e s tam bém s om e nte para aq ue l e docum e nto, s ão
por nós criadas m as q ue s e pode m util izar de cl aradas no cabe çal h o (h e ad) com a
ape nas num e l e m e nto. A s intaxe de um tag <s ty l e > , com o s e pode obs e rvar de
se le ccionador ID é m uito s e m e l h ante a um a s e guida:
cl as s e , te ndo ape nas de novo o # ,
conform e pode m os vis ual izar abaixo: <head>
……………….
#meuID { <style type=”text/css”>
propriedade: valor; <!--
} body {
background: #999999;
}
Tipos de vincul
ação de fol
h as p {
de e s til
o font-size: 10px;
color: #000000;
}
Adq uiridas as re gras e s intaxe de s ta -->
“linguage m ” de e s til ização, o l e itor de ve , </style>
ne s te m om e nto, indagar-s e com o é q ue , ………………..
afinal , o CSS e o H TM L s e as s ociam , vis to </head>
e s te s s e re m puros al
iados . Na ve rdade , as
fol h as de e s tilo pode m s e r vincul adas aos Fol
h a de e s til
o inl
ine :
docum e ntos de três form as dis tintas : Um a fol h a de e s til
o é dita inl ine , q uando a
pe rs onal ização é fe ita de ntro da tag do
1- Exte rna; el e m e nto H TM L. Contudo, e s te m étodo é
2- Incorporada; bas tante l im itado, pois pe rde a grande
3- Inl
ine ; vantage m do pode r do CSS, is to é, com o s ó
é apl icáve laq ue l e próprio e l e m e nto, não
Fol
h a de e s til
o e xte rna: se pode com um a única ins trução
Talcom o o próprio nom e indica, no m étodo m odificar vários e l e m e ntos de vários
e xte rno a pe rs onal ização é fe ita num docum e ntos com o m ínim o do e s forço.
docum e nto dife re nte do docum e nto H TM L, Contudo, a s ua s intaxe pode ve r-s e a s e guir:
te ndo e s s e arq uivo (pode ndo s e r e l aborado
e m q ual q ue r e ditor de te xto) a e xte ns ão .cs s . <p style=”color:#999999; font-size:20px;”>
As s im , de pois do docum e nto CSS criado, Isto é um parágrafo de cor cinza e com
de fine -s e na fol h a H TM L um l ink q ue um tamanho de letra de 20 pixeis.
carre gará as pe rs onal izaçõe s por nós </p>
el aboradas . O e xe m pl o abaixo de m ons tra a
s intaxe a col ocar no docum e nto para q ue Agora q ue já te m um as razoáve is noçõe s de
s e torne pos s íve lcarre gar a fol h a de e s til
os : pe rs onalização CSS, o l e itor pode com e çar
por criar páginas s im pl
e s H TM Le pe rs onal
izá-
<head> l
as a s e u gos to.
……………….
Pode , tam bém , aprofundar m ais os s e us
Sandro Pinto

<link href="folhadeestilo.css"
rel="stylesheet" type="text/css" /> conh e cim e ntos e m :
……………….. h ttp://w w w .m aujor.com /
</head> h ttp://w w w .codigofonte .com /cs s /

<28>
s e gurança

O com partil h am e nto de re curs os


(im pre s s oras , dados , CD ´s , e tc.), a
trans parência, concorrência (ace s s o das
várias m áq uina a um a s ó), tol e rância a
fal h as (confiabil idade - s e fal h ar um
com putador num a re de de vários é m ais
fácilre cupe rar da fal h a do q ue s e fos s e
ape nas num com putador), e s cal abil idade
(facil m e nte pode m se r adicionados
com putadore s à re de ), aum e nto da
capacidade de com putação, aum e nto da
s e gurança / e s tabil idade gl obal , factor

Se gurança e m e conóm ico (é mel h or


com putadore s m e dianos /fracos q ue um
te r vários

Sis te m as D is tribuídos forte ) e capacidade de proce s s am e nto.


São e s tas as principais vantage ns .

Já l á vai o te m po e m q ue e ra ne ce s s ário
com prar um s upe rcom putador para
re alizar tare fas m ais com pl e xas . H oje e m
dia tudo faz m ais s e ntido q uando a
m e s m a tare fa é proce s s ada e m paral elo
por vários com putadore s , ou q uando os
m e s m os pe riféricos s ão ace didos por
vários te rm inais e m s im ul tâne o. D aí o
conce ito de Sis te m a D is tribuído.

O q ue é um Sis te m a Proce dim e ntos Re m otos


D is tribuído –D e finição O s proce dim e ntos re m otos tive ram orige m
Um s is te m a dis tribuído é um conjunto de nos anos 80, s urgindo da ne ce s s idade de
com putadore s inde pe nde nte s , inte rl igados h ave r um a m e todol ogia de program ação
através de um a re de de com putadore s , dis tribuída. A prim e ira foi o RPC (Re m ote
q ue s e apre s e nta ao util izador com o um Cal l Proce dure ), num a al tura e m q ue a
s is te m a único e cons is te nte . Por e xe m pl o, linguage m dom inante e ra o C. Com o a
um a tare fa q ual q ue r a e xe cutar, s e for fe ita linguage m C e ra proce dim e ntale pe rm itia
por um conjunto de com putadore s a ch am ar um a função e m q ual q ue r parte do
com putação é dis tribuída por todos e não código, pe ns ou-s e e m de s e nvol ve r um a
ape nas por um , não s e ndo ne ce s s ária técnica q ue facil itas s e o de s e nvol vim e nto
s obre carga de proce s s am e nto. de apl icaçõe s para Sis te m as D is tribuídos
m ante ndo a ide ia de ch am ar funçõe s de
Um a tare fa q ualq ue r, s e divis íve le m várias m áq uinas e xte riore s da m e s m a m ane ira
s ubtare fas pode s e r re al
izada e m paral elo. com o s e fos s e na própria. Logicam e nte q ue
tinh a de h ave r al go q ue fos s e total m e nte
Vantage ns /D e s vantage ns trans pare nte para o program ador e q ue
A grande vantage m dos Sis te m as D is tribuídos fize s s e a conve rs ão dos dados
é pode r, com com putadore s baratos e de re ce bidos /e nviados para o cl ie nte e para o
baixo proce s s am e nto, form ar um s e rvidor, is to é, as s tub routine s . Para m e l h or
s upe rcom putador q ue norm al m e nte s airia pe rce be r e s te proce dim e nto, pode ol h ar
m uito caro. para o s e guinte e s q ue m a:

<30>
s e gurança

q ue m e canis m os de
prote cção pode m se r
utilizados e cl aro, faze r um a
aval iação das pos s íve is
am e aças e form as de
ataq ue . Es ta pol ítica te ve
orige m nos s is te m as
m ilitare s , e m q ue o principal
probl e m a e ra a divul gação
de inform ação não
autorizada. Para al ém do
control o do ace s s o à
inform ação tam bém é
ne ce s s ário garantir a s ua
inte gridade . É ne ce s s ário te r
e m cons ide ração as várias
am e aças a de finir na
pol ítica de s e gurança. Entre
elas de s tacam -s e o ace s s o e divul gação
Com o s e pode obs e rvar, os s tubs não autorizado de inform ação, m odificação
e ncarre gam -s e daq uil o a q ue s e ch am a il
e gítim a da inform ação, ope raçõe s não
m ars h al l
ing, ou s e ja, conve rte r os dados autorizados s ob re curs os do s is te m a,
para o form ato inte rm édio para e nviar do bloq ue io de ace s s o l e gítim o à inform ação e
clie nte para o s e rvidor ou do s e rvidor para vandal is m o.
o cl ie nte , e voltar a conve rtê-l os do form ato
inte rm édio no l
ocal de de s tino Q uanto aos pos s íve is ataq ue s , de s tacam -
(unm ars h al l
ing). Alguns e xe m pl
os de s e : a pe rs onificação (q uando al guém s e faz
im pl e m e ntaçõe s de RPC s ão: Sun RPC pas s ar por nós ), e xe cução de ope raçõe s
(para pl ataform as UNUX / Linux), Java RM I q ue contornam os m e canis m os de
(RPC para Java), D CO M (RPC para s e gurança, introdução de código m al icios o
W indow s ), SO AP (util izado por s e rviços da ou pre judicial(e xe m pl o: vírus ) nos s is te m as
w e b) e CO RBA (padrão RPC inde pe nde nte inform áticos , criação ou util ização de
da pl ataform a). canais para com unicaçõe s il e gítim as (fuga
de inform ação), e s cuta de m e ns age ns e
Pol
ítica de Se gurança adul te ração de m e ns age ns (m odificação,
Um a re de de com putadore s , por nature za, ins e rção, re pe tição de m e ns age ns
te m várias am e aças . Num s is te m a antigas … ).
inform ático o principalobje ctivo é prote ge r
a inform ação, ou s e ja, control ar a Tipos de Pol
íticas de
capacidade de ace de r, al te rar ou e xe cutar Se gurança
um fich e iro, um re gis to, um a bas e de D e s tacam -s e três tipos de pol íticas de
dados , e tc. M as o principalobje ctivo de s e gurança. A prim e ira é a ch am ada de
um s is te m a dis tribuído é a partil h a de is olam e nto dos age nte s . Caracte riza-s e por
inform ação, l ogo is to conduz a um dil ema lim itar a inte racção do age nte à s ua
porq ue tam bém é ne ce s s ário facil itar o m áq uina virtual(com o s e fos s e um a s e s s ão
ace s s o à m e s m a. A s ol ução pas s a por num s is te m a ope rativo). Im pl ica a
de finir um a pol ítica de s e gurança, na q ual ide ntificação de cada age nte , is to é,
s e de ve te r s e m pre e m conta vários ne ce s s ita de aute nticar-s e (por e xe m pl o a
factore s com o é o cas o do cus to, val or da val idação re corre ndo ao par
inform ação, o q ue s e pre te nde prote ge r, login/pas s w ord).

<31>
s e gurança

Cada age nte pos s ui um ID , is to é, um O outro tipo de pol ítica é o control o do


ide ntificador q ue o re pre s e nta cada ve z níve lde s e gurança da inform ação e parte
q ue te ntar ace de r a um re curs o do s is te m a. do princípio q ue s ó s e de ve dar ao age nte
Es ta pol ítica te m várias vantage ns : im pl ica a inform ação q ue e l e re al m e nte pre cis a. A
a im pos s ibilidade de contornar os inform ação é cl as s ificada de acordo com
m e canis m os de control o de s e gurança e o s e u níve l de confide ncial idade . O
de criar ou util izar canais de com unicação control o de ace s s o dos age nte s é
e ncobe rtos ou il e gítim os . Tam bém pos s ui e fe ctuado com bas e e m duas re gras : não
dive rs as de s vantage ns , al gum as de l as já pode m l e r inform ação cl as s ificada e m
m e ncionadas : infil
tração de código níve is s upe riore s ao s e u, e não pode
m al icios o, e s cuta de te rm inais de m onitore s e s cre ve r inform ação cl as s ificada e m níve is
(através da radiação e l e ctrom agnética dos infe riore s ao s e u.
te rm inais é pos s íve lve r o q ue um a pe s s oa
faz no s e u pos to de trabal h o), e o ataq ue Criptografia
às pal avras pas s e s dos util izadore s (e m q ue D e form a de e vitar a e s cuta e fal s ificação
a m aioria s ão bas e adas e m dicionários : de m e ns age ns s urge a cifra de m e ns age ns
s érie s de te l e vis ão, fil m e s , próprio nom e , –Criptografia. O u s e ja, é e s tabe l e cido um
fam íl ia, m atrícul a do carro, … ). canal s e guro onde pas s am os dados
cifrados . Es ta técnica te m um s e não, pois
O utro tipo de pol ítica é o ch am ado não e vita a re utilização de m e ns age ns .
control o de ace s s os e foca-s e na l im itação Convém re fe rir q ue ape s ar das m e ns age ns
da capacidade de inte racção. Exis te um a e s tare m cifradas , e xis te um a pe q ue na
m atriz de dire itos de ace s s o q ue dá probabil idade de um atacante de duzir a
autorização ou não a um age nte q uando ch ave , e m bora e s ta s e ja m uito pe q ue na. O
e s te pre te nde e fe ctuar um a ope ração. tam anh o da ch ave de cifra é ful cral , pois
Tam bém e xis te m as ACLs (Acce s s Control um a ch ave pe q ue na é m ais facil m e nte
Lis ts ), q ue e m português corre nte s ignifica de s cobe rta (através de “força bruta” por
lis ta de control o de ace s s os . Es tas s ão e xe m pl o) q ue um a ch ave m aior.
arm aze nadas junto de cada obje cto e
control am o ace s s o de age nte s a obje ctos
do s is te m a. H á tam bém as capacidade s de
cada age nte pe rante os obje ctos do
s is te m a, m as e s tas capacidade s s ão
guardadas junto de cada age nte . D e pois é
im portante re al çar a im portância de dois
m e canis m os : aute nticação (val idação da
ide ntidade , um a fal h a na aute nticação Exis te m dois tipos de criptografia:
inval ida a utilização da m atriz de dire itos de Criptografia Sim étrica e Criptografia
ace s s o) e autorização (ope ração q ue As s im étrica. O s al goritm os de cifra s im étrica
val ida os dire itos do age nte s obre o s ão norm al m e nte m ais rápidos q ue os de
obje cto). D e pois h á um a e s pécie de cifra as s im étrica, a ch ave s ó de ve s e r
M onitor de control o de re fe rência, q ue conh e cida pe l os inte rve nie nte s le gítim os e
val ida na al tura de e xe cução de um a é us ada tanto nas ope raçõe s de cifra
ope ração s e o age nte te m o dire ito de a com o nas de de cifra. Um e xe m pl o dis s o é o
e fe ctuar. Is to tam bém obriga a q ue cada Al goritm o D ES (D ata Encription Standard).
obje cto s e ja al vo de um a ide ntificação Na criptografia as s im étrica us am -s e pare s
única e ine q uívoca. O s ataq ue s a e s te tipo de ch ave s re l acionadas : um a ch ave
de pol ítica vis am al te rar o is olam e nto e ntre públ ica (do conh e cim e nto de todos ) e
age nte s , al te rar a m atriz de control o de outra privada (do conh e cim e nto de um a
re fe rência e e l im inar o control o e fe ctuado e ntidade ). D e s ta form a e l im ina-s e o
pe l o M onitor de Control o e Re fe rência. probl e m a da partil h a de ch ave s .

<32>
s e gurança

Para obte r a privacidade dos dados cifra- Concl


us ão
s e com a públ ica e de cifra-s e com a
privada, para a aute nticidade dos dados Com e s te artigo pre te nde u-s e q ue o l e itor
cifra-s e com a privada e de cifra-s e com a ficas s e a s abe r, por al to, o q ue é um
públ ica. Um e xe m pl o de um al goritm o q ue Sis te m a D is tribuído e q uais as s uas
utiliza a criptografia as s im étrica é o cas o do caracte rís ticas , nom e adam e nte : as
D iffie -H e l
m an, m uito utilizado e m cifra de am e aças , vantage ns , de s vantage ns ,
com unicaçõe s e m re de s . al gum as técnicas us adas na com unicação
de proce s s os , e ntre outras . Convém re fe rir
q ue ne nh um te m a foi aprofundado pe l o
Aute nticação, Autorização e q ue s e q uis e r s abe r m ais s obre al gum
As s inatura digital as s unto te rá q ue pe s q uis ar na Inte rne t s obre
o m e s m o. Para facil itar a tare fa, a s e guir
Para a autorização de ope raçõe s dos e s tão várias h ipe rl igaçõe s para s ite s q ue
age nte s e m Sis te m as D is tribuídos , é us ado o tratam do as s unto.
m e canis m o m ais vul gar e m s is te m as
m ul tiprogram ados , com o é o
cas o do UNIX / Linux. O u s e ja,
cada grupo e cada util izador
te m um código q ue é
atribuído q uando o util izador
s e aute ntica. As s ociados a
e s s e código e xis te m os dire itos pos itivos ou
ne gativos às cate gorias de dono, grupo e
re s tante s util
izadore s .
Um factor de e xtre m a im portância é s abe r
a autoria de de te rm inada inform ação. A
is to dá-s e o nom e de as s inatura digitale
proce s s a-s e de form a a cal cul ar um a
de te rm inada H as h para a inform ação X
as s ociada ao Age nte A. Com is to pre te nde -
s e garantir q ue o re m e te nte da inform ação
foi XPTO (aute nticidade ) e q ue o conte údo
não foi adul te rado (garantir a inte gridade ).

Re fe rências
h ttp://pt.w ik ipe dia.org/w ik i/Com puta% C3% A7% C3% A3o_dis tribu% C3% AD da
h ttp://pt.w ik ipe dia.org/w ik i/Criptografia
h ttp://w w w .infow e s te r.com /criptografia.ph p
h ttp://pt.w ik ipe dia.org/w ik i/Ch am ada_de _proce dim e nto_re m oto
h ttp://w w w .faq s .org/rfcs /rfc1831.h tm l
Pe dro Te ixe ira

<33>
el
e ctrónica

M icrocontrol
adore s : O protocol o SPI é um protocol o s érie q ue
pe rm ite trans m is s ão s íncrona bidire ccional

Protocol
os SPI de 8 bits .

O SPI ne ce s s ita q ue e xis ta um M as te r q ue


Es te artigo foi criado com o intuito de control e o re l ógio. Vis to o SPI s e r
apre s e ntar o protocolo SPI apl icado à bidire ccional , o M as te r pode e nviar ou
com unicação e ntre m icrocontrol adore s re ce be r inform ação dos s l ave s , m as e s te é
e pe riféricos . Com o inte rface s e rá q ue irá ditar q ue m e nvia ou q ue m re ce be .
us ada um a apl icação fe ita e m Vis ual
Bas ic. Para de te rm inar o de s tinatário da
inform ação é ne ce s s ário um a l igação
Protocol
os SPI dire cta a cada um dos Sl ave s , q ue s e rá a
Vis to os re curs os dis poníve is num ligação q ue cone cta os pinos CS (Ch ip
m icrocontrol ador s e re m l im itados , por ve ze s Se le ct). As s im q uando a inform ação tive r
h á ne ce s s idade de os e xpandir. As s im com o de s tinatário o Slave 1, o pino CS1 te rá
e xis te m circuitos inte grados com as m ais q ue s e r activado para q ue e s te ace ite a
variadas funçõe s : m e m órias EEPRO M , s h ift inform ação.
re gis te rs , conve rs ore s A/D …
Para s e pode r com unicar com e s te s
pe riféricos é ne ce s s ário um protocol o de M icrocontrol
adore s
com unicação para q ue “am bas as parte s
s e e nte ndam ”. D os m uitos protocol os Para de m ons trar a apl icação de s te
dis poníve is , um q ue foi m as s ivam e nte protocol o s e rá us ado um M icrocontrol ador
adoptado para com unicação e ntre da M icroch ip (PIC18F2580) e um a D AC
m icrocontrol adore s e pe riféricos e xte rnos foi (M CP49 21). Um a D AC é um dis pos itivo q ue
o SPI (Se rialPe riph e ralInte rface ). conve rte um s inaldigitalpara anal ógico
(D igital
-to-Anal og Conve rs ion), a D AC
M CP49 21 us a o protocol o SPI para re ce be r
a inform ação digital(8 bits ) prove nie nte do
m icrocontrol ador e conve rte a inform ação
re ce bida num a te ns ão anal ógica.

A D AC us ada re ce be a inform ação pe l o


pino SD I e e m bora o SPI pe rm ita q ue a
com unicação s e ja bidire ccional , não é
pos s íve le nviar inform ação da D AC para o
m icrocontrol ador.

O com ando de e s crita da D AC cons is te e m


16 bits . Ne s te s 16 bits e s tará inform ação
re l
ativa ao m odo de ope ração e aos
dados . O s prim e iros 4 bits dize m re s pe ito
ao m odo de ope ração, os 12 bits re s tante s
corre s ponde m ao val or da te ns ão a
conve rte r.

<34>
el
e ctrónica

A fórm ul a de conve rs ão da D AC é a void main(void)


s e guinte {
unsigned char dac_val1,dac_val2,
dac_val3;
unsigned int node1,node3,node2,aux;

//Enable interrupts
INTCONbits.GIE = 1;
A te ns ão de re fe rência us ada foi de 4.09 6V. INTCONbits.PEIE = 1;
As s im para um a te ns ão de 3,265V é // Enable interrupt priority feature
ne ce s s ário q ue os 12 bits m e nos INTCONbits.IPEN = 1;
s ignificativos re pre s e nte m o núm e ro 3265, // GIEH must be set in order to get
ou s e ja: access to low priority interrupts
INTCONbits.GIEH = 1;
INTCONbits.GIEL = 1;

adcInit();
TRISAbits.TRISA4=0; //PORTA4->output

As funçõe s q ue pe rm ite m q ue os re gis tos Activa-s e de s e guida a USART q ue s e rá


s e jam configurados s ão dis ponibil izadas us ada para com unicar com o PC e
pe l a M icroch ip, as s im não s e rá obje ctivo final
m e nte o m ódul
o SPI.
de s te artigo e xpl
icar com o as cons truir, m as
s im com o as us ar, talcom o aconte ce u nos
artigos re l
acionados com //SYNC = 0, BRGH = 1, BRG16 = 0
m icrocontrol adore s das e diçõe s ante riore s . //fosc=40Mhz,baudrate=115200-->spbrgh=21
OpenUSART(USART_TX_INT_OFF
#include <p18cxxx.h> & USART_RX_INT_OFF & USART_ASYNCH_MODE
#include <math.h> & USART_EIGHT_BIT & USART_CONT_RX
#include "usart_funcs.h" & USART_BRGH_HIGH, 21);
#include "function.h" OpenSPI(SPI_FOSC_16, MODE_00,
#include <spi.h> SMPMID);

Para com e çar é ne ce s s ário im portar os


protótipos das funçõe s SPI
O program a irá aguarda por um a orde m
Ante s de com e çar a us ar os re curs os do vinda do PC, via USART. Q uando for re ce bido
m icrocontrol ador é ne ce s s ário activar todos al go pe l
a USART o bit RCIF do re gis to PIR1bits
os m ódul os q ue s e rão us ados . As s im ficará a “1”.
activam -s e as inte rrupçõe s , as AD Cs e
de fine -s e o tipo de s aída da porta us ada
com o Ch ip Se l e ct

<35>
el
e ctrónica

As s im : Se na ve z de s e te r re ce bido inicial m e nte o


caracte r “s ”, s e s e tive r re ce bido o carácte r
LATAbits.LATA4=1; “r” e ntão s ignifica q ue s e pre te nde r l er o
while(1) valor da AD C0, q ue faz parte do
{
m icrocontrol ador.
if(PIR1bits.RCIF)
{
case 'r':
switch (Re())
Wr(adc_read(0));
{
break;
case 's':

Se o carácte r re ce bido não for ne m o “s ”


Cas o a inform ação re ce bida s e ja o
ne m o “r” não s e e xe cuta nada.
carácte r ‘s ’, e ntão os próxim os by te s a
s e re m re ce bidos dize m re s pe ito ao val
or
default:
q ue s e pre te nde conve rte r. Putsr("\r parametro
incorrecto\r");
dac_val1=Re(); break;
dac_val2=Re(); }
dac_val3=Re(); }
}
dac_val1=convert_to_hex( dac_val1); }
dac_val2=convert_to_hex( dac_val2);
dac_val3=convert_to_hex( dac_val3);
As s im s e te rm ina o program a para o
aux=0;
aux=dac_val2; m icrocontrolador.
aux=aux<<4;
aux=aux|dac_val3; Inte rface e m Vis ualBas ic
Te ndo e m conta q ue os prim e iros 4 bits dos Daqui em diante assume-se que o
16 q ue s e rão e nviados para a D AC dize m leitor está minimamente familiarizado
re s pe ito ao m odo de funcionam e nto, e ntão com o programa Visual Basic
faz-s e um a m ás cara com o by te m ais
s ignificativo para pode r concate nar com os
4 bits de configuração. Para a inte rface pode -s e com e çar por criar
olay outda m e s m a:
LATAbits.LATA4 = 0;
WriteSPI(0b01110000 | dac_val1);

O s outros 2 by te s re ce bidos s e rão


concate nados e ntre s i para q ue s e
pos s am e nviar para a D AC. D e notar q ue
ante s de e nviar q ual q ue r inform ação a
porta A4 foi col ocada a ze ro para
activar o CS da D AC. Em bora pos s a s e r
contraditório, o CS da D AC é activado
q uando e s te e s tive r com o val or lógico
”0”…

WriteSPI(aux);
LATAbits.LATA4 = 1;
break;

<36>
el
e ctrónica
Um dos com pone nte s m ais im portante s Private Sub send_Click()
de s ta inte rface é o com pone nte M SCom m . MSComm1.Output = "s"
MSComm1.Output =
É aq ui q ue s e de fine com o irá s e r us ada a
Hex(tensao_dac.Text)
porta s érie do PC. Tam bém s e adicionam
End Sub
duas caixas de te xto e dois botõe s .
Para s e re ce be r a te ns ão da AD C do
As s im q ue o program a for e xe cutado m icrocontrol ador us a-s e o botão q ue te m a
configura-s e a porta s érie 1. Es te s ins crição “Te ns ão AD C [m V] ” . A e s te botão foi
parâm e tros têm q ue e s tar de acordo com dado o nom e “Re q ue s t_buttom ”. As s im q uando
os dados da inicial ização da USART do e s te for pre s s ionado s e rá e nviado o carácte r “r”
m icrocontrol ador.
Private Sub request_Click()
Private Sub Form_Load() MSComm1.Output = "r"
' chose correct settings for your End Sub
device
Settings = "115200,N,8,1"
MSComm1.Settings = Settings As s im q ue o m icrocontrol ador re ce be r o
carácte r “r”, vai activar a AD C após a
''''''''''''''''''''''''''''''
' Open COM1
conve rs ão e nvia o val or para a s ua USART.
MSComm1.CommPort = 1 As s im q ue o m icrocontrol ador tive r e nviado o
MSComm1.OutBufferSize = 4 val or da conve rs ão pe l a USART, a porta s érie
MSComm1.PortOpen = True do PC re ce be rá e s s e valor

' Make sure DTR line is low to Private Sub MSComm1_OnComm()


prevent Stamp reset Dim sData As String
MSComm1.DTREnable = False Dim Lido As Integer
MSComm1.RThreshold = 1
MSComm1.InputLen = 1 ' If Rx Event then get data
' and process
End Sub
If MSComm1.CommEvent = comEvReceive Then
sData = MSComm1.Input
É pos s íve ltornar e s ta inte rface m ais robus ta,
para q ue pe rante s ituaçõe s não pre vis tas tensao_adc.Text = Round(
Asc(sData) * 19, 4)
e s ta re aja de um a form a e s pe rada.
End If
A caixa de te xto re fe re nte à te ns ão da D AC End Sub
te m o nom e “te ns ão_dac” e o botão te m o
nom e “s e nd_buttom ”. A AD C fe z um a conve rs ão de 8 bits . O re s ul tado
de s s a conve rs ão e s tará com pre e ndido e ntre 0
As s im q uando o botão “s e nd_buttom ” for e 255, o q ue im pl ica q ue e s te valor te nh a q ue
pre s s ionado s e rá e nviado o val
or da caixa s e r adaptado à nature za da conve rs ão. D aí s e
de te xto para o m icrocontrol ador. m ul tiplicar o val or re ce bido por 19 .4. Para
te rm inar a inte rface é conve nie nte q ue s e
Para não com pl icar a com pre e ns ão do de s active a porta s érie para q ue não e xis tam
código e para us ar os re curs os dis poníve is confl itos futuros … Para te s tar tanto o e nvio de
Ricardo Roch a

no VB optou-s e por e nviar o val


or da te ns ão inform ação para a D AC pode -s e l igar a AD C
num conjunto de 3 by te s , ante ce didos do do m icrocontrol ador à s aída da D AC. A não
carácte r “s ”. coincidência da te ns ão l ida da AD C com a
te ns ão de s aída da D AC e s tá re l acionada com
o facto da AD C s e r de 8 bits .

<37>
tutorial

Program ação e m C printf(“contador chegou a


%d\n”, contador);
2ª Parte entrar = 0; // obriga ciclo a
//terminar da próxima vez que testar
}
D e pois de um a prim e ira parte na }
e dição ante rior, e s te artigo é return 0;
concl uído ne s ta e dição. }

6 –Expre s s õe s Condicionais O u s e ja, te m os um a variáve lq ue condiciona


e Cicl
os o cicl o, e ntrar, q ue é inicial izada com o val or
Continuando na l ógica. A l ógica na 1 [ve rdade iro] , de m odo a q ue pos s a e ntrar
program ação de s e m pe nh a um pape lm uito no corpo do cicl o w h ile () e a variáve l
im portante porq ue nos pe rm ite tom ar contador com o val or 1, q ue vai s e ndo
de cis õe s m e diante de ce rtas condiçõe s ou incre m e ntada, de cada ve z q ue e ntra no
e xpre s s õe s condicionais . Ne s ta s e xta s e cção corpo do w h il e () e q ue for m e nor do q ue 6
vam os ve r cicl os . Um ciclo é al go q ue te m [ditado pe l o if()]ao m e s m o te m po. Q uando o
um a condição de parage m e s e e l a for contador for 5, e l e e ntrará no cicl o um a ve z
ve rdade ira [tive r um val or dife re nte de ze ro], m ais , s e rá m e nor do q ue 6 um a úl tim a ve z e
o corpo do cicl o é e xe cutado, cas o ao re e ntrar no cicl o pe l a úl tim a ve z, a
contrário não o é. À vol ta de s ta de finição, e xpre s s ão condicionalcontador < 6 [6 < 6] ,
e xis te m três cicl os e m C: w h ile (), for( ;;) e dará fal s o e portanto s e gue para o e l s e , q ue
do w h il e (). Ve jam os o prim e iro. dirá o val or guardado no contador e porá a
variáve lq ue condiciona a e ntrada no cicl o
O w h il e (), é m uito fie l à de finição w h il
e (), a ze ro, para q ue da próxim a ve z q ue
apre s e ntada acim a. O u s e ja, te m um a a s ua condição s e ja te s tada, dê fal so e o
condição e um corpo. Se a s ua condição cicl o te rm ine .
for ve rdade ira, o s e u corpo é e xe cutado,
cas o s e ja fal s o, o corpo não é e xe cutado. O s e gundo cicl o q ue vam os ve r é o for ( ;;).
M as pode m os pe ns ar: is to é iguala um if (). Te m e s ta form a s intáctica e s tranh a m as vai s e r
O ra é igualne s ta de finição, m as te m um a fácilpe rce be r. Com o s e vê, o for ( ;;), e s tá
particul aridade q ue o torna m uito dividido e m três parte s . A prim e ira é de dicada
inte re s s ante e útil . Um cicl o, e o próprio à de cl aração de variáve is , a s e gunda às
nom e o indica, não pára de e xe cutar o s e u e xpre s s õe s condicionais do cicl o e a te rce ira
corpo e nq uanto a condição e xpre s s a na aos proce dim e ntos de incre m e ntação ou de
condição do w h il e (), for fals a, ou s e ja, todo m udança de variáve is . Para e xpl icar m e l
h or,
o corpo do w h il e () é e xe cutado e nq uanto nada m e l h or do q ue um e xe m plo:
ela for ve rdade ira. Ve jam os um e xe m pl o:
#include <stdio.h>
int main()
#include <stdio.h>
{
int main()
int entrar = 1;
{
for (int contador = 1; contador < 6;
int entrar = 1;
contador++)
int contador = 1;
{
while (entrar == 1) // o mesmo que
printf(“contador vai em:
// while(entrar), visto que entrar=1
%d\n”, contador);
{
}
if(contador < 6)
printf(“contador chegou a
{
%d\n”, contador);
printf(“contador vai em:
return 0;
%d\n”,contador);
}
contador++;
} else {

<39 >
tutorial

Ne s te ciclo, é pos s íve lre parare m q ue fica


tudo m ais arrum ado e s im pl e s de pe rce be r.
7 –Strings [cade ias de
Te m os a prim e ira parte q ue de cl ara e atribui caracte re s ]
um val or à variáve l contador [não é
obrigatório s e r pre e nch ido], de pois te m os a Até agora vim os vários tipos de dados
s e gunda parte q ue te m a condição de conh e cidos . A m aior parte de l e s , através da
parage m do cicl o e na te rce ira parte te m os m ate m ática [int, fl oat, doubl e ]e vim os um
o nos s o m odificador da variáve l , q ue ne s te tipo de dados , ch ar, q ue ajudará a pe rce be r
cas o a incre m e nta um a unidade , e o tipo de dados q ue vam os ve r ne s ta
e nq uanto contador < 6, o corpo do for ( ;;) s e cção, s trings . Um a s tring é um conjunto de
é aval iado e e xe cutado. caracte re s s e guidos q ue te rm ina com o
caracte r e s pe cial , te rm inador de s trings , '\0'
Por fim te m os o cicl o do w h il e (), q ue é [le ia-s e , barra ze ro] . O u s e ja, um a s tring não
praticam e nte igualao w h il e (), m as te m a é m ais q ue um a fras e q ue te m com o l im ite s ,
particul aridade de e xe cutar o s e u corpo inicial e final , o prim e iro caracte r e o
ante s de te s tar a condição de parage m . Is to caracte r e s pe cial '\0', re s pe ctivam e nte . Se
te m um a vantage m . Se q uis e rm os q ue um a q uis és s e m os e s cre ve r a s tring "ol á", e s ta e ra
dada e xpre s s ão s e ja e xe cutada com pos ta da s e guinte m ane ira:
inde pe nde nte m e nte de a e xpre s s ão
condicionaldo w h il e () s e ja fal s a ou não, e l a 'o' 'l
' 'á' '\0' = "ol
á"
é s e m pre e xe cutada, pe l o m e nos , um a ve z.
E m ais um e xe m pl o: Em q ue a pos ição 0 [ze ro]da s tring te m o
caracte r 'o', a pos ição 1 te m o caracte r 'l ',
#include <stdio.h> a pos ição 2 te m o caracte r 'á' e a pos ição
int main() 3 te m o caracte r e s pe cial '\0'. Se
{ re pararm os , e xis te m 3 caracte re s vis íve is na
int entrar = 1; s tring, m as e s ta é form ada por 4, um a ve z
int contador = 1; q ue pos s ui o caracte r te rm inador de s tring
do '\0'. O utro as pe cto im portante te m a ve r
{ com o facto de a contage m e pos te rior
printf(“contador vai em: se l e cção das pos içõe s com e ça com o
%d\n”, contador); núm e ro 0 [ze ro]e não no 1. Funciona com o
contador++;
inde x, ou com o pos içõe s de cas as . Se a
}
while (contador < 6); s tring te m n caracte re s , as s uas pos içõe s
printf(“contador chegou a vão de 0 até n-1, e a pos ição n, é
%d\n”, contador); pre e nch ida com o caracte r te rm inador de
return 0; s tring '\0'.
}
Com o vim os até agora, q uando q ue re m os
us ar um a variáve l, te m os de a de cl arar. O ra
Com o s e vê, o corpo do do w h il e (), é para criar um a variáve ldo tipo s tring s ó
e xe cutado ante s da s ua condição de te m os de a de cl arar e de indicar o e s paço
parage m . D e pe nde ndo da s ituação, das q ue e la vai ocupar. Por e xe m plo, s e a s tring
variáve is e m q ue s tão e do s e u val or actual , e m q ue s tão us ar 20 caracte re s , pode m os
dá je ito us ar um tipo de cicl o q ue re s ol va de cl arar:
mel h or o probl e m a. Com variáve is ,
e xpre s s õe s condicionais e cicl os , já é char a-minha-string[20];
pos s íve l faze r m uita cois a e m C, é um a
q ue s tão de s e praticar e de s e te ntar E te m os a nos s a s tring com capacidade
de s cobrir m e lh or cada e l e m e nto aq ui vis to. para 20 caracte re s criada.

<40>
tutorial

Em s e guida, pode ríam os us ar o e s paço O u s e ja, de cl


arám os um a variáve l "count"
re s e rvado para e l
a da s e guinte m ane ira: do tipo inte iro s e m ne nh um val or à partida,
e vol tám os a de cl arar a nos s a s tring, de s ta
a-m inh a-s tring = "O l
a, s ou um a s tring"; fe ita com o nom e "m y Str", com as m e s m as
20 pos içõe s e a m e s m a s tring "O l a, s ou
E inte rnam e nte is to s e ria e q uival
e nte a: um a s tring".

0 1 2 3 4 5 6 Es te program a produziria o s e guinte :


,
O la s o O s
o s
l
7 8 9 10 11 12 13 a u t
r
u u m a s ,
u i
m n
14 15 16 17 18 19 a g
t r i n g \0
Pode ríam os ainda m os trar o núm e ro de
São 20 caracte re s de ntro de um a s tring q ue caracte re s im prim idos no e crã
conte m 19 caracte re s vis íve is m ais o acre s ce ntado ao código o s e guinte :
caracte r te rm inador '\0', totalizando 20
pos içõe s , inde xadas de 0-19 . printf("numero de caracteres
imprimidos no ecrã : %d\n", count);
A m anipulação de s trings dá m uito je ito e é
Ante s do "re turn 0;
" [fim do program a]e
bas tante fácil . Ve jam os : s e q uis és s e m os
de pois do l
oop for.
ace de r à pos ição núm e ro 3 da s tring [q ue
nos dá um caracte r] , faríam os :

a-minha-string[3] 8 - Ve ctore s
E para q ual q ue r outra pos ição faríam os a- Com o vim os na s e cção ante rior, um a s tring
m inh a-s tring[n]. é um a cade ia de caracte re s todos
orde nados e s e guidos de um caracte r
Um e xe m pl o utilizando um s im pl e s cicl
o, e s pe cialte rm inador '\0'.
m os tra com o pode ríam os im prim ir um a um O ra um ve ctor te m e xactam e nte o m e s m o
e s e parados por l inh as , cada um dos conce ito m as contém q uais q ue r e l e m e ntos ,
caracte re s da s tring acim a criada e o de pe nde ndo do tipo de dados ao q uals e
re s pe ctivo núm e ro de l
e s. as s ocia o ve ctor.
Por e xe m pl o, pode ríam os q ue re r um ve ctor
#include <stdio.h> de inte iros com os anos de várias datas de
int main() nas cim e nto, as s im faríam os :
{
int count; int vecAnos[10];
char myStr[20] = "Ola, sou uma
string";
Em q ue criaríam os e por cons e q uência
for(count = 0; myStr[count] !=
re s e rvaríam os m e m ória para 10 bl ocos de
'\0'; count++)
{ inte iros s e guidos para o nos s o ve ctor. Para
printf("%c\n", myStr[count]); m anipul ar o ve ctor, faríam os tale q ualnas
} s trings , um a ve z q ue cada pos ição do
return 0; ve ctor te m um índice as s ociado, q ue vai
} de s de 0 até ao s e u tam anh o, n, m e nos 1 [0
-> n-1] .

<41>
tutorial

Util
izando o ve ctor acim a criado, 9 - Funçõe s
m odifiq ue m os , ou ne s te cas o,
pre e nch am os o s e u conte údo, um a ve z Não é ne nh um a novidade fal ar e m funçõe s
q ue até agora o ve ctor e s tá vazio. vis to q ue te m os vindo a fal
ar ne las e a us á-
las de s de o início. A m ais fal ada, a m ais
vecAnos[0] = 1987;
us ada e a e s s e ncialpara q ue q ual q ue r
vecAnos[1] = 1988;
vecAnos[2] = 1989; program a e m C corra é a função m ain().
M as e m ge ral um a função apre s e nta a
s e guinte s intaxe :
e por aí fora. Se ria um a m açada andarm os
tipo_de_retorno Nome_da_função (
a de cl arar todas as datas , s e , para al ém do
parâmetros declarados )
m ais , e l
as fos s e m s e guidas . Para is s o us am os {
um s im pl e s al goritm o, para pre e nch e r o CORPO;
ve ctor, s abe ndo o s e u tam anh o final . RETORNO;
}

M uito s im ple s . Um pe q ue no e xe m pl
o
#include <stdio.h> tornará m ais cl ara a ide ia de função:
int main()
{ #include <stdio.h>
int vecAnos[10];
int start = 1987; int func_soma(int x, int y)
for(i = 0; i <= 10; i++, start++) /*função que retorna um int, que tem
{ o nome func_soma, que tem os
vecAnos[i] = start; parâmetros declarados "int x, int
} y", que tem um CORPO e um RETORNO do
for(i = 0; i <= 10; i++) inteiro relativo -> soma (x + y) */
{ {
printf("vecAnos[%d]=%d\n", return (x + y); // ou int temp = x
i,vecAnos[i]); + y; seguido de return temp;
} }
return 0;
} int main()
/* função que retorna um int, que
tem o nome main, que não tem
Portanto o conce ito de ve ctor é o m e s m o parâmetros declarados, que tem um
da s tring s ó q ue funciona com m úl tipl
os CORPO e um RETORNO do inteiro 0
tipos de dados pe l o q ue ao ve ctor de ch ar [zero] *\
ch am am os -lh e s tring. {
int a, b, soma;
Ape s ar de tudo, através do q ue foi aq ui printf("SOMADOR:\n");
printf("Insira dois valores para\n");
e xplicado até à s e cção 8 dos ve ctore s , é
printf("a:");
pos s íve l faze r-s e m uita cois a e m C. No scanf("%d\n", &a);
e ntanto, e xis te um a "m atéria" bas tante printf("b:");
im portante para a e ficiência e organização scanf("%d\n", &b);
de código nos program as : funçõe s . soma = func_soma(a, b);
printf("A soma de %d com %d e
%d\n", a, b, soma);

return 0;
}

<42>
tutorial

Com o pode m os ve r, a função "func_s om a" Se criarm os a s e guinte s tring:


criada para auxil iar a s om a, te m o m e s m o
as pe cto da função m ain() m as util iza char revista[9] = “PROGRAMAR”;
parâm e tros de cl arados à partida. O u s e ja,
a função "func_s om a", re q ue r q ue s e
"pas s e m " ce rtos argum e ntos para e l a
funcionar. Ne s te cas o, a função e xige q ue 8000H 8001H 8002H 8003H 8004H
pas s e m os dois inte iros . É de notar q ue os P R O G R
0 1 2 3 4
nom e s 'x' e 'y ' pode riam s e r 'a' e 'b' com o
8005H 8006H 8007H 8008H 8009H
foram e nviados na ch am ada de ntro da A M A R \0
função m ain(), um a ve z q ue s ão zonas 5 6 7 8 9
dis tintas . Ape nas foram e s col h idos x e y
dife re nte s de a e b para facil itar a
pe rce pção. Es te s e ria o e s q ue m a na m e m ória. E, com o
foi e xpl icado ante riorm e nte , o nom e da
e s trutura, “re vis ta” é um ponte iro para a
prim e ira cas a da e s trutura, q ue ne s te cas o
10 - Ponte iros é um a s tring. Portanto, “re vis ta” aponta
para a cas a 0 [ze ro]q ue contém ‘P’ e q ue
por s ua ve z te rá um e nde re ço. Supondo
G e ral m e nte , os ponte iros s ão a “dor de q ue a s tring com e ça no e nde re ço 8000H ,
cabe ça” dos apre ndize s iniciados , e por e ntão, “re vis ta” te m o e nde re ço 8000H .
is s o cos tum am s e r e xpl
icados no fim . Não
vam os fugir à re gra e por is s o fica aq ui a Com o um carácte r ocupa 8 bits [1 by te ]na
s ua e xpl icação. Em bora pos s a pare ce r m e m ória, os e nde re ços s al
tam de um e m
com pl icado de início, ve re m os q ue é m uito um com o s e vê na tabe l a. Se m andarm os
s im ple s , m as q ue ape nas com prática im prim ir, carácte r a carácte r, e s ta s tring,
s obre o as s unto s e cons e gue pe rce be r be m faze m os al go com o is to:
o s e u funcionam e nto.

Com o vim os nas s e cçõe s 7 e 8, s trings e char revista[9] = “PROGRAMAR”;


ve ctore s , re s pe ctivam e nte , o s e u tipo de char c;
dados é um a e s trutura e m cade ia e m q ue
pode m os im aginar várias cas as s e guidas while (*revista != ‘\0’)
com conte údos l á de ntro re s pe ctivos ao // ‘\0’ é o carácter terminador de
s e u tipo de dados . O s ve ctore s s e rão de s te // strings
{
tipo com val ore s inte iros de ntro das cas as e
printf(“%c”, *revista);
as s trings s e rão de s te tipo com caracte re s revista++;
de ntro das cas as . }

No e ntanto, q uando criam os um a s tring ou


um ve ctor, atribuím os -l h e um nom e . É aq ui O ra apare ce aq ui um s ím bol o novo: ‘*’. O
q ue e ntram os ponte iros . O nom e de um s ím bol o as te ris co, s ignifica “conte údo”.
ve ctor não é m ais do q ue um ponte iro para Com o foi e xpl icado ante s , o nom e de um a
a prim e ira cas a [índice 0]do próprio ve ctor. s tring/ve ctor não é m ais do q ue um
E um ponte iro não é m ais do q ue um ponte iro para o e nde re ço da prim e ira cas a
e nde re ço da e s trutura para a q ualaponta. de s te . Com o tal , o nom e e m s i contém o
e nde re ço de m e m ória, m as fal ta pode r
ace de r ao s e u conte údo.

<43>
tutorial

Pode m os inde xar, faze ndo re vis ta, com i Re capitul ando, um nom e de um a e s trutura
pe rte nce nte e ntre 0 a 9 , m as com o o nom e de s tas é um ponte iro para e l a e contém o
da s tring/ve ctor aponta para a prim e ira e nde re ço para onde aponta [a m orada da
cas a, para s e ace de r ao conte údo de s s a cas a] . E para s e lh e ace de r ao conte údo,
pos ição de m e m ória, ape nas s e m e te o ‘*’ us a-s e o s ím bol o ‘*’ ante s do nom e .
ante s do nom e . E para q ual q ue r nom e de
um a e s trutura de s tas , ao pôr-m os um
as te ris co ante s de s e u nom e , e s tam os a Concl
us ão
ace de r ao conte údo da q uale s s e nom e
aponta. Exis te m m uitas m ais "m atérias " e m C q ue
pode m s e r fal adas , m as para um início, é
Com o vim os na tabe l a acim a e pe gando im portante cativar o apre ndiz com ce rtas
no pe daço de código, no início, “re vis ta” m atérias m ais s im ple s de m odo a q ue , s e
aponta para 8000H . Se m andarm os e s te de cidir avançar com a apre ndizage m
im prim ir o s e u conte údo, através da a fundo da l inguage m e m q ue s tão, não
ope ração *re vis ta, s e rá im pre s s o o carácte r de s m otive por fal
ta de ce rtos
‘P’ porq ue é o conte údo de 8000H . conh e cim e ntos bás icos q ue o im pe çam de
avançar e de pe rce be r outros conte údos
Se agora incre m e ntarm os “re vis ta” [q ue é m ais avançados .
um e nde re ço] , e s te avança um a pos ição
na m e m ória e portanto fica com o Em bora s e ja pos s íve l apre nde r-s e a
e nde re ço 8001H , q ue por s ua ve z, *re vis ta, program ar, através de l
ivros , tutoriais ,
pas s a a conte r ‘R’. E as s im s uce s s ivam e nte artigos , aulas , e tc., é im portante pe rce be r
até *re vis ta e m q ue vai, contive r ‘\0’ e aí q ue s e m prática autónom a, é m uito difícil
para porq ue acabou de im prim ir toda a adq uirir e xpe riência e prática na
s tring. program ação de q ual q ue r l inguage m .
Então, um ape l o im portante a todos os
Es te proce s s o é m uito s e m e l h ante com program adore s iniciante s , é de pore m e m
ve ctore s ou com outros tipos de dados prática e xe rcícios s e us e de te ntare m
ne s tas e s truturas s e q ue nciais na m e m ória. pe rce be r a l inguage m por s ua auto-
re criação.

M igue lW ah non

<44>
gnu/l
inux

Apre s e ntação do
Ubuntu 7.04
"Fe is ty Faw n"
Já pas s aram 6 m e s e s de s de o
l
ançam e nto da úl tim a ve rs ão do
Ubuntu, o 6.10 “Edgy Eft” e o
l
ançam e nto do Fe is ty Faw n foi no
dia 19 de Abril
.

Com e s te artigo pre te ndo faze r um a


apre s e ntação s im pl
e s de al gum as G nom e 2.18
das novas funcional idade s de s ta
O novo G nom e ve m com m uitas m e l h orias a
nova ve rs ão.
níve l de ve l ocidade e e s tabil idade , com o
um a inte rface m e l h orada, m e l h or s uporte
À prim e ira vis ta para re de , e m uito m ais . O G NO M E Control
Ce nte r, ve m com um a nova inte rface q ue
O aparência gráfica de s te novo agrupa as funcional idade s e m tare fas
lançam e nto continua a s e guir a aparência se m e l
h ante s . O Controlce nte r pe rm ite al te rar
das ve rs õe s ante riore s com tons de várias de finiçõe s no s is te m a, com o fonts ,
cas tanh o e l aranja, h ave ndo m e l h orias te cl
ado, s om , te m as , e tc.
s ignificativas .
Ao níve ldas apl icaçõe s ins tal adas ,
continua a s e r um s is te m a
com pl e to, te ndo apl icaçõe s para a
m aioria das actividade s com uns –
m ús ica, víde o, docum e ntação,
ins tantm e s s aging.

D e s e m pe nh o
Pode m os contar com algum as
mel h orias a níve lde de s e m pe nh o,
al gum as graças a novas ve rs õe s de
al guns s is te m as , com o o Xorg 7.2
(m otor gráfico), Ups tart 0.3.6
(Sis te m a de inicial ização no Ubuntu
de s de o 6.10) e K e rne l2.6.20.
A incl us ão do Xorg 7.2 ao Ubuntu
foi um a s urpre s a, poucos e s tavam à
e s pe ra da s ua adição ne s te l ançam e nto.
Es ta ve rs ão ve m com várias m e l h orias Ins tal
ação
s ignificativas de e s tabilidade e
funcionam e nto, com o auto-configuração A ins tal ação gráfica e s tá m ais fácil, com
m ais e ficie nte , s uporte m e l h orado para novas melh orias tanto ao níve l de
ge s tore s bas e ados e m G L, com o o Com piz e s tabil
idade com o funcional idade s do
ou Be ry l e pol íticas de s e gurança m ais ubiq uity - Sis te m a de ins tal
ação gráfico
e xte ns as . us ado no Ubuntu.

<45>
gnu/l
inux
Um a das novas funcional idade s do ubiq uity Um a das apicaçõe s q ue ve m de bas e para
é o “M igration-As s is tant”. Es ta apl icação ajudar ne s ta tare fa é o Ne tw ork M anage r,
pe rm ite aos util
izare s im portare m um a inte rface gráfica, no q ual s e pode
docum e ntos , fich e iros e de finiçõe s de configurar tanto a re de por e th e rne t,
outros s is te m as ope rativos q ue e s te jam w ire l
e s s e VPN.
ins talados , e conve rte r para os s e us
e q uival e nte s e m Ubuntu. M ul
tim édia
Por e xe m pl o, pode copiar o conte údo da
pas ta M y M us ic no W indow s para a pas ta Um dos m aiore s de s afios para um novo
M us ic no Ubuntu, e adicionar ao Rh y m tbox, util
izador é a parte m ul tim édia, is to é, a
ou s e tive r o Fire fox, IE ou O pe ra ins tal ado, capacidade para re produzir áudio e víde o
e s te irá com pil ar as book m ark s e adicionar no s e u Ubuntu. M ais um a ve z, para
as do Ubuntu. s im plificar, e s te proce s s o já não
é al go de outro m undo.
Ao e xe cutar um fich e iro m e dia
q ue não te nh a ne nh um code c
com patíve lins tal ado, o s is te m a
irá l ançar um avis o e ajudar no
proce s s o de ins tal
ação dos
code cs ne ce s s ários .

O utra m e l h oria a e s te níve l , foi a


criação do pacote “Ubuntu-
re s tricte d-e xtras ”. Es te pacote é
na re alidade um “m e ta-
pack age ” q ue aponta para a
ins tal ação de ce rca de 20
pacote s para ajudar a e xpe riência
Ins tal
ar D rive rs Proprie tárias para as tanto m ul
tim édia. Incl ui Java JRE, Fl as h 9 , al guns
para as pl acas gráficas com o w ire l e ss é code cs e m ais uns pacote s .
m ais s im ple s , us ando o Re s tricte d D rive rs
M anage r. Num cl iq ue os drive rs s ão
ins tal
ados .
Efe itos G ráficos
Para os q ue pe ns am q ue os e fe itos gráficos
do Vis ta s ão novidade , de ve rão ficar
Re de Sim pl
es adm irados por s abe r q ue e m Linux já
e xis tiam e não é
Se guindo a fil os ofia do pre cis o um a
Ubuntu para s im pl ificar m áq uina úl tim a
a e xpe riência do ge ração para
de s k top ao m áxim o de funcionare m
util izadore s , um a das com fl uide z.
e s pe cificaçõe s para O Ubuntu Fe is ty
e s te l ançam e nto foi o ve m com o
“Z e roConfNe tw ork ing”, Com piz 0.3.6
q ue re s um idam e nte é ins tal ado de
a capacidade de bas e , e se a
configurar o ace s s o à vos s a gráfica for
re de autom aticam e nte com patíve l ,
e com o m ínim o de inte rve nção do de ve rá funcionar l ogo s e m ne nh um a
util izador. O Sis te m a te ntará configurar o q ue configuração e xtra.
pode r para te ntar faze r a re de funcionar
corre ctam e nte .
<46>
gnu/l
inux

O rganização das jane l


as abe rtas

Efe ito de "cubo"

va
M arco Sil

Re s um indo, e s te l
ançam e nto é a continuação da e vol ução vis íve lno Ubuntu. A e xpe riência
do utilizador e s tá m ais s im pl
ificada e o s is te m a m ais e s táve le com patíve l
.

Acons e l
h ado a todos os q ue q ue re m e xpe rim e ntar G NU/Linux.

<47>
anál
is e s

M oodle:
Um a pl
ataform a de e Le arning
Para um bom funcionam e nto o M oodl e
O q ue é o M oodl
e? pre cis a corre r tare fas autom atizadas (cron) e
te r e s paço dis poníve lpara a col ocação dos
O M oodl e é um a fe rram e nta q ue pos s ibilita a vários re curs os dos curs os a criar. No s ite
ge s tão de apre ndizage ns e de trabal ho oficiale s tá ainda dis poníve lum conjunto de
col aborativo, pe rm itindo a criação e ge s tão pl ugins (m ódul os e bl ocos ) q ue pe rm ite m
de curs os on-l ine e m torno de com unidade s al argar ainda m ais as pote ncial idade s do
com obje ctivos e ducativos . A ide ia inicialfoi M oodl e.
de M artin D ougiam as , q ue e m 19 9 9 pe ns ou
criar o M oodl e , s e m q ual q ue r obje ctivo Pote ncial
idade s do M oodl
e
com e rcial , pois acre dita nas
pote ncial idade s do e ns ino e da cons trução O M oodl e pe rm ite a criação de
do conh e cim e nto através da Inte rne t. D e pois curs os /dis cipl inas q ue pode m ou não e s tar
de al gum as te ntativas iniciais é e m Agos to ace s s íve is a todos os vis itante s . Ne s te s e s paços
de 2002 q ue s ai a ve rs ão 1.0 do M oodl e. A pode m de pois s e r criados e col ocados
partir daí a com unidade M oodl e te m re curs os . O M oodl e , te ndo por bas e um a
cre s cido bas tante e s ão cada ve z m ais as filos ofia cons trutivis ta da e ducação, traz já um
e s colas , unive rs idade s , ce ntros de form ação, conjunto de fe rram e ntas q ue facil itam a
e m pre s as e organizaçõe s a util izar e s ta ne ce s s ária inte racção e ntre os participante s .
fe rram e nta. D e s taca-s e aq ui a pos s ibil idade de criar W ik i’s ,
fóruns , gl os s ários , ch ats , bl ogs , bas e s de
Em Portugal(q ue re gis ta já um totalde 858 dados , diários , inq uéritos , l içõe s , te s te s . É tudo
“M oodl e s ” re gis tados ) te m -s e ve rificado um a is to q ue pode tornar o M oodl e num e s paço de
grande ade s ão de várias e s col as e ce ntros apre ndizage m m uito m ais rico q ue um s im pl es
de form ação a e s ta fe rram e nta. Es ta “m oda” re pos itório de conte údos . É e s s e o de s afio
de ve -s e e s s e ncial m e nte à s ua facil idade de lançado a q ue m pre te nde us ar o M oodl e em
us o, acom panh ada da aus ência de cus tos toda a s ua pl e nitude .
com o s oftw are , be m com o ao novo Q uadro
de Re fe rência da Form ação Contínua de
Profe s s ore s na Áre a das TIC.
Site s de re fe rência
Página oficialdo M oodl e
Q ue s tõe s técnicas h ttp://w w w .m oodl e .org
Com unidade Portugue s a de M oodl e
O M oodl e é O pe n Source dis tribuído s ob a
h ttp://w e b.e ducom .pt/m oodl e pt/
G NU Publ ic Lice nce . No finaldo m ês de
Página onde s e pode te s tar o M oodl e
M arço foi l ançada a ve rs ão 1.8,
h ttp://w w w .ope ns ource cm s .com
mel h orando a fl
e xibilidade , a
ace s s ibilidade e a us uabil idade da
pl ataform a, nom e adam e nte no q ue diz
re s pe ito à param e trização dos papéis dos
util izadore s . O M oodl e corre e m PH P e
ive ira

s uporta M YSQ L ou Pos tgre SQ L, e m bora nas


úl tim as ve rs õe s s e pos s a ainda us ar e m
Jos é O l

al te rnativa M icros oftSQ LSe rve r ou O racl


e.

<48>
inte rne t

O Bl
og da LinTe am

A LinTe am , um a das e q uipas do nos s o forum q ue s e de dica ao Es tatís ticas :


G NU/Linux, de u, durante o m ês de Abril , um grande pas s o no s e u •18 pos ts
trabalh o: l
ançou um bl og. Com e s te blog o obje ctivo é le var o Softw are •45 com e ntários
Livre a cada ve z m ais util izadore s através de te xtos críticos , artigos de •M ais de 1000
opinião, notícias e de s e nvolvim e ntos do m undo ope ns ource . vis itas únicas
•M ais de 8000
H its
h ttp://w w w .l
inte am .portu g al
-a-prog ram ar.org •Vis itas de 16
país e s dife re nte s

M otji
O M ojiti pe rm ite pe rs onal izar víde os al ojados nos principais
s e rvidore s de víde o da Inte rne t. D e pois de e s colh ido o víde o
pode m os col ocar l e ge ndas , anotaçõe s , várias form as ,
im age ns , anim açõe s ,… tudo is to no l ocalde s e jado. O M ojiti
adiciona de pois um l ay e r com e s tas pe rs onalizaçõe s .

Re ce nte m e nte foram ainda adicionadas novas


funcional idade s a e s ta fe rram e nta. É ne s te m om e nto pos s íve l
tam bém adicionar áudio e víde o a um outro víde o! Um re curs o
a conh e ce r.

h ttp://w w w .m ojiti.com

Conve rs ão de Víde os
Todos nós gos tam os de ir ao YouTube ou a outros s ite s do géne ro e ve r al guns
víde os . M uitos gos tam tam bém de faze r dow nl oad dos m e s m os para a
pos te rioridade . O probl e m a s urge no fim do dow nl oad: te nh o um víde o e m .fl v,
logo te nh o de faze r dow nl oad de um pl ugin ou de um program a! Norm al m e nte
is to é um a grande m açada principal m e nte q uando q ue re m os m os trar o víde o
aos am igos e e l e s têm de ins tal ar um program a. Com o vixy.ne t e s s e probl ema
e vaporou-s e . É pos s íve lconve rte r no próprio s ite e s s e s víde os .fl v para AVI, M O V
para M ac, M P4 para o iPod e para a PSP , 3G P para q ual q ue r te l
e m óve le M P3,
q ue ape nas conve rte o aúdio do víde o.

h ttp://w w w .vixy.ne t

<49 >
bl
ue s cre e n

Pe l
o m e nos é m ais bonito
q ue a concorrência...

Aí e s tá e l
e ...
...o Bl
ue Scre e n ofD e ath !

Se rá q ue a tortura re s ul
ta?
<50>
com unidade
Re le m bro q ue as candidaturas a e s tas
e q uipas e a todas as outras e s tão abe rtas ,
pe lo q ue todos os m e m bros da com unidade
s e pode m ins cre ve r nas m e s m as . Para o
faze r, bas ta fal ar com um m ode rador,
adm inis trador ou com o ge s tor do proje cto.

Em te rm os e s tatís ticos , a com unidade


continua e m grande cre s cim e nto: no
pas s ado m ês de Abril , tive m os 2219 2
vis tante s únicos , com um a m édia de 1171
por dia. São núm e ros q ue indicam um bom
Ch e gám os ao m ês de M aio, um m ês q ue cre s cim e nto e q ue nos m otivam para
m e cos tum a traze r m uitas e boas continuar a trabal h ar na e xpans ão da
le m branças . Porq uê?O ra, foi e m M aio de com unidade .
2005 q ue a com unidade Portugal -a-
Program ar foi criada, m ais pre cis am e nte no Es pe ro q ue te nh am um bom m ês de M aio,
q ue ace dam m uito fre q ue nte m e nte ao

Rui M aia
dia 28, às 19 h oras e 18 m inutos . O u s e ja,
faze m os no dia 28 de s te m ês de M aio, dois fórum , q ue participe m nas nos s as dis cus s õe s
anos de e xis tência. E para com e m orar e s s e s e q ue contribuam activam e nte para a
dois anos de trabal h o e de dicação q ue com unidade . Ve m o-nos no P@ P .
tantos frutos têm trazido, o s taffdo Portugal -
a-Program ar de cidiu l ançar um concurs o:
RoboCode e m Java. Para m ais inform açõe s
e para s e ins cre ve re m , s ugiro q ue vis ite m a
nos s a s e cção Java ou q ue e ntre m e m
Q ue re s participar na re vis ta
contacto dire cto com o m ode rador K nitte r.
PRO G RAM AR?Q ue re s inte grar e s te
proje cto, e s cre ve r artigos e ajudar
Fal ando do q ue s e fe z e do q ue s e fará,
a tornar e s ta re vis ta num m arco
e s tam os a pl ane ar avançar com outro
da program ação nacional ?
proje cto l ide rado e e l aborado pe l o s taff já
a partir de Jul h o. Te rá de s e r adiado para
Vai a
e s s a época de vido aos e xam e s e à
im portância q ue os m e s m os te rão na
carre ira profis s ional de cada um . O utros
w w w .re vis ta-program ar.info
proje ctos têm s urgido por iniciativa dos
util izadore s e provave l m e nte ve re m os m ais
de s e nvol vim e ntos nas próxim as s e m anas .
para m ais inform ação com o
Q uanto ao q ue s e fe z, te m os várias e q uipas
participar
a trabal h ar e m s im ul tâne o e m várias áre as -
ou e ntão contacta-nos por
e q uipas de tradução, de de s e nvol vim e nto
de s oftw are e de trabal
com unidade - e portanto é be m prováve l
h o para a
re vis taprogram ar
q ue m uito e m bre ve com e ce m a s urgir
@ portugal
-a-program ar.org
notícias de proje ctos acabados . D e s de o
lançam e nto da úl tim a e dição foram criadas
duas e q uipas de tradução, um a l ide rada
Pre cis am os do apoio de todos
pe l o K nitte r outra pe l o djth y rax, a D e s ign
para tornar e s te proje cto ainda
Te am , q ue te rá com o funçõe s forne ce r
m aior...
el e m e ntos de de s ign às várias pl ataform as
da com unidade .
contam os com a tua ajuda

<51>
Eq uipa PRO G RAM AR
Um proje cto Portugal
-a-Program ar.org