You are on page 1of 33

e ditorial

Evol
ução
Este proje cto continua e m e vol ução e ne sta e dição isso se rá
m ais visíve lq ue nunca. Um a m udança de visualfoi al go q ue
nos e ra pe dido nos com e ntários sob re as ante riore s e diçõe s.
Para auxil iar e sta m udança, usám os um program a
propriam e nte de stinado a pub l icaçõe s, o Scrib us. Tam b ém é
ope n-source e , e m b ora possua ainda al guns de fe itos, com o na
e dição de te xto, possib il itou-nos a re vol ução gráfica de sta
e dição, para m e lh or ou pior de pois sab e re m os, m as gostám os
dos re sultados.

Entre tanto, o nosso proje cto continua a cre sce r, tanto e m


núm e ro de participante s com o e m contrib uiçõe s. Num a re vista
de ste tipo, q ue vive das contrib uiçõe s dos m e m b ros e da
varie dade de stas, é se m pre im portante m ante r um grupo
activo de re dactore s e outro grupo de m e m b ros q ue
participam ocasional m e nte . Este ob je ctivo te m sido cum prido
até agora, re sultando num a pub l icação se m pre com posta por
conte údos variados, re q ue sito ne ce ssário num a áre a tão vasta
com o é a da program ação de com putadore s.
Sérgio Santos

Espe ram os q ue as al te raçõe s e fe ctuadas se jam do vosso


agrado e prom e te m os continuar a prosse guir os nossos
ob je ctivos principais: ch e gar a cada ve z m ais program adore s e
atrair cada ve z m ais ge nte para o nosso m undo.

<2>
notícias

SH IFT
Vai re al izar-se na Unive rsidade Nova de Lisb oa, e ntre os dias 27 e 29 de
Se te m b ro de 2006, o Congre sso "Sh ift – Socialand H um an Ide as for Te ch nol
ogy"
ce ntrado nas te cnol ogias e m e rge nte s e no se u im pacto na vida das pe ssoas e
re spe ctivas com unidade s.

Sh ift é um a confe rência sob re o pape le as im pl icaçõe s da te cnol ogia na


socie dade actual , se rviços ce ntrados no util izador, m ovim e ntos sociais q ue criam
novas re l açõe s sociais e te cnol ogia q ue m e l
h ora a nossa vida diária. Te m com o
púb l ico-al
vo, e urope us e ntusiastas da te cnol ogia, com principalincidência para o
púb l ico português e e spanh ol .

Te m as propostos para e ste ano:

- A re l ação e ntre Pe ssoas e Te cnol


ogia
- Ge stão do Conh e cim e nto
- O s Bl ogs e as novas form as de participação cívica
- Lib e rdade s e Privacidade nos m e ios digitais

M ais inform açõe s:


w w w .sh ift.pt

Bugs e ncontrados nos novos Googl


e aproxim a-se de novo m e rcado
proce ssadore s da Inte l
Com o re ce nte l ançam e nto do novo
Num docum e nto disponib il izado h á se rviço Googl e , q ue possib ilita util
izar o
poucos dias, a Inte l inform ou os dom ínio do util izador com o dom ínio de e -
utilizadore s q ue q ual q ue r um dos m ailnas contas Gm ail , a e m pre sa norte -
proce ssadore s Inte lCore 2 D uo re cém am e ricana aproxim a as suas sol uçõe s de
ch e gados, possue m m ais de 60 b ugs um pacote de produtividade O ffice .
ide ntificados. R e ce b e ndo ainda grande parte dos se us
lucros de se rviços pub l icitários, a Googl e já
A pe nas 20 dos 60 b ugs te rão corre cção lançou dive rsos se rviços, com o fol h as de
a curto-prazo, o q ue garante q ue cál cul o, cal e ndários, conve rsação, q ue
ne nh um dos outros, se gundo a Inte l , possib il itam soluçõe s sim ples para
pre judicará o util izador e m te rm os de individuais e pe q ue nas e m pre sas.
utilização do siste m a, à e xce pção do
A I39 , q ue pode corrom pê-l
o. Em b ora a e m pre sa ainda não te nh a
de clarado as suas inte nçõe s, cada ve z m ais
surge a ide ia q ue a Googl e pre te nde
atingir um a nova áre a de ne gócio, de sta
ve z com soluçõe s total m e nte b ase adas e m
plataform as w e b . R e sta-nos e spe rar pe lo
q ue pode rá surgir futuram e nte e ve rificar
se se tornará num a opção viáve l ne ste
im portante m e rcado.

<3>
te m a de capa

çõe s m édicas, para l e r sinais e l


éctricos
prove nie nte s de se nsore s (ECG, TAC…) e
m e diante o proce ssam e nto de sse sinal
(transform adas Z , transform adas Fourie r,
fil
tros…) ge rar dados q ue transm itam
inform ação útilaos Profissionais M édicos.

Um Microcontrol ador é um circuito


inte grado, e m q ue num único dispositivo
contém al guns dos principais com pone nte s
ne ce ssários à re alização de Siste m as D igitais

M icrocontrol
adore s Program áve is (m e m ória e o m ais variado
tipo de pe riféricos). Por sua ve z os
Microproce ssadore s, são fundam e ntal m e nte
constituídos por um a ALU (arith m e tic and
Este artigo te m com o ob je ctivos a logic unit), re gistos de dados, TCU (tim e and
apre se ntação de M icrocontrol adore s e a controlunit) e ne ce ssitam q ue a m e m ória e
de pe ndência q ue h oje e m dia a e l
e ctrónica os pe riféricos se jam adicionados
no ge ral(R ob ótica, D om ótica, El e ctrónica e xte rnam e nte , com unicando com o CPU à
Industrial /R e side ncial
, custa de três b arram e ntos (data, addre ss e
Te l
e com unicaçõe s…) te m dos m e sm os. control ).

O s m icrocontrol adore s são unidade s q ue A vantage m de pode r te r um grande


pode m se r program as e m l inguage ns de núm e ro de pe riféricos disponíve is de ntro
alto níve l , com o por e xe m pl o C. Existe m de um ch ip, torna os m icrocontrol adore s
linguage ns de m ais b aixo níve l(asse m b l y), m uito atractivos e m proje ctos e l
e ctrónicos.
e m b ora se ja m ais difícilde de scre ve r um
algoritm o, do ponto de vista do proje ctista Ne ste e xe m pl o se rá usado o PIC 16F877
do circuito. Esta program ação confe re aos q ue é um M icrocontrol ador de se nvol
vido
circuitos digitais constituídos por, pe la M icroch ip Te ch onol
ogy.
m icrocontrol adore s/m icroproce ssadore s,
um a autonom ia e inte l igência, q ue de outra
m ane ira se ria m uito difícil . Graças a e sta
“inte ligência” com e çaram a se r usados e m
circuitos q ue re q ue re m al gum a autonom ia
e capacidade de de cisão m e diante factore s
e xte rnos. Estas e norm e s vantage ns
originaram o apare cim e nto de circuitos
“inte lige nte s” e capaze s de proce ssar e
re l
acionar a m ais variada inform ação.

Num sim pl e s autom óve l , a ce ntral ina


(m icrocontrol adore s e m paralel
o) é capaz
de ao m e sm o te m po control ar: a
com b ustão, a e ne rgia consum ida, o ABS, o Este M icrocontrol
ador te m disponíve is:
- Tim e rs/Counte r com Pre scal
er
ESP e as m ais variadas funçõe s. O uso de
- M ódul os de com paração, Pw m , captura
m icrocontrol adore s num R ob ô confe re -lhe
- AD C de 10 b its
a capacidade para se de sviar de ob je ctos,
- Synch ronous Se rialPort(SSP) com SPI e I2C
re conh e ce r a voz e outros sons, faze r
- Usart
m ovim e ntos q ue vise m um ob je ctivo. Um
- Portas I/O
m icrocontrol ador pode se r usado e m apl ica-
- ...

<4>
te m a de capa

Q uando se com pra um PIC, o conte údo da Para um a m e l h or com pre e nsão do código
sua m e m ória EPR O M S ve m vazia. Se rá de se nvol vido é aconse l h áve l consul
tar o
ne ce ssário re corre r a um “Program ador” D atash e e tdo PIC e m causa.
(e x: PicSTAR T da M icroch ip…), afim de
e nviar para a EPR O M o código do b oot- Mais um a ve z para sim pl ificar o raciocínio
loade r. O b oot-l oade r é o program a q ue vam os assum ir q ue se e stão a re al izar
corre im e diatam e nte após o "re se t" do PIC. de vice -drive rs para o control o de um
Q uando corre , vai te star a l inh a série e proce sso térm ico. Assim a te m pe ratura se rá
ve rificar se e stá algum program a "do outro dada por um Te rm opar. O s Te rm opare s
lado da l inh a" a te ntar contactar com e l e. ne ce ssitam de um a com pe nsação da sua
Caso e xista com unicação pe l a l inh a junção fria, aq ui irá-se assum ir q ue e l a é
série /usb com o Program ador e ntão e sse fe ita por h ardw are e q ue à e ntrada do PIC
código se rá e scrito na m e m ória EPR O M . ch e ga um sinalanal ógico com val ore s e ntre
Este tipo de softw are (M PLAB e ntre outros) 0 e 5 V.
é disponib il izado pe los fab ricante s a troco Para control ar a re sistência irá-se re corre r a
de alguns e uros tal com o os um PW M (Pul se w idth m odul ation) com
program adore s, m as e xiste m al te rnativas duty-cycl e variáve l e sincronizado com a
tanto para program adore s com o para o re de .
softw are , nom e adam e nte o PICP. Para sim pl ificar a l e itura, não se irá faze r
re fe rência a todos os b its dos re gistos de
A m e m ória do PIC irá e star dividida. D uas configuração, para talsuge re -se a consul ta
de ssas divisõe s dize m re spe ito à m e m ória do datash e e t afim de ve rificar o significado
onde e stá o b oot-loade r e a outra onde irá dos b its de cada re gisto e m causa.
se r arm aze nada o código re sponsáve lpe l o
funcionam e nto do PIC talcom o dados q ue #DEVICE DRIVERS - PAP
se jam guardados durante o m e sm o.
#include <pic.h>
#include <stdlib.h>
#include "sci.h"
D EVICE-D R IVER S //////////CONSTANTES//////////
#define TermCh 0 //canal termopar
Ne ste artigo se rão ab ordados os principais #define MEDIA 6 //N de leituras da ADC
de vice drive rs para um PIC. Este s de vice - #define T1_10MS 0xC350 //t1 value at
drive rs se rão a b ase para futuros proje ctos, 10ms
de sde os m ais sim pl e s até aos m ais
com pl e xos. Por e xe m pl o, no control o de Todos os re gistos e portos do PIC são
te m pe ratura de um proce sso térm ico, os tratados com o variáve is, funcional idade
de vice -drive s te rão q ue : pe rm itida pe lo fich e iro pic.h , pois e ste indica
- Faze r l e itura da te m pe ratura indicada pe l o ao com pil ador q uais os re gistos do PIC e e m
se nsor (te rm opar) q ue e nde re ço e b ancos de m e m ória e stão.
- Ligar e de sl igar a re sistência de aq ue cim e nto
- Le r e e scre ve r de inte rface s com o util izador O fich e iro sci.h é disponib il izado pe l
a
(e x: te clado do PC, displ ay…) Microch ip e é onde e stão de scritos os
protótipos das funçõe s usadas nas
Assum indo q ue o PIC já te m de vidam e nte com unicaçõe s pe l
a porta série (R S-232).
o b oot-l oade r configurado, passa-se ao
de se nvolvim e nto do Softw are q ue se rá A prim e ira tare fa a re al
izar se rá configurar
de se nvolvido e m C e poste riorm e nte os portos I/O (PO R T_X e TR IS_X),
com pil ado (M PLAB…) no form ato Inte l
-H e x. e spe cificando se são portos de saída de
dados ou de e ntrada. O s portos usados com o

<5>
te m a de capa

dos se nsore s é tão vasta q ue vai de sde a


e ntrada das AD C, inte rrupts de ve m se r m e dicina até à indústria autom óve l . Os
configurados com o e ntradas, ou se ja, os b its grande s avanços ne stas áre as de ve m -se à
dos re gistos de ve m ficar com o val
or de 1. constante e vol ução e dive rsificação dos
se nsore s. M as a m aioria de le s produz sinais
A m icroch ip disponib iliza um conjunto de de am pl itude s m uito b aixas. Se rá
funçõe s para uso e inicialização da USAR T. ne ce ssário o se u corre cto
acondicionam e nto para q ue e ste s possam
// Function Prototypes: se r proce ssados e usados por
M icroproce ssadore s. É ne sta fase q ue
void Sci_Init(); e ntram as AD Cs (Anal ogic to D igital
void Sci_PutChar(unsigned char); Conve rte r) pois conve rte m sinais
unsigned char Sci_GetChar(void); anal ógicos e m sinais digitais. O s PICs têm
unsigned char Sci_GetFERR(void); AD Cs inb utidas, o q ue facil ita e m m uito o
unsigned char Sci_CheckOERR(void); proje cto de h ardw are (custo, e spaço,
void Sci_PutStr(const char* ); consum o potência …)
void Sci_PutNum (unsigned int num,
unsigned char n, unsigned char comma); void adc_read(unsigned char channel)
// Lê uma entrada analóogica
Estas funçõe s pode m se r usadas e m {
q ualq ue r parte do código, à e xce pção da ADCON0 = (channel << 3) + 0x81;
Sci_Init, função para re sponsáve l pe l a //Enable ADC No canal Cannel
inicialização da USAR T. Esta função te m //Acquisition time = 19.72uS
q ue se r invocada ante s de q ualq ue r um a
das outras, visto todas as outras faze re m delay_uS(22); /*Espera 22us
uso da USAR T. (definida em delay.h) para carregar
completamente Chold e depende da
void Sci_Init() // 19.2kbps impedância da fonte do sinal.*/
{
BRGH = 1; /*high baud rate*/ ADGO = 1;
SPBRG = 64; /*set the baud rate*/ }
SYNC = 0; /*asynchronous*/
SPEN = 1; /*enable serial port Para dim inuir os e rros ine re nte s à m e dição,
pins*/ norm al m e nte faz-se um a m édia de
CREN = 1; /*enable reception*/ conse cutivas l e ituras da AD C. Supondo
SREN = 0; /*no effect*/ q ue o sinalprove nie nte do te rm opar já
TXIE = 0; /*disable tx interrupts*/ e stá de vidam e nte acondicionado e
RCIE = 0; /*disable rx interrupts*/ dim e nsionado e ntão um a possíve lfunção
TX9 = 0; /*8-bit transmission*/ para aq uisição de dados da AD C se rá:
RX9 = 0; /*8-bit reception*/
TRISC7 = 1; /*RX*/
TRISC6 = 0; /*TX*/
TXEN = 1; /*enable the transmitter*/
}

Um a das parte s m ais im portante s é a


ob te nção de dados e xte rnos, prove nie nte s
de se nsore s (te m pe ratura, pre ssão,
h um idade , alongam e ntos, posição,
pie zoe l
éctricos, q uím icos …). A aplicação

<6>
te m a de capa

Assim , é ne ce ssário um de te ctor de


void read_term(void) passage ns por ze ro, circuito e sse
{ im ple m e ntado à custa de um sim pl es
unsigned char i; transístor. Este e ve nto pode se r idêntico a
m uitos outros, tais com o, o e nch im e nto de
adc_val=0; um a fil a de e spe ra de um b uffe r de um
ADCON1=0x00; //left justified route r, controlo de pe riféricos num PC …

O control o do duty cycl e do PW M se rá


for(i=0;i<MEDIA;i++) variáve l(0.01% a 9 9 ,9 9 % ) e de pe nde nte da
{ te m pe ratura (ne ste caso). O val or do duty
adc_read(TermCh); cycl e e stará de pe nde nte de um al goritm o
while(ADGO); //espera pela de control o (ram pa, PI, PI-D …). Para q ue se
conclusão da conversão possam usar e ste s al goritm os é ne ce ssário
adc_val +=ADRESH; // formata o conh e ce r a dinâm ica do sinal(ove rsh oot,
resultado te m po sub ida, te m po e stab e l e cim e nto…),
} pois os actuadore s têm nature zas físicas
adc_val/=MEDIA; //return value distintas e re age m de m ane iras dife re nte s.
} Assim de ntro do program a, com os dados
ob tidos das conve rsõe s da AD C, cal cula-se o
val or corre cto, para q ue o actuador
No caso do PIC 16f877 e xiste m 8 canais ob e de ça aos re q uisitos.
para AD C (AN0..AN7). A AD C usada ne ste
caso é de 8 b its = 2^8 = 256. Supondo q ue Então um a possíve lrotina de ate ndim e nto
se te m um sinalanal ógico, à e ntrada da às inte rrupçõe s, faze ndo uso do m ódul
o de
AD C, variáve le ntre 0 e 5 vol ts, garantidos PW M e xiste nte no PIC, se rá:
pe lo acondicionam e nto do sinal , e ntão …
para 0Vte m -se adc_val = 0 e para 5Vte m -se time = T1_10MS-
adc_val = 255. Este s valore s te rão q ue se r dutycycle*(T1_10MS/100); // duty_cycle
tratados, se for ne ce ssário, para q ue em percentagem
te nh am um a corre spondência com a …
grande za m e dida.
void interrupt isr (void)
{
No caso de se e star a actuar sob re um a (1) if (INTF)
re sistência, e ntão o PW M te rá q ue e star {
sincronizado com a te nsão de re de . Este (2) TMR1L =0;
PW M te rá um duty-cycl e variáve l e (3) TMR1H =0;
proporcional ao te m po de actuação da (4) CCP1CON=0b00000000;
re sistência. A técnica do PW M é m uito (5) CCP1CON=0b00001000;
pode rosa para controlar circuitos (6) TMR1ON=1;
anal ógicos (m otore s…) através de circuitos (7) CCPR1H= time>>8;
digitais (PIC…). (8) CCPR1L= time;
(9) INTF=0;
}
Para q ue e xista sincronização do PW M (10)else if (CCP1IF)
com a re de (a m e nos de uns {
nanosse gundos de dife re nça) é ne ce ssário (11) TMR1ON=0;
q ue “o PIC” saib a q uando é q ue e xiste um a (12) CCP1IF=0;
passage m por ze ro da te nsão de re de . }
}

<7>
te m a de capa

(1) Te sta a orige m da inte rrupção. Com o a - Para a m e dida de um a distância a q ue um


inte rrupção e stá a ocorre r no pino INT rob ô e stá de um ob je cto, pode -se usar ul tra-
e ntão a cada e ve nto ge rado pe l o Z CD sons. Conh e cida a ve locidade de
(ze ro cross de te ctor) irá se r ge rada um a propagação (de pe nde nte das condiçõe s do
inte rrupção. m e io), pode -se calcul ar a distância, sab e ndo
o te m po q ue o sinalde m orou a atingir o
(2)(3) Inicial
iza o tim e r1 a ze ro. ob je cto e a vol tar (re fl
e xão). Para o cál culo
de sse te m po pode -se , após o l ançam e nto do
(4) Ne ce ssário para faze r o re se t ao pino ccp, ultra-som , iniciar a contage m num tim e r e
pois é a única m ane ira de col ocar o pino a q uando se re ce b e r a re fl e xão e ntão o
ze ro após o inte rrupt. de te ctor irá ge rar um a inte rrupção.
Conh e cido e ste te m po o rob ô sab e rá a
(5) Configura o tim e r 1 a funcionar e m distância até ao ob je cto e tom ará as de vidas
com pare m ode e a cada m atch o pino ccp é pre cauçõe s.
activado (5v).

(6) Activa o tim e r1 (início de contage m ). - Nos autom óve is o se gre do da re l ação
pe rform ance /e conom ia, e stá no corre cto
(7)(8) Val or a se r com parado com o tim e r 1 control o do com b ustíve l usado na
ao q ualse rá ge rado um m atch com b ustão. O cál cul o da q uantidade usada,
(9 ) Lim pa o b it q ue indica a orige m do é de pe nde nte de m uitos factore s, com o a
inte rrupt. conce ntração de com b ustíve lde spe rdiçado
durante a com b ustão. Esse de spe rdício
(10)(11)(12) No caso de ausência de um pode rá se r m e nsuráve là saída do m otor.
e ve nto no pino INT, e vita-se q ue o ccp e ste ja Assim , graças a um se nsor q uím ico q ue m e ça
inde finidam e nte activo. a q uantidade de com b ustíve l , pode r-se -á
optim izar a com b ustão. Esta optim ização
Concl
usão se rá fe ita pe l a ce ntralina, q ue e m b ora se ja
um a unidade com pl e xa, visto te r q ue
Tirando os porm e nore s da inte rface com o control ar vários m e canism os (ABS, ESP, …),
utilizador, e ste s de vice -drive rs, pode rão se r pode se r vista com o vários
usados e m m uitas apl icaçõe s: m icroproce ssadore s e m paral el
o…

R icardo R och a

<8>
a program ar

4 function printNome(){
5 print($this->nome);
6 }
7 }

Cl
asse s 8
9
10
$obj = new User();
$obj->printNome();
?>

Ne ste artigo vam os ab ordar as tão Com o pode m os ve r na l inh a 8 vai se r criado
te m idas classe s de ph p, b e m com o através do com ando ne w um ob je cto de
os se us construtore s, de strutore s e nom e “ob j”, e ste nom e pode se r q ual q ue r
h e rança. Vam os te ntar de m onstrar um talcom o se tratasse de um a variáve l
de um a form a sim pl e s e com pl e ta norm al . Na linh a 9 se rá pe dido ao ob je cto
com o criar e util izar as classe s e m “ob j” q ue e xe cute o m étodo printNom e ()
ph p (ve rsão 5). de finido na class “Use r”, e ste pe dido é fe ito
através da se guinte sintaxe O b je cto ->
Com e çam os por criar a nossa cl ass, para Método.
isso vam os e scre ve r o se guinte código.
Agora q ue já sab e m os com o criar um a cl
ass
1 <?php sim ple s vam os agora ve r com o funcionam e
2 class User{ para q ue se rve m os construtore s e
3 public $nome = "guest"; de strutore s de cl
asse s.
4 Para isso vam os usar o se guinte código.
5 function printNome(){
6 print($this->nome); 1 <?php
7 } 2 class User{
8 } 3 public $nome;
9 ?> 4 public $email;
5 public $pass;
Vam os agora anal isar o q ue foi fe ito, na 6
linh a 2 foi de cl arada um a cl ass de nom e 7 function __construct($nome,
“Use r”, e ssa cl ass contém um a variáve l $email, $pass){
“nom e ”, com o val or “gue st” com o se pode 8 $this->nome = $nome;
ve r na l inh a 3, na l inh a 5 é de finida a 9 $this->email = $email;
função printNom e () q ue ao se r ch am ada 10 $this->pass = $pass;
irá im prim ir o val or da variáve l“nom e ”. A 11 }
re fe rência $th is é utilizada para dize r q ue a 12 function getNome(){
variáve la usar se rá a variáve lde finida na 13 return $this->nome;
class, m ais á fre nte vam os ve r m e l h or e sta 14 }
re fe rência. 15 function printNome(){
16 print($this->nome);
Agora ve jam os com o usar a cl ass q ue 17 }
criam os, para isso adicionam os o se guinte 18 function getEmail(){
código fora da cl ass, ate nção q ue o código 19 return $this->email;
adicionado não pre cisa de se r col ocado 20 }
de ntro do fich e iro da cl ass, pode e até 21 function getPass(){
de ve se r col ocado noutro fich e iro e 22 return $this->pass;
im portando a cl ass através do include . 23 }
24 }
1 <?php 25
2 class User{ 26 $obj=new User("guest",
3 public $nome = "guest"; "guest@pap.pt", "123456");

<9 >
a program ar

27 $user = $obj->getNome(); O utra parte im portante é a h e rança. Um a


28 $mail = $obj->getMail(); classe pode h e rdar m étodos e variáve is de
29 $pass = $obj->getPass(); um a outra cl asse usando a pal avra e xte nds
30 } na de cl aração com o pode m os ve r a b aixo.
31 ?> Um a cl asse ape nas pode h e rdar de um a
outra cl assa. Não é possíve lte r um a cl asse a
Com o pode m os ve r é de finida um a cl ass h e rdar de várias cl asse s, m as é possíve lte r
“Use r”, com as variáve is “nom e ”, “e m ail” e várias cl asse s a h e rdar um a só cl asse . O s
“pass”. Foram tam b ém de finidos os m étodos ob je ctos h e rdados pode m se r re de finidos ou
ge tNom e (), ge tEm ail
() e ge tPass() q ue util izados na sua form a original , através da
re torna cada um um a variáve l da cl ass. util ização da cl ausul a pare nt:: para funçõe s e
Agora a novidade , a função __construct(), se lf:: para variáve is. Um e xe m plo:
linh a 7. Esta função de ve se r nom e ada da
form a com o se e ncontra aq ui pre se nte . <?php
class ClassPrincipal{
A função __construct() é e xe cutada public $nome = "guest";
autom aticam e nte q uando um ob je cto de
class é criado, todo o código pre se nte function printNome(){
de ntro de sta função se rá e xe cutado q uando print($this->nome);
for criado o ob je cto, ne ste caso o m étodo }
__construct() foi de finido para re ce b e r três }
argum e ntos “nom e ”,”e m ail ” e “pass” e class SubClass extends ClassPrincipal{
atrib uir e sse s val ore s às variáve is de cl ass public $email = "guest@pap.pt";
de finidas ante riorm e nte . Com o pode m os
ve r nas l inh as 8, 9 e 10 é util izada a function printAll(){
re fe rência $th is e o q ue o $th is vai faze r e m print($this->email);
Português é dize r q ue a variáve lnom e para parent::printNome();
a q uale l e aponta é a variáve lde cl ass e não }
as variáve is q ue foram dadas com o function printNome(){
argum e ntos. Basicam e nte o $th is de ve se r parent::printNome();
util izado se m pre q ue nos re fe rim os a um a }
variáve l , constante ou função de finidas na }
class. $obj = new SubClass();
$obj->printAll();
Nas l inh as 26 a 29 pode m os ve r com o $obj->printNome();
utilizar e sta class, prim e iro criam os o ob je cto ?>
com os val ore s dados ou se ja na l inh a 26 vai
se r criado um ob je cto e m q ue as variáve is Foram de finidas duas cl asse s a cl asse
“nom e ”, “e m ail ” e “pass” vão te r os val ore s “Cl assPrincipal ” e a classe “Sub Cl ass”. A classe
“gue st”, “gue st@pap.pt” e “123456”, l inh as “Sub Cl ass” te m ace sso a todos os ob je ctos da
se guinte s ve m os com o util izar os m étodos classe “Cl assPrincipal ”. A função printal l
()
para re tornar os val ore s das variáve is de utiliza a função printNom e () de finida e m
class. “Cl assPrincipal ” assim printAl l
(), para além de
im prim ir o val or da variáve l “m ail ”, vai
Para al ém da função __construct() te m os tam b ém im prim ir o val or da variáve l“nom e ”
Fáb io Corre ia

tam b ém a função __de struct(), q ue ao com o e stá de finido na “Cl assPrincipal”.


contrário da função __construct(), e sta é Pode m os tam b ém ve r um e xe m pl o de
e xe cutada q uando o ob je cto é de struído, ou sob re carre gam e nto de funçõe s e m q ue se
se ja q uando é “apagado”, não vam os e ntrar cria um a função com o m e sm o nom e do
e m m aior de talh e visto se r um m étodo de de finido na “Cl assPrincipal” e q ue vai
b aixa im portância. e xe cutar a printNom e () da “Cl assPrincipal ”.

<10>
a program ar

require 'gtk2'

Gtk.init
window = Gtk::Window.new(
Gtk::Window::TOPLEVEL )
window.show
Gtk.main

Basta copiar o código acim a, guardar o


R ub y + GTK 2 fich e iro com o gtk .rb , por e xe m pl
e scre ve r na l
o, e
inh a de com andos 'rub y
gtk .rb '. Se tudo corre r b e m , pode rão ve r
Introdução à criação um a jane l a de 200x200 de tam anh o. Agora
de GUIs a e xpl icação de talh ada.

Ne ste artigo ire m os dar um a


pe q ue na introdução à criação de
GUIs, usando R ub y e a b ib l
iote ca
GTK 2.
R ub y é um a l inguage m de scripting ope n-
source inte rpre tada q ue , e m b ora pouco
usada, possui um grande pote ncial . Possui
algum as se m e l h anças com Pyth on e Java,
se ndo orie ntada a ob je ctos. Ganh ou require 'gtk2'
grande notab il idade através do R ub y on
R ail
s, um a fram e w ork de stinada à criação Esta linh a irá carre gar a b ib l
iote ca rub y-
de pl ataform as w e b , b ase adas e m b ase de GTK 2, para pode rm os usar os se us
dados. Usare m os GTK 2 para a criação do m étodos.
GUI, b ib liote ca b ase do am b ie nte gráfico
Gnom e , dos siste m as ope rativos Gtk.init
GNU/Linux. M as a b ib l iote ca pode se r
instalada noutros siste m as, com o o Este com ando irá inicializar a API, de m odo
W indow s. Para instal ar e sta b ib l iote ca a pre pará-la para se r usada. A partir de
convém se guir as instruçõe s da página agora pode m os com e çar a criar os ob je ctos
oficial: h ttp://rub y-gnom e 2.source forge .jp. q ue irão com por o GUI.
Existe m vários pacote s para dife re nte s
distrib uiçõe s GNU/Linux e a possib il idade window = Gtk::Window.new(
de com pil ar através do código-fonte . Gtk::Window::TOPLEVEL )
Escusado se rá dize r q ue é ne ce ssária a window.show
instalação prévia de R ub y, já incl uída e m
algum as distrib uiçõe s. Aq ui é criada a jane l a principal, sob o
nom e de w indow . O argum e nto passado à
Prim e iro ire m os criar ape nas um a jane la, função, Gtk ::W indow ::TO PLEVEL, indica
com todas as opçõe s norm ais, com o q ue a jane l a criada irá usar as
re dim e nsionar m inim izar, m axim izar, e m caracte rísticas norm ais das jane l as do
q ue ape nas fe ch ar a jane la não é possíve l
, am b ie nte gráfico, b ordas, de coraçõe s, ... O
se m final izar o proce sso. com ando se guinte irá m ostrar a jane l a no
e crã.

<11>
a program ar

Gtk.main Atrib uam um nom e ao program a e corram -


no. O re sul
tado de ve rá se r se m e l
h ante a e ste :
Esta ch am ada irá indicará q ue o program a
irá e spe rar agora e re col h e r todos os
e ve ntos q ue ocorre re m , com o o carre gar
de um b otão, o arrastar da jane l a, ...

No e xe m pl o se guinte , ire m os já criar um


b otão, adicioná-l o à nossa jane l a e
e xe cutar um com ando cada ve z q ue e ste
for pre ssionado. O com ando se rá e scre ve r
“O lá!” na linh a de com andos. O program a
passará tam b ém a e nce rrar se m prob l e m as. def delete_event( widget )
return false
require 'gtk2' end

def delete_event( widget ) def destroy( widget )


return false Gtk.main_quit
end end

def destroy( widget ) Estas duas funçõe s irão pe rm itir o


Gtk.main_quit e nce rram e nto e de struição da jane l a.
end Ape nas ne ce ssitam de sab e r q ue a função
de le te _e ve nt de ve rá re tornar false , de
Gtk.init m odo a proce de r-se à de struição da jane l a.
Esta função pode rá se r usada para e vitar
window = Gtk::Window.new( q ue a jane l a fe ch e l
ogo, e pe rguntar ao
Gtk::Window::TOPLEVEL ) utilizador se de se ja m e sm o sair.
window.set_default_size( 200, 200 )
window.set_default_size( 200, 200 )
window.signal_connect(
"delete_event" ) do Este com ando irá de finir o tam anh o da
delete_event( window ) jane l
a para 200 por 200 pixe l s. Este
end com ando é ne ce ssário de sta ve z porq ue ,
se m e ste , a jane l
a iria tom ar o tam anh o
window.signal_connect( "destroy" ) do m ínim o do b otão q ue ire m os adicionar.
destroy( window )
end window.signal_connect(
"delete_event" ) do
button = Gtk::Button.new( "Olá!" ) delete_event( window )
window.add( button ) end

button.signal_connect( "clicked" ) do window.signal_connect( "destroy" ) do


puts "Olá!" destroy( window )
end end

button.show A função signal _conne ct pe rm ite capturar


window.show um e ve nto q ue te nh a ocorrido e m al gum
ob je cto. Ne ste caso o ob je ctivo é capturar
Gtk.main os e ve ntos de fe ch o e de struição da jane l
ae
ch am ar as funçõe s ante riorm e nte criadas.

<12>
a program ar

button = Gtk::Button.new( "Olá!" )


window.add( button )
window.set_default_size( 200, 200 )
Criam os um ob je cto do tipo Button, com a
e tiq ue ta de O l
á!. O com ando a se guir window.title = "Hello World"
adiciona o b otão criado à nossa jane l
a.
window.border_width = 5
button.signal_connect( "clicked" ) do
puts "Olá!" window.signal_connect( "delete_event"
end ) do
delete_event( window )
Usam os novam e nte a função end
signal _conne ct, m as de sta ve z com o nosso
b otão, para ve rificarm os q uando e ste é window.signal_connect( "destroy" ) do
pre ssionado. Se m pre q ue for pre ssionado, destroy( window )
o com ando puts irá e scre ve r na l inh a de end
com andos O l á!.
box = Gtk::VBox.new( false, 0 )
button.show
window.show window.add( box )

Gtk.main button = Gtk::Button.new(


"Cumprimentar" )
Finalm e nte , m ostram os os dois ob je ctos
criados no e crã e e spe ram os para q ue text = Gtk::Label.new( "" )
ocorram os e ve ntos e spe rados.
button.signal_connect( "clicked" ) do
text.label = "Olá!"
end
Para te rm inar, ne ste úl tim o e xe m pl
o irá
de m onstrar o uso de caixas para conte r e box.pack_start( button, true, true, 5 )
organizar dive rsos ob je ctos e o uso de um box.pack_start( text, true, true, 5 )
novo tipo de ob je cto, o Lab e l
.
button.show
require 'gtk2' text.show
box.show
def delete_event( widget ) window.show
return false
end Gtk.main

def destroy( widget )


Gtk.main_quit
end D e sta ve z de finim os m ais al gum as
proprie dade s da jane la, q ue são úte is e m
Gtk.init m uitos casos. O re sul tado de ve rá se r
se m e l
h ante a e ste :
window = Gtk::Window.new(
Gtk::Window::TOPLEVEL )

<13>
a program ar

box.pack_start( button, true, true, 5 )


box.pack_start( text, true, true, 5 )

Agora adicionam os o b otão e a e tiq ue ta à


caixa, usando a função pack _start. Esta
função vai adicionando os ob je ctos um a
se guir ao outro, pre e nch e ndo a caixa, ao
contrário de pack _e nd, q ue faz o oposto. O
prim e iro argum e nto indica o ob je cto a
adicionar. O se gundo argum e nto indica se
os ob je ctos de ve rão e xpandir-se , de m odo
window.title = "Hello World" a q ue a caixa ocupe o m áxim o de e spaço
possíve l . O te rce iro argum e nto funciona se
window.border_width = 5 o se gundo for ve rdade iro, e de fine se o
e spaço ganh o pe l a e xpansão da caixa
O prim e iro com ando de fine o nom e da de ve rá se r ocupado pe l os ob je ctos, ou
jane la, q ue irá apare ce r na b arra de títul
o. ape nas por e spaçam e nto. O q uarto e
O se gundo com ando de fine um a b orda úl tim o argum e nto de fine o e spaçam e nto
inte rna de 5 pixe is, ou se ja, a distância a q ue o ob je cto de ve rá te r, e m pixe ls, à vol
ta
q ue os ob je ctos se de ve rão e ncontrar da de l e , de ntro da caixa.
b orda e xte rior da jane l
a.
E aq ui te rm ina e sta introdução à criação de
box = Gtk::VBox.new( false, 0 ) GUIs usando o GTK 2. Se ficaram
inte re ssados pe l os e xe m pl os q ue viram ,
window.add( box ) pode rão ir ao site oficial (h ttp://rub y-
gnom e 2.source forge .jp) e procurar m ais
Criam os um ob je cto do tipo VBox, ou se ja, inform açõe s sob re dife re nte s ob je ctos e os
um a caixa ve rtical . Este tipo de caixas se us atrib utos. Esta é, se m dúvida, um a das
organiza os ob je ctos q ue contêm mel h ore s e m ais sim pl e s b ib l
iote ca para a
ve rticalm e nte , e nq uanto as H Box o faze m criação de GUIs.
h orizontal m e nte . O prim e iro argum e nto
de fine se o e spaço q ue cada ob je cto irá
ocupar de ve rá se r h om ogéne o ou não,
com os re stante s ob je ctos da caixa. O
se gundo argum e nto de fine o e spaçam e nto
q ue os ob je ctos irão te r e ntre si, e m pixe l
s.
O se gundo com ando adiciona a caixa à
jane la. Assim a jane l a pode rá conte r
ob je ctos de ntro da caixa.

text = Gtk::Label.new( "" )

button.signal_connect( "clicked" ) do
text.label = "Olá!"
end
Sérgio Santos

Criam os o ob je cto de tipo Lab e l , se m nada


e scrito, com o pode m ve r pe l o argum e nto
forne cido. D e pois al te ram os o com ando q ue
ocorre q uando o b otão é pre m ido, para
e scre ve r al
go na e tiq ue ta q ue criám os: O l
á!.

<14>
a program ar

O s re cursos b ásicos para q ue m q ue r


program ar e m JavaScript são um e ditor de
te xto sim ple s para e scre ve r o código e um
b row se r para o te star.

JavaScript O JavaScript é um a l inguage m e m b e b ida


no se io do H TM L, é orie ntada a ob je ctos e
a e ve ntos q ue ace de do D O M do b row se r.
Introdução É um a l inguage m inde pe nde nte da
pl ataform a onde corre . É um a l inguage m
JavaScript é um a l inguage m m uito sim pl es q ue não é com pil ada e é inte rpre tada pe lo
e de fácil apre ndizage m . Possui um a b row se r, b ase ando-se e m ob je ctos.
sintaxe (form a de e scrita) se m e l h ante ao
Java, C, C+ + , PH P. Foi criada para te r um a Pote ncial
idade s do JavaScript a te r
utilização w e b b ase d por Bre ndan Eich da e m conta:
Ne tscape e m 19 9 5, com o um a e xte nsão - ge rar código H TM L;
para o b row se r Navigator v2.0, com o - re agir conform e as acçõe s do visitante ;
principal propósito de pe rm itir um a - ge rar conte údos dinâm icos;
inte ractividade supe rior à q ue se - val idar form ul ários;
conse guia com o H TM L e para ate nde r - criar e fe itos gráficos.
principal m e nte às se guinte s ne ce ssidade s:
- Val idação de form ul ários e m clie ntside ; Vantage ns da util
ização do
- Inte ração com a página. Assim , foi fe ita JavaScript:
com o um a l inguage m de script. - fácilapre ndizage m ;
- não e xige re cursos se rve r side ;
Existe m várias im ple m e ntaçõe s de - é rápida por se r inte rpre tada no b row se r;
JavaScript, com l ige iras dife re nças e ntre si: - e xiste m m uitos re cursos na Inte rne t.
o standard de finido pe l a ECM A, a
im pl
e m e ntação da Ne tscape e a D e svantage ns da util
ização do
im pl
e m e ntação da M icrosoft. JavaScript:
- o código pode se r facil
m e nte copiado pois
A principalcaracte rística do JavaScript é a fica e xposto;
form a com o inte rage com o b row se r, - não é um a b oa fe rram e nta para inte ragir
pode ndo ace de r a ob je ctos. Assim , para com b ase de dados;
um a b oa program ação e m JavaScript é - é m e nos ve rsátilq ue outras l inguage ns
ne ce ssário conh e ce r o D O M (D ocum e nt ge néricas.
O b je ct Mode l) de cada b row se r. D e vido aos
b row se rs te re m DO M dife re nte s é
ne ce ssário conh e cê-l os e spe cificam e nte , Estrutura dos program as em
daí ve m as dive rsas im pl e m e ntaçõe s do JavaScript
JavaScript.
O JavaScript é norm al m e nte inse rido e m
Á sua união com o CSS ch am a-se de fich e iros H TM L e é col ocado de ntro das
D H TML, assim usando o JavaScript é m arcas <script> </script>.
possíve lm odificar dinam icam e nte os e stil
os O código te m de e star ou e ntre as tags
das páginas. A l inguage m ActionScript da <h e ad> </h e ad> ou e ntre as tags <b ody>
Macrom e dia b ase ia-se no standard do </b ody>.
JavaScriptcriado pe l a ECMA.

<15>
a program ar

Q ue stõe s de Sintaxe se guir as se guinte s re gras:


1 - a e xte nsão do fich e iro te m de se r .js
O JavaScript é se nsíve l a m aiúscul as e 2 - de ve se r invocado a partir de um
m inúscul as, de sta form a e scre ve r 'Nom e ' e fich e iro H TM Lcom a se guinte form a <script
'nom e ' não é a m e sm a coisa e vão se r l idas src= "oTal Exte rno.js"></script>
com o inde pe nde nte s um a da outra. 3 - de ntro do fich e iro e xte rno não se de ve
O s e spaços não pre e nch idos são ignorados, incl uir a tag <script> ne m a tag </script>
por isso de ixar e spaçam e nto é ape nas um a D e sta form a um fich e iro e xte rno de ve te r
q ue stão de e nte ndim e nto pois o JavaScript e sta form atação:
não vai notar dife re nças.
Todas as instruçõe s de ve m te rm inar com document.write("bla bla bla")
um ponto e vírgul a (;).

É aconse l h áve l de sde o início a col ocar Tipos de dados


com e ntários no código para o tornar de
m ais fácil l e itura e e dição. Para inse rir Existe m várias possib il idade s de tipos de
com e ntários pode e scre ve r e ntre os dados e m JavaScript e ntre e l e s de stacam -
de lim itadore s '/*' e '*/' ou e ntão '//' e se os num éricos, os l ógicos, as strings, o
e scre ve r até ao fim da l inh a, te nh a e m nul le o unde fine d. O s num éricos com o o
ate nção q ue os com e ntários vão se r nom e indica pode m arm aze nar val ore s
ignorados pe l o JavaScript, por isso não inte iros e com ponto fl utuante e pode m
convém col ocar código de ntro de um faze r parte de ope raçõe s de arite m ética
com e ntário pois e ste não se rá l ido. com o a som a, a sub tracção, a m ul tipl
icação
e a divisão. O s val ore s l ógicos ape nas
Se pre te nde q ue o script q ue e stive r a pode m arm aze nar dois val ore s o true
de se nvol ve r e m JavaScript só se ja (ve rdade iro) e o fal se (fal so). O s val ore s
apre se ntado na página caso o b row se r e m strings são cade ias de caracte re s, o m aior
q ue stão e ste ja b e m configurado e suporte núm e ro q ue um a string pode conte r
JavaScript col oq ue o se u código de ntro de de pe nde do b row se r e m q ue stãoe os
'<!--' e '-->', com o m ostra o e xe m pl
o: val ore s strings são de l im itados por
apóstrofe (') ou por aspas("). Val ore s nul l
<html> são val ore s e spe ciais, re pre se nta um
<head> ob je cto nul o, não de ve se r confundido
<title>Inserir código seguro</title> com um a variáve lnão inicial izada, pois o
</head> val or nul le xiste e e xiste e m m e m ória. O
<body> val or unde fine d significa q ue a variáve l
<script type="text/javascript"> não foi criada, inicial m e nte todas as
<!-- variáve is se e ncontram ne ste e stado.
document.write("bla bla bla")
//escreve bla bla bla na página M ode l
o de O b je ctos do
--> D ocum e nto
</script>
</body> O D O M (D ocum e nt O b je ct M ode l ) de um a
</html> página é um a re pre se ntação h ie rárq uica,
e m form ato de árvore . D e sta form a, a raíz é
Fich e iros Exte rnos a jane l a do b row se r, daí ram ifica-se e m
parágrafos, tab e l as, form ul ários, e ntre
Q uando é pre te ndido util izar um código outros.
por várias páginas ou, por um a q ue stão de O JavaScript pe rm ite ace de r de um a form a
organização, é possíve l e conve nie nte dinâm ica aos vários ram os, l e ndo-os e , se
colocá-l
o num fich e iro e xte rno q ue de ve ne ce ssário, al
te rando os se us val ore s.

<16>
a program ar

Existe m vários standards dos D O M, o da As funçõe s só são e xe cutadas no m om e nto


W 3C, o da Ne tscape e o do Inte rne t e m q ue e stas são invocadas, por isso as
Expl ore r. O D O M do IE im pl e m e nta as funçõe s pre se nte s no e xe m pl o 3 só são
re com e ndaçõe s do W 3C m as é m ais vasto e xe cutadas no onl oad do b ody e no
q ue e ste . onunl oad do b ody re spe civam e nte .

Eve ntos Eve ntos de util


izador
O JavaScript é um a l inguage m orie ntada O s e ve ntos pode m se r util izados para
principal m e nte a e ve ntos e ob je ctos. O s inte ragir com o utilizador, de sta form a só
e ve ntos pode m se r produzidos de duas são invocados por acção de ste , assim é
form as: pe lo siste m a ou pe l
o util
izador. Pe l
o possíve ltornar a página m ais atractiva e
siste m a q uando re sul tam do facto de m ode l ada para cada util izador pois não
carre gar ou de scarre gar um a página, pe l o apre se nta tudo m as só o q ue o util izador
utilizador na m e dida e m q ue pode inte ragir pre te nde .
com as suas acçõe s, através de sob re por o
rato ou carre gar num b otão, e ste s são os <head>
e xe m plos m ais com uns ape sar de e xistire m
m uitos m ais. <script language="Javascript">
function skin1()
Eve ntos do Siste m a {
document.bgColor='red';
}
Um e xe m pl
o de re sposta a e ve ntos do siste m a: function skin2()
{
<html><head> document.bgColor='green';
<script language="JavaScript"> }
<!-- function skin3()
function entra(){ {
window.alert("Bem vindo"); document.bgColor='yellow';
} }
function sai(){ function skin4()
{
window.alert("Volte sempre");
document.bgColor='#FFFFCC';
}
}
-->
</script> </script>
</head>
<body onload="entra();" </head>
onunload="sai();">
<p>Texto da página...</p> <body>
</body></head>
<form name="cores">
No <h e ad> de fine m -se duas instruçõe s, a <input type="radio" name="campo"
onclick="skin1();">Fundo vermelho<br>
"e ntra()" e a "sai()". Na prim e ira função
<input type="radio" name="campo"
(function), "e ntra()", faz surgir um a jane la
onclick="skin2();">Fundo verde<br>
de aviso no ce ntro do e crã q uando a página <input type="radio" name="campo"
é carre gada q ue m ostra um a m e nsage m , onclick="skin3();">Fundo amarelo<br>
"Be m vindo, e xe m pl o de um a re accao a um <input type="radio" name="campo"
e ve nto do siste m a". Na se gunda função onclick="skin4();">Fundo amarelo<br>
(function), "sai()", faz surgir um a jane l
a de </form>
aviso q uando se sai da página com a
m e nsage m "Vol te se m pre ". </body>

<17>
a program ar

Ne ste e xe m pl o o visitante da página pode


e scolh e r q ue cor q ue r dar ao b ack ground. D e cl
arar um a variáve l é m uito sim pl e s,
No e ntanto se o util izador sair da página a com o pode rá ve r no e xe m pl
o se guinte .
sua e scol h a se rá pe rdida. D e sta form a é
m ostrado um a form a de o JavaScript
inte ragir com o visitante . var nome;
var idade;
Variáve is var pais="Portugal";

Variáve lé um a posição de m e m ória onde é


possíve larm aze nar ce rtas inform açõe s. As Com o pode ob se rvar no e xe m pl o ante rior
variáve is são re pre se ntadas por nom e s de cl
arar um a variáve lé b astante sim pl
e s.
de nom inados ide ntificadore s q ue têm um a
e strutura de finida:
Tipos de Variáve is
1. D e ve m iniciar ob rigatoriam e nte por um a
le tra ou pe l
o sím b ol
o "$"; Em JavaScript não é ne ce ssário indicar o
2. A partir daí al ém de l e tras, "$" pode tipo de variáve lcom a q ualse vai trab al h ar
conte r dígitos(0 até 9 ). de vido às variáve is e m JavaScript pode re m
arm aze nar dife re nte s tipos de dados.
D e se guida vai se r m ostrado um e xe m pl
o
de m anipul ação de variáve is:
Concl
usão
<html><head></head>
<body> Ne sta prim e ira parte do artigo de JavaScript
<script type="text/javascript"> foram ab ordados te m as b ásicos e iniciais da
var mensagem="Aqui está a mensagem"; program ação com JavaScript. No e ntanto,
//define a variável mensagem não ficam os por aq ui pois de vido à grande
document.write(mensagem);
e xte nsão do artigo, e ste vai se r dividido e m
document.write(
"<p>"+mensagem+"</p>");
duas parte s um a de l as. A prim e ira parte é a
</script></body></html> q ue acab aram de l e r, a se gunda parte sairá
na próxim a e dição da re vista, na q ual
vam os ab ordar ope radore s, funçõe s,
D e cl
aração de Variáve is instruçõe s condicionais (if, sw itch ),
instruçõe s ite rativas (for, w h il e , do-w h ile,
É possíve lde cl arar um a variáve lde duas continue , b rak e ), program ação orie ntada a
form as m as só ire m os ab ordar um a de l as, a ob je ctos (PO O ) e ve ctore s.
m ais utilizada, q ue consiste e m util izar um a
pal avra re se rvada "var". Um a variáve lq ue
não te nh a sido inicial izada, possui o val or
de "unde fine d", e te nh a e m ate nção q ue o
JavaScript é se nsíve l a m aiúscul as e
m inúscul as, ou se ja, l e tras m inúscul as e
m aiúscul as são dife re nte s, portanto,
unde fine d e nul lde ve m se r e scritos se m pre
João Pe re ira

em l e tra m inúscul as. Se um a variáve l é


de clarada ape nas, com o com ando "var", o
se u conte údo é "unde fine d" ou NaN (Not a
Num b e r), caso e ste ja num conte xto
num érico.

<18>
tutorial

Ex:
Dim nomeArray(,) As String
OU
VisualBasic.NET Dim nomeArray(10, 10) As String
'Array com duas dimensões de 10x10'

3ª Parte - Mul
ti-dim e nsional
D im nom e Array(num e ro totalde e l e m e ntos
Arrays – 1, num e ro totalde e l e m e ntos – 1, num e ro
totalde e le m e ntos – 1, e tc) as Tipo de D ados
Um array é conh e cido com o um a l ista, no
caso de se r uni-dim e nsional , ou um a m atriz (num e ro totalde e l e m e ntos – 1) – te rá q ue
no caso de se r b i-dim e nsional , e é um a das se r o val or totalde e l e m e ntos m e nos 1,
m ais im portante s e struturas de dados e razão pe l a q ualé indicada com o prim e ira
tam b ém um a das m ais sim pl e s. Um array é posição, a posição 0. Um array de cl arado
constituído por um nom e e por um com o nom e Array(9 ) irá suportar 10
núm e ro, de nom inado de índice . Em posiçõe s, ou se ja, de 0 a 9 .
VB.NET, a prim e ira posição do array é
se m pre no índice 0, ao contrário do q ue Q uando trab al h am os com arrays, por ve ze s
aconte cia no VB6, podia-se de finir se a ve m o-nos ob rigados a re dim e nsiona-l o, pois
posição 0 ou 1 se ria a inicial. não pode m os de finir um a dim e nsão fixa
para o m e sm o. Para faze rm os e sta
- nom e Array(índice ) ope ração, util izam os o R e D im . O R e D im é
- nom e Array(0) – Prim e ira posição usado para al te rar o tam anh o de cada
- nom e Array(Ub ound(nom e Array)) – dim e nsão do array, m as nunca pode al te rar
Úl tim a posição o núm e ro de dim e nsõe s ou tipo de dados
do m e sm o. O q ue o R e D im faz é apagar o
D e cl
aração de arrays array actuale criar um novo array com as
de finiçõe s indicadas no R e D im .
- Uni-dim e nsional
Dim nomeArray(10, 10) As String
D im nom e Array(num e ro totalde 'Array com duas dimensões de 10x10'
ele m e ntos – 1) as Tipo de D ados
Ex: ReDim nomeArray(10, 15)
'Redimensiona o array para 15
Dim nomeArray(3) As String 'Declara elementos na 2ª dimensão'
o array com 4 elementos'
OU Com o o array actual é apagado, toda a
Dim nomeArray() As String = inform ação contida é igual m e nte e l
im inada.
{"elemento1", "elemento2", Para pode rm os m ante r e ssa inform ação,
"elemento3", "elemento4"} 'Declara o te rm os de usar juntam e nte com o R e D im , o
array e atribui valores' Pre se rve . Um dos inconve nie nte s na
utilização do Pre se rve , é q ue ape nas pode rá
- Bi-dim e nsional se r al te rada a ultim a dim e nsão do array,
te ndo q ue m ante r o núm e ro de e l e m e ntos
D im nom e Array(num e ro totalde das outras.
ele m e ntos – 1, num e ro totalde e l
e m e ntos
– 1) as Tipo de D ados

<19 >
tutorial

Cre ate Instance


ReDim Preserve nomeArray(15, 10) Inicial
iza um a nova instância da cl
asse
'Redimensiona o array para 15 array.
elementos na 1ª dimensão e mantem a
informação armazenada' Eq ual
s (h e rdado de O b je ct)
D e te rm ina se duas instâncias de ob je ctos
O s arrays possue m com o q ual
q ue r outra são iguais.
classe do VB.NET um conjunto de m étodos
e proprie dade s. Ge tLe ngth
O b tém o num e ro de e le m e ntos de um a
Proprie dade s dim e nsão e spe cificada de um array.

Ge tLow e rBound
IsFixe dSize O b tém o m e nor índice infe rior da
Indica se o array te m um tam anh o fixo. dim e nsão e spe cificada e m um array.

IsR e adO nl
y Ge tType (h e rdado de O b je ct)
Indica se o array é som e nte l
e itura (re ad- O b tém o tipo da instância actual
.
only).
Ge tUppe rBound (Eq uival
e ao
IsSynch ronize d UBound do VB6)
Indica se o ace sso ao array é sincronizado O b tém o índice supe rior da dim e nsão
(th re ad-safe ). e spe cificada num array.

Le ngth Ge tVal
ue
O b tém o totalde e le m e ntos e m todas as O b tém o val
or de um e l
e m e nto de finido
dim e nsõe s do array. no array.

R ank Inde xO f
O b tém o núm e ro de dim e nsõe s do array. R e torna o índice da prim e ira ocorrência de
um val or e m um array de um a dim e nsão.
SyncR oot
O b tém um ob je cto q ue pode se r usado Initial
ize
para sincronizar o ace sso ao array. Inicia cada e l
e m e nto de um array
ch am ando o construtor padrão.

Métodos R e ve rse
Inve rte a orde m dos e l
e m e ntos de um
Cl
e ar array de um a dim e nsão.
D e fine o inte rval
o dos e l
e m e ntos de um
array para ze ro, para false ou para nul l. Se tVal
ue
D e fine o e l
e m e nto e spe cificado e m um
Cl
one array para um val or de finido.
Cria um a copia do array.
Sort
Copy O rde na os e l
e m e ntos de um array de um a
Copia a se cção de um array para outro dim e nsão.
array e re al iza o casting e o b oxing
re q ue rido. ToString (inh e rite d from O b je ct)
R e torna um a string q ue re pre se nta o
CopyTo ob je cto actual
.
Copia todos os e l
e m e ntos de array de um a
dim e nsão para outro array. (inform açõe s re tiradas de w w w .m acoratti.ne t)

<20>
tutorial

Fich e iros Le r um fich e iro

Para trab al h arm os com fich e iros e m Após faze rm os o im portdo nam e space IO ,
VB.NET re corre m os q uase se m pre às te m os disponive is as cl asse s para a
m anipul ação de fich e iros. Para faze r a l e itura
classe s do Syste m .IO , e para isso, te m os
de um fich e iro ire m os re corre r à cl asse
q ue faze r o im portde ste . Stre am R e ade r. Esta cl asse possui m étodos
com o o R e adLine (pe rm ite -nos l e r o fich e iro
Import System.IO linh a a l inh a), o R e adToEnd (pe rm ite -nos l er
o fich e iro do se u inicio até ao fim e carre gá-
Para m anipul arm os um fich e iro, ante s lo num a variave lou ob je cto), e ntre outros.
ne ce ssitam os de criar um canalpara e sse
m e sm o fich e iro, e para isso usam os o Imports System.IO
File Stre am . O Fil e Stre am pe rm ite -nos e ntão Module Module1
a criação de sse canal , e pode rá se r de finido Sub Main()
o m odo de ab e rtura do fich e iro, ou se ja, se Dim strFicheiro As String =
"C:\ficheiro.txt"
irá se r de l
e itura e /ou e scrita.
'Abre o ficheiro'
'Modo = Abertura | Tipo de Acesso
Dim ficheiro as New FileStream = Leitura | Acesso de outros processos
(Nfich,FileMode,FileAccess,FileShare) = Leitura'
Dim fs As New
Para indicarm os o m odo de ab e rtura do FileStream(strFicheiro, FileMode.Open,
canalutil izam os o e num e rador File Mode . O FileAccess.Read, FileShare.Read)
File Mode é constituido pe l os se guinte s 'Carrega o stream no StreamReader'
m e m b ros: Dim sr As New StreamReader(fs)
'Imprime o conteudo do ficheiro no
Appe nd ecra'
Console.Write(sr.ReadToEnd)
Ab re o fich e iro para e scrita e posiciona-se
'Liberta o ficheiro'
no fim do m e sm o. Caso não e xista o fich e iro sr.Close()
e ntão cria um novo. Console.ReadLine()
End Sub
Cre ate End Module
Ab re o canalpara e scrita ou l
e itura e e scrita
e apaga o conte údo caso o fich e iro e xista,
se não cria um novo. Escre ve r um fich e iro

Cre ate Ne w Para e scre ve r num fich e iro util izam os a


Cria um novo fich e iro para e scrita.Caso classe Stre am W rite r. Com e sta cl asse
e xista dá um e rro. pode m os e scre ve r num fich e iro usando
vários tipos de codificação (UTF-8, ASCII,
O pe n UNICO D E, e tc). O s m étodos W rite e
Ab re o fich e iro para e scrita ou l
e itura e W rite l ine são os util izados para a e scrita
posiciona-se no inicio do m e sm o. Caso não e m fich e iros. O Flush e o Cl ose são tam b ém
e xista dá um e rro. m étodos im portante s da classe
Stre am W rite r. Com o os dados e stão
O pe nO rCre ate arm aze nados em b uffe rs e não
Ab re o fich e iro se e l
e e xistir, se não cria-o. dire ctam e nte no fich e iro, de ve -se invocar o
m étodo fl ush para q ue se ja e scritos no
Truncate fich e iro, ou e ntão o m étodo Cl ose para q ue
Ab re o fich e iro e re m ove todo o conte udo. forçe a e scrita e fe ch e a stre am .

<21>
tutorial

Private Sub
escrever_ficheiro(ByVal texto As
Imports System.IO String)
Module Module1 Dim strFicheiro As String =
Sub Main() "C:\ficheiro.txt"
Dim texto As String 'Abre o ficheiro indicado na
'chama a funcao para ler o variavel com os atributos'
ficheiro' 'Modo = Adicionar | Tipo de
ler_ficheiro() Acesso = Escrita | Acesso de outros
Console.WriteLine() processos = Leitura'
Console.WriteLine() Dim fs As New
Console.WriteLine("Insira um FileStream(strFicheiro,
texto para adicionar ao ficheiro:") FileMode.Append, FileAccess.Write,
texto = Console.ReadLine FileShare.Read)
Console.Clear() 'Carrega o stream no
'chama a funcao para escrever StreamReader'
no ficheiro o texto inserido' Dim sw As New StreamWriter(fs)
escrever_ficheiro(texto) 'Escreve no ficheiro o texto
'imprime no ecra o ficheiro ja inserido pelo utilizador'
actualizado' sw.WriteLine()
ler_ficheiro() sw.Write(texto)
Console.ReadLine() sw.Close()
End Sub End Sub
End Module
Private Sub ler_ficheiro()
Dim strFicheiro As String =
"C:\ficheiro.txt" Na próxim a e dição ire m os continuar e ste
'Abre o ficheiro indicado na tutorial . O te m a da próxim a e dição
variavel com os atributos' continuará a se r m anipul ação de
'Modo = Abertura | Tipo de fich e iros e m Visual Basic.NET. Irão se r
Acesso = Leitura | Acesso de outros
ab ordadas novas cl asse s com o D ire ctory,
processos = Leitura'
D ire ctoryInfo, Fil e Info, Fil e A ttrib ute s,
Dim fs As New
FileStream(strFicheiro, Path , e tc... q ue vos irão pe rm itir um
FileMode.Open, FileAccess.Read, m aior control o e inte racção sob re os
FileShare.Read) vossos fich e iros. Não pe rcam a próxim a
e dição...
o M artins
'Carrega o stream no
StreamReader'
Dim sr As New StreamReader(fs)
'Imprime o conteudo do
gado & M arce l

ficheiro no ecra'
Console.Write(sr.ReadToEnd)
'Liberta o ficheiro'
sr.Close()
Console.WriteLine()
End Sub
Tiago Sal

<22>
gnu/l
inux
utilizador, o único dire ctório no q ual um
utilizador norm alte m pe rm issõe s totais, visto
q ue lh e pe rte nce , te ndo a m aioria dos outros
dire ctórios pe rm issõe s re stritivas à e scrita, e
de sta form a à al te ração ou re m oção.

O siste m a de pe rm issõe s pode se r


de m onstrado num a tab e l
a:

Se gurança e m A tab e la de m onstra e xe m pl ifica o siste m a de

siste m as GNU/Linux pe rm issõe s. O 0 significa de sl


não activa, o 1 l
igado/pe rm issão
igado/pe rm issão activa. O 'r'
sim b oliza a l e itura, o 'w ' a e scrita e o 'x' a
Introdução e xe cução.

M uita ge nte pe rgunta a si m e sm a porq ue é Estas pe rm issõe s corre sponde m a três


q ue “aq ue l
e s tipos dize m q ue GNU/Linux é grupos de 3 b its, cada b it corre sponde ndo à
m ais se guro?”. Ne ste artigo pre te ndo q ue le itura, e scrita e e xe cução e três grupos,
pe ssoas q ue nunca usaram GNU/Linux e de sse s tais três b its, re fe rindo-se ao dono
q ue te nh am dúvidas e m re l ação à (do fich e iro), ao grupo, e aos “outros”. Para
se gurança de ste siste m a, as e scl
are çam . se pe rce b e r m e l
h or o siste m a de pe rm issõe s
convém se parar cada grupo de três b its
Pe rm issõe s individual m e nte . D e sta form a, se
q uisésse m os te r um fich e iro com pe rm issõe s
O control o de se gurança m ais b ásico do totais para o dono do fich e iro, e pe rm issão
siste m a, m as ainda assim b astante e ficaz, é de l e itura e de e xe cução tanto para o Grupo
fe ito ao níve ldo siste m a de pe rm issõe s. com o para os outros te ria-m os al go com o:
Estas consiste m num a e strutura
h ie rárq uica, na q ual h á vários tipos de
util izadore s com vários tipos de
pe rm issõe s, pode ndo e stas se r de finidas
conform e o de se jado. Pode m os dar
pe rm issõe s para o vizinh o do l ado ve r os
m e us fich e iros, m as tam b ém dar
pe rm issõe s para outro vizinh o não ve r
nada. Isto é m uito im portante e é e sta um a
das razõe s pe l a q ual um vírus não se Para q ue se ja m ais fácil , apre se ntam os
e spal h a facil m e nte e m GNU/Linux (tal tam b ém um a tab e l a de conve rsão de
com o e m M ac, q ue te m o m e sm o siste m a, b inário para de cim al
:
am b os b ase ados no Unix). b inário de cim al
000 0
Para um e ve ntualvírus atacar um de ste s 001 1
siste m as com vista a faze r q ual q ue r tipo de 010 2
e strago, te ria q ue se r o próprio util izador a 011 3
e xe cutar o vírus, e ainda assim (caso e m 100 4
m odo não-root) o único e strago q ue 101 5
de ve ria re sul tar da e xe cução se ria a 110 6
possíve lpe rda dos fich e iros da H O M E do 111 7

<23>
gnu/l
inux

Portanto, de sta form a se q uise sse m os de finir se r pe rm itidos ape nas a m áq uinas de
o talfich e iro com as pe rm issõe s já re fe ridas, confiança, um a ve z q ue são pote ncial m e nte
usaríam os o com ando ch m od, q ue é o q ue inse guros pode ndo se r usados, não só para
de fine as pe rm issõe s, da se guinte m ane ira: atacar a m áq uina, com o tam b ém com o ponte
# chmod 755 ficheiro.txt para atacar outros. O h ack e r pode usar a
m áq uina da vítim a para se prote ge r e l
ançar o
Com o se pode constatar, usou-se o ch m od ataq ue a partir doutra m áq uina.
755, se ndo e ste núm e ro a agl
utinação da
conve rsão para de cim al das pe rm issõe s D icas
de m onstradas acim a.
-Não te r um a conta com um a passw ord q ue
O utra m ane ira, tal ve z m ais sim pl e s de se ja adivinh ada facil
m e nte . Passw ord’s de sse
e xe m plificar o proce sso é dando val ore s aos tipo são por e xe m pl
o a data de nascim e nto, o
tipos de pe rm issão. D e ste m odo, o r val e 4, o nom e , “123456”…
w val e 2 e , por fim , o x vale 1. Se q uise rm os
dar pe rm issõe s totais te re m os r+ w + x = 4 + 2 -Nunca forne ce r passw ord’s a outras pe ssoas.
+ 1 = 7, se ndo e ste o núm e ro q ue
utilizare m os, para o util izador e m q ue stão. -Instal
a, se m pre q ue h ouve r, actual izaçõe s de
se gurança. Por ve ze s h á b ug’s e m distrib uiçõe s
Caso q ue iram os apl icar a pe rm issão a um a q ue pode m se r fatais. Fe l izm e nte a
pasta e a todos os se us sub -fich e iros, com unidade da grande parte das distros é
util
izare m os a e xte nsão -R . Por e xe m pl
o: b astante rápida a e ncontrá-l os e a
# chmod -R 777 ~/ disponib il
izar patch ’s de actual ização.

Notas: -Lim ita o núm e ro de proce ssos na m áq uina.


- O ~ / re fe re -se à h om e do util izador.
- Todos os com ando têm de se r e xe cutados -Prote ge r contra Fork Bom b s. Um a Fork Bom b
“as root”, caso os fich e iros aos q uais se vai é um a form a de e xe cutar um D oS (D e nialof
e ditar a tab e l a de pe rm issõe s não te nh am Se rvice ), um ataq ue q ue sob re carre ga o
pe rm issõe s totais para o use r e m q ue stão. siste m a e q ue faz a m aq uina andar
e xtre m am e nte l e nta. É díficil e xe cutar e sse
A fire w al
l ataq ue se tive r um a fire w al lb e m configurada
um a ve z q ue não e ntram no pc, m as “m ais val e
Um a fire w al l GNU/Linux visa prote ge r o pre ve nir q ue re m e diar”…Um a Fork Bom b cria
com putador contra ace ssos inde se jados, m uitos proce ssos até a m aq uina crash ar
tráfe go inde se jado, prote ge r os se rviços q ue com pl e tam e nte . Para se prote ge re m têm de
e ste jam a corre r e filtrar pacote s. A fire w all de finir no fich e iro l im its.config q ue e stá e m
m ais usada é a iptab l e s , m ais conh e cida /e tc/se curity/ o núm e ro m áxim os de proce ssos
pe l o se u GUI fire starte r, q ue foi introduzida q ue a m áq uina pode corre r. Adicione m as
no k e rne l2.4 e m sub tituição da ipch ains. A se guinte s linh as:
fire w allnão funciona por si m e sm a. Não é
M igualPais

username soft nproc 100


instal ar e e spe rar te r tudo configurado. É username hard nproc 150
ne ce ssário criar as re gras ne ce ssárias para o
siste m a. Isto pre vine os util izadore s de te re m m ais de
150 proce ssos a corre r e m ostra um aviso se
Então, o q ue prote ge r? O m e l h or a faze r é 100 proce ssos e stive re m a corre r. É ape nas um
ab rir ape nas o ne ce ssário. O u se ja te r um a e xe m plo, pode rão de finir consoante as
&
Joe lR am os

configuração re stritiva. É aconse l h ado ne ce ssidade s das vossas m áq uinas.


bl oq ue ar as portas ab aixo de 1024 porq ue
e stas e xe cutam se rviços q ue utilizam o m odo -Configure a fire w allde um m odo re stritivo,
de root. O s se rviços com o rl ogin, te l
ne t, ftp, ape nas para o ne ce ssário. D e ste m odo e stará a
NFS, D NS, LD AP, SMTP, R CP, X-W indow de ve m dar um grande passo na sua prote cção.

<24>
gnu/l
inux

b in/ de v/ h om e / lost+ found/ proc/ sb in/


usr/ b oot/ e tc/ lib / m nt/ root/ tm p/ var/

Se gue -se a e xpl


icação de para q ue se rve m
cada um de ste s dire ctórios:

/b in
Ab re viatura para “Binarie s” - Binários.
Siste m a de Contém a m aioria dos e xe cutáve is m ais
com uns q ue se rão usados pe los
dire ctórios utilizadore s, adm inistradore s e siste m a
Norm al m e nte contém as sh e l
ls com o b ash ,
csh , assim com o com andos, por e xe m pl o:
su, tar ou unam e .
Introdução /sb in
Ab re viatura para “Syste m Binarie s” -
Um a das prim e iras dife re nças q ue sal ta a
Binários do Siste m a. É se m e l
h ante ao /b in,
vista para q ue m com e ça a usar Linux é a
m as contém ape nas program as e sse nciais
e strutura de dire ctórios do Linux, q ue nada
ao siste m a, com o adm inistração e
te m a ve r com o W indow s. Pode pare ce r
m anute nção e é e sse ncial para o se u
um pouco al e atório, m as na re al idade
arranq ue .
e xiste um a l ógica e função para cada
dire ctório. Assim , o ob je ctivo de ste te xto é
/b oot
apre se ntar e fam il iarizar com o siste m a
Contém os fich e iros de arranq ue e o k e rne l
Linux.
do Linux, q ue são ace didos ante s do re sto
do siste m a e star m ontado, e parte dos
b ootl
oade rs (LILO e GR UB).
O Siste m a
/de v
A prim e ira coisa q ue é pre ciso pe rce b e r é
Contém os fich e iros q ue re pre se ntam o
q ue e m Linux os discos e partiçõe s não
h ardw are pre se nte na m áq uina.
apare ce m ne ce ssariam e nte com o unidade s
Encontram -se fich e iros com o h da1, h da2,
dife re nte s, com o o C:, D :, do W indow s.
cdrom , e tc. q ue re pre se ntam dispositivos
Tudo faz parte de um único dire ctório,
re conh e cidos e instalados no Linux.
ch am ado de “root”, re pre se ntado por “/”,
e m q ue tudo fica ace ssíve l a partir de
/e tc
vários sub -dire ctórios. (Não confundir com
Contém a m aioria de todos os fich e iros de
o util izador 'R oot' q ue é o Adm inistrador)
configuração e m anipul ação do siste m a
Linux. Ne l e pode m e ncontrar por e xe m pl o
Um aspe cto sob re o siste m a Linux q ue é
fich e iros de configuração de program as,
inte re ssante sab e r, é q ue tudo num
do siste m a gráfico X11, scripts de arranq ue .
siste m a Linux é um fich e iro, se não é um
fich e iro, e ntão é um proce sso.
/h om e
Se assim é, e ntão o q ue é um D ire ctório?
Contém as pastas de cada util izador (H om e
São fich e iros com l istas de outros fich e iros.
D ire ctory). O s util izadore s com uns só
Nave gando no siste m a de fich e iros do
conse gue m ace de r à sua própria pasta (a
Linux, no “/” pode m os e ncontrar os
não se r q ue l h e s e spe cifiq ue m outro tipo
se guinte s dire ctórios:
de ace ssos). D e ntro de cada pasta de
utilizador tam b ém se e ncontram os

<25>
gnu/l
inux

fich e iros de configuração re spe ctivos para


cada um . Pode se r com parado ao /tm p
"D ocum e nts and Se ttings” do W indow s Este dire ctório arm aze na os fich e iros
te m porários. É l
im po durante o arranq ue e
/l
ib sh utdow n do se u siste m a, Não é
Contém as b ib liote cas b ásicas do siste m a aconse lh áve l guardar aq ui fich e iros
q ue pode m se r com partil h adas por im portante s.
dive rsos program as. Este dire ctório pode
se r com parado ao dire ctório Syste m 32 ou /usr
Syste m do W indow s. Ab re viatura para “Unix Syste m R e sourse s”
Contém todos os com andos, b ib l iote cas,
/l
ost+ found program as, páginas de m anuais e outros
D e pois de um “crash ” do siste m a, com o por fich e iros e státicos q ue são ne ce ssários para
e xe m plo fal
ta de e ne rgia, o Linux irá te ntar o funcionam e nto norm aldo siste m a.
re cupe rar o q ue e stá corrom pido no
próxim o arranq ue . Caso um fich e iro e ste ja Al
gum s sub -dire ctórios:
corrom pido, e l e se rá col ocado ne ste
dire ctório. /usr/doc - Contém grande parte da
docum e ntação do Linux
/m nt
Ab re viatura para "m ount point" (ponto de /usr/src/l
inux - Contém o código fonte do
m ontage m ). Contém a m aioria das K e rne l
.
m ontage ns do siste m a ope ractivo. É aq ui
q ue irá te r ace sso aos Cdrom s, Usb s, /usr/b in - Contém outros fich e iros b inários
Partiçõe s, e tc. Em al gum as distrib uiçõe s, re fe re nte s aos util
izadore s, m as q ue não
ce rtas unidade s com o Usb s e cartõe s de são e sse nciais.
m e m ória são m ontados e m /m e dia. Pode
criar os m ount points q ue pre cisar, pois /var
não e xiste m lim itaçõe s nos m ountpoints. Contém fich e iros q ue possue m dados
variáve is, com o fich e iros de l
ogs, fich e iros
/opt de configuração de corre io e l e ctrónico, de
Este dire ctório contém program as im pre ssão, e ntre outros.
opcionais, com o por e xe m pl o K D E. Cada
softw are te rá a sua própria pasta.
Concl
usão
/proc
É um pse udo-dire ctório q ue forne ce Este te xto é um a apre se ntação sim pl e s do
inform açõe s sob re o k e rne l e sob re os Siste m a de D ire ctórios do Linux, m as um
proce ssos q ue e stão activos no m om e nto, conh e cim e nto ne ce ssário para pode r
além de inform açõe s sob re a util ização de aprove itar o pote ncial q ue e ste siste m a
alguns dispositivos e do siste m a. ofe re ce .
Cada sub -pasta re pre se nta um proce sso. A mel h or m ane ira de pe rce b e r e apre nde r
Alguns program as com o 'ps' ou 'top' é usar.
ace de m a e sta pasta para re col h er
inform ação do siste m a e m ve z de
com unicar dire ctam e nte com o k e rne l.
va
M arco Sil

/root
Este é o H om e D ire ctory do utilizador root
( Adm inistrador ), onde só e l
e te m ace sso.

<26>
proje cto
Finda a introdução, vão se r ab ordados dois
te m as da arq uite ctura do O rion's Be l
t.

Siste m a de R e cursos
h ttp://orionsb e l
t.zi-yu.com O O B conta com um grande núm e ro de
Introdução re cursos: 43 e difícios, 25 unidade s e 48
pe sq uisas. A fácilm anunte nção/adição de
O O rion's Be l t é um jogo w e b -b ase d re cursos foi um dos prim e iros ob je ctivos
el ab orado por dois portugue se s com o para o m otor de jogo. Para e ste fim foi
trab al h o finalde b ach are l ato. Está e scrito criado um idiom a XMLcapaz de re pre se ntar
e m C# e funciona e m cim a de ASP.NET. e sta inform ação.
Este jogo te m várias caracte rísticas
se m e lh ante s a outros jogos do géne ro Este idiom a XML pe rm ite de scre ve r
m ais conh e cidos: O gam e e D ark gal axy. No facilm e nte todas as capacidade s de um
O B o jogador com e ça com um h om e q ualq ue r re curso, se ja e l
e e difício, pe sq uisa
pl ane t e pode partir à conq uista de outros ou unidade s de com b ate . É possíve l
pl ane tas pe l a galáxia. A ge stão de plane tas de scre ve r o pre ço, as de pe ndências e
é um dos aspe ctos m ais im portante s do caracte rísticas várias.
jogo, se ndo ne ce ssária a construcção de
e difícios, e l ab oração de pe sq uisas, e tc, O uso de XMLfe z com q ue o m otor se ja m ais
para e vol uir tanto te cnologicam e nte com o sim ple s e algo ge nérico. Contudo, h á várias
e cnom icam e nte . outras vantage ns e m se te r usado XMLpara
de scre ve r os re cursos. Através do uso de
O aspe cto q ue dife re ncia o O B dos outros XSLT (idiom a XML q ue transform a XML
jogos do géne ro é o m ode l o de com b ate . noutros form atos) foram criadas te m pl ate s
Todos os com b ate s são re al izados num q ue pe gam no XML dos re cursos e o
tab ule iro com as unidade s produzidas nos transform am em páginas do m anual
plane tas. Este m otor de com b ate e stá (form ato w ik i) e tam b ém e m fich e iros
im ple m e ntado e m JavaScript. JavaScriptpara uso do m otor de com b ate .

Cada unidade te m um conjunto de


caracte rísticas com o: ataq ue , de fe sa, dano,
vida, al cance e tipo de m ovim e nto.
Al gum as unidade s têm ainda
caracte rísticas e spe ciais com o: ataq ue
ricoch e te , ataq ue catapul ta, ataq ue tripl o,
b ónus de ataq ue /de fe sa e m ce rtos tipos de
te rre no ou contra ce rtos tipos de unidade s.

Todas e stas caracte rísticas faze m com q ue


o com b ate se ja m uito táctico, e um dos
aspe ctos m ais al
iciante s do jogo.

No O B h á incl usíve torne ios à parte e m


q ue os jogadore s são forne cidos com um a
arm ada, e têm de passar um a fase de
grupos e de se guida os pl ayoffs. Este s
torne ios contam para um siste m a de
R ank ing b ase ado no ELO R ank ing Syste m
(usado no Xadre z), e pe rm ite m sab e r q ue m O tab ul
e iro de jogo
são os m e l
h ore s jogadore s no tab ul
e iro. do O rion's Be lt

<27>
proje cto
<resource type="Unit" value="ColonyShip">
<dependencies>
<resource-ref type="Building" value="StarPort" />
<resource-ref type="Research" value="AdvancedFlightI" />
</dependencies>
<cost>
<resource-needed type="gold" value="5000" />
<resource-needed type="mp" value="8000" />
<resource-needed type="energy" value="1000" />
<resource-ref type="Building" value="StarPort" />
<duration value="15" quantity="1" />
</cost>
<attributes>
<attribute type="TeletransportationCost" value="350"/>
</attributes>
<oncomplete/>
<battle unitType="special">
<attack base="230" range="1" minimumDamage="200" maximumDamage="250"/>
<defense base="8000" hitPoints="9200" canStrikeBack="true" />
<movement cost="6" type="all" level="air" />
</battle>
</resource>
Idiom a do Siste m a de R e cursos
Base s de D ados
D e sta form a é possíve l te r várias
Um a apl icação w e b norm al m e nte e stá im pl e m e ntaçõe s de pe rsistência, q ue são
associada a um SGBD (siste m a de ge stão de e scondidas da re stante lógica de apl icação.
b ase s de dados) com o o MySQ L,
Postgre SQ L, e tc. O O B suporta vários tipos Concl
usão
de SGBD através da de sign patte rn b ridge .
Toda a cam ada de ace sso a dados foi O O B é um proje cto já com al gum a
pe nsada com o um a ab stracção ao SGBD dim e nsão. Contudo, ce rtas e scolh as b e m
usado e m runtim e . Para atingir e ste fim é pe nsadas no início de de se nvol vim e nto
criada um a cl asse b ase ab stracta com as tornaram -se grande s e scol
h as no futuro do
funcional idade s e l e m e ntare s e classe s jogo, pois pe rm ite m um a e xce l e nte
de rivadas q ue contêm e spe cial izaçõe s para facil
idade de m anunte nção.
cada SGBD . Por e xe m pl o, para pe rsistir as
Al ianças, e xiste a cl
asse Al liance Utility: Convidam os todos os inte re ssados a
e xpe rim e ntar o jogo. O jogo é dividido e m
public class AllianceUtility { rondas e , por vol ta de Se te m b ro, irá com e çar
public abstract Alliance Get(int id); um a nova ronda. Para e sta nova ronda
public abstract Alliance[] GetAll(); e stão plane adas algum as novidade s
public abstract void Save(Alliance a);
inte re ssante s: possib ilidade de construção
...
de D e ath Stars, e stas l uas de com b ate são
};
inspiradas pe l a D e ath Star da Gue rra das
Estre las, e com b ate s com q uatro jogadore s
Cada cl asse Util ity usa tam b ém o de sign
ao m e sm o te m po - torne ios com com b ate s
patte rn singl e ton, para provide nciar um
1x1x1x1 ou 2x2.
único ob je cto daq ue l e tipo, se m pre
Pe dro Santos

disponíve l . É usada um a proprie dade static


Q ue m tive r m ais curiosidade no jogo pode
q ue indica q ual o ob je cto q ue trata da
passar pe l o e nde re ço:
pe rsistência. É aq ui q ue h á a ponte para a
h ttp://pt.w ik i.zi-yu.com /inde x.ph p/Víde os
im ple m e ntação corre nte . O SGBD al vo é
Ne ste e nde re ço e stão víde os de dois
de cidido e m com pil e tim e através de
com b ate s e um de introdução gl ob alao O B.
parâm e tros no com pil ador.

<28>
anál
ise s

As re stante s funcional idade s pode m dife rir

O pe ra M ini da ve rsão do O pe ra m ini, um a ve z q ue


e xiste m duas a Basic e a Advance d. A
Advance d possui um a m e l h or com pre ssão de
te xtos e de im age ns o q ue pe rm ite m e l h orar
o te m po de carre gam e nto, assim com o um
O m ais frustrante para os actuais w e b
inte rface m e l
h orado com suporte para icons,
de pe nde nte s é não pode r consul tar o e -m ail
scrol lm ais suave e um re l ógio. A Advance d
ou visitar um a de te rm inada página w e b só
conse gue tam b ém m e l h ore s re sul
tados a
porq ue e stá l onge de um pc. H oje e m dia
're nde rizar' páginas grande s criando um a
e xiste m outras form as de ace de r à Inte rne t
grande página, e nq uanto q ue a Basic te m de
se m faze r uso de um com putador, se
criar vários se gm e ntos de página.
pe nsarm os b e m q uase todos nós possuím os
um te l e m óve lcom gprs com suporte para
apl icaçõe s java, q ue pe rm ite um a l igação
e stáve l de 56k b ps, m as o facto é q ue a
m aioria de l e s não possue m um b row se r h tm l
re alm e nte funcional , ou pura e sim ple sm e nte
não o possue m .

Pois agora já e xiste um a opção de al ta


q ual idade para q ue m q ue r tirar todo o
pote ncial da Inte rne t associada ao vosso
te le m óve l, pda ou sm artph one . E e ngane m -se
aq ue l e s q ue pe nsam q ue são poucas as
pl ataform as e te l e m óve is suportados, um a
ve z q ue a l ista de e q uipam e ntos é e xte nsa e é
constante m e nte actual izada. Posso dize r q ue
Com o se não b astasse e ste softw are é
o m e u 7250i se tornou um com panh e iro
fre e w are e de fácil instal ação b astando
im portante no te m po e m q ue e stive l onge da
ace de r a m ini.ope ra.com com o w ap do vosso
Inte rne t, e m e pe rm itiu consul tar o e -m ailno
te le m óve l e a página indicará os passo
gm ail , visitar a m inh a página e por ve ze s
ne ce ssários para instal are m o O pe ra Mini,
visitar incl usive a página do fórum portugal -a-
se le ccionando a ve rsão corre cta. Pode rão
program ar.org.
consul tar a l
ista de dispositivos com patíve is
e m h ttp://w w w .ope ra.com /products/m ob il
e/
Ape sar das páginas se re m de m asiado
ope ram ini/ph one s.
grande s para q ual q ue r e crã de um te le m óve l
,
o O pe ra Mini conse gue dige rir com pl icadas
Te ndo e m conta q ue o O pe ra se m pre foi um
páginas e torná-l as m uito sim pl e s de form a a
b row se r inte re ssante , não surpre e nde q ue o
facilitar a sua visual ização. E ape sar de
O pe ra Mini siga as passadas do se u irm ão
algum as páginas se re m m uito grande s e
m ais ve l h o, e e m dispositivos m óve is é
ficare m m uito com pridas o O pe ra Mini
actual m e nte o re i. Fica ape nas a fal tar o
pe rm ite -nos nave gar na página com im e nsa
suporte para fl ash , porq ue de re sto não
facilidade , cl icar e m l ink s, faze r scrol le
e xiste nada a apontar de ne gativo a e ste
visual izar com porm e nor as im age ns.
b row se r.
Sérgio M atias

Entre as fe rram e ntas incluídas e stão um


Actual m e nte o O pe ra e stá tam b ém a se r
h istórico de páginas visual
izadas, um ge stor
incluído e m outros tipos de e q uipam e ntos
de favoritos, suporte autom ático para
com o consol as (Ninte ndo W ii e D S), Inte rne t
pe sq uisas no googl e e alguns dicionários,
Tab le ts (Nok ia 770), Portab l e Me dia Pl
aye rs
suporte para dow nl oad de im age ns e um
(Arch os PMA400), aviõe s e tv b ox’s. R e sta
ge stor de passw ords.
sab e r q ualé o lim ite de ste b row se r.

<29 >
anál
ise s

Program ação O rie ntada


Linguage ns W e b
a O b je ctos e m JAVA 2

O l ivro fala de program ação orie ntada aos


ob je ctos usando a l inguage m JAVA. É da
autoria de F. Mário Martins, profe ssor “Linguage ns W e b ” é um livro de iniciação à
associado da Unive rsidade do Minh o e program ação orie ntada à W e b q ue re úne
coorde nador do grupo SIM - Softw are , todas as principais l
inguage ns de
Inte racção e Multim édia. program ação util izadas na Inte rne t, de
form a concisa e b e m apre se ntada para
Ne sta ob ra com e çam por se r ab ordados os possib il
itar um a apre ndizage m m ais rápida
principais conce itos associados à e progre ssiva.
program ação orie ntada aos ob je ctos,
nom e adam e nte o q ue é um ob je cto, o Este livro foi e scrito por Al
e xandre Pe re ira
e ncapsul am e nto e a dife re nça e ntre e Carl os Poupa e e ditado por "e diçõe s
instâncias e cl asse s. A m aior parte do l ivro é, Síl
ab o". D ata do ano 2004 e possui ce rca
contudo, de dicada à te cnol ogia JAVA, se ndo de 450 páginas.
ab ordados os aspe ctos m ais im portante s q ue
e sta linguage m suporta (cl asse s, h ie rarq uias, As linguage ns ab ordadas são: H TM L, CSS,
e xce pçõe s, inte rface , e tc). Possui m uitos JavaScript, ASP, ASP.NET (VB.NET e C#),
e xe m plos de código onde são apl icados os PH Pe Java.
conce itos ab ordados, facilitando a
com pre e nsão dos m e sm os. Nota-se tam b ém a Fal a um pouco sob re cada l inguage m onde
pre ocupação de e nsinar técnicas de é ab ordada a sua e strutura, a sua sintaxe ,
program ação q ue pe rm itam q ue o softw are sua form atação e com o a util izar
de se nvol vido satisfaça proprie dade s corre ctam e nte .
e sse nciais h oje e m dia, com o por e xe m pl oa Esta ob ra é aconse l h ada a q ual q ue r
m odul aridade e a e xte nsib il
idade . program ador no e ntanto é e xce l e nte para
program adore s q ue se e ste jam a iniciar
Pare ce -m e um l ivro b astante indicado para pois utiliza um a linguage m cl ara e de fácil
q ue m q ue r apre nde r JAVA ou para q ue m e nte ndim e nto com e xe m pl os e xpl icados
procura apre nde r m e todologias de para um a m ais rápida e e ficie nte
program ação q ue pe rm itam aum e ntar a apre ndizage m .
ve s

João Pe re ira

q ualidade das apl icaçõe s q ue de se nvol ve .


R ui Gonçal

Não se rá, no e ntanto, o l ivro m ais indicado É forne cido apoio on-l ine a e ste l
ivro e m
para q ue m já te m al gum a e xpe riência com h ttp://l
inguage ns.m e diate ca.info
JAVA e com PO O e m ge ral , pois aspe ctos
m ais avançados da l inguage m não são
ab ordados.

<30>
inte rne t

O cssvaul t disponib il iza um a


larga gal e ria de w e b site s de
q ual idade , organizados por m ês
e ano, todos e l e s de grande
q ual idade . É se m dúvida um
e xce le nte sítio de consul ta do
q ue de mel h or e xiste no
m om e nto na W eb 2.0.
h ttp://cssvaul t.com

Por se u l ado o cssBe auty ofe re ce


aos se us utilizadore s um a
gal e ria se m e l h ante ao do
cssvaul t, m as tam b ém ofe rtas de
e m pre go, artigos de css, h tm l ,
javascript e outros de grande
inte re sse para os w e b-
de ve l ope rs.
h ttp://w w w .cssb e auty.com

Foi criada e m M arço de ste ano – e só agora


de scob rim os – um a pe q ue na página com 12
pe rguntas fre q ue nte s de util izadore s q ue nunca
viram Linux na sua vida. Esta página criada pe l o
Grupo de Linux da Unive rsidade de Ave iro e stá
disponíve lpara consul ta e m h ttp://gl
ua.ua.pt/Linux.

M uito se te m fal ado no q ue é a W e b 2.0


re alm e nte , q ual os b e ne fícios q ue
pode re m os tirar disso. Pois b e m , aq ui
e stá m ais um docum e nto a te ntar
e xplicar isso m e sm o.
D anie lCorre ia

h ttp://w w w .ore il
lyne t.com /pub /a/ore il
ly/
tim /ne w s/2005/09 /30/w h at-is-w e b -
20.h tm l

<31>
bl
ue scre e n

e m acs ou vim ?

o se gre do por trás do Pe ntium 2

m ais um cl
ássico...

<32>
com unidade

Um ano passado da criação da


com unidade e , com o todos de ve m sab e r,
as coisas vão de "ve nto e m poupa".

A com unidade conta já com m ais de 1800


utilizadore s re gistados e com um a m édia
de visitas diárias a tocar o al garism o dos
m ilh are s. H ouve ne ste s últim os te m pos a
saída de al guns m e m b ros do staff (Sara
Q ue re s participar na re vista Silva, Bruno M onte iro, H ugo Viol ante ) por
PR O GR AM AR ?Q ue re s inte grar m otivos profissionais e /ou pe ssoais, m as
e ste proje cto, e scre ve r artigos e contam os já com a participação activa de
ajudar a tornar e sta re vista num novas pe ssoas com vontade de construir e
m arco da program ação nacional ? inovar (Fe rnando M artins, Sérgio Lope s,
João M atos e José O l ive ira).
Vai a

w w w .re vista-program ar.info

para m ais inform ação com o


participar
ou e ntão contacta-nos por D e ntro e m b re ve pode rão contar com um a
nova fe rram e nta de apoio, o w ik i do p@p,
q ue e stará pronto e ace ssíve la todos para
re vistaprogram ar e sclare ce r de form a m ais prática todas as
@portugal
-a-program ar.org vossas dúvidas e tam b ém para pode re m dar
as vossas contrib uiçõe s, q ue são
ob viam e nte parte fundam e ntalde toda a
Pre cisam os do apoio de todos com unidade . Estam os tam b ém no início da
para tornar e ste proje cto ainda criação de um a nova pl ataform a de
m aior... apre ndizage m , b ase ada no m oodl e . Ainda
te m os m uito trab al h o pe l a fre nte , m as
contam os com a tua ajuda possuím os grande s pe rspe ctivas para e sta
pl ataform a.

Vários pe q ue nos proje ctos têm vindo a


apare ce r de ntro da com unidade e são al go
q ue re al
m e nte m e re ce a pe na ve r. Portanto,
para conh e ce re m b e m a com unidade , nada
go

mel h or do q ue passar por...


D avid Pintassil

w w w .portugal
-a-program ar.org

<33>