e dit orial

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

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

adm inis t ração
Rui M aia D avid P as s ilo int g

coorde nador
S érg io S ant os

A Eq u ipa
É dit q ue , para al de t r um a boa ide ia, t r um a boa e q uipa o ém e e é e s s e ncial para obt r s uce s s o num proj ct Com e çar e t nt e e o. e ar acabar um proj ct s ozinh o é, m uit v ze s , s uicídio para o e o as e próprio proj ct M e s m o q ue as nos s as capacidade s e s t j e o. e am à al t ura, é s e m pre ne ce s s ário out ros pont de v t opiniõe s , os is a, out ras s ol uçõe s para um de t rm inado problm a e , e e principal e nt , apoio e m ot ação. A probabil m e iv idade de um proj ct f e o icar a m e io, q ue r por de s int re s s e ou f t de t m po, é e al a e m uit m aior q uando e s t os s ozinh os à v t de l. o am ol a e M uit v ze s a ide ia ne m é o principalj q ue ne m s e m pre a as e á ide ia q ue com e çam os é a f . Exis t m m uit cas os de s uce s s o inal e os act m e nt q ue de m ons t ual e ram is s o m e s m o. Ainda m ais , um a boa e q uipa cons e gue s e m pre criar boas ide ias q uando é pre cis o. O t anh o das e q uipas t bém é m uit v ze s dis cut am am as e ido. Na m inh a opinião, para com e çar do ze ro o m e lor é m e s m o h com e çar com um grupo re duzido. T odos os f ore s " xt act e raproj ct com o a com unicação e organização aum e nt e o" am e xpone ncial e nt com o núm e ro de pe s s oas e nv v m e olidas no proj ct M as irá ch e gar o t m po e m q ue s e rão pre cis as m ais e o. e pe s s oas . M as , e m v z de at e irar m ais ge nt para um problm a, e e m uit v ze s é m ais út div as e il idir a e q uipa e m v ários grupos com dif re nt s áre as de f e e oco. E o principal re s pe it s e m pre o : ar t rabalo e as opiniõe s de t h odos os m e m bros da e q uipa.

coorde nador adj o unt
M ig ue l ais P

e dit or

Joe l Ram os

re dacção

F ábio P dros a e B runo V az F ábio Corre ia P dro T ixe ira e e R icardo Roch a S andro P o int M ig ue l ah nan W M arco S il va Jos é O l ira ive

col aboradore s
Rui G onçal s ve D anie l Corre ia

cont o act w e bs it e

re vis t aprog ram ar @ port al ug -a-prog ram ar.org w w w .re vis t a-prog ram ar.inf o

<2 >

Sérgio Sant os

not ícias

D e le Ubunt l u
D e pois de um a v ação no s it da D e l ot e l de dicado aos cons um idore s , o I aSt , de orm a D e l de cidiu com e çar a com e rcial l izar com put adore s com o Ubunt 7.04 (F is t u e y F n) com o s is t m a ope rat o préaw e iv ins t ado. A e s cola re caiu s obre o Ubunt al h u de v ido à m aioria dos cons um idore s o t r e pre f rido. A D e lnão irá dis t e l ribuir a v ariant e K D E, o K ubunt ape nas o Ubunt q ue us a u, u G NO M E. A v ação no I aSt ot de orm e nv v u m ais de ole 100 m ilpe s s oas e re v l q ue ce rca de e ou 70% de s t as e s t am dis pos t av as a ut izar il s is t m as ope rat os L e iv inux. Num a f e inicial e s t s com put as e adore s ape nas e s t arão dis ponív is para v nda e e nos EUA, m as a D e lnão re j it a h ipót s e l e a e de e xpandir e s t iniciat a a out país e s . a iv ros

G aim m uda nom e para P idgin
D e pois dum l ongo e confit o proce s s o luos de ne gociaçõe s com a AO L um dos , principais I s dos EUA, a e q uipa do G aim SP de cidiu m udar o nom e do f os o I t am ns ant M e s s e nge r para P idgin. Em caus a e s t a o av s is t m a de com unicação e m t m po re al e e AI , de t M ido e re gis t ado pe l AO L pouco a , t m po de pois das prim e iras v rs õe s do e e G aim t re m v e indo a públ ico. Após m uit t m po e m t o e ribunal a e q uipa , do G aim de cidiu dar o braço a t orce r um a v z q ue o proce s s o e s t a a im pe dir o e av l ançam e nt de v rs õe s non-be t do G aim . o e a As s im , f pos s ív l t aguardada v rs ão oi e a ão e 2.0.0. A nov v rs ão t m um nov v ual a e e o is , m uit nov f as as uncional idade s e cl aro, um nov nom e : P o idgin.

G oogl é a m arca m ais v ios a do m undo e al
Se gundo um e s t udo da e m pre s a de pe s q uis a de m e rcado M il ard B n e m conj o com l w row unt o F inancialTim e s , o m ot de bus ca G oogl é a m arca m ais cara do m undo e s t or e ando av iada e m q ualue r cois a com o 49 m ilm ilõe s de e uros . D e acordo com o rank ing al q h B randZ - As 100 M arcas M ais P ode ros as , o G oogl aum e nt e ou 77% num ano, t ndo e ul t rupas s ado a M icros of, a m ais v ios a e m 2006. t al Es t ano, a M icros of pas s ou para t rce iro l e t e ugar v e ndo 40,5 m il ilõe s de e uros , e s t al m h ando abaixo da G e ne ral e ct El rics q ue v e 45,6 m il ilõe s de e uros . O q uart pos t é ocupado al m h o o pe l Coca-Col com 32,5 m il ilõe s de e uros , um pouco aq uém do v or da M icros of. a a, m h al t Ent as 10 m arcas com v ore s m ais e lv re al e ados , oit s ão nort - am e ricanas , s e ndo as de o e t cnol e ogias e as de cons um o ge ral m ais pre s e nt s na lt as e is a. No conj o, e s t 10 m arcas - G oogl, M icros of, Ch ina M obil, W al art Coca-Col Cit unt as e t e -M , a, i, I M , T ot M cD onal e B B oy a, d's ank ofAm érica - v e m 1,2 bil s de e uros , m ais 10,6% do q ue al iõe no ano pas s ado. O s e gm e nt de t cnol o e ogias é aq ue l onde as m arcas v e m m ais , s e ndo q ue as cinco m ais e al pode ros as (G oogl, M icros of, I M , Nok ia e H P ch e gam aos 155,6 m il ilõe s de e uros . e t B ) m h

<3>

t m a de capa e

W indow s V t is a para P rogram adore s
I rodução nt
W indow s Vt is a (ant igo code nam e : L ongh orn) é o m ais re ce nt l e ançam e nt o da M icros of, m ais de 5 anos após o s e u t s uce s s or W indow s XP cont , ém ce nt nas de e nov caract rís t as e icas , e nt as q uais , um a re nov a int rf e ace gráf ica, m e lorias de h pe s q uis a, f rram e nt m ul édia, áudio, e as t im s e gurança, … e principal e nt no as s unt m e o q ue nos int re s s a e (pl af a at orm de de s e nv v e nt , a nov olim o) a v rs ão da e pl af a .NET at orm . Junt e nt am e com o l ançam e nt o do s is t m a, e v m t bém int grada a e am e nov v rs ão da Pat orm a a e l af .NET 3.0 (ant igo code nam e : W inF . X)

de s igne rs . Junt e nt am e com e st a t cnol e ogia, a M icros of int t roduziu um a nov l a inguage m de m arcação bas e ada e m XM L ch am ada XAM L , .

•W indow s Com m unicat ion F oundat ion (W CF f ) orne ce um a F e w ork única para ram
a cons t rução rápida de apl icaçõe s s e guras , f e is e orie nt iáv adas Appl ion a s e rv . icat iços

de rot inas e padrõe s t f are as de aut ação e om e st abe lcidos por um s ofw are t e t rans acçõe s int gradas e para ut ização il das s uas ut izando gráf il icos de fuxo. l f uncional idade s por program as É B e ada na v rs ão 2.0, a as e um m ode l o de icat os o nov v rs ão da pl af a apl iv , is t é: program as program ação, a e at orm m ot or e q ue não q ue re m e nv v r-s e f rram e nt ole t nov APs , com o: raz as I e as para pe rm it ir em de t h e s al da apl icaçõe s bas e adas e m e ação do s ofw are , fuxo e m W indow s . t • W indow s P s e nt ion im plm e nt re at l m as ape nas us ar os s e us F oundat ion (ant igo Av on) al iços . s im plica a cons t if rução de s e rv • W indow s CardSpace apl icaçõe s cl nt ie e ricas , (W CS) é um com pone nt e um a v z q ue f it a int gração de e acila e q ue guarda ide nt idade s digit ais dum a m ul édia, docum e nt t im os e UI O W P . F pe s s oa e m s e gurança, e of re ce um a e int roduz um s is t m a av e ançado de l out , ay s int rf e ace unif icada para e s cole r um a h f ácilint gração de m ul édia e gráf e t im icos ide nt idade para um a part ar icul v ct e oriais e 3D , f it acilando ainda a t rans acção, t com o o l al ogin de um col aboração e nt program adore s e re w e bs it . e

AP, I de P rogram m ing I e rf nt ace (ou I e rf nt ace de P rogram ação • W indow s W ork fow l de Apl iv ) é um conj o F icat os unt oundat ion (W W F of re ce ) e

<4>

t m a de capa e
Es t t cnol as e ogias t bém e s t am ão dis ponív is e para W indow s XPe W indow s Se rv r 2003. e Exis t m t bém nov APs im port e s no e am as I ant núclo do s is t m a ope rat o, incl iv o e e iv us e re nov ado int rf e ace áudio, re de , im pre s s ão e v o. Al raçõe s na inf íde t e ra-e s t ura de rut s e gurança, m e loram e nt na dis t h os ribuição e ins t ação de apl al icação (“Cl O nce ” e ick W indow s I t lr 4.0) nov m ode l de ns al e , o o de s e nv v e nt de driv rs (W indow s D riv r olim o e e F oundat , ion) T rans act ion NTF S, de s e nv v e nt na AP de com put olim o I ação m óv l s t de e ne rgia, Suport T e t P e (ge ão e abl C I , Side Sh ow ) e grande s de s e nv v e nt nk olim os dos s ubs is t m as com o W inl e ogon e CAP. I Com e s t “nov F e w ork e s t problm a a a” ram e e de s apare ce , pois é garant ida 100% com pat idade . At à v rs ão 2.0 da ibil é e F e w ork , ram q ualue r q apl icação de s e nv v olida ut izando a pl af a corria il at orm e st e l e áv pe rf it e nt e am e em s is t m as e W indow s 9 8 e s upe riore s . Com a nov v rs ão a e (3.0) ape nas o W indow s XP SP e s upe riore s a 2 s uport . Exis t m am e out ras m e lorias na h ut ização de s t F e w ork , m as não é do il a ram âm bit de s t art o e igo.

W in32 v . NET s
Com o é h abit ual nos s is t m as ope rat os , um e iv grande e sf orço é f it e o para m ant r e com pat idade nas apl ibil icaçõe s , com o a e xe cução de apl icaçõe s W in32 e m W indow s V t Al as apl is a. gum icaçõe s pode m não t irar v age m das nov APs incl ant as I uídas nas nov as v rs õe s da F e w ork , m as de v m cont e ram e inuar a t rabalar igual e nt às v rs õe s ant riore s h m e e e do SO .P out l or ro ado, a M icros of garant t e cont inuar a adicionar APs ge ridas (m anage d I APs ) à F e w ork , o q ue pode não I ram acont ce r na W in32. e Cabe aos program adore s e s cole re m e nt h re cont inuar a ut izar a AP ant il I iga, adapt as ar apl icaçõe s para ut izar as nov APs ge ridas il as I (m anage d APs ) ut izando código de I il adapt ação ou “s im pls m e nt ” re e s cre v r a e e e apl icação ut izando il código ge rido (m anage d code ) .Com o é óbv io e xis t m e grande s m e lorias h de produt idade , iv s im pl icidade e com pat idade e m f r a ibil aze pas s age m para código ge rido (m anage d code ) . O ut das v age ns na ut ização de código ra ant il ge rido é o be ne f ício de pode r ut izar v il árias l inguage ns , q ue no cas o da F e w ork da ram M icros of act m e nt corre s ponde ao C+ + , t ual e C# , V .NET ASP B , .NET e J# . Com nov v rs õe s as e da F e w ork s ão im plm e nt ram e adas nov as al raçõe s nas l t e inguage ns , t com o out al ras f rram e nt . É t bém pos s ív l il out e as am e ut izar ras l inguage ns com a F e w ork , com o o ram I ronP t on (im plm e nt yh e ação do P t on) e yh Ruby .NET (im plm e nt e ação do Ruby ) .

.NET 3.0 e os nov os s ubs is t m as e

I nicial e nt o L m e ongh orn, agora ch am ado W indow s V t e ra um proj ct ainda m ais is a, e o am bicios o onde a nov F e w ork iria a ram s ubs t uir a act it ual AP bas e dos s is t m as I e ope rat os W indow s (W in32) e al rav o iv t e a am bie nt de de s e nv v e nt e m W indow s e olim o para s e m pre , ut izando código ge rido il (m anage d code ) D e f o e s t ide ia f . act a oi abandonada al s gure durant e o de s e nv v e nt do s is t m a, m as no e nt o olim o e ant e s t nov F e w ork cont a a ram inua a s e r um a grande m udança.

P uê um a nov AP? orq a I

P e da razão, é s e m dúv art ida a v l e ocidade a q ue as t cnol e ogias H ardw are e s t ão a s e r de s e nv v olidas . O s com put adore s pe s s oais j á com e çam a ut izar dis cos rígidos com il capacidade s e norm e s , m onit s de al ore t are s ol ução, v l e ocidade s de proce s s am e nt o e norm e s , e t Cone ct idade é t bém de c. iv am grande int re s s e , j am e nt e unt e com a ne ce s s idade de m e lor s e gurança. St h andards com o o RSS e Se rv iços W e b e s t a ganh ar ão adopção e a re s ole r problm as de v e int gração. O ut razão é o lm a “W rit once , e ra e e run e v ry w h e re ”, bas t e ut izada para e ant il de s cre v r e s t pl af a, v t q ue a e a at orm is o principalf h a q ue a AP W in32 (m ais de 12 al I anos de e xis t ência) acarre t a e ra a av ne ce s s idade de m ant r com pat idade e ibil e nt al raçõe s s e m af ct as apl re t e e ar icaçõe s q ue a ut izav . il am

<5>

t m a de capa e

W indow s P s e nt ion re at F oundat ion
Com o f ado al ant riorm e nt , e e W indow s P s e nt ion F re at oundat ion (W P ) é o nom e de F um conj o nov de AP’s na nov v rs ão unt o I a e da Pat orm a .NET q ue pe rm it a q ualue r l af e q program ador dar us o ao nov m ode l o o gráf ico q ue ut iza m e lor do q ue nunca o il h pode r gráf do proce s s ador gráf (G P . ico ico U) Q ualue r apl q icação cons t ruída ut izando il W P cons t ui t F it ipicam e nt de um núm e ro de e páginas Ext ns ibl Appl ion M ark up e e icat L anguage (XAM L j am e nt com o s e u ) unt e código s uport . e O bv iam e nt e a f uncional idade q ue um a colcção de e páginas inde pe nde nt s pode of re ce r é e e l it im ada, e nâo é s uf nt para grande icie e part das ne ce s s idade s . P e xe m pl o e or o, proce s s am e nt q ue ocorre ao nív l da o e página não s uport ne ce s s idade s com o a guardar o e s t ado da página e nq uando o ut izador nav ga, m uda de página, carre ga il e páginas , ge re v ariáv is gl e obais , e t c. W P ou W indow s F ? F orm WP F é cl aram e nt e para apl icaçõe s com us o m ul édia e l out av t im ay ançado. A não s e r q ue o s uport a e W indow s 98 se j a m e sm o ne ce s s ário, e nt o W P é um ão F e xce lnt s ubs t ut para o e e it o “ant igo” W inF s . orm

M uit os pe ns am q ue o W P de pe nde do F XAM L m as is t não é v rdade . Al , t , o e iás udo o q ue s e cons t rói ut izando XAM L pode s e r il f it e m q ualue r l e o q inguage m .NET At . é porq ue o XAM Lnão é ape nas ut izado pe l il o W P, é t bém por out F am ras t cnol e ogias (W indow s W ork fow F l oundat ion [W W F por ] e xe m pl . Apl o) icaçõe s W P pode m corre r e m F duas dif re nt s f as : e e orm • icaçõe s de brow s e r XAM L El corre m Apl : as com o apl icaçõe s al adas no brow s e r El oj . as não corre m no s is t m a do ut izador e não e il corre m ofl . D o pont de v t da fine o is a s e gurança, e l e xe cut as am na zona de s e gurança de I e rne t q ue l it o s e u nt , im a ace s s o a re curs os do s is t m a. V t q ue e is o corre m com um al nív l s e gurança, não t o e de ne ce s s it am de pe rm is s ão do ut izador para il corre r . • Apl icaçõe s ins t adas : Ne s t f a, as al a orm apl icaçõe s ou s ão al adas num a j oj ane l a (com o q ualue r apl q icaçõe s W indow s ) ou al adas na j oj ane l de nav gação W P. Es t a e F a j ane l cont a ém um a banda de nav gação e na re gião do cl nt com bot s de ie e õe nav gação. Es t banda é s ubs t uív lpe l e a it e os program adore s q ue q ue iram cons t ruir a s ua própria barra ut izando il a cl s e as Sy s t m .W indow s .Nav e igat ion.Nav igat ionW indo w s. P ara cada um de s t s dois t e ipos de apl icação e t rês de dis t ribuição, com a e s cola do m ét h odo a ut izar e xis t im pact il , e o na s e gurança. Com o t , conv al ém ao program ador conh e ce r concre t e nt am e cada t ipo.

Com o t , o m ode l da apl al o icação W P F s uport a colcção de páginas XAM L e m a e um a única apl icação do m odo t radicional . Em t rm os de apl e icaçõe s W indow s F s , e m orm q ue um a página XAM L é s e m e lant a um h e f e iro de f ul (W inF ) a apl ich orm ário orm , icação W indow s F s re une os f ul orm orm ários num único e xe cut e l m e s m o m odo q ue um a áv do apl icação W P re une as s uas páginas XAM L F .

XAM L
XAM L (pronuncia-s e " e l é um dos zam " ) principais conce it as s ociados com o W P, os F pois f orne ce ao de s igne r e program ador um a f a concis a de re pre s e nt orm ar um a int rf e ace gráf ica ou out ras h ie rarq uias de obj ct . e os XAM L é um a l inguage m de cl iv de m arcação bas e ada e m XM L arat a .

<6 >

t m a de capa e

M uit os pe ns am q ue o W P de pe nde do F XAM L m as is t não é v rdade . Al , t , o e iás udo o q ue s e cons t rói ut izando XAM L pode s e r il f it e m q ualue r l e o q inguage m .NET At . é porq ue o XAM Lnão é ape nas ut izado pe l il o W P, é t bém por out F am ras t cnol e ogias (W indow s W ork fow F l oundat ion [W W F por ] e xe m pl . o) D as inúm e ras v age ns e m ut izar e s t ant il as páginas XAM L q ue , bas icam e nt e s ão f e iros XM L um a das principais v age ns ich , ant de s t proce s s o é a s e paração e nt o e re de s ign do int rf e ace gráf ico e o código de f undo. Es t a s e paração aj uda cons ide ral e nt m e q uando a e q uipa ou pe s s oa q ue f o de s ign não é a m e s m a q ue az a as s ociada com a program ação.P or e xe m pl a s e guint im age m m os t o, e ra a dif re nça e e nt re C# / B V .NET/ XAM L na cons t rução de um s im pls bot e ão:

Exis t m m uit f rram e nt para e xe cução e e as e as criação de Xam l Junt e nt com o V ual . am e is St udio 2005 v êm o Xam lad q ue pe rm it P e int roduzir código Xam l e v r o re s ul e t ado im e diat P o. ode t bém ape nas guardar o am código num f e iro de e xt ns ão .xam le ich e abrir no I e rne t Expl r (ne ce s s it do .NET nt ore a 3.0 ins t ado) al . Com o o W P int F roduz t os nov conce it , ant os os não é prát ico de s e nv v r código e de s ign ole s e m nov f rram e nt apropriadas . D e s de o as e as l ançam e nt do V ualSt o is udio 2005 q ue e s t e j am e nt com a e xt ns ão para .NET 3.0 unt e e of re ce um bom am bie nt para cons t e e ruir apl icaçõe s W P, com F nov os t ipos de proj ct e e dit s v uais e s pe cíf e os ore is icos para XAM L . Com a nov v rs ão V ual St a e is udio “O rcas ” (ainda e m de s e nv v e nt e s t s uport olim o) e e ainda s e rá am brangido.

Re pare q ue por e xe m pl o código Xam l o, não ne ce s s it do L t l de cl a igh Bue arado com o m e m bro de Col , ors é re conh e cido aut at om icam e nt . Ut izando e s t e xe m pl e il e o dado, pode m os t bém am m os t rar a de cl aração de e v nt . e os Ao adicionar o at ribut Cl =”buton_cl ” o ick t ick na t ag B t uton no código XAM L s e ria o e q uiv e nt a adicionar um e v nt q ue al e e o, e xe cut aria o m ét odo buton_cl s e m pre t ick q ue o ut izador cl s e no bot il icas ão criado. Es t adição, im pl a icaria a ne ce s s idade de j ar o XAM L com unt um a l inguage m proce dim e nt .NET al .

Exis t m ainda out f rram e nt prof s ionais e ras e as is para criação de cont údo W P, al as e F gum de s t t bém da M icros of. as am t M icros of Expre s s ion Be nd é um a das t l principais f rram e nt ut izadas para e s t s e as il e f at , principal e nt porq ue part h a o orm os m e il m e s m o s is t m a de f e iros q ue os proj ct e ich e os do V ualSt is udio, f it acilando o t rabalo e m h s im ul o no código e de s ign. t âne M icros of Expre s s ion D at t bém é out t a am ra f rram e nt M icros of q ue pe rm it criação de e a t e im age ns bit ap m e v ct e oriais com e xport ação para XAM L .

<7>

t m a de capa e

Sile rl t v igh
Conh e cido por W P / (W indow s P s e nt ion FE re at F oundat Ev ry w h e re ) Sile rl t é um a ion/ e , v igh v rs ão grat a e re duzida da pl af a e uit at orm W P com pat e l F ív com v ários brow s e rs e v ários s is t m as ope rat os , garant e iv indo as s im a com pat idade de apl ibil icaçõe s W P para F B s e r e m grande part dos s is t m as row e e e xis t nt s . Act m e nt j s uport W indow s , e e ual e á a L inux e M ac. Em com pe t ição dire ct ao Fas h pl e r da a l ay Adobe , e s t pl e ug-in t o m undo m ul édia raz t im do W P ao brow s e r F .

W CF of re ce o m ode l orie nt e o ado a s e rv iço, cons t ruído no t opo da pl af a .NET e at orm unif ica as dif re nt s capacidade s de e e s is t m as dis t e ribuídos , incl uindo s e rv iços w e b e s t icos , át m e ns age ns , t rans acçõe s e re m ot num a única AP. ing I W CF of re ce e um a nov a nam e s pace , ch am ada Sy s t m .Se rv M ode l q ue f e ice , orne ce as f rram e nt e as para al guns dos ce nários ut izados e m apl il icaçõe s dis t ribuídas : • e ns age ns , num único s e nt ou am bos M ido • am adas a proce dim e nt re m ot Ch os os • l Cal back s • s s õe s Se • gurança Se •rans acçõe s T •t e c W CF é um a e norm e e im port e AP, o lit ant I e or s e int re s s ado j pode e ncont e á rar al guns l ros q ue cobre m o as s unt (ne nh um e m iv o port uguês act m e nt ) ual e .

W indow s Com m unicat ion F oundat ion
W CF é o núclo das apl e icaçõe s com com unicaçõe s orie nt adas a s e rv iços para a pl af a W indow s . Es t cons t at orm á ruído no t opo dos s t andards de s e rv iços w e b e e s t á de s e nh ado para as ne ce s s idade s do s e rv ice orie nt d arch it ct e e ure (SO A) e s ofw are as a t s e rv ice (SA AS) A f os of por de t de s t s é . il ia rás e q ue o s ofw are de v s e r e s crit ut izando t e o il int rf s e ace q ue com unicam ut izando il prot ocol s t os andard. Se rv iços w e b f oram o ínicio de s t h is t a ória, onde l ógica dos ne gócios é im plm e nt e ada e m puro t xt bas e ado e m XM L ut izando e o, , il um a l inguage m ch am ada W e b Se rv ice D e s cript L ion anguage (W SD L. P ) rogram adore s pode m e nt ão ut izar um a m e ns age m num il f at ch am ado Sim pl O bj ct Acce s s orm o e e P ocol (SO AP q ue ut iza o XM L para rot ) il , com unicar com o s e rv iço. No e nt o ant s e rv iços w e b e s t l it ão im ados e não s uport am al as f gum uncional idade s com o s e gurança, re nt idade , abil e t rans acçõe s se m com pl icadas adiçõe s no m ínim o. W CF e s t de s e nh ado para pe rm it t á ir udo is t o e m uit m ais ;of re ce um a AP q ue pe rm it o e I e im plm e nt s e rv e ar iços s e m pre ocupação com e s t s de t h e s , l rt e al ibe ando t m po út para e il m e lor conce nt h ração na l ógica do ne gócio.

W indow s W ork fow F l oundat ion
W W F é m ais um a das nov as t cnol e ogias incl uída no .NET 3.0 e pe rm it de f , e inir e xe cut e ge rir fuxos de t ar l rabalo. Ut izando h il um fuxo de t l rabalo pode m os de cl h arar um program a com o um a s érie de pas s os com pos t de act idade s . Es t act idade s os iv as iv pode m s e r f m e nt criadas por código, acil e m arcação ou at és de out rav ras act idade s iv criadas . Exis t m inúm e ras v age ns e m ut izar e s t s e ant il e fuxos de t l rabalo ao inv de e s cre v r código. h és e Em prim e iro l ugar, para program adore s , fuxos l de t rabalo s ão m ais f is de e nt nde r do h áce e q ue código, porq ue fuxos de t l rabalo h of re ce m um a re pre s e nt e ação do proce s s o. Cons e q ue nt m e nt , f it o t e e acila rabalo q uando h o program ador pre cis a de m odif icar o fuxo l as s ociado a um proce s s o, q ue ge ral e nt não m e é nada f ácil para o program ador m odif icar no código.

<8>

t m a de capa e
Se m e lant ao W P, o W W F t bém ut iza h e F am il m arcação XAM L para de cl arar a e s t ura rut do fuxo de t l rabalo. Cont h udo, e s t a de cl aração t bém pode s e r f it por am e a código de um a das l inguage ns .NET . M ais inf ação s obre e s t t cnol orm a e ogia pode se r e ncont rada no s it e m s dn.m icros of.com / ork fow . t w l

O q ue é o CardSpace ?
CardSpace é o nom e de um a nov a t cnol e ogia do W indow s q ue s im plica e if m e lora a s e gurança de ace s s o a re curs os h e part h a de inf ação pe s s oal na il orm I e rne t CardSpace nt . aj uda a ge rir a inf ação pe s s oale a cont ar a q ue m orm rol e ssa inf ação orm é dada, re duzindo o núm e ro de problm as e as s ociados ao m ét odo t radicional de ut izador/ av il pal ra-ch av . e Em v z de f e orçar os ut izadore s a il lm brar um a q uant e idade e norm e de ut izadore s e pal ras -ch av , il av e o CardSpace f orne ce aos ut izadore s um il m ét odo m ais s e guro e q uiv e nt al e aos ut izadore s e il pal ras -ch av , av e ut izando il um conj o unt de cart s de ide nt icação v ual õe if irt q ue pode m s e r ace didos por um int rf . e ace Es t s cart s pode m s e r ut izados para f r e õe il aze l ogin ape nas com um cl ue e m w e bs it s iq e com com pat idade à t cnol ibil e ogia.

W indow s C ardS pace
H oj , a m aior part dos w e bs it s com o o e e e H ot ail e B m , ay, Am azon, P pal ut izam ay il um a com binação de nom e e pal raav ch av para garant ace s s o a inf açõe s e ir orm pe s s oais as s ociadas a um a cont Exis t m a. e dois problm as f e undam e nt ais com e s t e m ét odo de s e gurança. P e iro, rim ut izadore s s ão obrigados a criar e il re lm brar um a lt s e m pre a cre s ce r de e is a nom e s / av -ch av (t pal ras e ipicam e nt um a e com binação por cada w e bs it q ue v it . e is a) I t ge ral e nt ge ra prát so m e icas ins e guras , com o ut izar o m e s m o nom e e pal rail av ch av para v e ários w e bs it s , ou guardar e lt e m t xt ins e guro (de s e ncript is as e o ado) no com put ador ou pape l . Se gundo, nom e s de ut izador e pal ras il av ch av s ão s us ce pt e is a um a am e aça e m e ív cre s cim e nt de at ue s de f o aq raude de v árias f as , incl orm uído “ph is h ing”. At ue s aq P is h ing e nganam os ut izadore s pe dindo h il para f orne ce r as inf açõe s orm de ide nt icação a w e bs it s f if e raudulnt . e os Lv e am a v age m da incapacidade do ant ut izador conf ar a v idade do w e bs it il irm al e q ue v it . is am

Concl ão us
A M icros of e os s e us re ce nt s l t e ançam e nt os v ram nov e nt s ubir a f q uia na ie am e as program ação e m am bie nt s e W indow s . D e pois de um a pe q ue na e s im pls v it e is a guiada pe l principais int as roduçõe s na pl af a .NET 3.0, cabe at orm agora ao lit program ador pre parar-s e e or/ para os nov de s af q ue com is t v ch e gar os ios o ão .

<9 >

F ábio P dros a e

a program ar

Es t ís t at icas e m P P H 2ª P e art
D e pois de um a prim e ira part na e dição ant rior de s t re v t o art e e a is a, igo s obre a criação de e s t ís t at icas e m P Ps e rá concl H uído ne s t e dição. a

T abe l Re s um o as
A próxim a f unção irá ge rar um a t abe l de 3 col a unas com os re s pe ct os dados re s um o iv pre e nch idos . No e nt o e xis t m ais 3 t ant e abe l re s um o no Script Com plt q ue pe rm it ge rar as e o e re s um os com inf ação dif re nt . orm e e

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 t f a t rm ina-s e a Cl s e , e m bora o f e iro 's t is t .ph p' não e s t j f izado, j q ue a orm e as ich at ics e a inal á v s e r ace dido dire ct e nt pe l Cl s e Ch art para a ge ração dos gráf . H av rá q ue ai am e a as s icos e pre parar o f e iro para e s s as ope raçõe s . ich Se guidam e nt à Cl s e s e rá int e as roduzido o s e guint código: e

<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 s e ‘s t is t .ph p’ e s t a s e r ace dida e xt rnam e nt e s pe ra s e r ace dida at és as at ics á e e rav de um a v ariáv l e ‘graph ’ na URL Es t v . a ariáv l e pode t ar 4 v ore s , s e ndo e ls re s pe ct os aos om al e iv 4 gráf icos q ue re t orna. P ara cada um dos gráf icos é criada um a ins t anciação da cl s e , e proce de -s e à ch am ada as das f unçõe s q ue re t ornam o array de dados corre s ponde nt . Com e s s e array, e ut izando a e il f unção ‘Se ndCh art at ’ q ue f part da Cl s e Ch art é m os t D a() az e as s rado o gráf na página. ico T rm ina as s im o f e iro ‘s t is t .ph p’. e ich at ics

F unçõe s de dat as
No de corre r da Cl s e ‘s t is t .ph p’ ce rt e nt not q ue s ão ut izadas f as at ics am e ou il unçõe s q ue ainda não e s t de s e nv v ão olidas . Es s as f unçõe s v t ão rans f ar os f at de dat q ue ut izam os na orm orm os a il B e de D ados . as Com o na B e de D ados a dat e s t a s e r guardada no f at ‘A A A A-M M -D D ’ de f a a as a á orm o orm t ornar m ais univ rs al Script e e s t e o , arm os m ais h abit uados ao f at P uguês ‘D D -M M -A A A A’ orm o ort criam os um a f unção q ue inv rt a dat pre t ndida para o f at Am e ricano. e e a e orm o Cria-s e e nt o f e iro re s pons áv l l v ão ich e pe o ários t am e nt ne ce s s ários às dat ut izadas no rat os as il s cript O f e iro a criar t rá o nom e de ‘dat _f . ich e e unct .ph p’. ions

<12>

a program ar
<?php function date_validation ( $date_to_check ) { $valid = true; if ( ( substr_count ( $date_to_check , "/" ) ) != 2 ) { $valid = false; }

P ara v rif e icar s e um a dat é v ida irá proce de r a um a s érie de t s t s , o prim e iro irá v rif a ál e e e icar s e a dat int a roduzida t m ape nas duas barras “/ Cas o t nh a m ais ou m e nos q ue 2 barras , e nt e ”. e ão e s t os pe rant um a dat inv ida. am e a ál
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º t s t v rif e e e ica-s e s e a dat cont a ém ape nas núm e ros com o f at de ‘D D -M M -A A A A’. orm o Cas o s e j um a condição v rdade ira, s e para a dat e m 3 t rm os , s e ndo e ls : o dia, o m ês e o a e a e e ano.
if ( ( $year < 1900 ) || ( $year > 2200 ) ) { $valid = false; } elseif ( $month > 12 ) { $valid = false; }

Se o ano f inf rior a 19 00 ou s upe rior a 2200, ou o m ês f s upe rior a 12 e s t pe rant um a ôr e ôr á e dat I ál a nv ida. Se guidam e nt v t s t os dias pos s ív is de t r nos v e ai e ar e e ários m e s e s do ano.
else { switch ( $month ) { case 2: // Fevereiro if ( $day > 29 ) { $valid = false; }

Se o dia f s upe rior a 29 no m ês de F v re iro e nt t rá um a dat inv ida. ôr e e ão e a ál
elseif ( ( $day == 29 ) && ( $year % 4 != 0 ) ) { $valid = false; } break;

<13>

a program ar
Se t e r s ido int iv roduzido o dia 29 , m as o ano não f bis s e xt e nt a dat int ôr o ão a roduzida é inv ida. ál
case case case case if 4: // Abril 6: // Junho 9: // Setembro 11: // Novembro ( $day > 30 ) { $valid = false;

} break;

P ara t odos os m e s e s q ue t êm 30 dias (AbrilJunh o, Se t m bro, Nov m bro) s e o dia int , e e , roduzido f m aior q ue 30 é e nt um a dat inv ida. ôr ão a ál

case case case case case case case if

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

} break; }

Se o dia f s upe rior a 31 nos re s t e s m e s e s (Jane iro, M arço, M aio, Julo, Agos t O ut ôr ant h o, ubro, D e ze m bro) é t bém um a dat inv ida. am a ál
} } } return $valid; }

Se e m q ualue r al dos t s t s s e v rif q t ura e e e icar q ue a dat é inv ida o e s t a ál ado da v ariáv l v id’ e ‘$ al pas s a a ‘f s e ’ indicando as s im q ue a dat é inv ida. Se a dat pas s ar por t al a ál a odos os t s t s com e e condição pos it a e nt o re t iv ão orno da v ariáv le rá ‘t ’. e s rue f unct ch ange D at ( $ ion e input at ) { D e $ pl = e xpl ( "" $ s it ode /, input at ) D e ; $ put at = " . $ pl[2] "". $ pl[1] "". $ pl[0] out D e " s it . / s it . / s it ; re t $ put at ; urn out D e } Com a f unção ‘ch ange D at () proce de -s e e nt à al ração do f at da dat t com o j e ’ ão t e orm o a al á f re f rido ant riorm e nt . oi e e e

<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 principal s cript e xis t a pos s ibil do e idade do ut izador s e lccionar as dat q ue pre t nde . il e as e No e nt o, por de f it e s s as dat e s t pre e nch idas com um a s e m ana ant rior ao dia act . ant e o as ão e ual Ne s t f a unção v rif e ica-s e q ual o dia act é ual guarda-s e e s s a dat v rif e a, e ica-s e o q ual dia h á o um a s e m ana at de s s a dat e re t rás a ornam -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
De f a a t orm ornar m ais s im pls a int gração do s cript e m q ualue r página, cria-s e um a f e e q unção q ue pe rm it criar o f ul de s e lcção do int rv o de dat . e orm ário e e al as T rm ina e nt a criação do f e iro ‘dat _f e ão ich e unct .ph p’. ions

L igação à B e de D ados as
P ara ace de r à inf ação re l iv à bas e de dados de f a rápida e e f nt cria-s e um orm at a orm icie e f e iro ‘conne ct ich ion.ph p’ q ue s e rá guardado na raiz do w e bs it . Es t f e iro t rá t e e ich e odas os dados re lv e s à l e ant igação da B e de D ados ut izada para o bom f as il uncionam e nt do s cript o .
<?php $hostname = $database = $username = $password = $connection "localhost"; "nome_da_bd"; "utilizador"; "password"; = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);

?>

P ágina principal
Agora q ue e s t cons t á ruído o s cript f t ape nas pô-l a t , al a o rabalar h .
<?php include ( "statistics.php" ); include ( "date_functions.php" ); $statistics = new Statistics; $statistics -> saveStatistics ( ); ?>

Es t s e rá o código q ue de v rá s e r col e e ocado e m t odas as páginas q ue q ue ira incl no s is t m a uir e de e s t ís t at icas . Ape nas e s t código s e rá re s pons áv lpe l re cola de dados do v it e , e e a h is ant guardando-os na bas e de dados para pos t rior t am e nt e rat o. Agora para re al a página de re s um o das e s t ís t izar at icas :
<?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' ]; } ?>

Col oca-s e e s t bl de código no t e oco opo da página q ue q ue ira v r incl e uída no s is t m a, ant s do e e código H TM L Es t conj o de código s e rá re s pons áv lpor t s t s e o ut izador j int . e unt e e ar il á roduziu dat , ou s e de v rá s e r ut izado as dat por de f it as e il as e o. As dat q ue o ut izador e v nt m e nt t nh a int as il e ual e e roduzido s e rão v idadas e ape nas s e rão al ut izadas cas o s e v rif ue m v idas , de out f a s e rão ut izadas as dat por de f it il e iq ál ra orm il as e o. D e s e guida s ão de m ons t radas as ins t ruçõe s para com plt a página com : e ar

M e nu de int rodução de dat as
<?php echo date_interval_form ( $begin_date , $end_date ); ?>

G ráf de T al v it por dia ico ot de is as
<?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 v it is adas
<?php echo $statistics -> getPageVisits ( $begin_date , $end_date ); ?>

Concl ão us
T rm ina-s e de s t f a e s t t orial s o-a-pas s o q ue pe rm it de um a f a s im pls , conh e ce r e a orm e ut pas e orm e as inf açõe s e s s e nciais de um v it e t com o, P , de onde v orm is ant ais aís êm e nt out . re ras Exis t m um a ‘inf e inidade ’ de s is t m as on-l q ue pe rm it m cont ar as v it a um w e bs it de e ine e rol is as e f a ef orm icaz, com o por e xe m pl o G oogl Analt , m as o de f it de s t s s is t m as , é a o, e y ics e o e e q uant idade e xce s s iv de inf ação de s ne ce s s ária para um a v ual a orm is ização rápida. A e norm e v age m de s t s is t m a é a pos s ibil ant e e idade de s e r t al e nt int grado num w e bs it , ot m e e e q ue s e t raduz num a m ais v ia, pois o ut izador pode rá opt por part h ar a inf ação com al il ar il orm t odos os v it e s do s e u w e bs it ou m ant r e s t inf ação num a áre a de ace s s o re s e rv is ant e e a orm ado. Q ue m q uis e r f r aze dow nl oad do s cript h tp:/w w w .nul s ign.onl .ptproj cte s t is t t / l de ine / e / at icas /. com plt e o pode ace de r a

<17>

B runo V az

a program ar

JNI Jav Nat e a iv I e rf nt ace
Jav Nat e I e rf a iv nt ace (JNI é um ) f e w ork de program ação q ue ram pe rm it o código e xe cut e ado pe l Jav a a V ual M ach ine irt ch am ar e s e r ch am ado por apl icaçõe s nat as (apl iv icaçõe s e s pe cíf icas para um h ardw are e s is t m a e ope rat o) iv e por bibl e cas e s crit iot as e m out ras l inguage ns , t com o C, C+ + , ais D e l i e As s e m bl ph y.
Com o t odos os f e w ork s JNI ram t bém t m as s uas im pl am e icaçõe s , o us o do JNI col oca e m ris co dois be ne f ícios da pl af a Jav at orm a. P e iro as apl rim icaçõe s Jav q ue a ut izam JNI f il icam de pe nde nt s do e am bie nt de e xe cução, cont e rário de Jav a puro q ue pode se r e xe cut ado e m m úl os am bie nt s t ipl e com JNI a part nat a t m de s e r e iv e re com pil ada e m cada um dos am bie nt s de e xe cução, pe rde ndo e a port idade do Jav abil a. Se gundo a l inguage m de program ação Jav a é um a l inguage m t pe -s af e y e s e gura, ao cont rario das l inguage ns nat as iv com o C ou C+ + q ue não s ão s e guras .

P e s t razõe s o us o de JNI de v s e r f it or as e e o de f a cuidada e ape nas cas o não s e j orm a pos s ív l im plm e nt e e ar ape nas com a l inguage m Jav a. D e pois de s t bre v int a e rodução v os am pas s ar e nt à prát ão ica, v os v r q uais os am e pas s os ne ce s s ários para a criação de um program a e m Jav com JNI a .

<18>

a program ar
D e pois de v rm os o pe rcurs o a pe rcorre r e v os com e çar com a im plm e nt am e ação da cl s e H e l orl av as l oW d.j a
public class HelloWorld{ private native void print(); public static void main(String args[]){ new HelloWorld().print(); } static{ System.loadLibrary("HelloWorld"); } }

Com o pode m os v r na l a 15 é e inh de cl arado o h e ade r para o m ét odo nat o iv q ue ire m os im plm e nt , v os us ar e s s a e ar am h e ade r para criar o f e iro de código ich nat o (H e l orl , com o pode m os v r iv l oW d.c) e e m s e guida.
#include <jni.h> #include <stdio.h> #include "HelloWorld.h" JNIEXPORT void JNICALL Java_HelloWorld_print(JNIEnv *env, jobject obj){ printf("Hello World!\n"); return; }

Na l a 3 f de cl inh oi arado o m ét odo nat o iv print e nas l as 9 e 10 é dit ao Jav para inh o a carre gar o bibl e ca “H e l orl iot l oW d”, q ue v os criar de pois de re al am izar m ais al guns pas s os . Em s e guida v os com pil a cl s e am ar as criada : j ac H e l orl av av l oW d.j a. D e pois de obt rm os e o f e iro ich H e l orl as s v os us ar a f rram e nt l oW d.cl am e a j ah do Jav para criar o f e iros h e ade r av a ich (H e l orl ) com o com ando j ah -j l oW d.h , av ni H e l orl l oW d v os am obt r e o f e iro ich H e l orl com o s e guint cont údo. l oW d.h e e
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class HelloWorld */ #ifndef _Included_HelloWorld #define _Included_HelloWorld #ifdef __cplusplus extern "C" { #endif /* * Class: HelloWorld * Method: print * Signature: ()V */ JNIEXPORT void JNICALL Java_HelloWorld_print (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif

Se obs e rv arm os v os v r q ue a l a 15 do am e inh f e iro H e l orl é prat ich l oW d.h icam e nt igualao e código na l a 5 do f e iro H e l orl inh ich l oW d.c. Agora q ue j dis pom os de t á odos os f e iros ich ne ce s s ários “H e l orl av l oW d.j a”, “H e l orl as s ”, l oW d.cl “H e l orl ” l oW d.h e “H e l orl l oW d.c” v os am criar a nos s a bibl e ca nat a. V os v r com o o f r iot iv am e aze e m dif re nt s s is t m as ope rat os . e e e iv L inux com G CC
gcc -fPIC -I jdk/include -I jdk/include/linux -shared -o libHelloNative.so HelloNative.c

Sol com Sun Com pilr aris e cc -G -I j / ude -I j / ude / ol -o dk incl dk incl s aris l el ibH l oNat e .s o H e l iv l oNat e .c iv W indow s com M S C+ + Com pilr e
cl -I jdk\include -I jdk\include\win32 -LD HelloNative.c FeHelloNative.dll

O nde j é o cam inh o para a pas t de dk a ins t ação do Jav al a.

<19 >

a program ar
V os agora v r com o re al a pas s age m am e izar de dados e nt Jav e C at és do JNI P re a rav . ara is s o criam os um pe q ue no program a e m q ue v os im prim ir um a pe rgunt us ar a f am a, unção s canfdo C para re cole r o input e re t h orná-l o para o Jav com o um O bj ct St a e o ring. P ara is s o v os com e çar cl pe l criação do am aro a f e iro P pt av ich rom .j a.
public class Prompt{ private native String getLine(String prompt); public static void main(String args[]){ Prompt p = new Prompt(); String input = p.getLine("Qual o seu nome ? "); System.out.println("Escreveu : " +input); } static{ System.loadLibrary("Prompt"); } }

At é aq ui não h á nada de nov o re l iv e nt ao H e l orl im plm e nt at am e l oW d e ado ant riorm e nt , as nov e e idade s e nt ão agora na im plm e nt e ação do f e iro P pt ich rom .c q ue v cont r al as nov ai e gum idade ao nív l e de JNI e no t am e nt de St rat o rings e m JNI -C. V os e nt am ão im plm e nt e ar o s e guint e código.
#include <stdio.h> #include <jni.h> #include "Prompt.h" JNIEXPORT jstring JNICALL Java_Prompt_getLine(JNIEnv *env, jobject obj, jstring prompt){ char buf[128]; const jbyte *str; str = (*env)->GetStringUTFChars( env,prompt,NULL); if(str == NULL){ return NULL; } printf("%s",str); (*env)->ReleaseStringUTFChars( env,prompt,str); scanf("%s",buf); return (*env)->NewStringUTF(env,buf); }

Em s e guida v os ge rar o f e iro P pt am ich rom .h q ue irá cont r al s e m e lant a e s t : e go h e e
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class Prompt */ #ifndef _Included_Prompt #define _Included_Prompt #ifdef __cplusplus extern "C" { #endif /* * Class: Prompt * Method: getLine * Signature: (Ljava/lang/String;) * Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_Prompt_getLine(JNIEnv *, jobject, jstring); #ifdef __cplusplus } #endif #endif

Com o pode m os v r na l a 5 nos e inh argum e nt os do m ét odo para al ém das v ariáv is de am bie nt q ue por de f it s ão e e e o col ocadas , ne s t cas o f adicionada m ais e oi um a a v ariáv lprom pt do t e ipo j t s ring q ue corre s ponde à St ring dada com o argum e nt o da cl s e Jav Com o o C não t m o O bj ct as a. e e o St ring com o o Jav v os t r de pas s ar a a am e St ring para out f a t ra orm rabaláv l m JNI h e e -C, para is s o é criada um a v ariáv lapont e ador do t ipo j t , q ue de um a f a bás ica é o by e orm by t do JNI da m e s m a f a q ue o j t e orm s ring é a St ring do JNI O pas s o f . inal para f r a aze conv rs ão é us ar a f e unção do JNI G e t ringUTF ar q ue re t St Ch orna um a cópia da St ring dada no s e gundo argum e nt (l a 10) o inh e as s im a v ariáv l t v f e s r ai icar com o v or da al St ring dado com o argum e nt ao m ét o odo ge t ine . L

<20>

a program ar
D e pois de s t proce dim e nt bas t ut izar a e o a il f unção print do C para im prim ir a St f ring e para t rm inar o proce s s am e nt da St e o ring v os us ar a f am unção Re las e St e ringUTF ars Ch (l a 17) q ue v l rt a m e m ória us ada inh ai ibe ar para guardar a St ring, at nção q ue e s t e e m ét odo ape nas de v s e r ut izado de pois de e il t re m t rm inado t e e odas as ope raçõe s na St ring. V os agora para f izar o nos s o program a am inal capt urar o input do ut izador at és da il rav f unção s canf(l a 18) e guardar o input s ob inh a f a de St orm ring no array de ch ar de f inido na l a 7, e m s e guida bas t conv rt r o inh a e e array de ch ar para um O bj ct St e o ring e re t orná-l para o Jav para is s o v os us ar o a, am af unção Ne w St ringUTFcom o pode m os v r na e l a 19 . Ao e xe cut e s t e xe m pl o q ue v inh ar e o ai acont ce r s e rá um int rcâm bio de dados e e bas t e s im pls , o Jav e nv um a St ant e a ia ring q ue é im pre s s a pe l C, e m s e guida a f o unção s canf v capt ai urar o input do ut izador e irá il re t ornar e s s e input para o Jav q ue o irá a im prim ir com o m ét odo printn() l . P s am os agora ao t am e nt de array s de as rat o Jav para C, para is s o v os im plm e nt o a am e ar s e guint código. e
public class IntArray{ private native int sumArray(int [] arr); public static void main(String args []){ IntArray p = new IntArray(); int arr[] = new int[10]; for(int i = 0; i < 10; i++){ arr[i] = i; } int sum = p.sumArray(arr); System.out.println("sum = "+ sum); } static{ System.loadLibrary("IntArray"); } }

Com o pode m os vr e o código im plm e nt e ado v ai criar um array com 10 pos içõe s e v ai pre e nch e l com os as núm e ros de 0 a 9 , e m s e guida v e xe cut ai ar o m ét odo nat o s um Array q ue v s om ar iv ai t odos os v ore s pre s e nt s no array e v al e ai re t ornar o t al s om a. ot da V os agora pas s ar à im plm e nt am e ação do m ét odo nat o e para is s o v os com e çar iv am com o s e m pre por ge rar o f e iro I Array.h . ich nt

/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class IntArray */ #ifndef _Included_IntArray #define _Included_IntArray #ifdef __cplusplus extern "C" { #endif /* * Class: IntArray * Method: sumArray * Signature: ([I)I */ JNIEXPORT jint JNICALL Java_IntArray_sumArray(JNIEnv *, jobject, jintArray); #ifdef __cplusplus } #endif #endif

Ao v rm os os argum e nt e os do m ét odo pode m os v rif e icar q ue e s t agora pre s e nt á e um j Array q ue corre s ponde ao array de int int iros do Jav q ue é dado com o e a argum e nt na ch am ada do m ét o odo.

<21>

a program ar
Agora o código nat o do nos s o m ét iv odo. O JNI t m e nt e re out ras um a f unção bas t e im port e para o t am e nt de ant ant rat o array s , t a-s e da f rat unção G e t Array L ngt e h q ue com o o próprio nom e indica re t orna o t anh o de um array, e s t f am a unção pode s e r us ada da s e guint f a : e orm

#include <jni.h> #include <stdio.h> #include "IntArray.h" JNIEXPORT jint JNICALL Java_IntArray_sumArray(JNIEnv *env, jobject obj, jintArray arr){ jint jint jint carr *carr; i = 0; sum = 0; = (*env)->GetIntArrayElements( env,arr,NULL); if(carr == NULL){ return 0; } for(i = 0; i < 10; i++){ sum += carr[i]; } (*env)->ReleaseIntArrayElements( env,arr,carr,0); return sum; }

jsize len = (*env)->GetArrayLength( env, arr);

Concl ão us
E com is t e nce rram os e s t art o e igo s obre Jav Nat e I e rf , com o pode m v r é a iv nt ace e um f e w ork m uit pode ros o m as m as ram o q ue de v s e r ape nas us ado com o re curs o e à f t de out re curs o por part do Jav al a ro e a ou no cas o de criação de nov as bibl e cas . Em t iot odo o cas o de v s e r e ut izado com bas t e cuidado v t t aril ant is o rat s e de program ação não s e gura.

Analando o código pode m os v r q ue na is e l a 7 é criado um apont inh ador do t ipo j int q ue v s e r us ado para guardar o array dado ai com o argum e nt ao m ét o odo, para is s o us am os a f unção G e t <Tipo> Array Elm e nt e s e m q ue o <Tipo> é s ubs t uído ne s t cas o it e por I , e s t nt a f unção v ai re t ornar um apont ador para o array dado com o argum e nt com o s e pode v r na l a 10. o e inh Nas l as 15 a 17 é e xe cut inh ado um cicl f , o or() q ue f a s om a de t az odo o array e guarda o v or na v al ariáv l s um pre v e iam e nt criada. e D e pois dis t o bas t a us ar a f unção Re las e <Tipo> Array Elm e nt para l rt o e e s ibe ar apont ador q ue cont ém o array (l a 19 ) e inh por f na l a 21 v os re t im inh am ornar a s om a.

<22>

F ábio Corre ia

a program ar

L UA L inguage m de P rogram ação
P av l e nt s e o lit ouv al rov e m e e or ir guém f ar e m L al UA, irá l ogo pe ns ar no pl t s at it q ue o as t ane a éle ronaut Ne il a Arm s t rong t v o priv égio de pis ar e e il pe l prim e ira v z. No e nt o ne s t a e ant e art igo ire m os f ar de al al go be m dif re nt , m ais ao al e e cance de um a pe s s oa com um …

Q ue m não s e lm bra do grande t ul de e ít o j ogo “Es cape f rom M onk e y I l s and” na década de 9 0. P av l e nt o q ue o rov e m e lit não s abe é q ue L f ut izada ne s s e e or UA oi il j ogo para o de s e nv v e nt olim o da program ação re s pons áv l l cont o da e pe o rol pe rs onage m principal t , odos os cál os cul ne ce s s ários à m ov e nt im ação das pe rs onage ns e ram re al izados at és de rav s cript e m L s UA. Com a e nt rada no m undo dos j ogos , a rapide z e port idade da l abil inguage m de s pe rt a at nção de out ou e ras Ent idade s . O s Es t ados Unidos da Am érica f a próxim a oi conq uis t t ndo inúm e ras Em pre s as do a, e P ue I arq ndus t rialde Sil icon V ly opt al e ado pe l L para de s e nv v r grande part do a UA ole e s e u s ofw are . t P t riorm e nt a af ação f os e e irm inalde L é UA cons ol idada com a int racção dos e s is t m as do program a e s pacialda NASA e e com al guns dos proj ct int rnos .NET da e os e M icros of. t M ais inf ação e m : orm P ágina of icial L da inguage m L UA h tp:/w w w .l t / ua.org T cgraf e h tp:/w w w .t cgraf t / e .puc-rio.br/

H is t ória e Caracat rís t e icas
A L f de s e nv v UA oi olida e m l íngua P ugue s a ort por um a e q uipa de program adore s do de part e nt am o T cgraf da Univ rs idade e e Cat ica do Rio de Jane iro, e m código ope nól s ource . O obj ct o inicialoi a ge s t de um e iv f ão proj ct indus t da P t e o rial e robras . G raças à s ua port idade , f idade de abil acil apre ndizage m , rapide z e ef iciência, rapidam e nt cre s ce u para out e ras áre as de program ação, e s t ando act m e nt a f r ual e aze part de apl e icaçõe s inf át orm icas de grande port . e A L é um a l UA inguage m de program ação proce duraldo géne ro de P cal C, P t on, as , yh P P Cobol e nt H , , re out . P ras or e s t f o e act q ualue r program ador t rá um a curv de q e a apre ndizage m curt e rápida. No e nt o a a ant m aior v age m da L ant UA é t v z a s ua ale e norm e port idade abil q ue le h pe rm it e int racção com q ualue r out l e q ra inguage m de program ação ou s is t m a ope rat o. e iv Com a s ua s int axe s im pls , q ualue r s cript é e q de de s e nv v e nt rápido, e com um m e nor olim o t m po de proce s s am e nt t v z t nh a s ido e o, ale e e s t caract rís t a e ica q ue cat ou a grande iv Em pre s a de Jogos para P “L C ucas Art ”. s

A e v ução de L ol UA
Com um cre s cim e nt bas t e ace nt o ant uado, cada v z m ais program adore s t e ram a e iv curios idade de lr e s e inf ar o porq uê e orm de t o se ant ouv ir f ar e m al L UA. Rapidam e nt os grupos de de bat da e e com unidade f oram aum e nt ando e os proj ct e os nov os s urgiam a um a rapide z al ucinant . P t e or udo is t a e v ução de L o ol UA t ria de pas s ar por al q ue s e t e go ornou indis pe ns áv l no nos s o dia-a-dia… . a e I e rne t Capaz de de s e nv v r W e bs it s nt . ole e com plt at és da bibl e ca CG I L e e os rav iot / UA L uaSQ L . I agine o q ue s e rá de s e nv v r um w e bs it m ole e com plt e nt e m CG I L e am e / UA (e q uiv e nt al e para a L UA, t com o o IS é para o ASP al I ) com re curs o a L uaSQ L .

<23>

a program ar
Com o B -e nd com pil ack ado e m ANSI C ou L pré-com pil ua ado, s e um dia de cidir t rocar o s e rv idor de W indow s para Sol aris por e xe m pl não s e rá ne ce s s ário de s e nv v r a o, ole pl af a t at orm oda de nov bas t re com pil o o, a ar código C e conf igurar o nov W e bs e rv r o e . M ais inf ação e m : orm M ódul L para o Apach e o ua h tp:/os s .digirat t / i.com .br/ od_l 1.0/ m ua/ Pat orm a de D e s e nv v e nt de l af olim o apl icaçõe s W EB e m L h t UA t / w w .k e plrproj ct p:/w e e .org/ Al am e nt de proj ct e m L h t oj o e os UA t /uaf p:/l orge .ne t / Com unidade de ut izadore s L t il UAh t p:/l /ua-us e rs .org/

At ribuição m úl a de v t ipl ariáv is e

D e f a a m axim izar o código, com a L orm UA pode m os f r at aze ribuiçõe s m úl as de t ipl v ariáv is : e
n, i = “Olá, Mundo” , 2;

F icando de s t f a a v a orm ariáv ln com a e st ring “O l M undo” e a v á ariáv li com o e v or “2”. al T roca de v ore s e nt at al re ribuiçõe s m úl as t ipl É pos s ív lno e nt o a at e ant ribuição m úl a t ipl com t roca de v ore s e nt v al re ariáv is : e
a, b = b, a;

A program ação
Com o e s t art e igo não pre t nde de m ons t a e rar t al ot idade da l inguage m de program ação L UA, m as s im abordar as principais caract rís t e icas q ue t ornam e s t l a inguage m única, re com e nda-s e a lit e ura do m anual m e h tp:/w w w .l t / ua.org . T al com o e xis t no JAV a Jav V ual e A a irt M ach ine , t bém L t m al pare cido, am UA e go q ue t m o nom e de Am bie nt G l e e obalÚnico, e s t am bie nt guarda t e e odas as v ariáv is e gl obais e de f iniçõe s de f unçõe s . É aut at om icam e nt e act ado iv q uando o int rpre t e ador é inicial izado, e e s t act o á iv durant t e oda a e xe cução do s cript O . Am bie nt G l e obal Único é m anipul ado ape nas por código e s crit e m L ou por bibl e cas o UA iot e m C, q ue ut ize m f il unçõe s da int rf e ace C-L ua.

F ndo com q ue a re ce ba o v or aze al ant riorm e nt arm aze nado por b e q ue b, e e re ce ba o v or ant riorm e nt arm aze nada al e e por a, s e m ne ce s s idade de v ariáv is e t m porárias . I agine o q ue s e rá os v los e m e h al m os de bubbls ort para orde nação gorit e de dados com e s t v age m . a ant

Concat nação e

P ara s e pode r concat nar v e ariáv is com e cont údos s t e ring ut iza-s e o ope rador “..”: il
a = “Olá”; b = “, Mundo”; z = a .. b;

Re s ul t ado e m z s e rá “O l M undo”. á,

V ariáv is L e ocais

Q uando s e e xe cut cicl (if l ..e nd, a os ..e s e re pe at ..unt , do..w h il, e t il e c..) e xis t e a pos s ibil idade de criarm os v ariáv is l e ocais dis ponív is ape nas de nt de s s e cicl e ro o.
a = 2; if a > 0 then local a = ( a + 2 ) * 5; print( a ); end print( a );

V ariáv is e
T com o acont ce e m P P ou P t on as al e H yh v ariáv is gl e obais não pre cis am de s e r de cl aradas , bas t ut izar al do géne ro: a il go
a = 2.3;

É im port e re f rir q ue as v ant e ariáv is gl e obais não t êm t ipos de dados de f inidos , ape nas o cont údo de f o t e ine ipo de v ariáv l e xis t e , indo se t t e ipos bás icos : nilnum be r s t , , ring, f unct ion, cf unct ion, us e rdat e t e . a abl

O re s ul t ado do prim e iro print é 20 e do s e gundo print é 2. Com e s t caract rís t a e ica de L UA, pode m os criar um a v ariáv lq ue e ape nas dura e nq uant o cicl e xis t o o ir, pode ndo re al izar as ope raçõe s q ue q uis e rm os m e s m o q ue a v ariáv lt nh a o e e nom e igual e q uando s airm os do cicl a , o v ariáv l e original cont inua com o v or inicial al .

<24>

a program ar
M úl o re t t ipl orno e m f unçõe s
D a m e s m a f a q ue é pos s ív l re al orm e izar m úl as at t ipl ribuiçõe s e m v ariáv is pode m os e t r m úl os re t e t ipl ornos de um a f unção e al a iar m úl as v t ipl ariáv is : e
function num_anterior_e_seguinte ( x ) anterior = x -1; seguinte = x +1; return anterior , seguinte; end num_actual = 5; anterior, seguinte = num_anterior_e_seguinte( num_actual );

I t ação e am bie nt ns al e de s e nv v e nt olim o

de

Ne s t f e o lit ce rt e nt de v e s t a as e or am e e ar de s e j o de e xpe rim e nt a L Ent v os os ar UA. ão am prim e iro proce de r à ins t ação. P al ara pode r ins t ar o Am bie nt G e ral al e Único de L de v rá UA e re al o dow nl do I e rpre t izar oad nt ador e m : h tp:/prdow nl t / oads .s ource f orge .ne tl /uach e ia/ l uach e ia5-w in32-5.0.1a5.e xe ? nl dow oad Exis t m v e árias opçõe s e v rs õe s de dow nl e oad, no e nt o v o-nos ce nt ant am rar na ins t ação al para W indow s . Após re al o dow nl izar oad do int rpre t e ador v os e nt am ão ins t ar a L al UA m ant ndo o dire ct e ório s uge rido por de f it e o (c:\l uach e ia\) Após al . guns cl ue s m ais , e iq e s t os apt a program ar e m L am os UA. P ara de s e nv v r código e m L q ualue r e dit de ole UA q or t xt s e rv o propós it at m e s m o o s im pls e o e o, é e bl oco de not (Not pad) do W indow s , no as e e nt o s ugiro a ut ização do f os o I E ant il am D Ecl e e a ins t ação do m ódul L ips al o uaEcl e ips e m : h tp:/l cl e .l orge .ne tbr/ t /uae ips uaf / inde x.h t l m .

Com e s t código pode m os f r us o de um a e aze f unção q ue nos irá re t ornar os núm e ros q ue ant ce de e s e gue o int e roduzido na f unção. O re s ul t ado s e rá: a v ariáv l e rior irá cont r o e ant e núm e ro 4 e a v ariáv ls e guint irá cont r o e e e núm e ro 6.

Re curs iv idade

Em l inguage ns proce durais a re curs iv idade é por v ze s m uit ut izada, o s e u us o e m L é e o il UA al s im pls e rápido o q ue t go e orna a s ua ut ização m uit grande : il o
function factorial( n ) if n == 0 then return 1; else return n * factorial( n -1 ) end end

O prim e iro s criptde L UA
P ara f rm os cum prir a t aze radição o nos s o prim e iro s cript s e rá o f os o “O l M undo!” am á apare ce r no nos s o e crã. P ara t abrim os o al Boco de not do W indow s e incl os o l as uím s e guint código: e
print( “Olá Mundo!” );

Com a ut ização de s t f il a unção pode -s e v rif e icar q ue a ut ização da re curs iv il idade é al go s im pls de im plm e nt P e e ar. ara program adore s de Jav e s t caract rís t a a e ica não é inov adora, m as e m grande part de l e inguage ns de program ação, a re curs iv idade de f unçõe s é al q ue ainda não e xis t , obrigando os go e program adore s a um e s f orço e xt no código ra para re al o m e s m o obj ct o. izar e iv M ais inf ação e m : orm M anual L da inguage m L 5.0 (ENG ) UA h tp:/w w w .l t / ua.org/t re f an-5.0.pdf fp/ m M anual L da inguage m L 3.1 (P UA T) h tp:/w w w .l t / ua.org/t nocoe s -3.1.pdf fp/

E e s t concl á uído o nos s o s cript Sim pls , não . e é? Ao cont rário de v árias l inguage ns q ue nos obrigam a s e guir um a e s t ura, e m L rut UA t udo é e m f unção da rapide z… s e j e l de a a proce s s am e nt ou de s e nv v e nt o olim o. No f de guardar na pas t C:\l im a uach e ia\ e de ace de r pe l D O S (e s cre v ndo cm d no o e m e nu e xe cut ar) bas t a e s cre v r cd e \l uach e ia\ s e guido de l uach e ia5 ol undo.l E apare ce -nos no e crã O l am ua. á M undo!. O ut izador agora ape nas t m de dar il e l argas à s ua im aginação e com e çar a de s e nv v r e m L ole UA.

<25>

B runo V az

a program ar
Ne s t s e nt e ido, e s t com plm e nt do H TM L e e o t orna a t f do program ador bas t e are a ant m ais s im plicada, v t q ue e s t pode if is o e al rar proprie dade s de v t e árias páginas , al rando ape nas um re s pe ct o cam po na t e iv f h a de e s t os . ol il

CSS: Cas cading St l ye Sh e e t
I rodução nt
H oj e m dia, com a gl ização das e obal t cnol e ogias e s obre t udo da I e rne t poucos nt , s ão aq ue ls q ue nunca cons ul e t aram um a página w e b. T odav a s ua grande m aioria ia, não im agina com o é e l aborada, e m uit o m e nos q ue por de t rás daq ue l be l a a aparência e xis t , principal e nt , um a e m e l inguage m de program ação ch am ada H TM L Cont . udo, e s s a l inguage m , um a v z e q ue f conce bida para us os dif re nt s dos oi e e act , pos s ui al as l it uais gum im açõe s , e m uit a da “be lza” q ue e l proporciona m uit s e e a o de v ao s e u al e iado CSS.

Re gras e Sint axe
Um a f h a de e s t os não é m ais do q ue um ol il conj o de re gras CSS. P s e u t unt or urno, um a re gra CSS é um a de cl aração com um a s int axe própria cons t uída, na s ua f a it orm m ais s im pls , por t e rês part s : um e s e lccionador (e lm e nt H TM L ide nt icado e e o if por um a t ag, cl s e , id, e t à q uals e rá as c, apl icada a re gra e m q ue s t ão – e xe m pl o: <body > , <h 1> , .m inh acl s e ) as , um a proprie dade (q ual idade à q ual v ai s e r apl icada a re gra – e xe m pl f , borde r o: ont , col – no e lm e nt H TM L e um v or or e o ) al (caract rís t e ica adopt ada pe l proprie dade a –e xe m pl lt t o: e ra ipo v rdana, l a dupl e inh a, f undo branco) com o s e e xe m plica de , if s e guida:
seleccionador { propriedade: valor; }

O q ue é?
O CSS é, e nt ão, a s igl ingls a de a e Cas cading St l Sh e e t q ue e m port ye , uguês s ignif ica f h a de e s t o e m cas cat e é ol il a, nada m ais do q ue um m e canis m o para adicionar e s t os (core s , e s paçam e nt , il os av anços , t ipos de lt back grounds , e t e ra, c) aos docum e nt w e b. P out os or ras pal ras , av pode m os dize r q ue e nq uant o H TM L t m o e com o f unção e s t urar rut os t xt , e os cabe çalos , h bot s , õe t abe l , as l s, ink im age ns , ou s e j o cont údo da página, o a, e CSS e ncarre ga-s e de de f inir as core s , o pos icionam e nt o e s t o das l as , is t é, o, il inh o t udo q ue diz re s pe it ao v ual o is da m e s m a. P s ua v z, e s t t f de e s t ização, or e a are a il inde pe nde nt m e nt da f a de de f e e orm inição (e xt rna, incorporada ou inl ) é s e m pre e ine f it apart do H TM L porção e s t q ue e a e , a cont ém t odas as re gras de e s t o para os il e lm e nt do docum e nt e os o.

Com o pode m os v rif , na s int e icar axe de um a re gra CSS prim e iro e s cre v -s e o e s e lccionador e , e pos t riorm e nt e e a proprie dade e o v or s e parados por dois al pont os e e nt re ch av t . Cont e as udo, s e pre t nde rm os e de f inir m ais de um a proprie dade para um de t rm inado e e lm e nt é cos t e e h ábit (e m bora s e j e o, um o a opcional ut izar-s e o pont e v ) il o írgul para a as s e parar e us ar l as dis t as para as , inh int e s cre v r de f a a criar um a m e lor e , orm h lgibil e idade . Ne s t s e nt e ido, de f a a e l orm ucidar o lit , e or ne s t m om e nt t e o orna-s e int re s s ant o e e e nt ndim e nt dos e xe m pl dados de e o os s e guida:
body { background: #999999; }

<26>

a program ar
No e xe m pl acim a, o s e lccionador é t o e odo o docum e nt (body ) a proprie dade é o o , f undo e o v or é a cor cinza. al
h1 { font-size: 40px; font-style: italic; color:#00FF66; font-family: verdana; text-align: center; }

Re s ul t ado:

P arágraf v rm e lo e al ado à dire it o e h inh a Se guindo a l a das cl s e s , t inh as orna-s e igual e nt im port e re f rir q ue um a m e ant e m e sm a t ag pode s e r pe rs onal izada com proprie dade s dif re nt s . e e P or out ras pal ras , as pot ncial av e idade s do CSS pe rm it m q ue no m e s m o docum e nt e o t nh am os , por e xe m pl dois t e o, ipos de t ul ít os principais (h 1) um com lt : e ras v rm e las e e h out com lt azuis . P ro e ras ara is s o, bas t q ue a e s pe cif ue m os at iq rás do pont da cl s e o as por nós criada a e t ue t H TM L q ue iq a pre t nde m os al rar V j os o s e guint e t . e am e e e xe m pl o:
h1.vermelho { color: #FF0000; }

Tit o v rm e lo e al ado à ul e h inh dire it a

Ne s t e xe m pl m ais e l e o aborado, o e lm e nt é e o o “t ul (h 1) e as cinco proprie dade s com ít o1” , os re s pe ct os v ore s , f m com q ue o iv al aze re s ul t ado s e j q ue t a odos os t ul principais ít os (s e guindo as caract rís t e icas pe l orde m e m a q ue s ão de cl aradas ) t nh am um t anh o de e am 40 pixe is , s e j am e m it ico, de cor v rde , com ál e o t de lt v rdana e al ados ao ce nt ipo e ra e inh ro. O re s ul t ado pode v r-s e im e diat e nt : e am e

Cont udo, ne m s ó as t ags (e t ue t ) do H TM L iq as pode m s e r e s t izadas . Com a e v ução do il ol CSS1 para o CSS2, para al ém de aum e nt m o núm e ro de proprie dade s are pos s ív is de pe rs onal , pas s ou-s e t bém e izar am a pode r criar l re m e nt um a cl s e e apl iv e as icál a q ualue r e lm e nt H TM L P a q e o . ara t , bas t al a q ue s e om it o t a pe rs onal , e q ue s e a ag izar col ue um pont ant s do nom e da cl s e oq o e as q ue pre t nde m os criar P e xe m pl e . or o:
.minhaclasse { color: #FF0000; text-align: right; }

h1.azul { color: #0000CC; }

Na nos s a f h a de e s t os de f os , e nt ol il inim ão, dois e s t os dif re nt s para o t ul principal il e e ít o , pe l q ue o no e xe m pl abaixo s e o de m ons t rará com o s e riam apl icados na f h a H TM L ol :
<h1 class="vermelho"> Título vermelho. </h1> <h1 class="azul"> Título azul. </h1>

As s im , e s t criada a cl s e , pe l q ue pode rá á as o agora apl a a q ualue r e lm e nt do icá-l q e o docum e nt w e b: o
<h1 class=”minhaclasse”> Título vermelho e alinhado à direita. </h1> <p class=”minhaclasse”> Parágrafo vermelho e alinhado à direita. </p>

<27>

a program ar
P f , re l iv e nt aos s e lccionadore s or im at am e e I , e s t s dif re m das cl s e s na m e dida e m D e e as q ue s om e nt pode m s e r apl e icados a um e lm e nt H TM L de nt do docum e nt P e o ro o. or out ras pal ras , os I s ão cl s e s t bém av D as am por nós criadas m as q ue s e pode m ut izar il ape nas num e lm e nt A s int e o. axe de um s e lccionador I é m uit s e m e lant a um a e D o h e cl s e , t ndo ape nas de nov o # , as e o conf e pode m os v ual abaixo: orm is izar
#meuID { propriedade: valor; }

F h a de e s t o incorporada: ol il

Um a f h a de e s t o diz-s e incorporada ol il q uando a e s t ização é f it no próprio il e a docum e nt o H TM L As re gras , v idas . ál s om e nt para aq ue l docum e nt e e o, s ão de cl aradas no cabe çalo (h e ad) com a h t ag <s t l> , com o s e pode obs e rv de ye ar s e guida:
<head> ………………. <style type=”text/css”> <!-body { background: #999999; } p { font-size: 10px; color: #000000; } --> </style> ……………….. </head>

Tipos de v incul ação de f h as ol de e s t o il
Adq uiridas as re gras e s int axe de s t a “l inguage m ” de e s t ização, o lit de v , il e or e ne s t m om e nt indagar-s e com o é q ue , e o, af , o CSS e o H TM L s e as s ociam , v t inal is o e s t s s e re m puros al e iados . Na v rdade , as e f h as de e s t o pode m s e r v ol il incul adas aos docum e nt de t f as dis t as : os rês orm int 1- Ext rna; e 2- I ncorporada; 3- I ine ; nl

F h a de e s t o inl : ol il ine

F h a de e s t o e xt rna: ol il e

T com o o próprio nom e indica, no m ét al odo e xt rno a pe rs onal e ização é f it num e a docum e nt dif re nt do docum e nt H TM L o e e o , t ndo e s s e arq uiv (pode ndo s e r e l e o aborado e m q ualue r e dit de t xt a e xt ns ão .cs s . q or e o) e As s im , de pois do docum e nt CSS criado, o de f -s e na f h a H TM L um l ine ol ink q ue carre gará as pe rs onal izaçõe s por nós el aboradas . O e xe m pl abaixo de m ons t a o ra s int axe a col ocar no docum e nt para q ue o se t orne pos s ív l e carre gar a f h a de e s t os : ol il
<head> ………………. <link href="folhadeestilo.css" rel="stylesheet" type="text/css" /> ……………….. </head>

Um a f h a de e s t o é dit inl , q uando a ol il a ine pe rs onal ização é f it de nt da t e a ro ag do e lm e nt H TM L Cont e o . udo, e s t m ét e odo é bas t e l it ant im ado, pois pe rde a grande v age m do pode r do CSS, is t é, com o s ó ant o é apl e laq ue l próprio e lm e nt não icáv e e o, se pode com um a única ins t rução m odif icar v ários e lm e nt e os de v ários docum e nt com o m ínim o do e s f os orço. Cont udo, a s ua s int axe pode v r-s e a s e guir: e
<p style=”color:#999999; font-size:20px;”> Isto é um parágrafo de cor cinza e com um tamanho de letra de 20 pixeis. </p>

Agora q ue j t m um as razoáv is noçõe s de á e e pe rs onal ização CSS, o lit pode com e çar e or por criar páginas s im pls H TM Le pe rs onal e izál a s e u gos t as o.

<28>

Sandro P o int

P , t bém , aprof ode am undar m ais conh e cim e nt e m : os h tp:/w w w .m auj .com / t / or h tp:/w w w .codigof e .com / s / t / ont cs

os

s e us

s e gurança

Se gurança e m Sis t m as D is t e ribuídos
Já l vai o t m po e m q ue e ra ne ce s s ário á e com prar um s upe rcom put ador para re al t f m ais com plxas . H oj e m izar are as e e dia t udo f m ais s e nt az ido q uando a m e s m a t f é proce s s ada e m parall are a e o por vários com put adore s , ou q uando os m e s m os pe rif éricos s ão ace didos por vários t rm inais e m s im ul o. D aí o e t âne conce it de Sis t m a D is t o e ribuído.

O com part h am e nt il o de re curs os (im pre s s oras , dados , CD ´s , e t , a c.) t rans parência, concorrência (ace s s o das v árias m áq uina a um a s ó) t e rância a , ol f h as (conf al iabil idade - s e f h ar um al com put ador num a re de de v ários é m ais f ácilre cupe rar da f h a do q ue s e f s e al os ape nas num com put ador) e s cal idade , abil (f m e nt acil e pode m se r adicionados com put adore s à re de ) aum e nt , o da capacidade de com put ação, aum e nt da o s e gurança / e s t idade gl , f or abil obal act e conóm ico (é m e lor h tr e v ários com put adore s m e dianos /racos q ue um f f e ) e capacidade de proce s s am e nt ort o. São e s t as principais v age ns . as ant

O q ue é um Sis t m a e D is t ribuído – e f D inição

P roce dim e nt Re m ot os os

Um s is t m a dis t e ribuído é um conj o de unt com put adore s inde pe nde nt s , int rl e e igados at és de um a re de de com put rav adore s , q ue s e apre s e nt ao ut izador com o um a il s is t m a único e cons is t nt . P e xe m pl e e e or o, um a t f q ualue r a e xe cut , s e f f it are a q ar or e a por um conj o de com put unt adore s a com put ação é dis t ribuída por t odos e não ape nas por um , não s e ndo ne ce s s ária s obre carga de proce s s am e nt o. Um a t f q ualue r s e div ív le m v are a q , is e árias s ubt f pode s e r re al are as izada e m parall e o.

V age ns /D e s v age ns ant ant

A grande v age m dos Sis t m as D is t ant e ribuídos é pode r, com com put adore s barat e de os baixo proce s s am e nt o, f ar orm um s upe rcom put ador q ue norm al e nt s airia m e m uit caro. o

O s proce dim e nt re m ot t e ram orige m os os iv nos anos 80, s urgindo da ne ce s s idade de h av r um a m e t e odol ogia de program ação dis t ribuída. A prim e ira f o RP (Re m ot oi C e Cal P l roce dure ) num a al , t ura e m q ue a l inguage m dom inant e ra o C. Com o a e l inguage m C e ra proce dim e nt e pe rm it al ia ch am ar um a f unção e m q ualue r part do q e código, pe ns ou-s e e m de s e nv v r um a ole t écnica q ue f it s e o de s e nv v e nt acilas olim o de apl icaçõe s para Sis t m as D is t e ribuídos m ant ndo a ide ia de ch am ar f e unçõe s de m áq uinas e xt riore s da m e s m a m ane ira e com o s e f s e na própria. L os ogicam e nt q ue e t a de h av r al q ue f s e t al e nt inh e go os ot m e t rans pare nt para o program ador e q ue e f sse ize a conv rs ão e dos dados re ce bidos / nv e iados para o cl nt e para o ie e s e rv , is t é, as s t rout s . P idor o ub ine ara m e lor h pe rce be r e s t proce dim e nt pode olar e o, h para o s e guint e s q ue m a: e

<30>

s e gurança
q ue m e canis m os de prot cção e pode m se r ut izados e cl il aro, f r um a aze av iação al das pos s ív is e am e aças e f as orm de at ue . Es t polica t v aq a ít e e orige m nos s is t m as e m ilare s , e m q ue o principal it problm a e ra a div gação e ul de inf ação orm não aut orizada. P ara al ém do cont o rol do ace s s o à inf ação orm t bém am é ne ce s s ário garant a s ua ir int gridade . É ne ce s s ário t r e e e m cons ide ração as v árias am e aças a de f inir na polica de s e gurança. Ent ít re e l de s t as acam -s e o ace s s o e div gação ul não aut orizado de inf ação, m odif orm icação ilgít a da inf ação, ope raçõe s não e im orm aut orizados s ob re curs os do s is t m a, e bl ue io de ace s s o lgít o à inf ação e oq e im orm v andalm o. is Q uant aos pos s ív is at ue s , de s t o e aq acam s e : a pe rs onif icação (q uando al guém s e f az pas s ar por nós ) e xe cução de ope raçõe s , q ue cont ornam os m e canis m os de s e gurança, int rodução de código m al o icios ou pre j udicial(e xe m pl v ) nos s is t m as o: írus e inf át orm icos , criação ou ut ização de il canais para com unicaçõe s ilgít as (f e im uga de inf ação) e s cut de m e ns age ns e orm , a adul ração de m e ns age ns (m odif t e icação, ins e rção, re pe t ição de m e ns age ns ant igas … ) .

Com o s e pode obs e rv , os s t ar ubs e ncarre gam -s e daq uil a q ue s e ch am a o m ars h al l ing, ou s e j conv rt r os dados a, e e para o f at int rm édio para e nv do orm o e iar cl nt para o s e rv ie e idor ou do s e rv idor para o cl nt , e v t a conv rt os do f at ie e ol ar e ê-l orm o int rm édio e no l ocal de de s t ino (unm ars h al . l ing) Al guns e xe m pl os de im plm e nt e açõe s de RP s ão: Sun RP C C (para pl af as UNUX / L at orm inux) Jav RM I , a (RP C para Jav , D CO M (RP a) C para W indow s ) SO AP (ut izado por s e rv , il iços da w e b) e CO RB (padrão RP inde pe nde nt A C e da pl af a) at orm .

P ít de Se gurança olica

Um a re de de com put adore s , por nat za, ure tm e v árias am e aças . Num s is t m a e inf át orm ico o principal e ct o é prot ge r obj iv e a inf ação, ou s e j orm a, cont ar a rol capacidade de ace de r al rar ou e xe cut , t e ar um f e iro, um re gis t um a bas e de ich o, dados , e t M as o principalobj ct o de c. e iv um s is t m a dis t e ribuído é a part h a de il inf ação, l orm ogo is t conduz a um dilm a o e porq ue t bém é ne ce s s ário f it o am acilar ace s s o à m e s m a. A s ol ução pas s a por de f um a polica de s e gurança, na q ual inir ít s e de v t r s e m pre e m cont v e e a ários f ore s com o é o cas o do cus t v or da act o, al inf ação, o q ue s e pre t nde prot ge r orm e e ,

Tipos de P ít olicas de Se gurança

D e st acam -s e t rês t ipos de policas de ít s e gurança. A prim e ira é a ch am ada de is ol e nt dos age nt s . Caract riza-s e por am o e e l it im ar a int racção do age nt à s ua e e m áq uina v ual irt (com o s e f s e um a s e s s ão os num s is t m a e ope rat o) iv . I pl m ica a ide nt icação de cada age nt , is t é, if e o ne ce s s it de aut nt a e icar-s e (por e xe m pl a o v idação al re corre ndo ao par l ogin/ s w ord) pas .

<31>

s e gurança
Cada age nt pos s ui um I , is t é, um e D o ide nt icador q ue o re pre s e nt cada v z if a e q ue t nt ace de r a um re curs o do s is t m a. e ar e Es t polica t m v a ít e árias v age ns : im pl ant ica a im pos s ibil idade de cont ornar os m e canis m os de cont o de s e gurança e rol de criar ou ut izar canais de com unicação il e ncobe rt ou ilgít os . T bém pos s ui os e im am div rs as de s v age ns , al as de l j e ant gum as á m e ncionadas : inf t il ração de código m al o, e s cut de t rm inais de m onit s icios a e ore (at és da radiação e lct agnét rav e rom ica dos t rm inais é pos s ív lv r o q ue um a pe s s oa e e e f no s e u pos t de t az o rabalo) e o at ue h , aq às pal ras pas s e s dos ut izadore s (e m q ue av il a m aioria s ão bas e adas e m dicionários : s érie s de t lv ão, f m e s , próprio nom e , e e is il f íl m at am ia, rícul do carro, … ) a . O ut ro t ipo de polica é o ch am ado ít cont o de ace s s os e f rol oca-s e na l it im ação da capacidade de int racção. Exis t um a e e m at riz de dire it os de ace s s o q ue dá aut orização ou não a um age nt q uando e e s t pre t nde e f ct e e e uar um a ope ração. T bém e xis t m as ACL (Acce s s Cont am e s rol L t ) q ue e m port is s , uguês corre nt s ignif e ica lt de cont o de ace s s os . Es t is a rol as s ão arm aze nadas j o de cada obj ct e unt e o cont am o ace s s o de age nt s a obj ct rol e e os do s is t m a. H á t bém as capacidade s de e am cada age nt pe rant os obj ct e e e os do s is t m a, m as e s t e as capacidade s s ão guardadas j o de cada age nt . D e pois é unt e im port e re al a im port ant çar ância de dois m e canis m os : aut nt e icação (v idação da al ide nt idade , um a f h a na aut nt al e icação inv ida a ut ização da m at de dire it de al il riz os ace s s o) e aut orização (ope ração q ue v ida os dire it al os do age nt s obre o e obj ct . D e pois h á um a e s pécie de e o) M onit de cont o de re f rência, q ue or rol e v ida na al al t ura de e xe cução de um a ope ração s e o age nt t m o dire it de a e e o e f ct . I t t bém obriga a q ue cada e uar s o am obj ct s e j alo de um a ide nt icação e o a v if única e ine q uív oca. O s at ue s a e s t t aq e ipo de polica v am al rar o is ol e nt e nt ít is t e am o re age nt s , al rar a m at de cont o de e t e riz rol re f rência e e l inar o cont o e f ct e im rol e uado pe l M onit de Cont o e Re f rência. o or rol e O out t ro ipo de polica é o cont o do ít rol nív l s e gurança da inf ação e part e de orm e do princípio q ue s ó s e de v dar ao age nt e e a inf ação q ue e l re al e nt pre cis a. A orm e m e inf ação é cl s if orm as icada de acordo com o s e u nív l de conf ncial e ide idade . O cont o de rol ace s s o dos age nt s é e e f ct e uado com bas e e m duas re gras : não pode m lr inf ação cl s if e orm as icada e m nív is s upe riore s ao s e u, e não pode e e s cre v r inf ação cl s if e orm as icada e m nív is e inf riore s ao s e u. e

Cript ograf ia

D e f a de e v ar a e s cut e f s if orm it a al icação de m e ns age ns s urge a cif de m e ns age ns ra –Cript ograf O u s e j é e s t ia. a, abe lcido um e canal s e guro onde pas s am os dados cif rados . Es t t a écnica t m um s e não, pois e não e v a a re ut ização de m e ns age ns . it il Conv ém re f rir q ue ape s ar das m e ns age ns e e s t m cif are radas , e xis t um a pe q ue na e probabil idade de um at acant de duzir a e ch av , e m bora e s t s e j m uit pe q ue na. O e a a o t anh o da ch av de cif é f cral pois am e ra ul , um a ch av pe q ue na é m ais f m e nt e acil e de s cobe rt (at és de “f a rav orça brut por a” e xe m pl q ue um a ch av m aior o) e .

Exis t m e dois t ipos de cript ograf ia: Cript ograf ia Sim ét rica e Cript ograf ia As s im ét rica. O s al m os de cif s im ét gorit ra rica s ão norm al e nt m ais rápidos q ue os de m e cif as s im ét ra rica, a ch av s ó de v s e r e e conh e cida pe l int rv nie nt s lgít os e os e e e e im é us ada t o nas ope raçõe s de cif ant ra com o nas de de cif Um e xe m pl dis s o é o ra. o Al m o D ES (D at Encript St gorit a ion andard) . Na cript ograf as s im ét ia rica us am -s e pare s de ch av s re l e acionadas : um a ch av e públ ica (do conh e cim e nt de t o odos ) e out priv ra ada (do conh e cim e nt de um a o e nt idade ) D e s t . a f a e l ina-s e orm im o problm a da part h a de ch av s . e il e

<32>

s e gurança

P ara obt r a priv e acidade dos dados cif ras e com a públ ica e de cif e com a ra-s priv ada, para a aut nt e icidade dos dados cif e com a priv ra-s ada e de cif e com a ra-s públ ica. Um e xe m pl de um al m o q ue o gorit ut iza a cript il ograf as s im ét ia rica é o cas o do D ifie -H e l an, m uit ut izado e m cif de f m o il ra com unicaçõe s e m re de s .

Concl ão us
Com e s t art e igo pre t nde u-s e q ue o lit e e or f s e a s abe r por al o q ue é um icas , t o, Sis t m a D is t e ribuído e q uais as s uas caract rís t e icas , nom e adam e nt : e as am e aças , v age ns , ant de s v age ns , ant al as t gum écnicas us adas na com unicação de proce s s os , e nt out . Conv re ras ém re f rir e q ue ne nh um t m a f aprof e oi undado pe l o q ue s e q uis e r s abe r m ais s obre al gum as s unt t rá q ue pe s q uis ar na I e rne t s obre o e nt o m e s m o. P ara f it a t f a s e guir acilar are a, e st ão v árias h ipe rl igaçõe s para s it s q ue e t am do as s unt rat o.

Aut nt e icação, Aut orização e As s inat digit ura al
P ara a aut orização de ope raçõe s dos age nt s e m Sis t m as D is t e e ribuídos , é us ado o m e canis m o m ais v gar e m ul s is t m as e m ul t iprogram ados , com o é o cas o do UNI / L X inux. O u s e j a, cada grupo e cada ut izador il tm e um código q ue é at ribuído q uando o ut izador il s e aut nt e ica. As s ociados a e s s e código e xis t m os dire it pos it os ou e os iv ne gat os às cat gorias de dono, grupo e iv e re s t e s ut izadore s . ant il Um f or de e xt m a im port act re ância é s abe r a aut oria de de t rm inada inf ação. A e orm is t dá-s e o nom e de as s inat o ura digit e al proce s s a-s e de f a a cal ar um a orm cul de t rm inada H as h para a inf ação X e orm as s ociada ao Age nt A. Com is t pre t nde e o e s e garant q ue o re m e t nt da inf ação ir e e orm f XP (aut nt oi TO e icidade ) e q ue o cont údo e não f adul rado (garant a int gridade ) oi t e ir e .

Re f rências e
h h h h h

<33>

P dro T ixe ira e e

tp:/pt ik ipe dia.org/ ik i/ t / .w w Com put C3% A7% C3% A3o_dis t a% ribu% C3% AD da tp:/pt ik ipe dia.org/ ik i/ t / .w w Cript ograf ia tp:/w w w .inf e s t r t / ow e .com / cript ograf ia.ph p tp:/pt ik ipe dia.org/ ik i/ am ada_de _proce dim e nt t / .w w Ch o_re m ot o tp:/w w w .f s .org/ cs / c1831.h t l t / aq rf rf m

e lct e rónica

M icrocont adore s : rol P ocol SP rot os I
Es t art e igo f criado com o int o de oi uit apre s e nt o prot ar ocol SP apl o I icado à com unicação e nt m icrocont adore s re rol e pe rif éricos . Com o int rf e ace s e rá us ada um a apl icação f it e m V ual e a is B ic. as

O prot ocol SP é um prot o I ocol s érie q ue o pe rm it t e rans m is s ão s íncrona bidire ccional de 8 bit . s O SP ne ce s s it q ue e xis t um M as t r q ue I a a e cont e rol o re l ógio. V t is o o SP s e r I bidire ccional o M as t r pode e nv , e iar ou re ce be r inf ação dos s l e s , m as e s t é orm av e q ue irá dit q ue m e nv ou q ue m re ce be . ar ia P ara de t rm inar o e de s t ário inat da inf ação é ne ce s s ário um a l orm igação dire ct a cada um dos Sl e s , q ue s e rá a a av l igação q ue cone ct os pinos CS (Ch ip a Se lct. As s im q uando a inf ação t e r e ) orm iv com o de s t ário o Sl e 1, o pino CS1 t rá inat av e q ue s e r act ado para q ue e s t ace it a iv e e inf ação. orm

P ocol SP rot os I

Vt is o os re curs os dis ponív is e num m icrocont ador s e re m l it rol im ados , por v ze s e h á ne ce s s idade de os e xpandir As s im . e xis t m circuit int grados com as m ais e os e v ariadas f unçõe s : m e m órias EEP M , s h if RO t re gis t rs , conv rs ore s A/ … e e D P ara s e pode r com unicar com e s t s e pe rif éricos é ne ce s s ário um prot ocol de o com unicação para q ue “am bas as part s e s e e nt ndam ”. e D os m uit os prot ocol os dis ponív is , um q ue f e oi m as s iv e nt am e adopt ado para com unicação e nt re m icrocont adore s e pe rif rol éricos e xt rnos f e oi o SP (Se rial e riph e ralnt rf ) I P I e ace .

M icrocont adore s rol
P ara de m ons t rar a apl icação de s t e prot ocol s e rá us ado um M icrocont ador o rol da M icroch ip (PC18F I 2580) e um a D AC (M CP 21) Um a D AC é um dis pos it o q ue 49 . iv conv rt um s inaldigit para anal e e al ógico (D igit -t alo-Anal og Conv rs ion) e , a D AC M CP 21 us a o prot 49 ocol SP para re ce be r o I a inf ação digit (8 bit ) prov nie nt do orm al s e e m icrocont ador e conv rt a inf ação rol e e orm re ce bida num a t ns ão anal e ógica. A D AC us ada re ce be a inf ação pe l orm o pino SD I e e m bora o SP pe rm it q ue a I a com unicação s e j bidire ccional não é a , pos s ív le nv inf ação da D AC para o e iar orm m icrocont ador rol . O com ando de e s crit da D AC cons is t e m a e 16 bit . Ne s t s 16 bit e s t s e s ará inf ação orm re l iv ao m odo de ope ração e aos at a dados . O s prim e iros 4 bit dize m re s pe it s o ao m odo de ope ração, os 12 bit re s t e s s ant corre s ponde m ao v or da t ns ão a al e conv rt r e e .

<34>

e lct e rónica

A f ul de órm a s e guint e

conv rs ão da D AC é a e

void main(void) { unsigned char dac_val1,dac_val2, dac_val3; unsigned int node1,node3,node2,aux;

A t ns ão de e As s im para ne ce s s ário s ignif iv icat os ou s e j a:

re f rência us ada f de 4.09 6V e oi . um a t ns ão de 3,265V é e q ue os 12 bit s m e nos re pre s e nt m o núm e ro 3265, e

//Enable interrupts INTCONbits.GIE = 1; INTCONbits.PEIE = 1; // Enable interrupt priority feature INTCONbits.IPEN = 1; // GIEH must be set in order to get access to low priority interrupts INTCONbits.GIEH = 1; INTCONbits.GIEL = 1;

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

As f unçõe s q ue pe rm it m q ue os re gis t e os se j am conf igurados s ão dis ponibil izadas pe l M icroch ip, as s im não s e rá obj ct o a e iv de s t art e igo e xpl com o as cons t , m as icar ruir s im com o as us ar t com o acont ce u nos , al e art igos re l acionados com m icrocont adore s das e diçõe s ant riore s . rol e
#include #include #include #include #include <p18cxxx.h> <math.h> "usart_funcs.h" "function.h" <spi.h>

Act a-s e de s e guida a USART q ue s e rá iv us ada para com unicar com o P C e f m e nt o m ódul SP. inal e o I

//SYNC = 0, BRGH = 1, BRG16 = 0 //fosc=40Mhz,baudrate=115200-->spbrgh=21 OpenUSART(USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, 21); OpenSPI(SPI_FOSC_16, MODE_00, SMPMID);

P ara com e çar é ne ce s s ário im port os ar prot ipos das f ót unçõe s SP I Ant s de com e çar a us ar os re curs os do e m icrocont ador é ne ce s s ário act ar t rol iv odos os m ódul q ue s e rão us ados . As s im os act am -s e as int rrupçõe s , as AD Cs e iv e de f -s e o t ine ipo de s aída da port us ada a com o Ch ip Se lct e

O program a irá aguarda por um a orde m v inda do P v USART Q uando f re ce bido C, ia . or al pe l USART o bit RCI do re gis t PR1bit go a F o I s f icará a “1”.

<35>

e lct e rónica
As s im :
LATAbits.LATA4=1; while(1) { if(PIR1bits.RCIF) { switch (Re()) { case 's':

Se na v z de s e t r re ce bido inicial e nt o e e m e caract r “s ”, s e s e t e r re ce bido o caráct r e iv e “r” e nt ão s ignif ica q ue s e pre t nde r lr o e e v or da AD C0, q ue al f az part e do m icrocont ador rol .
case 'r': Wr(adc_read(0)); break;

Cas o a inf ação re ce bida s e j orm a o caráct r ‘s ’, e nt e ão os próxim os by t s a e s e re m re ce bidos dize m re s pe it ao v or o al q ue s e pre t nde conv rt r e e e .
dac_val1=Re(); 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); aux=0; aux=dac_val2; aux=aux<<4; aux=aux|dac_val3;

Se o caráct r re ce bido não f ne m o “s ” e or ne m o “r” não s e e xe cut nada. a
default: Putsr("\r parametro incorrecto\r"); break; } } } }

As s im s e t rm ina o program a para o e m icrocont ador rol .

I e rf nt ace e m V ual as ic is B
Daqui em diante assume-se que o leitor está minimamente familiarizado com o programa Visual Basic P ara a int rf e ace pode -s e com e çar por criar o l outda m e s m a: ay

T ndo e m cont q ue os prim e iros 4 bit dos e a s 16 q ue s e rão e nv iados para a D AC dize m re s pe it ao m odo de f o uncionam e nt e nt o, ão f e um a m ás cara com o by t m ais az-s e s ignif iv para pode r concat nar com os icat o e 4 bit de conf s iguração.
LATAbits.LATA4 = 0; WriteSPI(0b01110000 | dac_val1);

O s out ros 2 by t s re ce bidos s e rão e concat nados e nt e re s i para q ue s e pos s am e nv para a D AC. D e not q ue iar ar ant s de e nv q ualue r inf ação a e iar q orm port A4 f col a oi ocada a ze ro para act ar o CS da D AC. Em bora pos s a s e r iv cont radit ório, o CS da D AC é act ado iv q uando e s t e s t e r com o v or l e iv al ógico ”0”…
WriteSPI(aux); LATAbits.LATA4 = 1; break;

<36>

e lct e rónica
Um dos com pone nt s m ais im port e s e ant de s t int rf a e ace é o com pone nt M SCom m . e É aq ui q ue s e de f com o irá s e r us ada a ine port s érie do P T bém s e adicionam a C. am duas caixas de t xt e dois bot s . e o õe As s im q ue o program a f or e xe cut ado conf igura-s e a port a s érie 1. Es t s e parâm e t t ros êm q ue e s t de acordo com ar os dados da inicial ização da USART do m icrocont ador rol .
Private Sub Form_Load() ' chose correct settings for your device Settings = "115200,N,8,1" MSComm1.Settings = Settings '''''''''''''''''''''''''''''' ' Open COM1 MSComm1.CommPort = 1 MSComm1.OutBufferSize = 4 MSComm1.PortOpen = True ' Make sure DTR line is low to prevent Stamp reset MSComm1.DTREnable = False MSComm1.RThreshold = 1 MSComm1.InputLen = 1 End Sub If MSComm1.CommEvent = comEvReceive Then sData = MSComm1.Input Private Sub send_Click() MSComm1.Output = "s" MSComm1.Output = Hex(tensao_dac.Text) End Sub

P ara s e re ce be r a t ns ão da AD C do e m icrocont ador us a-s e o bot rol ão q ue t m a e ins crição “T ns ão AD C [m V” . A e s t bot f e ] e ão oi dado o nom e “Re q ue s t _butom ”. As s im q uando t e s t f pre s s ionado s e rá e nv e or iado o caráct r “r” e
Private Sub request_Click() MSComm1.Output = "r" End Sub

As s im q ue o m icrocont ador re ce be r o rol caráct r “r”, v act ar a AD C após a e ai iv conv rs ão e nv o v or para a s ua USART e ia al . As s im q ue o m icrocont ador t e r e nv rol iv iado o v or da conv rs ão pe l USART a port s érie al e a , a do P re ce be rá e s s e v or C al
Private Sub MSComm1_OnComm() Dim sData As String Dim Lido As Integer ' If Rx Event then get data ' and process

É pos s ív lornar e s t int rf e t a e ace m ais robus t a, para q ue pe rant s it e uaçõe s não pre v t is as e s t re aj de um a f a e s pe rada. a a orm A caixa de t xt re f re nt à t ns ão da D AC e o e e e t m o nom e “t ns ão_dac” e o bot t m o e e ão e nom e “s e nd_butom ”. t As s im q uando o bot ão “s e nd_butom ” f t or pre s s ionado s e rá e nv iado o v or da caixa al de t xt para o m icrocont ador e o rol . P ara não com pl icar a com pre e ns ão do código e para us ar os re curs os dis ponív is e no V opt B ou-s e por e nv o v or da t ns ão iar al e num conj o de 3 by t s , ant ce didos do unt e e caráct r “s ”. e

tensao_adc.Text = Round( Asc(sData) * 19, 4) End If End Sub

<37>

Ricardo Roch a

A AD C f z um a conv rs ão de 8 bit . O re s ul e e s t ado de s s a conv rs ão e s t e ará com pre e ndido e nt 0 re e 255, o q ue im pl q ue e s t v or t nh a q ue ica e al e s e r adapt ado à nat za da conv rs ão. D aí s e ure e m ul icar o v or re ce bido por 19 .4. P t ipl al ara t rm inar a int rf e e ace é conv nie nt q ue s e e e de s act e a port s érie para q ue não e xis t iv a am confit f uros … P los ut ara t s t t o o e nv de e ar ant io inf ação para a D AC pode -s e l orm igar a AD C do m icrocont ador à s aída da D AC. A não rol coincidência da t ns ão l da AD C com a e ida t ns ão de s aída da D AC e s t re l e á acionada com o f o da AD C s e r de 8 bit . act s

t orial ut

P rogram ação e m C 2ª P e art
D e pois de um a prim e ira part na e e dição ant rior e s t e , e art igo é concl uído ne s t e dição. a
}

printf(“contador chegou a %d\n”, contador); entrar = 0; // obriga ciclo a //terminar da próxima vez que testar } } return 0;

6– Expre s s õe s Condicionais e Cicl os

Cont inuando na l ógica. A l ógica na program ação de s e m pe nh a um pape l uit m o im port e ant porq ue nos pe rm it e t ar om de cis õe s m e diant de ce rt condiçõe s ou e as e xpre s s õe s condicionais . Ne s t s e xt s e cção a a v os v r cicl . Um cicl é al q ue t m am e os o go e um a condição de parage m e s e e l f a or v rdade ira [t e r um v or dif re nt de ze ro] e iv al e e , o corpo do cicl é e xe cut o ado, cas o cont rário não o é. À v t de s t de f ol a a inição, e xis t m t cicl e m C: w h il () f ;;) e e rês os e , or( do w h il () V j os o prim e iro. e . e am O w h il () é m uit f l à de f e , o ie inição apre s e nt ada acim a. O u s e j a, t m um a e condição e um corpo. Se a s ua condição f v rdade ira, o s e u corpo é e xe cut or e ado, cas o s e j f s o, o corpo não é e xe cut a al ado. M as pode m os pe ns ar: is t é igual um if () o a . O ra é igualne s t de f a inição, m as t m um a e part aridade icul q ue o t orna m uit o int re s s ant e út . Um cicl e o próprio e e il o, nom e o indica, não pára de e xe cut o s e u ar corpo e nq uant a condição e xpre s s a na o condição do w h il () f f s a, ou s e j t e , or al a, odo o corpo do w h il () é e xe cut e ado e nq uant o e l f v rdade ira. V j os um e xe m pl a or e e am o:
#include <stdio.h> int main() { int entrar = 1; int contador = 1; while (entrar == 1) // o mesmo que // while(entrar), visto que entrar=1 { if(contador < 6) { printf(“contador vai em: %d\n”,contador); contador++; } else {

O u s e j t m os um a v a, e ariáv lq ue condiciona e o cicl e nt o, rar, q ue é inicial izada com o v or al 1 [v rdade iro] de m odo a q ue pos s a e nt e , rar no corpo do cicl w h il () e a v o e ariáv l e cont ador com o v or 1, q ue v s e ndo al ai incre m e nt ada, de cada v z q ue e nt no e ra corpo do w h il () e q ue f m e nor do q ue 6 e or [dit ado pe l if() ao m e s m o t m po. Q uando o o ] e cont ador f 5, e l e nt or e rará no cicl um a v z o e m ais , s e rá m e nor do q ue 6 um a úl a v z e t im e ao re e nt rar no cicl pe l úl a v z, a o a t im e e xpre s s ão condicionalcont ador < 6 [6 < 6] , dará f s o e port o s e gue para o e l , q ue al ant se dirá o v or guardado no cont al ador e porá a v ariáv lq ue condiciona a e nt e rada no cicl o w h il () a ze ro, para q ue da próxim a v z q ue e , e a s ua condição s e j t s t a e ada, dê f s o e o al cicl t rm ine . o e O s e gundo cicl q ue v os v r é o f ( ;;) o am e or . T m e s t f a s int ica e s t e a orm áct ranh a m as v s e r ai f ácilpe rce be r. Com o s e v o f ( ;;) e s t ê, or , á div idido e m t part s . A prim e ira é de dicada rês e à de cl aração de v ariáv is , a s e gunda às e e xpre s s õe s condicionais do cicl e a t rce ira o e aos proce dim e nt de incre m e nt os ação ou de m udança de v ariáv is . P e ara e xpl icar m e lor, h nada m e lor do q ue um e xe m pl h o:
#include <stdio.h> int main() { int entrar = 1; for (int contador = 1; contador < 6; contador++) { printf(“contador vai em: %d\n”, contador); } printf(“contador chegou a %d\n”, contador); return 0; }

<39 >

t orial ut
Ne s t cicl é pos s ív lre parare m q ue f e o, e ica t udo m ais arrum ado e s im pls de pe rce be r e . T m os a prim e ira part q ue de cl e at e e ara ribui um v or à v al ariáv l cont e ador [não é obrigat ório s e r pre e nch ido] de pois t m os a , e s e gunda part q ue t m a condição de e e parage m do cicl e na t rce ira part t m os o e e e o nos s o m odif icador da v ariáv l q ue ne s t e , e cas o a incre m e nt a um a unidade , e e nq uant cont o ador < 6, o corpo do f ( ; ) or ; é av iado e e xe cut al ado. P f t m os o cicl do w h il () q ue é or im e o e , prat icam e nt igualao w h il () m as t m a e e , e part aridade de e xe cut o s e u corpo icul ar ant s de t s t a condição de parage m . I t e e ar so t m um a v age m . Se q uis e rm os q ue um a e ant dada e xpre s s ão se j a e xe cut ada inde pe nde nt m e nt e e de a e xpre s s ão condicional w h il () s e j f s a ou não, e l do e a al a é s e m pre e xe cut ada, pe l m e nos , um a v z. o e E m ais um e xe m pl o:
#include <stdio.h> int main() { int entrar = 1; int contador = 1; do { printf(“contador vai em: %d\n”, contador); contador++; } while (contador < 6); printf(“contador chegou a %d\n”, contador); return 0; }

7 – rings [cade ias de St caract re s ] e
At agora v os v é im ários t ipos de dados conh e cidos . A m aior part de ls , at és da e e rav m at m át e ica [int foat doubl]e v os um , l , e im t de dados , ch ar, q ue aj ipo udará a pe rce be r o t ipo de dados q ue v os v r ne s t am e a s e cção, s t rings . Um a s t ring é um conj o de unt caract re s s e guidos q ue t rm ina com o e e caract r e s pe cial t rm inador de s t e , e rings , '\0' [lia-s e , barra ze ro]O u s e j um a s t e . a, ring não é m ais q ue um a f e q ue t m com o l it s , ras e im e inicial e f , o prim e iro caract r e o inal e caract r e s pe cial '\0', re s pe ct am e nt . Se e iv e q uis és s e m os e s cre v r a s t e ring " á" e s t e ra ol , a com pos t da s e guint m ane ira: a e 'o' 'l '\0' = " á" ' 'á' ol Em q ue a pos ição 0 [ze ro] s t da ring t m o e caract r 'o', a pos ição 1 t m o caract r 'l e e e ', a pos ição 2 t m o caract r 'á' e a pos ição e e 3 tm e o caract r e s pe cial '\0'. Se e re pararm os , e xis t m 3 caract re s v ív is na e e is e st ring, m as e s t é f ada por 4, um a v z a orm e q ue pos s ui o caract r t rm inador de s t e e ring '\0'. O ut as pe ct im port e t m a v r ro o ant e e com o f o de a cont act age m e pos t rior e s e lcção das pos içõe s com e ça com o e núm e ro 0 [ze ro] não no 1. F e unciona com o inde x, ou com o pos içõe s de cas as . Se a st ring t m n caract re s , as s uas pos içõe s e e v ão de 0 at n-1, e a pos ição n, é é pre e nch ida com o caract r t rm inador de e e st ring '\0'. Com o v os at agora, q uando q ue re m os im é us ar um a v ariáv lt m os de a de cl . O ra e , e arar para criar um a v ariáv ldo t e ipo s t ring s ó t m os de a de cl e arar e de indicar o e s paço q ue e l v ocupar P e xe m pl s e a s t a ai . or o, ring e m q ue s t ão us ar 20 caract re s , pode m os e de cl arar:
char a-minha-string[20];

Com o s e v o corpo do do w h il() é ê, e , e xe cut ado ant s da s ua condição de e parage m . D e pe nde ndo da s it uação, das v ariáv is e m q ue s t e do s e u v or act , e ão al ual dá j it us ar um t e o ipo de cicl q ue re s ola o v m e lor o problm a. h e Com v ariáv is , e e xpre s s õe s condicionais e cicl , j é os á pos s ív l f r m uit cois a e m C, é um a e aze a q ue s t ão de s e prat icar e de s e t nt e ar de s cobrir m e lor cada e lm e nt aq ui v t h e o is o.

E t m os a nos s a s t e ring com capacidade para 20 caract re s criada. e

<40>

t orial ut
Em s e guida, pode ríam os us ar o e s paço re s e rv ado para e l da s e guint m ane ira: a e a-m inh a-s t ring = " l s ou um a s t O a, ring" ; E int rnam e nt is t s e ria e q uiv e nt a: e e o al e O u s e j de cl a, arám os um a v ariáv l " e count " do t ipo int iro s e m ne nh um v or à part e al ida, e v t os a de cl ol ám arar a nos s a s t ring, de s t a f it com o nom e " y St , com as m e s m as e a m r" 20 pos içõe s e a m e s m a s t ring " l s ou O a, um a s t ring" . Es t program a produziria o s e guint : e e s O s o l t u a r , i u n m g a P ode ríam os ainda m os t rar o núm e ro de caract re s e im prim idos no e crã acre s ce nt ado ao código o s e guint : e
printf("numero de caracteres imprimidos no ecrã : %d\n", count);

0 1 2 3 4 5 6 , s o O la 7 8 9 10 11 12 13 u u m a s 14 15 16 17 18 19 t r i n g \0
São 20 caract re s de nt de um a s t e ro ring q ue cont m 19 caract re s v ív is m ais o e e is e caract r t rm inador '\0', t al e e ot izando 20 pos içõe s , inde xadas de 0-19 . A m anipul ação de s t rings dá m uit j it e é o e o bas t e f . V j os : s e q uis és s e m os ant ácil e am ace de r à pos ição núm e ro 3 da s t ring [q ue nos dá um caract r]f e , aríam os :
a-minha-string[3]

Ant s do " t e re urn 0; [f do program a]e " im de pois do l f . oop or

8 - V ct s e ore
Com o v os na s e cção ant rior um a s t im e , ring é um a cade ia de caract re s t e odos orde nados e s e guidos de um caract r e e s pe ciale rm inador '\0'. t O ra um v ct t m e xact e nt o m e s m o e or e am e conce it m as cont o ém q uais q ue r e lm e nt , e os de pe nde ndo do t ipo de dados ao q ual e s as s ocia o v ct . e or P e xe m pl pode ríam os q ue re r um v ct or o, e or de int iros com os anos de v e árias dat de as nas cim e nt as s im f o, aríam os :
int vecAnos[10];

E para q ualue r out pos ição f q ra aríam os am inh a-s t ring[n] . Um e xe m pl ut izando um s im pls cicl o il e o, m os t com o pode ríam os im prim ir um a um ra e s e parados por l as , cada um dos inh caract re s da s t e ring acim a criada e o re s pe ct o núm e ro de ls . iv e
#include <stdio.h> int main() { int count; char myStr[20] = "Ola, sou uma string"; for(count = 0; myStr[count] != '\0'; count++) { printf("%c\n", myStr[count]); } return 0; }

Em q ue criaríam os e por cons e q uência re s e rv aríam os m e m ória para 10 bl ocos de int iros s e guidos para o nos s o v ct . P e e or ara m anipul o v ct , f ar e or aríam os t e q ual al nas st rings , um a v z q ue cada pos ição do e v ct t m um índice as s ociado, q ue v e or e ai de s de 0 at ao s e u t anh o, n, m e nos 1 [0 é am -> n-1] .

<41>

t orial ut
Ut izando il o v ct e or acim a criado, m odif ue m os , iq ou ne s t e cas o, pre e nch am os o s e u cont údo, um a v z e e q ue at agora o v ct e s t v é e or á azio.
vecAnos[0] = 1987; vecAnos[1] = 1988; vecAnos[2] = 1989;

9 -F unçõe s
Não é ne nh um a nov idade f ar e m f al unçõe s v t q ue t m os v is o e indo a f ar ne l e a us áal as l de s de o início. A m ais f ada, a m ais as al us ada e a e s s e ncialpara q ue q ualue r q program a e m C corra é a f unção m ain() . M as e m ge ral um a f unção apre s e nt a a s e guint s int : e axe
tipo_de_retorno Nome_da_função ( parâmetros declarados ) { CORPO; RETORNO; }

e por aí f ora. Se ria um a m açada andarm os a de cl arar t odas as dat , s e , para al do as ém m ais , e l f s e m s e guidas . P as os ara is s o us am os um s im pls al m o, para pre e nch e r o e gorit v ct s abe ndo o s e u t anh o f . e or, am inal

#include <stdio.h> int main() { int vecAnos[10]; int start = 1987; for(i = 0; i <= 10; i++, start++) { vecAnos[i] = start; } for(i = 0; i <= 10; i++) { printf("vecAnos[%d]=%d\n", i,vecAnos[i]); } return 0; }

M uit o s im pls . Um e pe q ue no e xe m pl o t ornará m ais cl a ide ia de f ara unção:
#include <stdio.h> int func_soma(int x, int y) /*função que retorna um int, que tem o nome func_soma, que tem os parâmetros declarados "int x, int y", que tem um CORPO e um RETORNO do inteiro relativo -> soma (x + y) */ { return (x + y); // ou int temp = x + y; seguido de return temp; } int main() /* função que retorna um int, que tem o nome main, que não tem parâmetros declarados, que tem um CORPO e um RETORNO do inteiro 0 [zero] *\ { int a, b, soma; printf("SOMADOR:\n"); printf("Insira dois valores para\n"); printf("a:"); scanf("%d\n", &a); printf("b:"); scanf("%d\n", &b); soma = func_soma(a, b); printf("A soma de %d com %d e %d\n", a, b, soma); return 0; }

P ant o conce it de v ct é o m e s m o ort o o e or da s t ring s ó q ue f unciona com m úl os t ipl t ipos de dados pe l q ue ao v ct de ch ar o e or ch am am os -le s t h ring. Ape s ar de t udo, at és do q ue f aq ui rav oi e xpl icado at à s e cção 8 dos v ct s , é é e ore pos s ív l f r-s e m uit cois a e m C. No e aze a e nt o, e xis t um a " at ant e m éria" bas t e ant im port e para a e f ant iciência e organização de código nos program as : f unçõe s .

<42>

t orial ut

Com o pode m os v r a f e , unção "unc_s om a" f criada para auxil a s om a, t m o m e s m o iar e as pe ct da f o unção m ain() m as ut iza il parâm e t de cl ros arados à part ida. O u s e j a, a f unção "unc_s om a" re q ue r q ue s e f , " s e m " ce rt pas os argum e nt os para e l a f uncionar Ne s t cas o, a f . e unção e xige q ue pas s e m os dois int iros . É de not q ue os e ar nom e s 'x' e 'y ' pode riam s e r 'a' e 'b' com o f oram e nv iados na ch am ada de nt da ro f unção m ain() um a v z q ue s ão zonas , e dis t as . Ape nas f int oram e s colidos x e y h dif re nt s de a e b para f it e e acilar a pe rce pção.

Se criarm os a s e guint s t e ring:
char revista[9] = “PROGRAMAR”;

8000H 8001H 8002H 8003H 8004H P R O G R 0 1 2 3 4 8005H 8006H 8007H 8008H 8009H A M A R \0 5 6 7 8 9

10 - P e iros ont
G e ral e nt , os pont iros s ão a “dor de m e e cabe ça” dos apre ndize s iniciados , e por is s o cos t am s e r e xpl um icados no f . Não im v os f am ugir à re gra e por is s o f ica aq ui a s ua e xpl icação. Em bora pos s a pare ce r com pl icado de início, v re m os q ue é m uit e o s im pls , m as q ue ape nas com prát e ica s obre o as s unt s e cons e gue pe rce be r be m o o se u f uncionam e nt o. Com o v os nas s e cçõe s 7 e 8, s t im rings e v ct s , re s pe ct am e nt , o s e u t e ore iv e ipo de dados é um a e s t ura e m cade ia e m q ue rut pode m os im aginar v árias cas as s e guidas com cont údos l de nt re s pe ct os ao e á ro iv se u t ipo de dados . O s v ct s s e rão de s t e ore e t ipo com v ore s int iros de nt das cas as e al e ro as s t rings s e rão de s t t e ipo com caract re s e de nt das cas as . ro No e nt o, q uando criam os um a s t ant ring ou um v ct , at e or ribuím os -le um nom e . É aq ui h q ue e nt ram os pont iros . O nom e de um e v ct não é m ais do q ue um pont iro para e or e a prim e ira cas a [índice 0] próprio v ct . do e or E um pont iro não é m ais do q ue um e e nde re ço da e s t ura para a q ual rut apont a.

Es t s e ria o e s q ue m a na m e m ória. E, com o e f e xpl oi icado ant riorm e nt , o nom e da e e e s t ura, “re v t é um pont iro para a rut is a” e prim e ira cas a da e s t ura, q ue ne s t cas o rut e é um a s t ring. P ant “re v t ort o, is a” apont a para a cas a 0 [ze ro] ue cont q ém ‘P e q ue ’ por s ua v z t rá um e nde re ço. Supondo e e q ue a s t ring com e ça no e nde re ço 8000H , e nt ão, “re v t t m o e nde re ço 8000H . is a” e Com o um caráct r ocupa 8 bit [1 by t ] e s e na m e m ória, os e nde re ços s al t am de um e m um com o s e v na t ê abe l Se m andarm os a. im prim ir caráct r a caráct r e s t s t , e e , a ring, f m os al com o is t aze go o:

char revista[9] = “PROGRAMAR”; char c; while (*revista != ‘\0’) // ‘\0’ é o carácter terminador de // strings { printf(“%c”, *revista); revista++; }

O ra apare ce aq ui um s ím bol nov ‘* O o o: ’. s ím bol as t ris co, s ignif o e ica “cont údo”. e Com o f e xpl oi icado ant s , o nom e de um a e st ring/ e ct v or não é m ais do q ue um pont iro para o e nde re ço da prim e ira cas a e de s t . Com o t , o nom e e m s i cont e al ém o e nde re ço de m e m ória, m as f t pode r al a ace de r ao s e u cont údo. e

<43>

t orial ut
P ode m os inde xar f ndo re v t com i , aze is a, pe rt nce nt e nt 0 a 9 , m as com o o nom e e e re da s t ring/ e ct apont para a prim e ira v or a cas a, para s e ace de r ao cont údo de s s a e pos ição de m e m ória, ape nas s e m e t o ‘* e ’ ant s do nom e . E para q ualue r nom e de e q um a e s t ura de s t , ao pôr-m os um rut as as t ris co ant s de s e u nom e , e s t os a e e am ace de r ao cont údo da q uale s s e nom e e apont a. Com o v os na t im abe l acim a e pe gando a no pe daço de código, no início, “re v t is a” apont a para 8000H . Se m andarm os im prim ir o s e u cont údo, at és da e rav ope ração * v t s e rá im pre s s o o caráct r re is a, e ‘P porq ue é o cont údo de 8000H . ’ e Se agora incre m e nt arm os “re v t [q ue é is a” um e nde re ço] e s t av , e ança um a pos ição na m e m ória e port o f ant ica com o e nde re ço 8001H , q ue por s ua v z, * v t e re is a, pas s a a cont r ‘R’. E as s im s uce s s iv e nt e am e at * v t e m q ue v cont e r ‘\0’ e aí é re is a ai, iv para porq ue acabou de im prim ir t oda a st ring. Es t proce s s o é m uit s e m e lant com e o h e v ct s ou com out e ore ros t ipos de dados ne s t e s t uras s e q ue nciais na m e m ória. as rut Re capit ando, um nom e de um a e s t ura ul rut de s t é um pont iro para e l e cont o as e a ém e nde re ço para onde apont [a m orada da a cas a]E para s e le ace de r ao cont údo, . h e us a-s e o s ím bol ‘* ant s do nom e . o ’ e

Concl ão us
Exis t m m uit m ais " at e as m érias " e m C q ue pode m s e r f adas , m as para um início, é al im port e cat ar o apre ndiz com ce rt ant iv as m at érias m ais s im pls de m odo a q ue , s e e e s t de cidir av e ançar com a apre ndizage m a f undo da l inguage m e m q ue s t ão, não de s m ot e iv por f t al a de ce rt os conh e cim e nt bás icos q ue o im pe çam de os av ançar e de pe rce be r out ros cont údos e m ais av ançados . Em bora s e j a pos s ív l apre nde r-s e e a program ar at és de , rav l ros , t oriais , iv ut art igos , aul , e t é im port e pe rce be r as c., ant q ue s e m prát ica aut ónom a, é m uit dif o ícil adq uirir e xpe riência e prát ica na program ação de q ualue r l q inguage m . Ent ão, um ape l im port e a t o ant odos os program adore s iniciant s , é de pore m e m e prát ica e xe rcícios s e us e de t nt m e are pe rce be r a l inguage m por s ua aut ore criação.

<44>

M igue l ah non W

gnu/inux l

Apre s e nt ação do Ubunt 7.04 u "e is t F n" F y aw
Já pas s aram 6 m e s e s de s de o l ançam e nt da úl a v rs ão do o t im e Ubunt u, o 6.10 “Edgy Ef” e o t l ançam e nt do F is t F n f no o e y aw oi dia 19 de Abril . Com e s t art e igo pre t ndo f r um a e aze apre s e nt ação s im pls de al as e gum das nov as f uncional idade s de s t a nov v rs ão. a e

G nom e 2.18
O nov G nom e v m com m uit m e lorias a o e as h nív l de v l e e ocidade e e s t idade , com o abil um a int rf e ace m e lorada, m e lor s uport h h e para re de , e m uit m ais . O G NO M E Cont o rol Ce nt r v m com um a nov int rf e , e a e ace q ue agrupa as f uncional idade s e m t f are as s e m e lant s . O Cont ce nt r pe rm it al rar h e rol e e t e v árias de f iniçõe s no s is t m a, com o f s , e ont t cl e ado, s om , t m as , e t e c.

À prim e ira v t is a
O aparência gráf ica de s t e nov o l ançam e nt cont o inua a s e guir a aparência das v rs õe s ant riore s com t e e ons de cas t o e l anh aranj a, h av ndo m e lorias e h s ignif iv . icat as Ao nív ldas apl e icaçõe s ins t adas , al cont inua a s e r um s is t m a e com plt t ndo apl e o, e icaçõe s para a m aioria das act idade s com uns – iv m ús ica, v o, íde docum e nt ação, ins t m e s s aging. ant

D e s e m pe nh o
P ode m os cont ar com al as gum m e lorias a nív lde de s e m pe nh o, h e al as graças a nov v rs õe s de gum as e al guns s is t m as , com o o Xorg 7.2 e (m ot or gráf , ico) Ups t art 0.3.6 (Sis t m a de inicial e ização no Ubunt u de s de o 6.10) e K e rne l 2.6.20. A incl ão do Xorg 7.2 ao Ubunt us u f um a s urpre s a, poucos e s t am à oi av e s pe ra da s ua adição ne s t l e ançam e nt o. Es t v rs ão v m com v a e e árias m e lorias h s ignif iv icat as de e s t idade abil e f uncionam e nt o, com o aut o-conf iguração m ais e f nt , s uport m e lorado para icie e e h ge s t s bas e ados e m G L com o o Com piz ore , ou B ry l e policas de s e gurança m ais e ít e xt ns as . e

I t ação ns al
A ins t ação gráf al ica e s t m ais f , com á ácil nov as m e lorias h t o ao nív l de ant e e s t idade abil com o f uncional idade s do ubiq uit - Sis t m a de ins t ação gráf y e al ico us ado no Ubunt u.

<45>

gnu/inux l
Um a das nov f as uncional idade s do ubiq uit y é o “M igrat ion-As s is t ”. Es t apl ant a icação pe rm it e aos ut izare s il im port m are docum e nt , f e iros e de f os ich iniçõe s de out ros s is t m as ope rat os q ue e s t j e iv e am ins t ados , e conv rt r para os s e us al e e e q uiv e nt s e m Ubunt al e u. P e xe m pl pode copiar o cont údo da or o, e pas t M y M us ic no W indow s para a pas t a a M us ic no Ubunt e adicionar ao Rh y m t u, box, ou s e t e r o F f I ou O pe ra ins t ado, iv ire ox, E al e s t irá com pil as book m ark s e adicionar e ar as do Ubunt u. Um a das apicaçõe s q ue v m de bas e para e aj udar ne s t t f é o Ne t ork M anage r a are a w , um a int rf e ace gráf ica, no q ual s e pode conf igurar t o a re de por e t e rne t ant h , w ire ls s e V N. e P

M ul édia t im
Um dos m aiore s de s af ios para um nov o ut izador é a part m ul édia, is t é, a il e t im o capacidade para re produzir áudio e v o íde no s e u Ubunt u. M ais um a v z, para e s im plicar e s t proce s s o j não if , e á é al de out m undo. go ro Ao e xe cut um f e iro m e dia ar ich q ue não t nh a ne nh um code c e com pat e lins t ado, o s is t m a ív al e irá l ançar um av o e aj is udar no proce s s o de ins t ação dos al code cs ne ce s s ários . O ut m e loria a e s t nív l f a ra h e e , oi criação do pacot “Ubunt e ure s t e d-e xt ”. Es t pacot é rict ras e e na re al idade um “m e t apack age ” q ue apont para a a ins t ação de ce rca de 20 al pacot s e para aj udar a e xpe riência m ul édia. I ui Jav JRE, Fas h 9 , al t im ncl a l guns code cs e m ais uns pacot s . e

I t ar D riv rs P ns al e roprie t árias para as t o ant para as pl acas gráf icas com o w ire ls s é e m ais s im pls , us ando o Re s t e d D riv rs e rict e M anage r Num cl ue . iq os driv rs s ão e ins t ados . al

Ef it G ráf e os icos
P ara os q ue pe ns am q ue os e f it gráf e os icos do V t s ão nov is a idade , de v rão f e icar adm irados por s abe r q ue e m L inux j á e xis t iam e não é pre cis o um a m áq uina úl a t im ge ração para f uncionare m com fuide z. l O Ubunt F is t u e y vm e com o Com piz 0.3.6 ins t ado al de bas e , e se a v s a gráf os ica f or com pat e l ív , de v rá f e uncionar l ogo s e m ne nh um a conf iguração e xt ra.

Re de Sim pls e
Se guindo a f os of do il ia Ubunt para s im plicar u if a e xpe riência do de s k t ao m áxim o de op ut izadore s , um a das il e s pe cif icaçõe s para e st l e ançam e nt f o o oi “Z e roConf t ork ing”, Ne w q ue re s um idam e nt é e a capacidade de conf igurar o ace s s o à re de aut at om icam e nt e e com o m ínim o de int rv nção do e e ut izador O Sis t m a t nt il . e e ará conf igurar o q ue pode r para t nt f r a re de f e ar aze uncionar corre ct e nt . am e

<46>

gnu/inux l
O rganização das j ane l abe rt as as

Ef it de " e o cubo"

Re s um indo, e s t l e ançam e nt é a cont o inuação da e v ução v ív l Ubunt A e xpe riência ol is e no u. do ut izador e s t m ais s im plicada e o s is t m a m ais e s t e l com pat e l il á if e áv e ív . Acons e lado a t h odos os q ue q ue re m e xpe rim e nt G NU/ inux. ar L

<47>

M arco Sila v

anále s is

M oodl: e Um a pl af a de e L arning at orm e
O q ue é o M oodl? e
O M oodl é um a f rram e nt q ue pos s ibila a e e a it ge s t ão de apre ndizage ns e de t rabalo h col aborat o, pe rm it iv indo a criação e ge s t ão de curs os on-l e m t ine orno de com unidade s com obj ct os e ducat os . A ide ia inicial oi e iv iv f de M art D ougiam as , q ue e m 19 9 9 pe ns ou in criar o M oodl, s e m q ualue r obj ct o e q e iv com e rcial , pois acre dit a nas pot ncial e idade s do e ns ino e da cons t rução do conh e cim e nt at és da I e rne t D e pois o rav nt . de al as t nt iv iniciais é e m Agos t gum e at as o de 2002 q ue s ai a v rs ão 1.0 do M oodl. A e e part daí a com unidade M oodl t m ir e e cre s cido bas t e e s ão cada v z m ais as ant e e s col , univ rs idade s , ce nt de f ação, as e ros orm e m pre s as e organizaçõe s a ut izar e s t il a f rram e nt e a. Em P ugal(q ue re gis t j um t alde 858 ort a á ot “M oodls ” re gis t e ados ) t m -s e v rif e e icado um a grande ade s ão de v árias e s col e ce nt as ros de f ação a e s t f rram e nt Es t “m oda” orm a e a. a de v -s e e s s e ncial e nt à s ua f idade de e m e acil us o, acom panh ada da aus ência de cus t os com o s ofw are , be m com o ao nov Q uadro t o de Re f rência da F ação Cont e orm ínua de P e s s ore s na Áre a das TI rof C. P ara um bom f uncionam e nt o M oodl o e pre cis a corre r t f aut at are as om izadas (cron) e t r e s paço dis ponív l e e para a col ocação dos v ários re curs os dos curs os a criar No s it . e of icial s t ainda dis ponív l e á e um conj o de unt pl ugins (m ódul e bl os ocos ) q ue pe rm it m e al argar ainda m ais as pot ncial e idade s do M oodl. e

P e ncial ot idade s do M oodl e
O M oodl e pe rm it e a criação de curs os / cipl dis inas q ue pode m ou não e s t ar ace s s ív is a t e odos os v it e s . Ne s t s e s paços is ant e pode m de pois s e r criados e col ocados re curs os . O M oodl, t ndo por bas e um a e e f os of cons t iv t da e ducação, t j um il ia rut is a raz á conj o de f rram e nt unt e as q ue f it acilam a ne ce s s ária int racção e nt os part e re icipant s . e D e st aca-s e aq ui a pos s ibil idade de criar W ik i’s , f óruns , gl s ários , ch at , bl , bas e s de os s ogs dados , diários , inq uérit , l s , t s t s . É t os içõe e e udo is t q ue pode t o ornar o M oodl num e s paço de e apre ndizage m m uit m ais rico q ue um s im pls o e re pos it ório de cont údos . É e s s e o de s af e io l ançado a q ue m pre t nde us ar o M oodl e m e e t oda a s ua plnit . e ude

Sit s de re f rência e e
P ágina of icial M oodl do e h tp:/w w w .m oodl.org t / e Com unidade P ugue s a de M oodl ort e h tp:/w e b.e ducom .ptm oodlpt t / / e / P ágina onde s e pode t s t o M oodl e ar e h tp:/w w w .ope ns ource cm s .com t /

Q ue s t s t õe écnicas
O M oodl é O pe n Source dis t e ribuído s ob a G NU P ic L nce . No f ubl ice inaldo m ês de M arço f oi l ançada a v rs ão 1.8, e m e lorando h a fe xibil l idade , a ace s s ibil idade e a us uabil idade da pl af a, nom e adam e nt no q ue diz at orm e re s pe it à param e t o rização dos papéis dos ut izadore s . O M oodl corre e m P P e il e H s uport M YSQ L ou P t SQ L e m bora nas a os gre , úl as v rs õe s s e pos s a ainda us ar e m t im e al rnat a M icros of SQ LSe rv r ou O racl. t e iv t e e

<48>

Jos é O l e ira iv

int rne t e

O Bl da L am og inTe
A L e am , um a das e q uipas do nos s o f inT orum q ue s e de dica ao G NU/ inux, de u, durant o m ês de Abril um grande pas s o no s e u L e , t rabalo: l h ançou um bl Com e s t bl o obj ct o é lv o Sofw are og. e og e iv e ar t L re a cada v z m ais ut izadore s at és de t xt crít iv e il rav e os icos , art igos de opinião, not ícias e de s e nv v e nt do m undo ope ns ource . olim os

h t p:/ w w w .l e am .port g al t / int u -a-prog ram ar.org

Es t ís t at icas : • pos t 18 s • com e nt 45 ários • ais de 1000 M vis it únicas as • ais de 8000 M H it s • is it de 16 V as país e s dif re nt s e e

M oti j
O M oj i pe rm it pe rs onal it e izar v os al ados nos principais íde oj s e rv idore s de v o da I e rne t D e pois de e s colido o v o íde nt . h íde pode m os col ocar lge ndas , anot e açõe s , v árias f as , orm im age ns , anim açõe s ,… t udo is t no l o ocalde s e j ado. O M oj i it adiciona de pois um l e r com e s t pe rs onal ay as izaçõe s . Re ce nt m e nt e e f oram ainda adicionadas nov as f uncional idade s a e s t f rram e nt É ne s t m om e nt pos s ív l a e a. e o e t bém adicionar áudio e v o a um out v o! Um re curs o am íde ro íde a conh e ce r .

h tp:/w w w .m oj i.com t / it

Conv rs ão de V os e íde
T odos nós gos t os de ir ao YouT am ube ou a out s it s do géne ro e v r al ros e e guns v os . M uit gos t íde os am t bém de f r dow nl am aze oad dos m e s m os para a pos t rioridade . O problm a s urge no f do dow nl e e im oad: t nh o um v o e m .fv e íde l , l ogo t nh o de f r dow nl e aze oad de um pl ugin ou de um program a! Norm al e nt m e is t é um a grande m açada principal e nt q uando q ue re m os m os t o v o o m e rar íde aos am igos e e ls t e êm de ins t ar um program a. Com o v al ixy.ne t e s s e problm a e ev aporou-s e . É pos s ív l e conv rt r no próprio s it e s s e s v os .fv para AV, M O V e e e íde l I para M ac, M P para o iP e para a P , 3G P para q ualue r t lm óv l M P 4 od SP q e e e e 3, q ue ape nas conv rt o aúdio do v o. e e íde

h tp:/w w w .v t / ixy.ne t

<49 >

bl s cre e n ue

P l m e nos é m ais bonit e o o q ue a concorrência...

Aí e s t e l... á e ...o Bue Scre e n ofD e at ! l h

Se rá q ue a t ura re s ul ort t a?
<50>

com unidade
Re lm bro q ue as candidat e uras a e s t as e q uipas e a t odas as out ras e s t abe rt , ão as pe l q ue t o odos os m e m bros da com unidade s e pode m ins cre v r nas m e s m as . P e ara o f r bas t f ar com um m ode rador aze , a al , adm inis t rador ou com o ge s t do proj ct or e o. Em t rm os e s t ís t e at icos , a com unidade cont inua e m grande cre s cim e nt o: no pas s ado m ês de Abril t e m os 2219 2 , iv v t e s únicos , com um a m édia de 1171 is ant por dia. São núm e ros q ue indicam um bom cre s cim e nt e q ue nos m ot am para o iv cont inuar a t rabalar na e xpans ão da h com unidade . Es pe ro q ue t nh am um bom m ês de M aio, e q ue ace dam m uit f q ue nt m e nt ao o re e e f órum , q ue part icipe m nas nos s as dis cus s õe s e q ue cont ribuam act am e nt para a iv e com unidade . V m o-nos no P P e @ .

Ch e gám os ao m ês de M aio, um m ês q ue m e cos t a t um raze r m uit e boas as lm branças . P uê? ra, f e m M aio de e orq O oi 2005 q ue a com unidade P ugal ort -aP rogram ar f criada, m ais pre cis am e nt no oi e dia 28, às 19 h oras e 18 m inut . O u s e j os a, f m os no dia 28 de s t m ês de M aio, dois aze e anos de e xis t ência. E para com e m orar e s s e s dois anos de t rabalo e de dicação q ue h t os f os t t ant rut êm razido, o s t fdo P ugal af ort a-P rogram ar de cidiu l ançar um concurs o: RoboCode e m Jav P a. ara m ais inf açõe s orm e para s e ins cre v re m , s ugiro q ue v it m a e is e nos s a s e cção Jav ou q ue e nt m e m a re cont o dire ct com o m ode rador K nite r act o t . F ando do q ue s e f z e do q ue s e f al e ará, e s t os a pl ar av am ane ançar com out ro proj ct l rado e e l e o ide aborado pe l s t f j o af á a part de Julo. T rá de s e r adiado para ir h e e s s a época de v ido aos e xam e s e à im port ância q ue os m e s m os t rão na e carre ira prof s ional de cada um . O ut is ros proj ct e os t êm s urgido por iniciat a dos iv ut izadore s e prov e l e nt v re m os m ais il av m e e de s e nv v e nt olim os nas próxim as s e m anas . Q uant ao q ue s e f z, t m os v o e e árias e q uipas at rabalar e m s im ul o e m v h t âne árias áre as e q uipas de t radução, de de s e nv v e nt olim o de s ofw are t e de t rabalo para a h com unidade - e port o é be m prov e l ant áv q ue m uit e m bre v com e ce m a s urgir o e not ícias de proj ct acabados . D e s de o e os l ançam e nt da úl a e dição f o t im oram criadas duas e q uipas de t radução, um a l rada ide pe l K nite r out pe l djh y rax, a D e s ign o t ra o t T am , q ue t rá com o f e e unçõe s f orne ce r e lm e nt de de s ign às v e os árias pl af as at orm da com unidade .

Q ue re s part icipar na re v t is a P G RAM AR? ue re s int grar e s t RO Q e e proj ct e s cre v r art e o, e igos e aj udar at ornar e s t re v t num m arco a is a da program ação nacional ? V a ai

w w w .re v t is a-program ar o .inf
para m ais inf ação com o orm part icipar ou e nt cont a-nos por ão act

@ port ugal -a-program ar .org
P cis am os do apoio de t re odos para t ornar e s t proj ct ainda e e o m aior ... cont os com a t aj am ua uda

re v t is aprogram ar

<51>

Rui M aia

Eq uipa P G RAM AR RO
Um proj ct P ugal rogram ar e o ort -a-P .org

Sign up to vote on this title
UsefulNot useful