Sie sind auf Seite 1von 65

PHP

PHP (um acrnimo recursivo para "PHP: Hypertext Preprocessor") uma linguagem de programao de computadores interpretada, livre e muito utilizada para gerar contedo dinmico na World Wide Web, como por exemplo a Wikipdia.

Histrico
A linguagem surgiu por volta de 1994, como um pacote de programas CGI criados por Rasmus Lerdof, com o nome Personal Home Page Tools, para substituir um conjunto de scripts Perl que ele usava no desenvolvimento de sua pgina pessoal. Em 1997 foi lanado o novo pacote da linguagem com o nome de PHP/FI, trazendo a ferramenta Forms Interpreter, um interpretador de comandos SQL. Mais tarde, Zeev Suraski desenvolveu o analisador do PHP 3 que contava com o primeiro recurso de orientao a objetos, que dava poder de alcanar alguns pacotes, tinha herana e dava aos desenvolvedores somente a possibilidade de implementar propriedades e mtodos. Pouco depois, Zeev e Andi Gutmans, escreveram o PHP 4, abandonando por completo o PHP 3, dando mais poder mquina da linguagem e maior nmero de recursos de orientao a objetos. O problema srio que apresentou o PHP 4 foi a criao de cpias de objetos, pois a linguagem ainda no trabalhava com apontadores ou handlers, como a linguagem Java. O problema fora resolvido na verso atual do PHP, a verso 5, que j trabalha com handlers. Caso se copie um objeto, na verdade copiaremos um apontador, pois, caso haja alguma mudana na verso original do objeto, todas as outras tambm sofrem a alterao, o que no acontecia na PHP 4. Trata-se de uma linguagem extremamente modularizada, o que a torna ideal para instalao e uso em servidores web. Diversos mdulos so criados no repositrio de extenses PECL (PHP Extension Community Library) e alguns destes mdulos so introduzidos como padro em novas verses da linguagem. muito parecida, em tipos de dados, sintaxe e mesmo funes, com a linguagem C e com a C++. Pode ser, dependendo da configurao do servidor, embarcada no cdigo HTML. Existem verses do PHP disponveis para os seguintes sistemas operacionais: Windows, Linux, FreeBSD, Mac OS, OS/2, AS/400, Novell Netware, RISC OS, IRIX e Solaris. A Wikipdia funciona sobre um software inteiramente escrito em PHP, usando bases de dados MySQL: o MediaWiki. Construir uma pgina dinmica baseada em bases de dados simples com PHP, (em parte, vale lembrar), este prov suporte a um grande nmero de bases de dados: Oracle, Sybase, PostgreSQL, InterBase, MySQL, SQLite, MSSQL, Firebird, etc., podendo abstrair o banco com a biblioteca ADOdb, entre outras.

PHP tem suporte aos protocolos: IMAP, SNMP, NNTP, POP3, HTTP, LDAP, XMLRPC, SOAP. possvel abrir sockets e interagir com outros protocolos. E as bibliotecas de terceiros expandem ainda mais estas funcionalidades. Existem iniciativas para utilizar o PHP como linguagem de programao de sistemas fixos. A mais notvel a PHP-GTK. Trata-se de um conjunto do PHP com a biblioteca GTK, portada do C++, fazendo assim softwares inter-operacionais entre Windows e Linux. Na prtica, essa extenso tem sido muito pouco utilizada para projetos reais.

Principais caractersticas
A linguagem PHP uma linguagem de programao de domnio especfico, ou seja, seu escopo se estende a um campo de atuao que o desenvolvimento web, embora tenha variantes como o PHP-GTK. Seu propsito principal de implementar solues web velozes, simples e eficientes. Caractersticas:

Velocidade e robustez Estruturado e orientao a objeto Portabilidade - independncia de plataforma - escreva uma vez, rode em qualquer lugar; Tipagem fraca Sintaxe similar a Linguagem C/C++ e o PERL

Extenses
Extenses do PHP:

Funes de compresso de bzip2 Funes de converso de Calendar Funes de ClibPDF Funes de crack Famlia de funes ctype Biblioteca de rotinas de cliente URL - CURL Funes de pagamento Cybercash Funes DBM Camada de funes de abstrao de banco de dados DBA Funes de dBase Funes dbx Funes DOM XML Funes .NET Funes EXIF Funes FrontBase Funes de formato de dados de formulrios (Forms Data Format) FDF. Funes de filePro Funes de FTP Funes da biblioteca de imagens GD Funes de Gettext

Funes de HyperWave Converso de tabela de caracteres ICONV Funes de Informix Funes de manuseio de IIS Funes de IMAP POP3 e NNTP Funes de Ingres II Funes de InterBase Funes de Java Funes de LDAP Funes de Multi-Byte String Funes de Mcrypt Encryption Funes de Mhash Funes de Mimetype Funes de Ming para Flash Funes de mSQL Funes de MSSQL Funes de MySQL Funes de MySQLi Funes de Oracle 8 Funes de OpenSSL Funes de Oracle Funes de sobrecarga de objectos Funes de PDF Funes de PostgreSQL Funes de impressora Funes de memria Compartilhada Funes de get and walk de SNMP Funes de SOAP Funes de socket Funes de Sybase Funes de Tidy Funes de Tokenizer Funes de W32api Funes de XML-RPC Funes de XSLT Funes do YAZ Funes para Arquivos Zip Funes de compresso de ZLib

Grandes mantenedores
PHP j h algum tempo tem chamado ateno de gigantes da Tecnologia por sua robustez e facilidades. Segue alguns:

Oracle Yahoo! Wikipedia IBM Eclipse (IDE) Netbeans (IDE)

O que preciso para programar em PHP


PHP uma linguagem voltada para internet, portanto, ser necessrio possuir um servidor com os mdulos de PHP instalados. Por PHP ser uma linguagem livre, podemos fazer o download gratuitamente do site php.net e instal-lo em nosso servidor que pode ser tanto o IIS do Windows como o Apache do Linux. Se voc no possuir nenhum dos dois e no sabe como configurar um servidor, aconselhamos fazer o download do EasyPHP. Esse programa j vem com o servidor Apache, os mdulos de PHP, o banco de dados MySql e o PHPMyAdmin e aps instal-lo, basta iniciar o servidor e pronto, j est tudo configurado. (Podemos acessar a pasta padro digitando o endereo localhost em qualquer browser). Veja o tpico de nosso frum "Como configurar o Apache, PHP e MySql usando o EasyPHP". Agora, quanto a programao de fato, podemos utilizar desde um simples editor de texto como um grande programa pago, isso ir depender de como queremos programar. Se preferir, veja a lista de editores de PHP.

Primeiro Script em PHP


Visualizar Codigo Fonte Imprimir?
01.<HTML> 02. <HEAD> 03. <TITLE>Primeiro cdigo</TITLE> 04. </HEAD> 05. <BODY> 06. <?php 07. // Este o nosso primeiro script em PHP 08. echo ("Ol, Mundo!"); 09. ?> 10. </BODY> 11.</HTML>

Tags
PHP uma linguagem desenvolvida para a internet, portanto, est intimamente fusionado nas tags HTML. Qualquer script PHP que formos executar dever vir dentro da tag <?php ... ?>. Mas, como a linguagem PHP configurvel, muitas vezes podemos usar as short tags (apenas <? ... ?>) ou at mesmo ASP tags (<% ... %>), isso depender de como est definido no arquivo de configurao PHP.ini.

Comentrios

Comentrios servem apenas para documentar o cdigo, ou seja, para inserir dicas ou anotaes que no so trechos de cdigo a serem executados. PHP utiliza duas formas de comentrio: o comentrio de linha nica e o comentrio de vrias linhas. O comentrio de linha nica comea a partir de barras duplas (//) ou tralha (#) e termina na primeira quebra de linha. Tudo que estiver aps as barras ser ignorado. O comentrio de vrias linhas comea a partir da barra e astersco (/*) e devemos termin-la com astersco barra (*/). Tudo que estiver dentro de /* e */ ser ignorado.

echo
uma funo. Podemos pensar em funes como sendo aes pr-determinadas da linguagem. No caso de echo, ele ir criar uma sada para o html, ou seja, ela ir escrever seus argumentos no cdigo HTML que ir para o usurio.
echo()

("Ol, Mundo!")
o argumento da funo echo. Muitas funes exigem argumentos, ou seja, dados que sero processados pela funo. No caso de echo, h uma string (cadeia de caracteres) que ser passada ao cdigo HTML.
("Ol, Mundo!")

PHP tem muitas caractersticas herdadas da linguagem C e C++, a mais marcante o fato de que toda linha de cdigo deve terminar com um ponto-e-vrgula (;). PHP nos possibilita a integrao multiplataforma por que todo o cdigo gerado em PHP chega ao usurio apenas como HTML puro, ou seja, o usurio no ir ver nenhuma linha de cdigo em PHP, mas, todo o HTML gerado como resultado do processamento do HTML.

Ento, o cdigo acima ir chegar ao usurio apenas como: Visualizar Codigo Fonte Imprimir?
1.<HTML> 2. <HEAD> 3. <TITLE>Primeiro cdigo</TITLE> 4. </HEAD> 5. <BODY> 6. Ol, Mundo! 7. </BODY> 8.</HTML>

Variveis
Variveis so endereos de memria nos quais podemos armazenar dados ou informaes. Usamos variveis para manipular esses dados mais facilmente e tambm para no perd-los no meio do processo. As variveis em PHP so peculiares por nos possibilitar guardar qualquer tipo de dado em uma varivel, desde um simples caracter at um nmero decimal de grande preciso. Toda varivel tem nome e devemos tomar alguns cuidados ao nome-las. Primeiro, sempre comeamos o nome de uma varivel com um sifro ($). Por PHP ser casesensitive (diferencia letras maisculas de minsculas), declarar uma varivel $var1 ser diferente de $Var1, que por sua vez ser diferente de $VAR1 que tambm no a mesma coisa de $VaR1.

Atribuindo dados s variveis

Existem diversos tipos de dados que uma varivel pode armazenar. O que diferencia uma da outra a forma como elas so compostas. Os nmeros inteiros so atribudos diretamente: Visualizar Codigo Fonte Imprimir?
1.$meuInteiro = 10;

Nmeros decimais ou ponto flutuante so atribudos diretamente, mas usam o formato americano para separar a parte decimal, ou seja, ao invs de vrgula (,) usamos ponto (.). Visualizar Codigo Fonte Imprimir?
1.$meuDecimal=0.5;

Caracteres ou frases (tambm conhecidas como strings) devem ser delimitadas dentro de aspas (ou simples, ou duplas). Portanto, todos os exemplos abaixo so vlidos. Visualizar Codigo Fonte Imprimir?
1.$meuCaracter1='P'; 2.$meuCaracter2="P"; 3.$minhaPalavra='Programao'; 4.$minhaFrase="Programao em PHP";

Existe um tipo de dado que serve apenas para tomada de deciso que chamamos de tipo de dado booleano. Em tipos de dados booleanos, apenas dois valores so possveis: verdadeiro ou falso. Sendo que true verdadeiro e false falso. Visualizar Codigo Fonte Imprimir?
1.$meuBooleano=true;

PHP uma linguagem fracamente tipada, portanto, uma varivel pode ser de um tipo e virar outro a qualquer momento que quisermos. Isso nos permite uma grande versatilidade, mas tambm nos deixa mais propensos a cometermos erros de programao, principalmente, de lgica. Visualizar Codigo Fonte Imprimir?
1.$var1="TI Expert"; // 2.$var1=10 // vale 10 3.$varl=0.75 // decimal (float) 4.$varl=false // No Aqui, var1 uma string (frase) Agora, uma varivel do tipo inteira que Ento, deixou de ser inteiro e virou um mais um nmero, agora vale apenas falso

Operaes Matemticas

A questo de todo algoritmo executar operaes e manipulaes de dados, na maioria dos casos, de forma matemtica. PHP, assim como muitas outras linguagens, tambm capaz de tratar as quatro operaes matemticas fundamentais, alm de executar operaes lgicas como comparaes.

Adio: + Subtrao: Multiplicao: * Diviso: / Mdulo: % Incremento de 1: ++ Decremento de 1: --

Essas operaes matemticas podem ser feitas com constantes: Visualizar Codigo Fonte Imprimir?
1.<?php 2. $resultado1 3. $resultado2 4. $resultado3 5. $resultado4 6.?> = = = = 5+5; 5-5; 10/5; 2*5;

Ou com variveis: Visualizar Codigo Fonte Imprimir?


1.<?php 2. $int1 = 5; 3. $int2 = 1; 4. $resultado1 = $int1 + $int2; 5. $resultado2 = $int1 - $int2; 6. $resultado3 = $int1 * $int2; 7.?>

PHP tambm emite erros ou avisos caso alguma operao matemtica seja impossvel de ser concluda, como por exemplo, diviso de um nmero por zero. Ento, ele mostraria uma mensagem parecida com: Warning: Division by zero in /localhost/www/teste.php on line X

Concatenao de Strings
Outra operao muito comum na linguagem PHP a juno (concatenao) de strings (cadeia de caracteres). A concatenao simples de strings dada pelo operador de concatenao ponto (.). Ou seja, uma string ponto outra string ser igual a nova string. Veja o exemplo abaixo:

Visualizar Codigo Fonte Imprimir?


1.<?php 2. $string1 = "TI"; 3. $string2 = "Expert"; 4. $stringFinal = $string1 . " " . $string2; 5. // string1 junta com "espao" que junta com string2 6. echo($stringFinal); 7.?>

Isso mostraria no documento: TI Expert. A concatenao de strings tambm pode ser dinmica, dispensando o uso do operador ponto (.), mas apenas quando queremos concatenar uma varivel, no possvel executar uma operao diretamente na string. Esse mtodo mais simples, pois no requer que tenhamos que ficar abrindo ou fechando aspas toda vez que formos iniciar uma nova string. Veja o exemplo abaixo: Visualizar Codigo Fonte Imprimir?
1.<?php 2. $string1 = "TI Expert"; 3. $string2 = "www.tiexpert.net"; 4. $stringFinal = "$string1 - $string2"; 5. echo ($stringFinal); 6.?>

Isso resultaria em: TI Expert - www.tiexpert.net.

Simplificando Operaes
PHP pode usar operaes simplificadas quando utilizamos a prpria varivel. Por exemplo: se tivssemos uma varivel e a operao que executaramos com essa varivel fosse somar ela mesma mais outro nmero, faramos dessa forma: Visualizar Codigo Fonte Imprimir?
01.<?php 02. $var = 10; 03. $var = $var + 5; 04. echo ($var); // ir resultar em 15 05.?> 06.<br> 07.<?php 08. /* Na forma simplificada seria: */ 09. $var = 10; 10. $var += 5; // isso o mesmo que $var=$var+5 11. echo ($var); // ir resultar em 15 12.?>

Qualquer uma das operaes podem ser feitas dessa forma, inclusive a concatenao.

+= : Adio.

-= : Subtrao *= : Multiplicao /= : Diviso %= : Mdulo .= : Concatenao

As operaes de incremento e decremento so simplesmente a somatria ou subtrao de 1 da prpria varivel. Visualizar Codigo Fonte Imprimir?
1.<?php 2. /* Exemplo 3. $var1 = 10; 4. $var1++; 5. $var1--; 6.?> de incremento e decremento */ //var1 vale 10 //agora, var1 10 + 1, ou seja, 11 //agora, var1 11 - 1, ou seja, 10

If e Else
Um fator de extrema importncia em qualquer linguagem de programao a capacidade de tornar nosso cdigo capaz de tomar decises baseando-se no que falso e verdadeiro (lgica booleana). Em PHP, usamos if e else para tal ao, em conjunto com operadores lgicos para que possamos fazer comparaes.

If
verifica se uma comparao ou sentena verdadeira, se for, ele executar a prxima linha ou o prximo bloco de dados dentro de chaves ({}).
If

Para tal comparao, usamos os operadores lgicos:


> : Maior < : Menor >= : Maior ou igual <= : Menor ou igual == : Igual != : Diferente

Para ver mais detalhes, veja o artigo Operadores lgicos.

Else
apenas ser executado caso a comparao ou sentena do if for falso. Portanto, else s existe se existir um if primeiro.
Else

Else no um else.

uma clusula obrigatria, portanto, pode existir if sem ter necessariamente

Abaixo est um exemplo simples de como usar if e else: Visualizar Codigo Fonte Imprimir?
01.<?php 02. /* cdigo que verifica se um nmero par ou mpar */ 03. $numero = 50; 04. if ($numero%2 == 0) 05. /** 06. * Se o resto da diviso de um nmero por 2 for 0, 07. * ento, quer dizer que este nmero par. 08. **/ 09. echo ("O nmero $numero par"); 10. else 11. /* Caso contrrio */ 12. echo ("O nmero $numero impar"); 13.?>

While, Do While e For


While, Do While

e For so comandos que servem para manter uma poro do cdigo executando repetidamente. Tambm conhecidos como estruturas de repetio, iteraes ou loops, esses comandos mantm a execuo at que seu argumento seja falso.

While
A estrutura principal de while : while (comparao) { cdigo que ser executado }. Ou seja, a comparao verificada, caso ela seja verdadeira, ento, o cdigo executado. No exemplo abaixo, faremos um cdigo para contar de 1 a 10. Visualizar Codigo Fonte Imprimir?
1.<?php 2. $nr = 1; 3. while ($nr<=10){ 4. echo ($nr . " "); 5. $nr++; 6. } 7.?>

Isso ir resultar em: 1 2 3 4 5 6 7 8 9 10

Do While

funciona da mesma forma que while, mas ambos tm uma pequena diferena. Como foi visto, o comando while verifica a varivel primeiro, mas do while faz o contrrio, ele executa o cdigo primeiro e s depois verifica a varivel, se ela for verdadeira, ento ele executa o cdigo novamente.
Do while

A estrutura principal de do while : do { cdigo que ser executado } while (comparao); Ento, se fossemos reescrever o cdigo acima usando do while ficaria: Visualizar Codigo Fonte Imprimir?
1.<?php 2. $nr = 1; 3. do { 4. echo ($nr . " "); 5. $nr++; 6. } while ($nr<=10) 7.?>

Precaues: Como podemos observar tanto while quanto do while fazem com que o cdigo fique repetindo o mesmo trecho, portanto, temos que nos assegurar que a comparao ou varivel que est em while de alguma forma se torne falsa. Isso porque se a varivel for sempre verdadeira, a execuo nunca ir terminar, ocorrendo o que chamamos de looping infinito. Felizmente, h parmetros na configurao do PHP que limitam o tempo de execuo do cdigo que, por padro, so 30 segundos.

For
A estrutura for tambm cria iteraes (repeties) e tem o mesmo problema do while, mas diminui o risco de looping infinito porque for controla toda a varivel, desde seu valor inicial at seu valor final. A estrutura principal de for : for (valor inicial; comparao; modificao do valor) { cdigo que ser executado } Ou seja, diferentemente de while e do while que tinhamos que declarar a varivel j contendo um valor ($nr = 1;) e dentro do bloco de execuo incrementar esta varivel ($nr++;), o for j faz tudo isso para ns. Visualizar Codigo Fonte Imprimir?
1.<?php 2. for ($nr=1; $nr<=10; $nr++){ 3. echo ($nr . " "); 4. } 5.?>

Break e Continue

e continue so utilizados para controlar estruturas como while, do while, for e switch.
Break

A funo de break forar a sada de uma estrutura. Por exemplo, se tivermos uma estrutura de repetio for que vai at um determinado nmero, mas que deve parar antes caso alguma condio seja satisfeita, neste caso usamos o break. Veja o exemplo abaixo: Visualizar Codigo Fonte Imprimir?
1.<?php 2. for ($i=2; $i <= 100; $i+=2){ //nmeros pares de 2 a 100 3. echo ($i . " "); 4. if ($i%10 == 0) //se i for divisvel por 10 5. break; //saia do loop 6. } 7.?>

Resultado: 2 4 6 8 10 O cdigo acima mostra exatamente a funcionalidade do comando break. Ns definimos a estrutura for para que mostrasse os nmeros pares de 2 a 100, mas apenas sero apresentados os pares de 0 a 10. Isso acontece porque h uma condio dentro da estrutura que diz que se a varivel i for divisvel por 10, ento, executa o comando break. No momento que break executado, no estamos mais dentro do loop. O comando continue funciona de forma parecida com o comando break, mas ao invs de sair completamente da estrutura, ele apenas ignora o resto do cdigo. Vejamos: Visualizar Codigo Fonte Imprimir?
1.<?php 2. for ($i=0; $i <= 10; $i++){ 3. if ($i%2 == 0) //se i for par (divisvel por 2) 4. continue; //ignora o resto do for e vai para o prximo nmero 5. echo ($i . " "); 6. } 7.?>

O que resulta em: 1 3 5 7 9 Ou seja, toda vez que i for divisvel por 2, ento, ignorar o resto do cdigo (echo ($i . " ");) como se j tivesse chegado na chave final do for.

Switch, Case e Default

Em PHP, existe um comando que permite utilizar vrias opes definidas agrupadas em uma nica estrutura. Estamos falando de switch.
Switch

trabalha usando casos (case) que so valores definidos.

A estrutura do switch : switch (varivel) { case valor: cdigo a ser


executado }

O importante entender que o switch executa tudo a partir do ponto do case encontrado, isso quer dizer que, se possuirmos um switch com 5 cases e o segundo case for ativado, ento, ser executado o case 2 e tambm os cases 3, 4 e 5. Para evitar que isso acontea, podemos simplesmente parar a execuo do switch usando o comando break. Switch nos poupa o trabalho de criar vrias estruturas if-else aninhadas se elas forem apenas para verificar um dado especfico. Por exemplo, se quizssemos que o usurio digitasse um nmero entre 0 a 4 apenas para executar um trecho de cdigo. Visualizar Codigo Fonte Imprimir?
01.<?php 02. $var1 = 0; 03. if ($var1 == 0) { 04. //cdigo se var1 for 05. } elseif ($var1 == 1) { 06. //cdigo se var1 for 07. } elseif ($var1 == 2){ 08. //cdigo se var1 for 09. } elseif ($var1 == 3) { 10. //cdigo se var1 for 11. } elseif ($var1 == 4) { 12. //cdigo se var1 for 13. } 14.?>

0 1 2 3 4

Com switch seria assim: Visualizar Codigo Fonte Imprimir?


01.<?php 02. $var1 = 0; 03. switch ($var1){ 04. case 0: 05. //cdigo se 06. break; 07. case 1: 08. //cdigo se 09. break; 10. case 2: 11. //cdigo se 12. break; 13. case 3: 14. //cdigo se 15. break; 16. case 4: 17. //cdigo se

var1 for 0 var1 for 1 var1 for 2 var1 for 3 var1 for 4

18. 19. } 20.?>

break;

O caso default serve para executar um trecho do cdigo que no tenha seu valor definido em case. Usando o exemplo acima, o switch possui 5 cases que vo de 0 a 4, o que aconteceria se a varivel var1 valesse 10? Est a finalidade do default, ele ir pegar qualquer caso que no esteja definido. Visualizar Codigo Fonte Imprimir?
01.<?php 02. $var1 = 0; 03. switch ($var1){ 04. case 0: 05. //cdigo se 06. break; 07. case 1: 08. //cdigo se 09. break; 10. case 2: 11. //cdigo se 12. break; 13. case 3: 14. //cdigo se 15. break; 16. case 4: 17. //cdigo se 18. break; 19. default: 20. //cdigo se 21. break; 22. } 23.?>

var1 for 0 var1 for 1 var1 for 2 var1 for 3 var1 for 4 var1 no for nenhum dos casos anteriores

Abaixo est um exemplo de como podemos usar switch, case e dafault de forma simples. Visualizar Codigo Fonte Imprimir?
01.<?php 02. $letra = 'A'; 03. switch (strtoupper($letra)){ 04. case 'A': 05. case 'E': 06. case 'I': 07. case 'O': 08. case 'U': 09. echo ("Esta letra uma vogal"); 10. break; 11. default: 12. echo ("Esta letra uma consoante"); 13. break; 14. } 15.?>

No exemplo acima, h um switch que ir procurar pelo valor da varivel letra. Como podemos ver, letra vale A. Como PHP uma linguagem que chamamos de case sensitive (diferencia maisculas de minsculas) usamos a funo strtoupper() para converter qualquer caracter em maisculo. Switch ir encontrar logo no primeiro caso o valor A e comear a executar dessa linha em diante, pois no h nenhum comando que pare a execuo, ou seja, o switch ir executar at o case U onde mostrar uma mensagem -> Esta letra uma vogal. Mas no ser executado default porque h um comando break antes dele que impedir sua execuo. No entanto, se modificssemos o valor de letra para qualquer caracter diferente de A, E, I, O e U, apenas default seria executado.

Funes
Funes so usadas para criar pequenos trechos de cdigos separados. Esses trechos de cdigos podem gerar um resultado (o que chamamos de funes com retorno) ou apenas executar uma rotina (funes sem retorno). Sua principal vantagem condensar um trecho do cdigo e torn-lo utilizvel em vrios pontos diferentes. Toda funo deve ter um nome e possuir um delimitador de parmetro que so identificados com parnteses.

Funes sem Retorno


Para criar funes em PHP usamos a palavra-chave function, ento, damos um nome para nossa funo. A regra geral a seguinte: function nomeDaFuncao ( parmetros ) { cdigo da funo } Mesmo se no formos utilizar parmetros em nossa funo, deve haver o parnteses. Neste caso, essa seria a forma correta sem parmetros: function nomeDaFuncao ( ) { cdigo da funo } Funes sem retorno so ideais para criar pequenos trechos de cdigo que sero repetidos vrias vezes. Por exemplo, a funo abaixo ir mostrar na tela a mensagem Bem vindo ao PHP. Visualizar Codigo Fonte Imprimir?
1.<?php 2. function ola () { 3. echo ("Bem vindo ao PHP"); 4. } 5.?>

Funes com Retorno

Funes com retorno so criadas da mesma forma das funes sem retorno. Sua diferena principal que esta funo devolve um resultado para o cdigo usando a palavra chave return. Por exemplo, podemos gerar um resultado de uma soma e devolver este resultado para o PHP. Visualizar Codigo Fonte Imprimir?
1.<?php 2. function mostrarSomar () { 3. return 50+50; 4. } 5. 6. echo ("A soma de 50 + 50 " . mostrarSomar() ); 7.?>

Funes com Parmetros ou Argumentos


Muitas vezes, funes devem receber dados para process-los. A insero de dados na funo dada por meio dos parmetros ou argumentos da funo. Uma funo pode ter quantos parmetros forem necessrios desde que cada um seja separado por vrgula e no tenha a mesma denominao. Parmetros ou argumentos possuem as mesmas caractersticas de uma varivel. Abaixo est um exemplo de funes com retorno usando parmetros. Visualizar Codigo Fonte Imprimir?
01.<?php 02. function somar ($x, $y){ 03. return $x+$y; 04. } 05. 06. function subtrair ($x, $y){ 07. return $x-$y; 08. } 09. 10. function multiplicar ($x, $y){ 11. return $x*$y; 12. } 13. 14. function dividir ($x, $y){ 15. return $x/$y; 16. } 17. 18. $nr1 = 10; 19. $nr2 = 5; 20. echo ("<p>Operaes matemticas:</p>" . 21. "<p>$nr1 + $nr2 = " . somar ($nr1, $nr2) . 22. "<br>$nr1 - $nr2 = " . subtrair ($nr1, $nr2) . 23. "<br>$nr1 * $nr2 = " . multiplicar ($nr1, $nr2) . 24. "<br>$nr1 / $nr2 = " . dividir ($nr1, $nr2) . "</p>"); 25.?>

Arrays
Arrays, tambm muito conhecidos como vetores, so variveis que servem para guardar vrios valores de forma uniforme na memria. Por exemplo, se tivemos que utilizar 20 variveis para guardar o mesmo tipo de informao, ns no faramos -> $var1, $var2, $var3, $var4, $var5, ... ao invs disso, criaramos apenas uma varivel de array para guardar todas as 20 informaes de uma vez. Primeiramente, vamos aprender como construir um array. Podemos construir um array usando a funo de mesmo nome do PHP, array(). Visualizar Codigo Fonte Imprimir?
1.<?php 2. $vetor = array(); 3.?>

No exemplo acima, a varivel $vetor j um array! Simples assim. Se quisermos, tambm podemos inicializar nosso array contendo alguns valores. Por exemplo, vamos inicializar nosso array com trs nomes. Visualizar Codigo Fonte Imprimir?
1.<?php 2. $vetor = array("Fulano", "Ciclano", "Beltrano"); 3.?>

Ou seja, podemos inicializar nosso array exatamente no momento em que o criamos. Basta que para isso, separemos os valores por vrgula (,). E assim, como qualquer outra varivel, qualquer tipo de dado aceito.

Acessar Uma Posio no Array


Como um nico array pode possui vrios valores, cada valor fica em uma posio especfica da varivel. Em PHP, uma das formas de acessar tais valores utilizando o ndice (index) do array que sempre se inicia em 0. Ou seja, todo ndice definido pela posio - 1. Isso quer dizer que, se quisermos acessar o quarto elemento de um array devemos usar o ndice da posio 3, porque 4 - 1 = 3. Os ndices so indicados por colchetes ([]) que vem logo aps o nome da varivel. Portanto, se quisermos modificar ou acessar algum dado da varivel faramos: Visualizar Codigo Fonte Imprimir?
1.<?php

2. $vetor = array(); 3. $vetor[1] = 540; 4. $vetor[3] = 8456; 5.?>

Arrays Associativos
Uma caracterstica bem interessante dos arrays em PHP a capacidade de fazer associaes. Quando nos referimos a associaes, queremos dizer que, ao invs de usarmos nmeros como ndices, podemos usar strings (nomes). Dessa forma, fica muito mais simples e intuitivo obter um valor de um array, pois nomes fazem mais sentido do que nmeros. Para usarmos o array associativo basta apenas substituir o nmero do ndice por uma string. Veja o exemplo abaixo. Visualizar Codigo Fonte Imprimir?
1.<?php 2. $doc = array(); 3. $doc['rg'] = "00.000.000-X"; 4. $doc['cpf'] = "000.000.000-00"; 5. $doc['cartao de credito'] = 12345; 6.?>

Caso queiramos inicializar o array diretamente usando associaes, devemos usar seta larga para vincular um valor a uma chave. A seta larga composta pelo sinal de igual mais o sinal de maior (=>). Veja o mesmo cdigo usando as setas largas diretamente na associao. Visualizar Codigo Fonte Imprimir?
1.<?php 2. $doc = array("rg" => "00.000.00-X", 3. "cpf" => "000.000.000-00", 4. "cartao de credito" => 12345); 5.?>

Para acessar os valores do array associativo, segue o mesmo padro. Visualizar Codigo Fonte Imprimir?
01.<?php 02. $doc = array("rg" => "00.000.00-X", 03. "cpf" => "000.000.000-00", 04. "cartao de credito" => 12345);

05. echo ("Os documentos de Fulano so:" . 06. "<BR>RG: ". $doc['rg'] . 07. "<BR>CPF: ". $doc['cpf'] . 08. "<BR>Carto de Crdito: ". $doc['cartao de credito']); 09.?>

Arrays Multidimensionais (Matrizes)


PHP tambm possibilita o uso de matrizes que so arrays que contm outros arrays dentro dele. Ou seja, em cada posio de um array, possui outro array. Dessa forma nosso array pode ser bidimensional (2D), tridimensional (3D) e assim por diante. Quando utilizamos arrays multidimensionais (matrizes) existem mais ndices numa mesma varivel. Exemplos:

Array comum: $vetor [] Array bidimensional: $vetor [][] Array tridimensional: $vetor [][][] e assim por diante.

Os ndices de um array multidimensional segue as mesma caractersticas dos ndices vistos at agora, podendo ser tanto numerico como associativo. O exemplo abaixo toma como base o exemplo anterior, porm, iremos criar uma matriz para que haja mais de uma pessoa cadastrada. Visualizar Codigo Fonte Imprimir?
01.<?php 02. $m = array("Fulano" => array("rg" => "00.000.000-1", "cpf" => "000.000.000-01"), 03. "Ciclano" => array("rg" => "10.100.100-X", "cpf" => "100.100.100-01"), 04. "Beltrano" => array("rg" => "11.111.111-1", "cpf" => "111.111.111-01")); 05. echo("Pessoas cadastradas..." . 06. 07. "<BR><BR>Fulano: " . 08. "<BR>RG: " . $m['Fulano']['rg'] . 09. "<BR>CPF: " . $m['Fulano']['cpf'] . 10. 11. "<BR><BR>Ciclano: " . 12. "<BR>RG: " . $m['Ciclano']['rg'] . 13. "<BR>CPF: " . $m['Ciclano']['cpf'] . 14. 15. "<BR><BR>Beltrano: " . 16. "<BR>RG: " . $m['Beltrano']['rg'] . 17. "<BR>CPF: " . $m['Beltrano']['cpf']); 18.?>

O resultado :

Pessoas cadastradas... Fulano: RG: 00.000.000-1 CPF: 000.000.000-01 Ciclano: RG: 10.100.100-X CPF: 100.100.100-01 Beltrano: RG: 11.111.111-1 CPF: 111.111.111-01

Obter Dados de Formulrio


Dentre os aspectos mais importantes de linguagens de programao web dinmicas como PHP, a possibilidade de obter dados de formulrios HTML. Existem duas formas principais de obter dados de um formulrio que iro depender da forma como o formulrio submetido. Os valores dos formulrios so armazenados e acessados por variveis de coleo.

$_GET
Formulrios enviados pelo mtodo get, passam o valor de suas variveis pela URL dinmica ou parmetros de URL. Esses valores so acessados pela varivel de coleo $_GET. Os nomes das variveis servem de chave para a coleo. Veja o exemplo abaixo: Se, por exemplo, tivermos uma URL da seguinte maneira. http://forum.tiexpert.net/viewtopic.php?f=15&t=5 Ns teremos duas variveis: f = 15 e t = 5. Dessa forma, podemos utilizar o nome das variveis para acessar esses valores. Assim: Visualizar Codigo Fonte Imprimir?
1.<?php 2. echo("A 1a. varivel vale " . $_GET['f']); 3. echo(" e a 2a. vale " . $_GET['t']); 4.?>

$_POST
Formulrios enviados pelo mtodo post, passam suas variveis codificadas dentro da prpria submisso, ou seja, as variveis no so visveis ao usurio, apenas o servidor e o browser conhecem tais informaes. Visualizar Codigo Fonte Imprimir?
01.<FORM NAME="form1" METHOD="post" ACTION="pagina.php"> 02. Campo 1: 03. <INPUT TYPE="text" NAME="campo1"> 04. <BR> 05. Campo 2: 06. <TEXTAREA NAME="campo2"></TEXTAREA> 07. <BR> 08. <INPUT TYPE="submit" VALUE="Enviar"> 09.</FORM>

Podemos obter o valor das variveis usando os nomes dos elementos do formulrio como campos input, select e textarea. Portanto, se tivermos um formulrio como no exemplo acima, usariamos os nomes dos atributos NAME como chave de nossa coleo $_POST Visualizar Codigo Fonte Imprimir?
1.<?php 2. echo("A 1a. varivel " . $_POST['campo1']); 3. echo(" e a 2a. " . $_POST['campo2']); 4.?>

$_REQUEST
$_REQUEST uma varivel de coleo genrica, isso quer dizer que, no h diferena se o valor passado pelo formulrio foi pelo mtodo post ou pelo mtodo get. Isso acontece porque $_REQUEST verifica todas as entradas de dados em uma ordem especfica determinada pela varivel variables_order no arquivo de configurao php.ini. Geralmente, a busca pelo valor de uma chave feita na seguinte ordem: Variveis de URL (get) - Variveis de formulrio (post) - Variveis de Cookies Variveis de Sesso Mas, como dito anteriormente, isso pode ser alterado. Vale a pena ressaltar que uma chave sobrescreve a outra. Ou seja, se tivermos um formulrio da seguinte maneira: Visualizar Codigo Fonte

Imprimir?
1.<FORM NAME="form1" METHOD="post" ACTION="pagina.php?v=12345"> 2. <INPUT TYPE="text" NAME="v" VALUE="TI Expert"> 3. <INPUT TYPE="submit" VALUE="Enviar"> 4.</FORM>

E usamos echo() para visualizar o valor da varivel v. Visualizar Codigo Fonte Imprimir?
1.<?php 2. echo($_REQUEST['v']); 3.?>

O valor apresentado no ser 12345, e sim, TI Expert.

Referncias Bsicas de Tratamento de String


Como PHP tem por base linguagens como PERL, C e C++, grande parte de suas funes so baseadas em funes existentes nessas linguagens. O que ser mostrado neste artigo uma pequena referncia de tratamento de strings e caracteres para nos embasarmos nas prximas pginas que viro.

Contagem de Caracteres - strlen ()


A funo strlen serve para contar o nmero de caracteres de uma string, inclusive os espaos. Esta funo recebe como parmetro uma string (mesmo que ela seja vazia). Visualizar Codigo Fonte Imprimir?
1.<?php 2. $minhaStr1 = ""; 3. $minhaStr2 = "TI Expert"; 4. echo ("String 1: " . strlen($minhaStr1) . " caracteres.<BR>"); 5. echo ("String 2: " . strlen($minhaStr2) . " caracteres.<BR>"); 6.?>

Letras Maisculas - strtoupper ()


Outra funo muito usada o strtoupper. Esta funo retorna uma string com todos os caracteres convertidos em maisculos.

Letras Minsculas - strtolower ()


A funo strtolower faz o oposto de strtoupper.

Um fato importante entender que ambas as funes so para converter todos os caracteres em maisculos ou minsculos. Ou seja, os caracteres no so trocados. Por exemplo: StrING em nenhum momento ficar sTRing. Visualizar Codigo Fonte Imprimir?
01.<?php 02. $codigo = "abc123-TIEx"; 03. $email = "MEU.email@mEUDOmInIO.coM"; 04. $codigoConvertido = strtoupper($codigo); 05. $emailConvertido = strtolower($email); 06. echo("Codigo Original: " . $codigo . 07. "<BR>Codigo Convertido: " . $codigoConvertido . 08. "<BR>Email Original: " . $email . 09. "<BR>Email Convertido: " . $emailConvertido); 10.?>

Resultando em: Codigo Original: abc123-TIEx Codigo Convertido: ABC123-TIEX Email Original: MEU.email@mEUDOmInIO.coM Email Convertido: meu.email@meudominio.com

CTYPE
Se quisermos ter um controle ainda maior na anlise e controle de caracteres e strings podemos fazer uso da biblioteca ctype da linguagem C. Desde a verso 4.2.0 para Windows do PHP, esta biblioteca j vem habilitada para uso. PHP utiliza exatamente as mesmas funes booleanas, apenas substituindo o prefixo is por ctype_ .

Verifica se os caracteres so alfanumricos; Verifica se os caracteres so apenas alfabticos; Verifica se os caracteres so de controle; Verifica se os caracteres so apenas numricos; Verifica se os caracteres so imprimveis. Isso deduz que sejam caracteres possuam alguma forma que se possa visualizar, portanto, espaos em branco no so considerados imprimveis por esta funo; ctype_lower Verifica se os caracteres esto minsculos; ctype_print Verifica se os caracteres so imprimveis. Isso exclui quebras de linhas e outros controles de fluxo de texto; ctype_punct Verifica se um caractere imprimvel que no um espao em branco, letra ou numro, como por exemplo, dois-pontos (:), ponto de interrogao (?), vrgula (,), ...; ctype_space Verifica se os caracteres so espaos em branco; ctype_upper Verifica se os caracteres so maisculos ctype_xdigit Verifica se os caracteres representam um dgito hexadecimal. Ou seja, nmeros e letras de A a F.
ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_graph

Caso queira mais detalhes sobre esta biblioteca, leia o artigo de C/C++ entitulado "Trabalhando com Caracteres, a biblioteca CTYPE". Abaixo est um exemplo com algumas funes de CTYPE em PHP. Visualizar Codigo Fonte Imprimir?
01.<?php 02. $corBranca = "FFFFFF"; 03. echo ("<BR> alfanumrico? - "); 04. echo (ctype_alnum($corBranca) ? "Sim" : "No"); 05. echo ("<BR> uma letra? - "); 06. echo (ctype_alpha($corBranca) ? "Sim" : "No"); 07. echo ("<BR> um nmero? - "); 08. echo (ctype_digit($corBranca) ? "Sim" : "No"); 09. echo ("<BR> imprimvel? - "); 10. echo (ctype_alnum($corBranca) ? "Sim" : "No"); 11. echo ("<BR> alguma pontuao? - "); 12. echo (ctype_punct($corBranca) ? "Sim" : "No"); 13. echo ("<BR> algum espao em branco? - "); 14. echo (ctype_space($corBranca) ? "Sim" : "No"); 15. echo ("<BR> maisculo? - "); 16. echo (ctype_upper($corBranca) ? "Sim" : "No"); 17. echo ("<BR> minsculo? - "); 18. echo (ctype_lower($corBranca) ? "Sim" : "No"); 19. echo ("<BR>Pode ser um hexadecimal? - "); 20. echo (ctype_xdigit($corBranca) ? "Sim" : "No"); 21.?>

Resultado: alfanumrico? - Sim uma letra? - Sim um nmero? - No imprimvel? - Sim alguma pontuao? - No algum espao em branco? - No maisculo? - Sim minsculo? - No Pode ser um hexadecimal? - Sim

Explode e Implode
Explode

e implode so funes que tratam de string e vetores ou arrays.

Explode
Explode serve para dividir uma string em um vetor ou array de strings. Dessa forma fica simples tratar strings de forma isolada sem muito esforo. A sintaxe dessa funo explode (string ou caracter separador, a string que ser separada).

Abaixo h um exemplo de um nome de arquivo, no qual iremos separar o nome do arquivo de sua extenso. Visualizar Codigo Fonte Imprimir?
1.<?php 2. $nome_arquivo = "texto.txt"; 3. $arquivo = explode('.', $nome_arquivo); 4. echo ("O nome do arquivo " . $arquivo[0]); 5. echo (" e sua extenso " . $arquivo[1]); 6.?>

Como podemos observar, o que fizemos foi separar uma string nica a partir do caracter ponto (.). Importante: O caracter ou string usado como ponto de quebra ou separador automaticamente excludo na separao, portanto, no caso acima o caracter ponto (.) deixa de existir.

Implode
faz exatamente o contrrio de explode. Ou seja, ao invs de separar uma string em um vetor ou array, implode une ou junta os ndices de um vetor ou array em uma string nica. Isso no importando de que tipo de array se trata, pode ser array de ndices comum ou array associativo.
Implode

Sua sintaxe implode (string ou caracter de juno, vetor ou array a se tornar uma string). Uma nota importante descrita no site PHP.net diz que: pode, por razes histricas, aceitar seus parmetros nas duas ordens. Para consistncia com explode, entretanto, ela pode ser menos confusa por usar a ordem documentada dos argumentos.
Implode

Vejamos: Visualizar Codigo Fonte Imprimir?


1.<?php 2. $array = array ("www", "tiexpert", "net"); 3. $frase = implode ('.', $array); 4. echo ($frase); 5.?>

Join
em PHP tambm possui um alias (entenda alias como apelido) que join. Isso quer dizer que podemos utilizar tanto implode() quanto join() da mesma forma.
Implode

Visualizar Codigo Fonte

Imprimir?
1.<?php 2. $array = array ("Este", "vetor", "se", "tornar", "uma", "string"); 3. $string = join (' ', $array); 4. echo ($string); 5.?>

Substring
Continuando com a srie de tutoriais sobre strings em PHP, ser demonstrado neste artigo como funcionam as substrings. Substrings so pores de uma string, ou seja, uma string pode conter vrias substrings. Em PHP, podemos utilizar uma vasta gama de funes para tratar substrings, das quais apresentaremos algumas.

Substr ()
A funo substr() serve para obtermos uma substring. Esta funo possui 3 parmetros sendo o terceiro opicional.

Parmetro 1: A string completa de onde est a substring Parmetro 2: Nmero inteiro que indica a posio onde a substring comea Parmetro 3 (opicional): O tamanho (nmero de caracteres) da substring

Por padro, a funo substr() obtm a substring do ponto inicial determinado at o final da string. Mas possvel delimitarmos ainda mais a substring se utilizarmos o 3 parmetro para indicar quantos caracteres desejamos obter a partir do ponto inicial. Vejamos o exemplo abaixo: Visualizar Codigo Fonte Imprimir?
1.<?php 2. $string = "www.tiexpert.net"; 3. $substr1 = substr($string, 4); 4. $substr2 = substr($string, 4, 8); 5. echo ("Substring 1 (sem delimitador): $substr1" . 6. "<BR>Substring 2 (com delimitador): $substr2"); 7.?>

O resultado seria: Substring 1 (sem delimitador): tiexpert.net Substring 2 (com delimitador): tiexpert Como podemos ver, h a possibilidade de obter pequenas pores de uma string.

Strstr()

A funo strstr() retorna toda uma substring a partir da string de pesquisa. Sua sintaxe strstr (string principal, string de pesquisa). Visualizar Codigo Fonte Imprimir?
1.<?php 2. $email = "meu_nome@dominio.com"; 3. $servidorEmail = strstr ($email, "@"); 4.?>

Dessa forma, conseguimos o servidor de email da string que ser: @dominio.com.

Substr_count()
A funo substr_count() conta quantas vezes uma substring ocorre dentro de uma string. Esta funo possui 4 parmetros sendo os dois ltimos opicionais.

Parmetro 1: A string completa de onde est a substring. Parmetro 2: A substring que deve ser procurada na string. Parmetro 3 (opicional): A partir de que posio deve comear a contar. Parmetro 4 (opicional): Quantos caracteres deve-se levar em conta a partir do parmetro 3.

Como exemplo, usaremos uma string contendo uma frase em que uma palavra ir se repetir. Visualizar Codigo Fonte Imprimir?
01.<?php 02. $string = "O cachorro fugiu da carrocinha para no virar cachorro morto"; 03. $substr = "cachorro"; 04. echo ("A palavra $substr aparece " 05. . substr_count($string, $substr) . 06. " vezes na frase $string.<BR>" . 07. "Mas entre a posio 10 e 60, a palavra " . 08. "$substr aparece apenas " . 09. substr_count ($string, $substr, 10, 50) . " vez."); 10.?>

O que resulta em: A palavra cachorro aparece 2 vezes na frase O cachorro fugiu da carrocinha para no virar cachorro morto. Mas entre a posio 10 e 60, a palavra cachorro aparece apenas 1 vez.

Remover Sobras de String


Muitas vezes quando obtemos dados de formulrios que so preenchidos por usurios nos deparamos com sobras de string.

As sobras de string podem ser interpretadas como espaos em branco, retorno de carro, quebras de linhas, etc. que ficam ou no incio ou no final da string. Visualmente podem no dar muita diferena, mas se desnecessrios, por vezes, ocupam um espao valioso, principalmente, em banco de dados.

Trim
A funo trim() responsvel por remover tais sobras de string tanto no incio como no fim. Visualizar Codigo Fonte Imprimir?
1.<?php 2. $var1 = " String com sobras "; 3. echo (trim($var1)); 4. // o resultado ser "String com sobras". 5.?>

Esta funo remove qualquer caracter de controle de fluxo de texto ou espaos. Caso queira determinar qual caracter de controle de fluxo desejamos remover, devemos especificar com um segundo parmetro opcional. No exemplo abaixo, iremos remover todas as quebras de linha, mas conservaremos os espaos. Visualizar Codigo Fonte Imprimir?
1.<?php 2. $var1 = " String com sobras " . "\n" . "\n" . "\n"; 3. /* '\n' uma quebra de linha, como se 4. tivssemos pressionado a tecla ENTER */ 5. echo (trim($var1, "\n")); 6. // o resultado ser " String com sobras " 7.?>

Ltrim
Podemos tambm determinar onde desejamos remover a sobra, se no incio ou no final. Caso desejarmos remover as sobras da string no incio, ou seja, do lado esquerdo da palavra, usamos a funo ltrim(). Esta funo, remove as sobras do lado esquerdo e conserva o lado direito. E, tambm, possui um segundo parmetro opcional como o trim(). Visualizar Codigo Fonte Imprimir?
1.<?php 2. $var1 = " String com sobras "; 3. echo (ltrim($var1)); 4. // o resultado ser "String com sobras

"

5.?>

Rtrim
A funo rtrim() funciona da mesma forma que ltrim(), porm, esta funo remove o que estiver no final, ou seja, as sobras da string que estiverem ao lado direito, mas conserva o que estiver do lado esquerdo. Visualizar Codigo Fonte Imprimir?
1.<?php 2. $var1 = " String com sobras "; 3. echo (ltrim($var1)); 4. // o resultado ser " String com sobras" 5.?>

! ! !

!"#"$%&'()*
JavaScript
JavaScript uma linguagem de programao criada pela Netscape em 1995, que a princpio se chamava LiveScript, para atender, principalmente, as seguintes necessidades: Validao de formulrios no lado cliente (programa navegador);

Interao com a pgina. Assim, foi feita como uma linguagem de script. Javascript tem sintaxe semelhante do Java, mas totalmente diferente no conceito e no uso. Oferece tipagem dinmica - tipos de variveis no so definidos; interpretada, ao invs de compilada; Possui timas ferramentas padro para listagens (como as linguagens de script, de modo geral); Oferece bom suporte a expresses regulares (caracterstica tambm comum a linguagens de script).

Sua unio com o CSS conhecida como DHTML. Usando o Javascript, possvel modificar dinamicamente os estilos dos elementos da pgina em HTML. Dada sua enorme versatilidade e utilidade ao lidar com ambientes em rvore (como um documento HTML), foi criado a partir desta linguagem um padro ECMA, o ECMA262, tambm conhecido como ECMAScript. Este padro seguido, por exemplo, pela linguagem ActionScript da Adobe(Antigamente Macromedia, porm a empresa foi vendida Adobe).

Alm de uso em navegadores processando pginas HTML dinmicas, o JavaScript hoje usado tambm na construo do navegador Mozilla, o qual oferece para a criao de sistemas GUI todo um conjunto de ferramentas (em sua verso normal como navegador, sem a necessidade de nenhum software adicional), que incluem (e no apenas) um interpretador de Javascript, um comunicador Javascript <-> C++ e um interpretador de XUL, linguagem criada para definir a interface grfica de aplicaes.

O que preciso para programar em JavaScript


Para programar em JavaScript no preciso nenhum programa especial, porque JavaScript no compilado, ele interpretado. Isso quer dizer que com qualquer editor de texto simples, ns somos capazes de criar os scripts. Apesar de que no preciso ter nenhuma experincia anterior em programao para programar em JavaScript, altamente recomendvel que j saibamos o mnimo de HTML. Embora, como j dito antes, no seja preciso nenhum programa especfico para JavaScript, existem editores que ajudam no desenvolvimento dos scripts, seja formatando o texto ou at mesmo dando sugestes de implementao (construo) de cdigo.

Como Funciona um JavaScript


Os scripts em JavaScript so dependentes dos navegadores (browsers), porque eles devem ter suporte e tambm devem estar habilitados a interpretao e execuo do JavaScript. A forma mais simples codificar o script dentro da tag HTML <script> (mais informaes visite a seo HTML/XHTML). Portanto, a codificao da pgina seria: Visualizar Codigo Fonte Imprimir?
1.<SCRIPT> 2. Cdigo JavaScript 3.</SCRIPT>

A outra forma seria criar um arquivo .js e, ento, import-lo para a pgina html pelo cabealho usando o atributo src da tag <script>. Assim, criaramos duas camadas de arquivos: uma sendo a pgina HTML e outro um documento de JavaScript. Imaginando este cenrio, vamos supor que j tinhamos um arquivo de JavaScript chamado myScript.js. Ento, para import-lo para nossa pgina digitaramos dentro do cabealho.

Visualizar Codigo Fonte Imprimir?


1.... 2.<HEAD> 3. <SCRIPT TYPE="text/JavaScript" SRC="myScript.js"></SCRIPT> 4.</HEAD> 5....

Pronto, agora nossa pgina HTML tem um JavaScript "embutido" nela.

Problema com Browsers Antigos


Um problema que acontece quando programamos em JavaScript diretamente na pgina HTML est por conta de browsers antigos. Como vimos, o JavaScript (ou LiveScript quando surgiu) no se iniciou juntamente com o HTML. Isso quer dizer que, j existia HTML e browsers, antes mesmo do surgimento do JavaScript, o que gerou uma certa incompatibilidade com os navegadores mais antigos. Como os browsers no entendiam o JavaScript, eles simplesmente escreviam na pgina o cdigo como se fosse um texto comum. Ento para evitar isso, sempre que programamos o JavaScript diretamente no HTML indicamos que, na verdade, o script um comentrio. Como os browsers antigos iro interpretar o trecho como um comentrio, o cdigo ser ignorado. Porm, os browsers mais novos vo compreender o cdigo e iro execut-lo. Isso ficaria assim: Visualizar Codigo Fonte Imprimir?
1.<SCRIPT TYPE="text/JavaScript"> 2.<!-3.Cdigo JavaScript Aqui! 4.//--> 5.</SCRIPT>

Primeiro Cdigo em JavaScript


Visualizar Codigo Fonte Imprimir?
01.<HTML> 02. <HEAD> 03. <TITLE>Primeiro cdigo</TITLE> 04. </HEAD> 05. <BODY> 06. <SCRIPT LANGUAGE="javascript" TYPE="text/javascript"> 07. <!-08. // Exemplo de um cdigo em JavaScript 09. document.write ("Meu Primeiro Cdigo em JavaScript"); 10. //-->

11. </SCRIPT> 12. </BODY> 13.</HTML>

Tags
O JavaScript pode ser inserido diretamente no HTML ou em um arquivo .js. No HTML, o script vem dentro da tag SCRIPT. Na tag SCRIPT podemos, opcionalmente, antecipar a linguagem que usaremos para o browser usando o atributo LANGUAGE. Mas, somos obrigados a definir o tipo de script que ser utilizado usando o atributo TYPE (que para o nosso caso, ser sempre text/javascript).

Comentrios HTML
Os comentrios HTML servem para evitar que o cdigo do JavaScript seja entendido como simples texto por browsers antigos. Portanto, se vamos codificar diretamente nas tags HTML, devemos por o cdigo dentro de <!-- e -->. Outro fato que o JavaScript pode vir a tentar interpretar o --> (que representa o final do comentrio em HTML). Para evitar que isso acontea, ns usamos o comentrio do JavaScript para ignorar o -->. Isso resulta na estrutura:
<!-Cdigo em JavaScript //-->

Comentrios JavaScript
Comentrios servem apenas para documentar o cdigo, ou seja, para inserir dicas ou anotaes que no so trechos de cdigo a serem executados. JavaScript utiliza duas formas de comentrio: o comentrio de linha nica e o comentrio de vrias linhas. O comentrio de linha nica comea a partir das barras duplas (//). Tudo que estiver aps as barras ser ignorado. O comentrio de vrias linhas comea a partir da barra e astersco (/*) e devemos termin-la com astersco barra (*/). Tudo que estiver dentro de /* e */ ser ignorado.

document
document um dos muitos objetos existentes em JavaScript. O objeto document nos d acesso a muitos elementos encontrados na pgina HTML, inclusive prpria pgina. O assunto orientao a objetos ser tratado mais a frente.

write()

write() um mtodo. Podemos pensar em mtodos como sendo aes que um objeto pode executar. De forma - muito simplria - podemos comparar o seguinte: O carro pode acelerar, o avio pode voar, no cavalo podemos montar e no documento podemos escrever (document.write). Portanto, apenas sabendo um pouco de ingls, podemos entender que o que ir acontecer que algo ser escrito no documento.

("Meu Primeiro Cdigo em JavaScript")


O que est entre parentses o que chamamos de argumentos. Os argumentos so as informaes necessrias para que um mtodo ou funo faa alguma coisa. No caso do mtodo write, ele precisa saber o que ele deve escrever no documento. O que est entre aspas a frase que ele deve escrever no documento. Cada linha de cdigo nica, mas se quisermos colocar mais de uma linha de cdigo na mesma linha devemos indicar o final de cada linha com um ponto e vrgula (;). Outro detalhe que devemos observar quando programamos em JavaScript que esta uma linguagem case sensitive. Isso quer dizer que, h diferena entre maiscula e minscula. Portanto, document no a mesma coisa que Document, write no a mesma coisa que Write e assim por diante.

Variveis
Variveis so endereos de memria nos quais podemos armazenar dados ou informaes. Usamos variveis para manipular esses dados mais facilmente e tambm para no perd-los no meio do processo. O ponto forte de JavaScript que podemos guardar qualquer tipo de dado em uma varivel, desde um simples caracter at um objeto. Quando vamos utilizar uma varivel, podemos antes declar-la, ou seja, dizer ao computador que deve ser reservado na memria um pequeno espao para que o script o utilize. Para fazer isso em JavaScript usamos a palavra reservada var. Toda varivel tem nome e devemos tomar alguns cuidados ao nome-las. Primeiro, nunca comeamos o nome de uma varivel com um nmero, mas sim com uma letra ou um underline (_). Por JavaScript ser case-sensitive (diferencia letras maisculas de minsculas), declarar uma varivel x ser diferente de X. Veja um exemplo abaixo:
var x; var minhaVariavel;

Ao declararmos uma varivel ela vir sem valor algum, ou seja, vazia. Mas, se quisermos declarar uma varivel j contendo um valor devemos inicializ-la. Para inicializar uma varivel fcil, basta que aps a declarao ns atribumos um valor para ela.

Visualizar Codigo Fonte Imprimir?


1.var x=10; 2.var minhaVariavel=150;

Outra possibilidade que temos que uma varivel pode ser criada automaticamente, sem que antes ela tenha sido declarada. Visualizar Codigo Fonte Imprimir?
1.var x=30; 2.var y=20; 3.z=x+y;

Como podemos ver aqui, apenas a varivel x e y foram declaradas, a varivel z foi criada automaticamente para receber a soma de x e y.

Atribuindo dados s variveis


Existem diversos tipos de dados que uma varivel pode armazenar. O que diferencia uma da outra a forma como elas so compostas. Os nmeros inteiros so atribudos diretamente: Visualizar Codigo Fonte Imprimir?
1.var minhaVariavel=50;

Nmeros decimais ou ponto flutuante so atribudos diretamente, mas usam o formato americano para separar a parte decimal, ou seja, ao invs de vrgula (,) usamos ponto (.). var meuDecimal=1.5; Caracteres ou frases (tambm conhecidas como strings) devem ser delimitadas dentro de aspas (ou simples, ou duplas). Portanto, todos os exemplos abaixo so vlidos. Visualizar Codigo Fonte Imprimir?
1.var 2.var 3.var 4.var meuCaracter1='a'; meuCaracter2="a"; minhaPalavra='Programao'; minhaFrase="Programao em JavaScript";

Existe um tipo de dado que serve apenas para tomada de deciso que chamamos de tipo de dado booleano. Em tipos de dados booleanos apenas dois valores so possveis de existir: verdadeiro ou falso. Sendo que true verdadeiro e false falso. Visualizar Codigo Fonte Imprimir?
1.var minhaVariavel=true;

Algo muito interessante em JavaScript que uma varivel pode ser de um tipo e virar outro a qualquer momento que quisermos. Visualizar Codigo Fonte Imprimir?
1.var minhaVariavel=200; 200 2.minhaVariavel=false // falsa 3.minhaVariavel="TI Expert" frase 4.minhaVariavel=0.75 decimal // Aqui, minhaVarivel um inteiro valendo Agora, uma varivel do tipo booleana // Ento, deixou de ser falsa e virou uma // No mais frase, agora um nmero

Operaes Matemticas
Como parte de qualquer processo em programao, devemos manipular os dados. A forma mais corriqueira de manipular os dados usando operaes matemticas. JavaScript nos possibilita usar as quatro operaes bsicas, uma operao de mdulo e mais um tratamento de juno de string. Operao Adio Subtrao Multiplicao Diviso Mdulo Decremento Incremento Concatenao Sinal + * / % -++ + O que faz soma dois valores ou variveis subtrai dois valores ou variveis multiplica dois valores ou variveis divide dois valores ou variveis obtm o resto de uma diviso Subtrai um do valor da varivel Soma um ao valor da varivel junta duas strings (palavras ou frases)

Veja o pequeno exemplo: Visualizar Codigo Fonte Imprimir?


01.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 02.<!-03. var soma = 5+5; 04. var subtracao = 5-5; 05. var multiplicacao = 5*5; 06. var divisao = 5/5; 07. var resto = 5%5; 08. document.write (soma); 09. document.write ("<BR>"); 10. document.write (subtracao); 11. document.write ("<BR>"); 12. document.write (multiplicacao); 13. document.write ("<BR>"); 14. document.write (divisao); 15. document.write ("<BR>");

16. document.write (resto); 17.//--> 18.</SCRIPT>

Isso resultar em: 10 0 25 1 0

Concatenao
Podemos entender concatenao como sendo a juno de duas strings (frases ou palavras). O operador para fazer concatenao o prprio sinal de adio. No exemplo abaixo, concatenaremos trs variveis para formar uma nica varivel com uma frase inteira. Visualizar Codigo Fonte Imprimir?
01.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 02.<!-03. var parte1 = "www."; 04. var parte2 = "tiexpert"; 05. var parte3 = ".net"; 06. var frase = parte1+parte2+parte3; 07. document.write (frase); 08.//--> 09.</SCRIPT>

Isso resultar em uma nica frase contendo www.tiexpert.net. O problema da concatenao a ambiguidade causada pelo operador +. s vezes, queremos juntar dois nmeros como sendo duas strings, e no dois nmeros com valores reais. Para fazer isso, precisamos concatenar o nmero com algum caracter ou string vazia para que o interpretador entenda que o nmero no realmente um nmero, mas um caracter qualquer. Veja o exemplo abaixo: Visualizar Codigo Fonte Imprimir?
01.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 02.<!-03. var numero1 = 200; 04. var numero2 = 8; 05. var variavel1 = numero1+numero2; 06. var variavel2 = numero1+""+numero2; 07. document.write (variavel1); 08. document.write ("<BR>"); 09. document.write (variavel2); 10.//--> 11.</SCRIPT>

No exemplo acima, h dois nmeros 200 e 8. Na variavel1, ns guardamos a soma de 200 e 8 que resulta em 208. Na variavel2, ns guardamos a concatenao de 200 mais uma string vazia ("") e o nmero 8 que ser 2008.

If
Muitas vezes durante um script, devemos prepar-lo para tomar decises baseadas em dados lgicos. Quem faz esse papel de deciso o if. A estrutura seletiva if determina se seu bloco de dados ser executado a partir de uma comparao que resultar em verdadeiro ou falso, no qual, se der verdadeiro, seu bloco executado. Sua estrutura bsica : if ( comparao ) { cdigo a ser executado } A comparao dada por operadores lgicos: maior, menor, igual, diferente, etc. Em conjunto ou no de operadores de sentena: e, ou, ou exclusivo, etc. Se tiver dvidas sobre como eles funcionam, veja o artigo operadores lgicos da seo algoritmo. No exemplo abaixo, iremos comparar dois nmeros. Se a comparao for verdadeira, aparecer na tela: Estes nmeros so iguais. Visualizar Codigo Fonte Imprimir?
1.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 2.<!-3. if (10 == 10) { 4. document.write ("Estes nmeros so iguais"); 5. } 6.//--> 7.</SCRIPT>

O que resultaria em: Estes nmeros so iguais. Mas, devemos entender que, se a comparao fosse falsa, nada iria acontecer, resultando em um espao em branco no documento.

Else
Else serve, exatamente, para a parte falsa da estrutura seletiva if. Isso quer dizer que, se o resultado de if for falso, o bloco de dados que pertence ao else ser executado. Portanto, no existe else, se antes no houver um if. O que resulta na estrutura: if ( comparao ) { cdigo executado se verdadeiro } else { cdigo executado se falso } Agora, vamos refazer o if acima, mas em conjunto com o else. Visualizar Codigo Fonte Imprimir?
01.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">

02.<!-03. if (10 == 5) { 04. document.write ("Estes nmeros so iguais"); 05. } else { 06. document.write ("Estes nmeros no so iguais"); 07. } 08.//--> 09.</SCRIPT>

O que resultaria em: Estes nmeros no so iguais.

If e Else Resumido
Uma outra forma muito prtica de utilizarmos o if e else resum-los. O resumo de if e else uma forma simples de comparao com um resultado para verdadeiro e outro para falso. No caso do resumo utilizamos apenas dois caracteres: o ponto de interrogao (?) e os dois-pontos (:). Portanto, a estrutura ficaria assim: comparao ? o que fazer se verdadeiro : o que fazer se falso Ento, o cdigo utilizado acima de forma resumida seria: Visualizar Codigo Fonte Imprimir?
1.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 2.<!-3. document.write ("Estes nmeros "); 4. document.write (10 == 10 ? "so" : "no so"); 5. document.write (" iguais"); 6.//--> 7.</SCRIPT>

Que simplesmente mostraria na tela: Estes nmeros so iguais.

While, Do While e For


While, Do While e For so comandos que servem para manter uma poro do script executando repetidamente. Tambm conhecido como estrutura de repetio, iterao ou loop, esses comandos mantm a execuo at que seu argumento seja falso. A estrutura principal de while : while (comparao) { cdigo que ser executado } No exemplo abaixo, faremos um script para contar de 1 a 10. Visualizar Codigo Fonte Imprimir?

01.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 02.<!-03. var numero = 1; 04. while (numero<=10){ 05. document.write (numero+" "); 06. numero++; 07. } 08.//--> 09.</SCRIPT>

Isso ir resultar em: 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 Do While executa a mesma funo que While, mas ambos tm uma pequena diferena. O comando while verifica a varivel primeiro, e se ela for verdadeira, ele executa o cdigo. Do While faz o contrrio, ele executa o cdigo primeiro e s depois verifica a varivel, se ela for verdadeira, ento ele executa o cdigo novamente. A estrutura principal de do while : do { cdigo que ser executado } while (comparao); Ento, se fossemos reescrever o cdigo acima usando do while ficaria: Visualizar Codigo Fonte Imprimir?
01.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 02.<!-03. var numero = 1; 04. do { 05. document.write (numero+" "); 06. numero++; 07. } while (numero<=10) 08.//--> 09.</SCRIPT>

Precaues: Como podemos observar tanto while quanto do while fazem com que o script fique repetindo o mesmo trecho do cdigo, portanto, temos que nos assegurar que a comparao ou varivel que est em while de alguma forma se torne falsa. Isso porque se a varivel for sempre verdadeira, o script nunca ir parar, ocorrendo o que chamamos de looping infinito. A estrutura for tambm cria iteraes (repeties) e tem o mesmo problema do while, mas diminui o risco de looping infinito porque for controla toda a varivel, desde seu valor inicial at seu valor final. A estrutura principal de for : for (valor inicial; comparao; modificao do valor) { cdigo que ser executado } Ou seja, diferentemente de while e do while que tinhamos que declarar a varivel j valendo 1 (var numero = 1;) e dentro do bloco de execuo incrementar esta varivel (numero++), o for j faz tudo isso para ns. Vejamos: Visualizar Codigo Fonte Imprimir?

1.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 2.<!-3. var numero; 4. for (numero=1; numero<=10; numero++){ 5. document.write (numero+" "); 6. } 7.//--> 8.</SCRIPT>

Break e Continue
Break e Continue so utilizados para controle de estruturas fechadas como for, while e switch. Break serve para sair de uma estrutura. Por exemplo, se estivermos em uma estrutura de repetio que ir contar de 1 a 1.000.000, mas ns colocarmos uma condio que diz que se o nmero for 5, ento quebre (saia) da estrutura. Faramos o seguinte cdigo. Visualizar Codigo Fonte Imprimir?
1.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 2. var x; 3. for (x=1; x<=1000000; x++){ 4. document.write(x+" "); 5. if (x==5) 6. break; 7. } 8.</SCRIPT>

Que resulta em: 1 2 3 4 5 1 2 3 4 5 Podemos observar que, apesar de termos definido a estrutura de repetio for para contar de 1 a 1.000.000, os nicos nmeros que aparecem so 1, 2, 3, 4 e 5. Isso acontece porque que dentro da condio (if) determinamos que quando x for igual a 5, o comando break deve ser chamado e dessa forma ns samos de dentro de for sem ter que chegar at o fim. O continue tambm serve para controlar estruturas de dados fechadas, assim como o break. Mas, sua principal diferena que, ao invs de sair completamente da estrutura, o continue apenas ignora o resto da estrutura e prossegue com a seguinte. Simplificadamente, em uma estrutura switch, no qual tem os cases, automaticamente, o prximo case ser selecionado. Em uma estrutura de repetio como for, todo o bloco de dados abaixo do comando continue ser ignorado e a repetio continua com o prximo loop. um conceito importante, embora, teoricamente, seja difcil de entender. Ento, abaixo est um cdigo com erro por estar sem o continue. Visualizar Codigo Fonte Imprimir?
01.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">

02. var nr; 03. for (nr=1; nr<=20; nr++){ 04. if (nr%4 == 0){ 05. document.write ("pin"); 06. document.write ("<br>"); 07. } 08. document.write (nr); 09. document.write ("<br>"); 10. } 11.</SCRIPT>

O script acima deveria fazer o browser responder de acordo com a brincadeira do um, dois, trs, pin... Ou seja, a cada mltiplo de 4 o browser no pode contar, ao invs disso, deve aparecer pin. Mas, veja que o resultado est errado. 1 2 3 pin 4 5 6 7 pin 8 9 10 11 pin 12 13 14 15 pin 16 17 18 19 pin 20 1 2 3 pin 4 5 6 7 pin 8 9 10

11 pin 12 13 14 15 pin 16 17 18 19 pin 20 Sempre que aparece o pin, tambm aparece o nmero mltiplo de 4. Isso porque o if executado e depois o cdigo que est abaixo dele tambm. Para evitar que o cdigo abaixo dele seja executado, e mesmo assim continuar executando o loop, devemos usar o continue. Veja a diferena agora. Visualizar Codigo Fonte Imprimir?
01.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 02. var nr; 03. for (nr=1; nr<=20; nr++){ 04. if (nr%4 == 0){ 05. document.write ("pin"); 06. document.write ("<br>"); 07. continue; //ignora todo o resto e continua o loop 08. } 09. document.write (nr); 10. document.write ("<br>"); 11. } 12.</SCRIPT>

Veja que agora os mltiplos de quatro so apenas o pin e no o nmero. 1 2 3 pin 5 6 7 pin 9 10 11 pin 13 14 15 pin

17 18 19 pin

Switch, Case e Default


Um comando muito til em JavaScript o switch. O switch funciona como um painel com interruptores, no qual ser analisado uma entrada de dado, e um boto ser acionado de acordo com o caso. Basicamente, switch ir substituir o uso de vrios if para aes distintas. Para utilizarmos o comando switch, primeiramente, passamos para o comando a entrada a ser avaliada, o que na maioria das vezes ser uma varivel. Depois, abrimos um bloco de dados ( { } ). Dentro deste bloco de dados usamos os cases.

Case
Os cases so as possibilidades que o switch deve obter, que pode ser um nmero, um caracter ou at mesmo uma string. Porm, jamais poderemos fazer uma comparao com o case (ex.: var1 > var2 ou 456 < 555), porque o case apenas aceita condies definitivas. Cada case definido pelo uso dos dois pontos ( : ) no final. Portanto, a estrutura bsica de switch/case seria: switch (varivel) { case valor: cdigo a ser executado se for tal valor; } Um detalhe importante que devemos nos ater o fato de que os cases no tem fim, ou seja, a partir do momento em que um case acionado, todos os outros cases posteriores tambm so executados. Isso ajuda no fato de que podemos aninhar vrios cases para executar apenas uma faixa de cdigo. switch (varivel) { case valor1: case valor2: case valor3: cdigo a ser executado caso seja valor1, valor2 ou valor 3 } Se quisermos separar cada case, podemos utilizar o comando break antes do incio do prximo case. Dessa forma, obrigamos o algoritmo a sair de toda estrutura switch e o case seguinte no ser executado.

switch (varivel) { case valor1: cdigo a ser executado caso seja valor1; break; case valor2: cdigo a ser executado caso seja valor2; break; }

Default
O default funciona como um case, mas a diferena que ele s ativado quando nenhum outro case ativado. como se fosse uma forma saber o que fazer caso nada de esperado acontea. Cada estrutura switch pode conter apenas um default. switch (varivel) { case valor1: cdigo a ser executado caso seja valor1; case valor2: cdigo a ser executado caso seja valor2; default: cdigo a ser executado caso nem valor1 e nem valor2 apaream; } Para demonstrar, abaixo est um pequeno exemplo que diz o ms em que estamos. Visualizar Codigo Fonte Imprimir?
01.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 02.<!-03. document.write ("Estamos no ms de "); 04. hoje = new Date(); 05. switch (hoje.getMonth()) { 06. case 0: 07. document.write ("Janeiro"); 08. break; 09. case 1: 10. document.write ("Fevereiro"); 11. break; 12. case 2: 13. document.write ("Maro"); 14. break; 15. case 3: 16. document.write ("Abril"); 17. break; 18. case 4: 19. document.write ("Maio"); 20. break; 21. case 5: 22. document.write ("Junho"); 23. break; 24. case 6:

25. document.write ("Julho"); 26. break; 27. case 7: 28. document.write ("Agosto"); 29. break; 30. case 8: 31. document.write ("Setembro"); 32. break; 33. case 9: 34. document.write ("Outubro"); 35. break; 36. case 10: 37. document.write ("Novembro"); 38. break; 39. default: 40. // se no for nenhum dos cases acima, ento: 41. document.write ("Dezembro"); 42. } 43.//--> 44.</SCRIPT>

O que resulta em: Estamos no ms de Abril Estamos no ms de Abril Acima usamos o objeto Date e o mtodo getMonth() para obter o ms, de acordo com o relgio do sistema operacional. Estes objetos sero estudados mais a frente, quando formos tratar de orientao a objetos.

Funes
Funes so usadas para criar pequenos trechos de cdigos separados do script principal. Esses trechos de cdigos podem gerar um resultado (o que chamamos de funes com retorno) ou apenas executar uma rotina (funes sem retorno). Funes tambm so teis para serem facilmente chamadas em eventos como clique do mouse ou submeter um formulrio. Toda funo deve ter um nome e possuir um delimitador de parmetro que so identificados com parnteses.

Funes sem Retorno


Para criar funes em JavaScript usamos a palavra-chave function, ento, damos um nome para nossa funo. Essas primeiras funes que criaremos sero simples e no tero parmetros. Portanto, a regra geral a seguinte: function nomeDaFuncao ( parmetros ) { cdigo da funo } Funes sem retorno so ideais para criar pequenos trechos de script que sero repetidos vrias vezes durante o cdigo.

Por exemplo, a funo abaixo ir mostrar na tela a mensagem Bem vindo ao JavaScript. Visualizar Codigo Fonte Imprimir?
1.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 2.function ola () { 3. document.write ("Bem vindo ao JavaScript<br>"); 4.} 5.</SCRIPT>

Funes com Retorno


Funes com retorno so criadas da mesma forma das funes sem retorno. Sua diferena principal que esta funo devolve um resultado para o script. Por exemplo, podemos gerar um resultado de uma soma e devolver este resultado para o script. Para que uma funo retorne algum valor usamos a palavra reservada return. Visualizar Codigo Fonte Imprimir?
1.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 2.function somar () { 3. return 5+5; 4.} 5. 6.document.write ("A soma de 5 + 5 " + somar() ); 7.</SCRIPT>

Funes com Parmetros ou Argumentos


Muitas vezes, funes devem receber dados para process-los. A insero de dados na funo dada por meio dos parmetros ou argumentos da funo. Uma funo pode ter quantos parmetros forem necessrios desde que cada um seja separado por vrgula e no tenha a mesma denominao. Abaixo est um exemplo com uma funo com retorno e outra sem retorno usando parmetros. Visualizar Codigo Fonte Imprimir?
01.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 02.function mostrar (mensagem){ 03. document.write (mensagem+"<br>"); 04.} 05. 06.function somar (x, y){ 07. return x+y; 08.} 09. 10.var resultado; 11.mostrar ("A soma de 50 + 50 "); 12.resultado = somar (50, 50);

13.mostrar (resultado); 14.</SCRIPT>

Isso resulta em: A soma de 50 + 50 100

Caixas de Dilogo
Um recurso interessante de JavaScript a possibilidade de criar caixas de dilogo simples, que podem ser muito informativas aos usurios que a visualizam. Essas caixas de dilogo podem ser de alerta, de confirmao ou de prompt de entrada. Todas elas so chamadas de forma simples e intuitiva por uma funo.

Alert
As caixas de dilogo de alerta so simples e informativas. Elas, geralmente, so utilizadas em validao de formulrios ou bloqueio de aes. Sua funo mostrar apenas uma mensagem com um boto de confirmao para que esta seja fechada. Para chamar esta caixa de dilogo usamos a funo alert(). Esta funo recebe como parmetro uma string que ser a mensagem a ser exibida. Vejamos o cdigo abaixo: Visualizar Codigo Fonte Imprimir?
1.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 2.alert ("Esta uma caixa de dilogo ALERT do JavaScript!") 3.</SCRIPT>

Isso mostraria o seguinte:

Em caixas de dilogo h a possibilidade de controlar o fluxo de texto usando \n para a quebra de linhas. Visualizar Codigo Fonte Imprimir?
1.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 2.alert ("JavaScript \n Caixa de dilogo \n Alert")

3.</SCRIPT>

Isso mostraria o seguinte:

Prompt
A caixa de dilogo de prompt nos possibilita requerer uma entrada ao usurio apesar de no ser to til, pois esse recurso pode facilmente ser substitudo por um campo de texto feito em HTML. Para chamarmos esta caixa de dilogo, usamos a funo prompt() que recebe uma string como parmetro. Esse parmetro ser a mensagem a ser exibida dentro da caixa de dilogo. A caixa de dilogo de prompt possui trs elementos: um campo input para texto, um boto OK e outro CANCELAR. A funo prompt() sempre ir retornar um valor, ou seja, podemos gravar o resultado da funo em uma varivel ou algo assim. Se clicarmos no boto OK, o valor a ser retornado ser o que estiver escrito no campo de texto, mesmo se ele estiver vazio. Se clicarmos em CANCELAR, o valor retornado ser null. Abaixo criamos um exemplo no qual exige que o usurio digite o nome dele. Para isso, colocamos o prompt dentro de uma estrutura de repetio while que tem a seguinte condio: se o resultado for null (ou seja, se o usurio clicar em cancelar), ou ento, se o resultado for vazio (ou seja, se o usurio no digitar nada e clicar no OK), neste caso, deve-se executar a repetio. Dessa forma nos asseguramos que o usurio sempre ir digitar alguma coisa dentro da caixa de dilogo. Visualizar Codigo Fonte Imprimir?
1.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 2.var nome; 3.do { 4. nome = prompt ("Qual o seu nome?"); 5.} while (nome == null || nome == ""); 6.alert ("Seu nome "+nome); 7.</SCRIPT>

Isso mostraria o seguinte:

Confirm
A caixa de dilogo de confirmao chamada pela funo confirm() e tem apenas dois botes: um OK e outro CANCELAR. Assim como a funo prompt(), a funo confirm() tambm retorna um valor que pode ser true (verdadeiro) ou false (falso). Como confirm() retorna um valor booleano, isso o torna ideal para ser usado com uma estrutura seletiva if. Por exemplo, podemos usar a caixa de dilogo de confirmao antes de redirecionarmos uma pgina para executar uma rotina para apagar algum registro do banco de dados. No exemplo abaixo, no iremos to profundamente quanto o cenrio acima, pois envolve mais do que simples JavaScript. Aqui, apenas iremos demonstrar o resultado do clique em algum dos dois botes. Visualizar Codigo Fonte Imprimir?
01.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 02.decisao = confirm("Clique em um boto!"); 03.if (decisao){ 04. alert ("Voc clicou no boto OK,\n"+ 05. "porque foi retornado o valor: "+decisao); 06.} else { 07. alert ("Voc clicou no boto CANCELAR,\n"+ 08. "porque foi retornado o valor: "+decisao); 09.} 10.</SCRIPT>

Array (Vetor)
Comearemos agora a estudar os objetos existentes na linguagem do JavaScript. O primeiro deles o objeto Array. Array uma varivel que compe um vetor, ou seja, uma varivel que pode conter vrios valores diferentes. Trabalhar com vetores muito mais simples do que trabalhar com vrias variveis diferentes ao mesmo tempo, pois o vetor deixa estes valores agrupados na memria.

Todo vetor tem um ndice que comea em 0, portanto, o primeiro tem de um vetor sempre ser 0.

Construindo um vetor
Sempre que formos utilizar um objeto, sempre precisaremos instanci-lo, ou seja, reservar memria para ele. Para instanciarmos um objeto em JavaScript usamos a palavra chave new. Existe vrias formas de construirmos um vetor, veja:

Construo simples sem dimensionamento: Quando instanciamos um vetor, mas no especificamos quantas posies ele ir possuir; Construo simples com dimensionamento: Quando instanciamos um vetor e especificamos quantas posies ele ir possuir. Estas posies so vazias. Construo inserindo valores: Quando instanciamos um vetor e especificamos exatamente quais valores ele ir possuir. Cada valor deve ser separado por vrgula e qualquer tipo de dado pode ser utilizado para popular nosso vetor.

Visualizar Codigo Fonte Imprimir?


01.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 02. //construo simples sem dimensionamento 03. meuVetor1 = new Array(); 04. 05. //construo simples com dimensionamento 06. meuVetor2 = new Array(4); 07. 08. //construo inserindo valores 09. meuVetor3 = new Array ("Joo", "Roberto", "Jos", "Maria"); 10.</SCRIPT>

Para acessar os dados do nosso vetor, devemos especificar o ndice onde tal dado se encontra. Os ndices so indicados dentro de colchetes ([ ]). Utilizando o exemplo mostrado na criao da varivel meuVetor3, seria: Visualizar Codigo Fonte Imprimir?
01.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 02. //construo inserindo valores 03. meuVetor = new Array ("Joo", "Roberto", "Jos", "Maria"); 04. document.write("<P>"); 05. document.write("ndice 0: " + meuVetor[0]); 06. document.write("<BR>ndice 1: " + meuVetor[1]);

07. document.write("<BR>ndice 2: " + meuVetor[2]); 08. document.write("<BR>ndice 3: " + meuVetor[3]); 09. document.write("</P>") 10.</SCRIPT>

O que resulta em: ndice 0: Joo ndice 1: Roberto ndice 2: Jos ndice 3: Maria ndice 0: Joo ndice 1: Roberto ndice 2: Jos ndice 3: Maria Se quisermos atribuir um valor a uma posio do vetor, o princpio o mesmo. Usamos o nome do vetor e o ndice que queremos editar. Visualizar Codigo Fonte Imprimir?
1.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 2. meuVetor = new Array (4); 3. meuVetor[1] = 540; 4. meuVetor[3] = 8456; 5.</SCRIPT>

Propriedade length
O objeto Array possui uma propriedade chamada length. Esta propriedade mostra quantos elementos o vetor possui. Visualizar Codigo Fonte Imprimir?
01.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 02. vetor = new Array ("Joo", "Roberto", "Jos"); 03. document.write ("<P>Este vetor possui " + vetor.length + " elementos. Que so:</P>"); 04. document.write ("<UL>"); 05. for (indice=0; //indice comea em 0 06. indice < vetor.length; //enquanto indice for menor que o tamanho do vetor 07. indice++){ 08. document.write ("<LI>" + vetor [indice] + "</LI>")

09. } 10. document.write ("</UL>"); 11.</SCRIPT>

O resultado o mostrado abaixo: Este vetor possui 3 elementos. Que so:


Joo Roberto Jos

Juno e Concatenao de Arrays (Vetores)


Como vimos anteriormente, os vetores em JavaScript so constitudos pelo objeto Array. H momentos que queremos unir um ou mais vetores. JavaScript nos possibilita fazer isso resultando duas formas diferentes.

Mtodo Join
O vetor construdo com o objeto Array de JavaScript pode ter a juno de seus elementos. A juno consiste em criar uma string nica usando separadores. O mtodo join() nos possibilita a juno de forma simples, precisa e correta em uma string. Por exemplo, vamos imaginar que temos um vetor que possui os dados de uma data qualquer em seus ndices e que queremos mostrar a sada dessa data inteira. H duas formas que podemos fazer isso e so complicadas. Uma delas criar um loop entre os dois primeiros ndices e depois mostrar apenas o ltimo ndice. Visualizar Codigo Fonte Imprimir?
01.<script language="JavaScript" type="text/javascript"> 02. var data = new Array (3); 03. data[0] = 27; 04. data[1] = 3; 05. data[2] = 2009; 06. for (i=0; i<data.length-1; i++){ 07. document.write (data[i] + "/"); 08. } 09. document.write (data[2]); 10.</script>

A outra forma, apesar de mais simples, ainda no a mais indicada. Visualizar Codigo Fonte Imprimir?
1.<script language="JavaScript" type="text/javascript"> 2. var data = new Array (3); 3. data[0] = 27; 4. data[1] = 3; 5. data[2] = 2009; 6. document.write (data[0]+"/"+data[1]+"/"+data[2]); 7.</script>

Agora, usando o mtodo join(), basta unir os elementos usando a barra como separador. Visualizar Codigo Fonte Imprimir?
1.<script language="JavaScript" type="text/javascript"> 2. var data = new Array (3); 3. data[0] = 27; 4. data[1] = 3; 5. data[2] = 2009; 6. document.write (data.join("/")); 7.</script>

Vale lembrar que o mtodo join no modifica o vetor original, mas possvel guardar seu resultado em uma varivel. Ex.: dataCompleta =
data.join("/").

Mtodo Concat
O mtodo concat() consiste em unir um ou mais arrays (vetores). Este mtodo usa como argumento um objeto do tipo array. Se desejarmos unir mais de um vetor, cada objeto array do argumento deve vir separado por vrgula (,). Visualizar Codigo Fonte Imprimir?
01.<script language="JavaScript" type="text/javascript"> 02. var alunosAno1 = new Array ("Maria", "Joo", "Alexandre"); 03. var alunosAno2 = new Array ("Everton", "Cludia", "Vanessa"); 04. var alunosAno3 = new Array ("Junior", "Edgar", "Paulo"); 05. var alunosAno4 = new Array ("Regina", "Brbara", "Juliana"); 06. var todosAlunos = alunosAno1.concat(alunosAno2, alunosAno3, alunosAno4); 07. document.write ("Esta escola tem " + todosAlunos.length + " alunos.<br>" 08. + "Que se chamam:<br>" + todosAlunos); 09.</script>

Aqui, o resultado obtido na varivel todosAlunos o nome contido nas quatro variveis alunosAno. O que resulta em: Esta escola tem 12 alunos. Que se chamam: Maria,Joo,Alexandre,Everton,Cludia,Vanessa,Junior,Edgar,Paulo,Regina,Br bara,Juliana Esta escola tem 12 alunos. Que se chamam: Maria,Joo,Alexandre,Everton,Cludia,Vanessa,Junior,Edgar,Paulo,Regina,Br bara,Juliana Assim como no mtodo join(), concat() tambm no altera o contedo original dos vetores.

Inserir Elementos em um Array


At agora, vimos como declarar e inicializar um Array (vetor). Agora, vamos ver como podemos inserir dados em um array. Como vimos anteriormente, um array composto por ndices que determinam a posio de um dado dentro daquele array. Quando vamos inserir um novo dado devemos coloc-lo no final do array.

A questo est em: como podemos achar ltimo ndice de um array? De uma forma simples, podemos usar a nossa lgica e pensar um pouco. Como cada posio do array igual a posio-1, ento, se temos um array de tamanho 5, o maior ndice que possumos 4. Com isso podemos concluir que, o tamanho do array ser sempre seu prximo ndice. Array ltimo ndice Tamanho Prximo ndice 2 4 7 3 5 8 3 5 8

[0],[1],[2] [0],[1],[2],[3],[4] [0],[1],[2],[3],[4],[5],[6],[7]


Sabendo disso, usaremos a propriedade length do objeto Array para obter o tamanho do vetor e, assim, conseguirmos inserir mais um elemento. Visualizar Codigo Fonte Imprimir?
01.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 02.var vetor = new Array (); 03.var i, proximo; 04.for (i = 1; i <= 5; i++) { 05. proximo = vetor.length; 06. /* 07. obtendo o tamanho do array 08. para descobrir qual o ltimo ndice 09. */ 10. vetor[proximo] = "Dado " + i; 11.} 12.for (i=0; i<vetor.length; i++) { 13. document.write(vetor[i] + "<BR>"); 14.} 15.</SCRIPT>

O que resulta em: Dado 1 Dado 2 Dado 3 Dado 4 Dado 5 Dado 1 Dado 2 Dado 3 Dado 4 Dado 5

Mtodo push
Inserir Elemento no Final de Um Array
Alm da forma algortmica de inserir um elemento no final de um array, o prprio objeto Array possui um mtodo que faz isso por ns. O mtodo push() insere um ou mais elementos no final de um array. A sintaxe : push (elemento1, elemento2, elemento3, ...)

Dessa forma, no precisamos nos preocupar com o tamanho e nem com o ltimo ndice do array. Visualizar Codigo Fonte Imprimir?
01.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 02.vetor = new Array ("Jos"); 03.document.write ("Este array possui "+vetor.length+" elemento.<BR>"); 04.vetor.push("Antnio"); 05.document.write ("Agora, possui "+vetor.length+" elementos.<BR>"); 06.vetor.push ("Edson", "Maria", "Helena", "Carlos"); 07.document.write ("Este vetor possui "+vetor.length+" elementos.<BR>"+ 08. "Que so: "+vetor.join(", ")); 09.</SCRIPT>

Veja o que acontece quando este JavaScript executado. Este array possui 1 elemento. Agora, possui 2 elementos. Este vetor possui 6 elementos. Que so: Jos, Antnio, Edson, Maria, Helena, Carlos Este array possui 1 elemento. Agora, possui 2 elementos. Este vetor possui 6 elementos. Que so: Jos, Antnio, Edson, Maria, Helena, Carlos

Mtodo unshift
Inserir Um Elemento no Incio de Um Array
Outra forma de inserir elementos utilizar o mtodo unshift(). O mtodo unshift() insere um ou mais elementos no incio de um array. A sintaxe : unshift (elemento1, elemento2, elemento3, ...) Um detalhe importante o fato de que este mtodo possivelmente no funcione corretamente em verses anteriores ao Internet Explorer 6. Visualizar Codigo Fonte Imprimir?
1.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 2.vetor = new Array ("5", "6", "7", "8", "9", "10", "J", "Q", "K"); 3.document.write ("Este baralho tem apenas as cartas "+vetor.join(", ")+ 4. ". Vamos complet-lo com as cartas iniciais.<BR>"); 5.vetor.unshift ("A", "1", "2", "3", "4"); 6.document.write ("Agora temos o baralho completo: "+vetor.join(", ")); 7.</SCRIPT>

Veja o resultado logo abaixo. Este baralho tem apenas as cartas 5, 6, 7, 8, 9, 10, J, Q, K. Vamos complet-lo com as cartas iniciais. Agora temos o baralho completo: A, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K

Remover Elementos de um Array

At agora, vimos como declarar e inicializar um Array (vetor) e como inserir elementos em um Array usando algoritmos ou mtodos. Agora, vamos ver como podemos remover dados de um array.

Mtodo pop
Remover Elemento do Final de Um Array
O mtodo pop() remove um elemento do final de um array e retorna o contedo do ndice removido. No precisamos nos preocupar com o tamanho e nem com o ltimo ndice do array, pois pop() far todo o trabalho sozinho. Visualizar Codigo Fonte Imprimir?
1.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 2.vetor = new Array ("Jos", "Maria", "Joo", "Patrcia"); 3.document.write ("Este array possui "+vetor.length+" elementos.<BR>"); 4.document.write ("Vamos remover "+vetor.pop()+" da lista.<br>"); 5.document.write ("Agora, temos "+vetor.length+" elementos.<BR>" 6. + "Que so: "+vetor.join(", ")); 7.</SCRIPT>

Veja o que acontece quando este JavaScript executado. Este array possui 4 elementos. Vamos remover Patrcia da lista. Agora, temos 3 elementos. Que so: Jos, Maria, Joo Este array possui 4 elementos. Vamos remover Patrcia da lista. Agora, temos 3 elementos. Que so: Jos, Maria, Joo

Mtodo shift
Remover Elemento do Incio de Um Array
Outra forma de remover elementos utilizar o mtodo shift(). O mtodo shift() remove um elemento do incio de um array e retorna o contedo do ndice removido. Visualizar Codigo Fonte Imprimir?
1.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 2.vetor = new Array ("Jos", "Maria", "Joo", "Patrcia"); 3.document.write ("Este array possui "+vetor.length+" elementos.<BR>"); 4.document.write ("Vamos remover "+vetor.shift()+" da lista.<BR>"); 5.document.write ("Agora, temos "+vetor.length+" elementos.<BR>" 6. + "Que so: "+vetor.join(", ")); 7.</SCRIPT>

Veja o resultado logo abaixo. Este array possui 4 elementos. Vamos remover Jos da lista. Agora, temos 3 elementos. Que so: Maria, Joo, Patrcia Este array possui 4 elementos.

Vamos remover Jos da lista. Agora, temos 3 elementos. Que so: Maria, Joo, Patrcia

Remover Elementos no Meio do Array Algoritmicamente


Como vimos, possvel remover elementos de um Array (vetor) tanto no final quanto no incio. Agora, veremos como remover elementos que esto no meio do Array algoritmicamente usando os mtodos apresentados at o momento. Vamos pensar na seguinte situao: Temos um Array que contm todas as cartas do baralho, mas existe uma carta errada chamada R entre o 5 e o 6. Como iremos remover a carta R?

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] A

10

Primeiro criaremos um loop comeando da posio em que se encontra a carta R (posio 5) e iremos percorrer o Array at o penltimo ndice (tamanho-1). Visualizar Codigo Fonte Imprimir?
1.for (i=5; i<vetor.length-1; i++)

Ento, iremos atribuir a posio atual o valor da prxima posio. Isso ir sobrescrever o valor errado (R). Visualizar Codigo Fonte Imprimir?
1.vetor[i] = vetor[i+1];

Isso ir resultar no seguinte Array.

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] A

9 10

Podemos perceber que o valor incorreto (R) no existe mais na posio 5. Porm, temos um valor repetido no final de nosso Array. Para remov-lo, usaremos o mtodo pop (). Visualizar Codigo Fonte Imprimir?
1.vetor.pop();

Pronto! Agora temos um Array de cartas de baralho correto. O cdigo completo demonstrado logo abaixo: Visualizar Codigo Fonte Imprimir?
1.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 2.vetor = new Array ("A", "2", "3", "4", "5", "R", "6", 3. "7", "8", "9", "10", "J", "Q", "K"); 4.for (i=5; i<vetor.length-1; i++) { 5. vetor[i] = vetor[i+1]; 6.} 7.vetor.pop()

8.</SCRIPT>

Agora temos nosso Array da seguinte maneira na memria:

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] A 2 3 4 5 6 7 8 9 10 J Q K

Organizar Arrays
Depois de vermos como inserir elementos em um array e como remover elementos de um array, agora veremos como inverter e organizar um array.

Reverse
O mtodo reverse do objeto array serve para inverter a ordem dos elementos de um array. Dessa forma podemos usar apenas uma forma de organizao e depois inverter o array para conseguir a ordem desejada. Visualizar Codigo Fonte Imprimir?
1.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 2.var vetor = Array (1, 2, 3, 4, 5); 3.document.write ("Array inicial: " + vetor); 4.document.write ("<BR>Array invetido: " + vetor.reverse()); 5.</SCRIPT>

Isso inverter o array resultando em: Array inicial: 1,2,3,4,5 Array invetido: 5,4,3,2,1 Array inicial: 1,2,3,4,5 Array invetido: 5,4,3,2,1

Sort
O mtodo sort o que realmente faz a organizao do array. Porm, sort apenas organiza o array de forma alfabtica, se quisermos organizar o array de forma numrica devemos criar uma funo para indicar como parmetro de sort. Abaixo est um exemplo de uma organizao simples feita em ordem alfabtica. Visualizar Codigo Fonte Imprimir?
1.<SCRIPT="JavaScript" TYPE="text/javascript"> 2.var vetor = Array ("Joo", "Maria", "Jos", "Pedro"); 3.document.write (vetor.sort()); 4.</SCRIPT>

Veja que vetor organizado corretamente de forma alfabtica. Jos,Joo,Maria,Pedro Jos,Joo,Maria,Pedro

Agora, podemos perceber que o resultado da organizao de nmeros no dada de forma satisfatria. Visualizar Codigo Fonte Imprimir?
1.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 2.var vetor = Array (3000, 20, 100, 4); 3.document.write (vetor.sort()); 4.</SCRIPT>

100,20,3000,4 100,20,3000,4 Para organizar um array numrico usando o mtodo sort devemos criar uma funo com dois parmetros que retorne um valor negativo ou positivo. Esse valor, servir como base para o mtodo sort determinar qual ndice do array vir primeiro. Para organizar a varivel vetor criaremos duas funes: uma chamada crescente e outra chamada decrescente. Visualizar Codigo Fonte Imprimir?
01.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 02.function crescente (index1, index2){ 03. return index1 - index2; 04.} 05. 06.function decrescente (index1, index2){ 07. return index2 - index1; 08.} 09. 10.var vetorOriginal = Array (3000, 20, 100, 4); 11.var vetorCrescente = vetorOriginal; // copiando um vetor para o outro 12.var vetorDecrescente = vetorOriginal; // copiando um vetor para o outro 13.document.write ("Vetor em ordem crescente:<BR>"); 14.document.write (vetorCrescente.sort(crescente)); 15.document.write ("<BR>Vetor em ordem decrescente<BR>"); 16.document.write (vetorDecrescente.sort(decrescente)); 17.</SCRIPT>

O resultado mostrado abaixo: Vetor em ordem crescente: 4,20,100,3000 Vetor em ordem decrescente 3000,100,20,4

Math
Em JavaScript, podemos fazer uso de um objeto prprio para clculos matemticos chamado Math que possui constantes, mtodos para calcular potncias, razes,

arredondamentos, funes trigonomtricas, maneiras de encontrar o menor e o maior valor, alm de um gerador de nmeros randmicos. O objeto Math possui algumas constantes importantes para clculos mais complexos, bem como funes (mtodos) para executar operaes matemticas mais facilmente.

Constantes
O objeto Math possui 8 constantes que so:

E: constante do nmero de Euler. (2,718281828459045); LN2: constante com o resultado do logaritmo natural na base 2. (0,6931471805599453); LN10: constante com o resultado do logaritmo natural na base 10. (2,302585092994046); LOG2E: constante com o resultado do logaritmo na base 2 do nmero de Euler. (1,4426950408889634); LOG10E: constante com o resultado do logaritmo na base 10 do nmero de Euler. (0,4342944819032518); PI: constante do pi (!). (3,141592653589793); SQRT1_2: constante com o resultado da raz quadrada de meio. ("# $ 0,7071067811865476); SQRT2: constante com o resultado da raz quadrada de 2 ("2 $ 1,4142135623730951);

No caso, todas essas constantes so valores aproximados, levando-se em conta que so dzimas peridicas. Abaixo est um exemplo de como obter o valor de todas as constantes. Visualizar Codigo Fonte Imprimir?
01.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 02. document.write (Math.E + "<BR>"); 03. document.write (Math.LN2 + "<BR>"); 04. document.write (Math.LN10 + "<BR>"); 05. document.write (Math.LOG2E + "<BR>"); 06. document.write (Math.LOG10E + "<BR>"); 07. document.write (Math.PI + "<BR>"); 08. document.write (Math.SQRT1_2 + "<BR>"); 09. document.write (Math.SQRT2 + "<BR>"); 10.</SCRIPT>

Razes e Potncias
Podemos utilizar o objeto Math para obter razes quadradas e potncias. O mtodo sqrt() extrai a raz quadrada do nmero passado como argumento. Ex.: var1 = sqrt(4);, o mesmo que "4.

O mtodo pow() retorna o valor da potncia indicada em seus parmetros, sendo o primeiro parmetro o nmero base e o segundo o expoente. Ex.: var1 = pow(10, 3);, o mesmo que 10%. possvel tambm fazer o clculo utilizando a constante de Euler. Para isso, usamos um mtodo prprio chamado exp().
Exp()

recebe apenas um argumento que o expoente da potncia.

Ex.: var1 = exp(1);, o mesmo que E&. Vejamos o cdigo e o resultado logo abaixo: Visualizar Codigo Fonte Imprimir?
1.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 2. var var1 = 4; 3. var var2 = 2; 4. document.write ("A raz quadrada de " + var1 + " " + Math.sqrt(var1) + "<BR>"); 5. document.write (var1 + " elevado a " + var2 + " " + Math.pow(var1, var2) + "<BR>"); 6. document.write ("E elevado a " + var2 + " " + Math.exp(var2) + "<BR>"); 7.</SCRIPT>

A raz quadrada de 4 2 4 elevado a 2 16 E elevado a 2 7.38905609893065 A raz quadrada de 4 2 4 elevado a 2 16 E elevado a 2 7.38905609893065

Arredondamentos
Quando tratamos com nmeros que possuem a parte decimal extensa (como o caso das constantes), podemos fazer uso de mtodos para arredondar os nmeros. O mtodo round() arredonda um nmero para o inteiro mais prximo, tanto para baixo quanto para cima. Por exemplo, o nmero 3.3 arredondado ser 3, mas o nmero 3.8 arredondado ser 4. O mtodo floor() arredonda um nmero para o inteiro mais baixo. Tambm considerado como piso. O mtodo ceil() arredonda um nmero para o inteiro mais alto. Tambm considerado como teto. O mtodo abs() remove apenas a parte fracionada. Ou seja, retorna o valor absoluto.

Trigonometria
Usado para clculos trigonomtricos envolvendo principalmente ngulos. Com esses mtodos fica fcil obter o resultado matemtico dos ngulos sem a necessidade de vrios clculos ou tabelas prontas.
sin(): retorna o valor de seno; cos(): retorna o valor de cosseno; tan(): retorna o valor da tangente; asin(): retorna o valor do arco seno; acos(): retorna o valor do arco cosseno; atan(): retorna o valor do arco tangente;

Maior e Menor
Existem dois mtodos do objeto Math que servem como comparativos.

Mtodo min(valor1, valor2): retorna o menor valor entre os parmetros passados. Mtodo max(valor1, valor2): retorna o maior valor entre os parmetros passados.

Nmero Randmico
O objeto Math tambm possui um mtodo para gerar automaticamente nmeros randmicos. O mtodo random() retorna um nmero entre 0 e 1, ou seja, pode ser 0, 1, 0.5, 0.2, 0.8, 0.4567412, e assim por diante. Se, por exemplo, quisermos fazer o limite entre 0 e 10, basta que multipliquemos por 10 o valor retornado por random(). Dessa forma conseguiremos um nmero entre randmico maior. O problema de se usar isso que os nmeros retornados sempre sero muito fracionados, portanto, o ideal utilizar junto uma das funes de arredondamento. Veja o exemplo abaixo: Visualizar Codigo Fonte Imprimir?
01.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 02. var valor1 = Math.random()*10; 03. var valor2 = Math.random()*10; 04. valor1 = Math.round(valor1); 05. valor2 = Math.round(valor2); 06. document.write ("Os nmeros sorteados foram " + 07. valor1 + " e " + valor2 + ".<BR>"+ 08. "Sendo que o maior valor " + Math.max(valor1, valor2)

09. valor2)); 10. 11.</SCRIPT>

+ " e o menor valor " + Math.min(valor1,

O que resulta em: Os nmeros sorteados foram 4 e 1. Sendo que o maior valor 4 e o menor valor 1

Objeto Number
Aps vermos o objeto Math, veremos agora o objeto Number. O objeto Number, apesar de muito mais simples que o objeto Math, serve para trabalharmos com nmeros, e dessa forma, termos um controle maior sobre eles.

Constantes
O objeto Number possui 4 constantes: duas de limite e duas indicadoras de sobrecarga. O limite dado como o maior e o menor nmero representvel em JavaScript. Tais nmeros esto contidos nas constantes MAX_VALUE (valor mximo) e MIN_VALUE (valor mnimo). Caso utilizemos algum nmero positivo maior que MAX_VALUE, o objeto Number retorna uma constante chamada POSITIVE_INFINITY (infinito positivo), caso o valor seja negativo e maior do que MAX_VALUE, ento retornado a constante NEGATIVE_INFINITY (infinito negativo). Visualizar Codigo Fonte Imprimir?
01.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 02. document.write ("Maior valor do JavaScript: " + Number.MAX_VALUE ); 03. document.write ("<BR>Menor valor do JavaScript: " + Number.MIN_VALUE); 04. // Nmeros sobregarregados (acima e abaixo do limite) 05. var nr1 = Number.MAX_VALUE * 10; 06. var nr2 = -Number.MAX_VALUE * 10; 07. document.write ("<BR>NR1: " + nr1); 08. document.write ("<BR>NR2: " + nr2); 09.</SCRIPT>

Preciso
O objeto Number possui um mtodo que determina a preciso do nmero, em termos. O mtodo toPrecision() determina o comprimento de um nmero, ou seja, quantos algarismos sero representados.

Visualizar Codigo Fonte Imprimir?


1.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 2. var numero = new Number (987.654321); 3. document.write (numero.toPrecision(10)); 4. document.write ("<BR>" + numero.toPrecision(5)); 5. document.write ("<BR>" + numero.toPrecision(0)); 6.</SCRIPT>

Fixo
O mtodo fixed() funciona como o mtodo toPreciosion(), mas fixed() apenas afeta a parte decimal do nmero. Visualizar Codigo Fonte Imprimir?
1.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 2. var numero = new Number (987.654321); 3. document.write (numero.toFixed(10)); 4. document.write ("<BR>" + numero.toFixed(5)); 5. document.write ("<BR>" + numero.toFixed(0)); 6.</SCRIPT>

Exponencial
Tambm possvel que um nmero seja representado de forma exponencial, ou em forma de notao cientfica. Podemos conseguir este tipo de formatao usando o mtodo toExponential(). Assim como os mtodos anteriores podemos limitar o tamanho do algarismo representado, para isso, basta indicar o nmero de algarismos como argumento. Visualizar Codigo Fonte Imprimir?
1.<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 2. var numero = new Number (987.654321); 3. document.write (numero.toExponential(10)); 4. document.write ("<BR>" + numero.toExponential(5)); 5. document.write ("<BR>" + numero.toExponential()); 6.</SCRIPT>

! !

Das könnte Ihnen auch gefallen