Você está na página 1de 27

Manuais e recursos para desenvolvimento web www.criarweb.

com

Tutorial de Visual Basic Script

Autores do manual Este manual foi criado pelos seguintes colaboradores de Criarweb.com: Miguel Angel Alvarez Traduo de JML
(20 captulos)

Darwin Manuel Daz Garrampi


(1 captulo)

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web www.criarweb.com

Introduo ao Visual Basic Script


A linguagem para descrever pginas, HTML, fica limitada na hora de definir qualquer tipo de interatividade. Uma vez que tivermos explorado sua potncia, necessitaremos aprender alguma linguagem nova para fazer pequenos efeitos ou interatividades. Scripts So os pequenos programinhas que, incrustados nas pginas, nos permitem definir aqueles efeitos ou interatividades. Visual Basic Script Neste manual trataremos de Visual Basic Script, uma linguagem compatvel com Internet Explorer e outros sistemas Microsoft, que princpio uma vantagem uma vantagem para programadores experientes nestes sistemas. Outras linguagens Existem dois tipos principais de linguagens de scripting, e uma infinidade de utilidades diferentes, mas vale destacar a linguagem Javascript por ser parecida em utilidade a VBScript, mas compatvel com os dois navegadores mais habituais.

Como colocar scripts


Para colocar um script em uma pgina web utilizamos a etiqueta de HTML <SCRIPT>. Tudo que colocarmos entre essa etiqueta e a de fechamento, </SCRITP>, tem que ser cdigo da linguagem de scripting que estivermos utilizando. Tambm devemos indicar a linguagem com a qual estamos programando. No nosso caso, colocaremos:
<script language="VBScript" > ---Aqui colocaremos nossos scripts--</script>

Parece uma besteira, mas observem que a palavra language em ingls se escreve com dois "G": language. Se vocs errarem neste ponto, coisa bastante provvel se escreverem rpido e distrados, no funcionaro seus scripts, pois o navegador pensar que esto escritos em JavaScript.

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web www.criarweb.com

Primeiro Script simples


Para terminar este captulo vamos ver um primeiro exemplo de script em uma pgina web. O objetivo deste script mostrar a data da ltima modificao do documento.
<html> <head> <title> A ltima modificao do documento</title> </head> <body> <h1>Script da ltima modificao de um documento</h1> <script language="VBScript"> document.write "Este documento foi atualizado pela ltima vez em: " document.write document.lastmodified </script> </body> </html>

A sentena document.write um procedimento que escreve na pgina web o texto que recebe por parmetro, o texto que est depois da sentena. A varivel document.lastmodified armazena a data e a hora da ltima atualizao. Este script dar como resultado que o documento lhe informe de sua ltima atualizao, de uma maneira parecida a esta: Artigo por Miguel Angel Alvarez - Traduo de JML

Primeiros passos com a linguagem


As linguagens de scripting tm uma srie de caractersticas comuns, estas costumam tornar a programao mais fcil para as pessoas inexperientes, mas a longo prazo podem se converter em uma fonte de erros. Vejamos quais so estas caractersticas, em concreto para VBScript. Maisculas e minsculas Em VBScript no importa se utilizamos maisculas ou minsculas na hora de escrever nosso cdigo. Variveis As variveis so espaos onde se armazenam os dados que utilizam os programas ou scripts. No se declaram: em VBScript as variveis no se devem ser declaradas, ou seja, quando necessitarmos uma varivel, simplesmente a utilizamos e pronto. Mesmo assim, se desejarmos declarar uma varivel utilizamos a palavra DIM No existem tipos: as variveis no esto classificadas por tipos, isto quer dizer que podemos salvar nelas igualmente nmeros ou letras ou outras coisas. Quebras de linha As quebras de linha so muito importantes. Expressam o final de uma instruo e o princpio da seguinte. No se pode colocar duas instrues em uma mesma linha. Comentrios Em VBScript os comentrios so colocados com uma aspas simples '. Isto serve para que tudo

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web www.criarweb.com

o que se encontre nessa linha depois das aspas simples seja ignorado pelo explorador.

Exemplo de tudo isto


Vamos ver a seguir um simples script que serve de exemplo para tudo que foi dito anteriormente. No exemplo a seguir abrem umas janelinhas com mensagens (sentena msgbox) sendo as mensagens o contedo da varivel pepe. Durante o exemplo o valor da varivel muda e logo volta a mostrar. O exemplo demonstra que no importam as maisculas e minsculas, e que indiferente o tipo do contedo da varivel, texto ou nmeros.
<HTML> <HEAD> <TITLE>Exemplo2 Comentrio, caixa alert e variveis</TITLE> </HEAD> <BODY> <script language=VBScript> 'Isto um comentrio PEPE="OIquot; msgbox(pepe) pepe=3456 'NAO importam as maiusculas-minusculas msgbox(PEPE) </script> </BODY> </HTML>

Clique aqui para ver o exemplo Artigo por Miguel Angel Alvarez - Traduo de JML

Diferentes formas de executar scripts


Agora que voc j sabe como incluir scripts nas suas pginas e alguns fundamentos da linguagem, vamos ver os dois casos em que o Internet Explorer pode executar seus scripts, e de passo damos uma primeira olhada no conceito do evento. As formas de execuo de VBScript so as seguintes: Scripts que se executam enquanto o navegador abre a pgina. Scripts que se executam como resposta ao de um usurio.

O primeiro dos casos se utiliza quando quiser fazer algo enquanto o navegador est carregando a pgina. Por exemplo, poderia mostrar uma mensagem de boas vindas que aparea quando o usurio entrar na sua pgina, ou que o navegador lhe informe da ltima atualizao do documento (tal como foi visto no captulo 1). O segundo caso til quando desejar realizar aes como resposta a eventos do usurio. Os eventos so aes que ocorrem quando um usurio faz alguma coisa sobre a pgina web, ou seja, um evento poderia ser de um usurio que escreve algo em uma caixa de texto, ou que coloque o mouse em cima de um link, etc. Quase qualquer coisa que o usurio pode realizar dentro da pgina tem um evento relacionado.

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web www.criarweb.com

Utilizando os eventos podemos preparar algum efeito que seja visvel somente quando o usurio realizar alguma ao dentro da pgina web.

Exemplo de tudo isto


Vejamos agora um exemplo para compreender de vez as duas formas de execuo dos scripts. Vamos fazer com que o navegador nos diga seu nmero de verso e outros dados em uma caixa de dilogo. Vamos fazer de duas maneiras: enquanto o usurio carrega a pgina e quando ele apertar um boto. Exemplo de execuo ao carregar a pgina Comeamos pela execuo de scripts quando o usurio carrega a pgina. Esta a forma mais simples, e realmente voc j deve conhecer vrios exemplos disso pelo que foi visto nos captulos anteriores.
<html> <head> <title>Script de execuo direta</title> </head> <body> Enquanto se carrega a pgina veremos a verso do navegador em uma caixa de dilogo. <script language=vbscript> msgbox(navigator.appVersion) </script> </body> </html>

Este exemplo no tem nenhum mistrio, pois muito parecido aos exemplos que realizamos. A nica novidade a varivel navigator.appVersion. Esta armazena o que queremos que seja visto na caixa de dilogo: a verso do navegador. Clique aqui para ver o exemplo Exemplo de execuo como resposta ao do usurio Agora vejamos o que temos que fazer quando desejarmos que esta caixa de dilogo no aparea at que o usurio clique em um boto.
<html> <head> <title>Script de execuo como resposta a um evento</title> </head> <body> Clique o boto para ver a verso do navegador <input type=button value=Clique aqui onclick="msgbox(navigator.appVersion)" language="vbscript"> </body> </html>

Este exemplo tem algumas coisas novas que temos que destacar: 1. Cria-se um boto com a etiqueta <INPUT> 2. Acrescentamos o atributo onclick. Este serve para indicar (na linguagem de script) as aes que queremos realizar como resposta ao evento "click sobre o boto". 3. Acrescentamos o a atributo language para especificar a linguagem em que est escrito o cdigo script associado aol evento.

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web www.criarweb.com

Agora temos um boto que, quando se clica, executar o cdigo que abre uma caixa de dilogo com a verso do navegador. Clique aqui para ver o exemplo Artigo por Miguel Angel Alvarez - Traduo de JML

Declarar variveis
Antes de passar a temas mais interessantes falta explicar a forma de declarar variveis em VBScript. Dissemos antes que no era necessrio declarar estas variveis, mas pode ser um bom costume fazer para evitar erros. Uma varivel se declara utilizando a palavra DIM, vejamos como:
<script language="vbscript"> dim minha_nova_variavel 'Agora ja existe a variavel 'Seguidamente vou fazer uso dela minha_nova_variavel = "Valor da variavel" </script>

Como devemos lembrar no importa que tipo de informao vai conter a varivel, sempre se declaram de forma igual. Option explicit Pode-se utilizar a clusula Option explicit para forar a declarao de variveis em nossos scripts. Se desejar evitar a possvel fonte de erros que supe a liberdade de no declarar as variveis pode utilizar esta clusula e far com que seus scripts respondam com mensagens de erro se utilizar uma varivel que no tiver declarado previamente. Vejamos seu uso com um exemplo:
<HTML> <HEAD> <TITLE>Option explicit</TITLE> </HEAD> <BODY> <script language=vbscript> option explicit dim Pepe pepe = 3 tomas = 87 </script> </BODY> </HTML>

Este script responder com uma mensagem de erro quando se executar, pois a varivel "tomas" no foi declarada antes de seu uso. Artigo por Miguel Angel Alvarez - Traduo de JML

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web www.criarweb.com

Tipos de dados
Visual Basic Script possui vrios tipos de dados, mas na prtica s possui um tipo de varivel, que vai mudando de um estado a outro segundo a informao que introduzirmos dentro. Este tipo principal de dados o tipo Variant, no qual podemos introduzir vrios subtipos de dados com total liberdade. Para mudar o subtipo de um variant, s temos que introduzir um dado na varivel. A varivel variant muda automaticamente de um subtipo a outro, sem que tenhamos que fazer nenhuma operao adicional. Os distintos subtipos de dados que temos so os seguintes: Boolea um tipo de dados que contm um sim ou um no. no Correspondem-se: TRUE equivale a (-1) FALSE equivale a (0) Byte Numrico, inteiro sem sinal at 65.000

Curren Tipo de moeda, utiliza-se para manipular de maneira exata valores monetrios, e cy em geral qualquer clculo que requeira uma preciso de at 15 dgitos decimais Data um tipo de 64 bits de tamanho que armazena datas. Utiliza-se o formato americano: ms, dia, hora.

Double Vrgula flutuante com dupla preciso (64 bits) Inteiro Nmero inteiro, com sinal. Desde -32.768 at 32.767 Inteiro Este tipo um valor inteiro com sinal de dupla preciso. Como os novos longo computadores trabalham com palavras de 32 bits, e no menos, recomenda-se usar este tipo antes do tipo inteiro normal. Objeto O subtipo de objeto uma referncia de ponteiro de 32 bits a uma instncia de objeto de automatizao OLE. Os controles Active-X e Java. Utilizam esta sintaxe: Set meuobjeto = new oleObjeto Single Vrgula flutuante de preciso simples

Cadeia Conjunto contnuo de valores de caracteres, de longitude varivel.

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web www.criarweb.com

Como saber de que subtipo uma varivel Para averiguar o subtipo de uma varivel podemos utilizar a funo VarType, desta maneira:

v1 = 3 document.write VarType (v1)


Neste script declaramos uma varivel e lhe colocamos um nmero e a seguir, imprimimos na pgina o valor que devolve a funo VarType. Ao executar este script poderemos ver um "2" escrito na pgina. Segundo o tipo de dados que achar na varivel, VarType devolver um valor diferente, como indica esta tabela: Constant vbEmpty vbNull vbInteger vbLong vbSingle vbDouble vbCurrency vbDate vbString vbObject vbError vbBoolean vbVariant vbDataObject Value 0 1 2 3 4 5 6 7 8 9 10 11 12 13 Description Empty (uninitialized) Null (no valid data) Integer Long integer Single-precision floating-point number Double-precision floating-point number Currency Date String Automation object Error Boolean Variant (used only with arrays of Variants) A data-access object

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web www.criarweb.com

vbByte vbArray

17 8192

Byte Array

Artigo por Miguel Angel Alvarez - Traduo de JML

Operadores I Aritmticos
Visual Basic Script, como qualquer linguagem de programao, tem um conjunto de operadores, divididos em vrias sees: Operadores Aritmticos Que suportam as operaes matemticas mais simples. + * Soma Subtrao Multiplicao Diviso em vrgula flutuante. a diviso normal. Devolve um nmero real se for o resultado Diviso de inteiros Devolve um nmero inteiro, resultado da diviso. Potncia

Mod Resto da diviso

Vejamos a seguir um exemplo de script que realiza aes com estes operadores: dim v1 dim v2 v1 = 34 v2 = 43
Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 9

Manuais e recursos para desenvolvimento web www.criarweb.com

soma = v1 + v2 subtracao = v1- v2 potencia = v1 ^ v2 divisaoInteiros = v1 \ v2 msgbox(divisaoInteiros) DivisaoReal = v1 /v2 msgbox(divisaoReal) A funo msgbox serve para mostrar um valor em uma janelinha de alerta tpica de Windows. Podemos ver este script em funcionamento. Artigo por Miguel Angel Alvarez - Traduo de JML

Operadores II Comparao
Para realizar comparaes, Visual Basic Script possui os seguintes operadores: = > >= <> < <= Igual e diferente Maior que e menor que Maior ou igual que e menor ou igual que

Vejamos a seguir um exemplo de script que realiza operaes de comparao, embora antes de v-lo deveramos pontuar que os operadores de comparao costumam ser utilizados dentro de uma estrutura condicional, que avalia uma expresso com estes comparadores e realiza aes dependendo do resultado dessas comparaes. Por este motivo inclumos no script a estrutura condicional IF que veremos com profundidade mais adiante. preco = 20000 dinheiroAtual = 3500 if (dinheiroAtual = preco) then msgbox ("est certinho") end if if (dinheiroAtual < preco) then msgbox ("falta dinheiro")

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

10

Manuais e recursos para desenvolvimento web www.criarweb.com

end if Podemos ver este script em funcionamento. Artigo por Miguel Angel Alvarez - Traduo de JML

Operadores III lgicos e cadeias


Operadores lgicos Os operadores lgicos se utilizam sobre expresses booleanas e nos devolvem um valor booleano (verdadeiro ou falso) resultado dessa operao. Um matiz seria que no necessrio que as parcelas relacionadas no clculo sejam variveis booleanas, podendo ser de qualquer tipo. Como operadores lgicos enmVisual Basic Script temos: AN E lgico D OR OU lgico Xor Xor Not NO lgico

Operadores de cadeias Como operador de cadeias de caracteres em Visual Basic Script temos um nico exemplo: a concatenao. O operador para concatenar cadeias o &. Vejamos um exemplo de utilizao deste operador: cadeia1 = "Oi " cadeia2 = "Z!" concatenar = cadeia1 & cadeia2 msgbox (concatenar) Podemos ver este script em funcionamento. Artigo por Miguel Angel Alvarez - Traduo de JML

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

11

Manuais e recursos para desenvolvimento web www.criarweb.com

Estruturas de controle
As estruturas de controle nos permitem realizar aes tpicas em nossos scripts como podem ser os loops ou a tomada de decises. VBScript tem as estruturas de controle tpicas das linguagens de programao. Veremos nos seguintes captulos a sintaxe e a maneira de trabalhar destas estruturas detalhadamente: Condicionais Loops FOR, repetio um determinado nmero de vezes FOR EACH, repetio para um conjunto de elementos WHILE...WEND, repetio enquanto ocorra alguma coisa DO...LOOP, repetio um determinado nmero de vezes IF, condicional que decide entre sim/no CASE, outra condicional com vrias possibilidades

Artigo por Miguel Angel Alvarez - Traduo de JML

Estrutura IF
A estrutura de controle IF permite decidir entre duas opes resultantes da avaliao de uma sentena. Se a avaliao for positiva se faz uma coisa, tambm podemos especificar aes para realizar no caso de que a avaliao seja negativa. Veamos cmo funciona en VBscript.
IF (expresion) then Sentencias .... END IF

Vemos que em primeiro lugar temos a sentena IF, logo uma expresso, que pode ou no ir entre parnteses, e mais tarde a palavra THEN. Vemos que logo h uma quebra de linha antes de colocar as sentenas associadas avaliao positiva da sentena. Em VBScript as linhas sim que importam. Depois de colocar as sentenas associadas avaliao positiva colocamos um END IF, para acabar a estrutura do IF. Enunciado ELSE Opcionalmente pode-se colocar uma srie de sentenas associadas avaliao negativa da expresso. Estas sentenas devem ser colocadas depois da ordem ELSE e antes do END IF.
IF (expresion) then Sentencas .... ELSE Sentencas .... END IF

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

12

Manuais e recursos para desenvolvimento web www.criarweb.com

Enunciado ELSEIF Em Visual Basic Script existe a possibilidade de utilizar um enunciado especial no lugar onde utilizaramos um ELSE. Serve para encadear sentenas IF de modo que em um resultado negativo de um IF se possa avaliar outra expresso, que teria por sua vez outros enunciados THEN e provavelmente ELSE ou outro ELSEIF. Poderia ser visto em um exemplo com mais facilidade:
IF (expressao1) then Sentencas1 .... ELSEIF (expressao2) then Sentencas2 .... ELSEIF (expressao3) then Sentencas3 .... ELSE Sentencas4 .... END IF

Avalia-se a primeira expresso, no caso positivo executam-se as sentenas1, no caso negativo avalia-se a expresso 2. Se a expresso 2 for positiva executam-se as sentenas 2 em caso negativo avaliamos a expresso 3 com o seguinte ELSEIF. Tudo acaba em um ELSE neste exemplo, porm o ELSE final no obrigatrio. Artigo por Miguel Angel Alvarez - Traduo de JML

Estrutura CASE
Com a estrutura de controle CASE podemos avaliar uma varivel e realizar aes dependendo do valor desta. A diferena com o IF consiste em que o nmero de possibilidades da avaliao desta varivel no tem porque ser sim ou no, podendo fazer coisas para um nmero indeterminado de valores. A sintaxe a seguinte:
SELECT CASE (variavel) CASE (valor1): (acao para caso valor1) CASE (valor3): (acao para caso valor2) CASE (valor3): (acao para caso valor3) CASE ELSE: (acao em caso de que nao se cumpra nenhum anterior caso) END SELECT

Funciona assim, primeiro se avalia a varivel, se essa varivel tiver como valor o valor1 realizamos as aes associadas ao valor1. Se tiver o valor2, executamos as aes relacionadas

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

13

Manuais e recursos para desenvolvimento web www.criarweb.com

com este valor3. Assim com quantos valores desejarmos. Por ltimo temos um ELSE para realizar aes no caso de que no tivessem sido nenhum dos valores anteriores. Este ELSE opcional. Vejamos com um exemplo esta sentena muito simples. O primeiro que faz solicitar um nmero e logo informa o dia da semana com o que corresponde. Se o nmero no for do um ao sete, informa isso tambm.
dim dia dia = inputbox ("diz um dia da semana") SELECT CASE dia CASE 1: msgbox("O dia SEGUNDA") CASE 2: msgbox("O dia TERA") CASE 3: msgbox("O dia QUARTA") CASE 4: msgbox("O dia QUINTA") CASE 5: msgbox("O dia SEXTA") CASE 6: msgbox("O dia SABADO") CASE 7: msgbox("O dia DOMINGO") CASE ELSE: msgbox("Tem que ser um dia da semana em nmero, do 1 ao 7") END SELECT

Pode-se ver em funcionamento este script. Artigo por Miguel Angel Alvarez - Traduo de JML

Loop FOR
A sentena FOR utilizada para os loops, quando sabemos o nmero de vezes que devemos executar o loop. Vejamos sua simples sintaxe:
FOR (iniciacao) TO (termo do loop) STEP (passo) sentencas ........ NEXT

A sentena realiza uma repetio atravs da iniciao at o termo do loop. Para levar a conta se utiliza uma varivel, j veremos no exemplo como se utiliza esta varivel. Com cada execuo do loop se executam umas sentenas. NEXT serve para delimitar o final do loop, quando se encontra com o NEXT volta-se outra vez ao princpio do FOR, assim at realizar o nmero de execues determinado. Existe um valor que serve para indicar o grande que se deseja realizar os saltos entre execuo e execuo, o valor STEP. Um STEP 2 determinaria que entre execuo e execuo a varivel incrementa-se em 2 unidades. No caso de no indicar nada realizam-se passos de 1 em 1. Tambm podemos realizar passos em valores negativos. Um exemplo destes dados seria o seguinte:

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

14

Manuais e recursos para desenvolvimento web www.criarweb.com

for i=0 to 6 step 2 msgbox(i) next

Este exemplo apresentaria uma mensagem com um numero da varivel i, utilizada para levar a conta das execues do loop. Pode-se ver um exemplo deste script funcionando. Artigo por Miguel Angel Alvarez - Traduo de JML

Loop FOR EACH


A estrutura de controle FOR EACH serve para mover-se pelos elementos de uma estrutura de dados, como poderia ser um vetor, e realizar aes para cada um dos elementos. Vejamos com um exemplo esta estrutura de controle: No exemplo, primeiro criamos um vetor e preenchemos com nmeros cada um de seus campos, com um loop FOR normal. Mais tarde utilizamos o loop FOR EACH para acessar a cada uma das posies deste vetor de nmeros e escrever na pgina cada um destes nmeros. dim tor(20) for i=0 to 20 tor(i) = i next for each i in tor document.write (tor(i)) next Observemos o segundo loop, indica-se que para cada i (i o ndice com o qual podemos nos mover no loop e na estrutura) dentro de tor (que a estrutura, neste caso um vetor) faa um document.write(tor(i)). Com tor(i) acessamos ao campo atual e document.write() serve para escrever algo na pgina web. Conbinados, o que escrito o que existe na posio atual do vetor. Pode-se ver este script funcionando.

O.b.s.: Este exemplo no foi provado em Mozilla Firefox. Artigo por Miguel Angel Alvarez - Traduo de JML

Loop WHILE WEND


O loop WHILE...WEND serve para realizar um tipo de loop muito utilizado em programao que o loop Enquanto, que se executa enquanto se cumprir uma condio. A diferena do loop FOR que este se utiliza quando no conhecemos o nmero de iteraes que temos que realizar. O loop funciona da seguinte maneira. Quando se vai executar, avalia uma expresso e comprova que esta d resultados positivos. Se for assim, executa o corpo do loop (as

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

15

Manuais e recursos para desenvolvimento web www.criarweb.com

sentenas que continuam at o WEND), em caso contrrio se sai. Podemos ver a sintaxe a seguir.
WHILE (condicao) sentencas .... WEND

Agora vamos ver um pequeno exemplo sobre este loop, que realiza uma conta nmero a nmero at chegar ao 13. Em cada iterao do loop mostra em uma janelinha o nmero atual e oferece a possibilidade de altera-lo, j que a janelinha uma janela Input, que oferece a oportunidade de mudar o valor e devolve esse valor, mudado ou no. Como dizamos, se deixarmos o exemplo sem tocar nada, contar at 13, mas se introduzirmos um nmero no inputbox continuar a conta pelo nmero introduzido. Se o nmero introduzido for maior que 13 tambm sair do loop.
option explicit dim a a=0 WHILE (a < 13) a=a+1 a = inputbox("D-me um valor inteiro, please","Petio de nmero",a,200,100) WEND

Artigo por Miguel Angel Alvarez - Traduo de JML

Loop DO LOOP
O loop DO...LOOP muito verstil. Com ele se pode criar grande variedade de loops diferentes, loops que comprovem uma condio antes de executar o loop uma vez, depois da primeira execuo e com combinaes com enquanto (WHILE) que se cumpre uma condio ou at (UNTIL) que essa condio se cumpra. A sintaxe desta estrutura a seguinte:
DO [WHILE | UNTIL (condicao)] Sentencas ..... LOOP [WHILE | UNTIL (condicao)]

Vamos tratar de explicar esta sentena de maneira pausada para que seja mais fcil de entender. O que sempre tenderemos nesses loops o DO e o LOOP, entre estes dois colocaremos as sentenas que queremos executar em cada Iterao do loop. O loops tm que avaliar entre cada iterao se continuam se executando ou no, para isso avaliam uma condio. O verstil deste loop que a condio se pode expressar de muitas maneiras distintas. Condio expressada ao lado do DO: neste caso a condio se avalia antes de comear a se executar o loop. Condio expressada ao lado do LOOP: neste caso a condio se avalia depois de se executar o loop. Tem como diferena principal frente ao outro mtodo que neste caso o loop se executar pelo menos uma vez. Alm de poder expressar a condio nesse dois sites tambm se pode construir a condio com um enunciado enquanto (WHILE) ou um enunciado at (UNTIL). As diferenas semnticas destas duas possibilidades se transferem tambm a sua maneira de funcionar. Veremos dois exemplos deste loop para compreender seu funcionamento. O exemplo pede
Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 16

Manuais e recursos para desenvolvimento web www.criarweb.com

constantemente o nome do autor da pgina e no pra at que o nome seja "migue". O usurio tambm tem a possibilidade de escrever "out", nesse caso, comprovado com um enunciado IF, se sai do loop rompendo com a sentena EXIT DO, utilizada para romper loops.
Dim entrada entrada = "" DO WHILE (entrada <> "migue") entrada = inputbox ("Diga o nome do autor","seguraca","migue",2,3) if (entrada = "out") then msgbox "saia pela porta dos fundos" exit do end if LOOP

O seguinte exemplo realiza uma conta e entre conta e conta se mostra o valor da conta atual em uma janelinha onde sai um boto de Tentar outra vez e outro de Cancelar. Se clicar em Tentar outra vez, continua se executando o loop e se clicar Cancelar sai pela porta de trs, de maneira parecida a como se saia no exemplo anterior, com EXIT DO.
option explicit dim cont dim resposta cont = 0 DO cont = cont +1 respuesta = msgbox (cont,69,"Variavel do loop, com valor 6 se sair") if (resposta = 2) then msgbox "Conta Cancelada",16,"Cancelou!" exit do end if LOOP UNTIL (cont = 6)

Artigo por Miguel Angel Alvarez - Traduo de JML

Arrays em VBScript
Os Arrays ou matrizes so umas estruturas de dados muito utilizadas em Qualquer linguagem. Trata-se de variveis, porm que esto preparadas para Salvar uma quantidade maior de elementos. como uma varivel que tem vrios compartimentos para salvar a informao e a cada um desses compartimentos h que acessar como um ndice. Antes de utilizar um array devemos declara-lo de maneira obrigatria, para isso utilizamos a palavra chave DIM, deste modo. dim meuArray(20) Despois da palavra DIM devemos indicar o nome do array e a seguir, entre parnteses, colocase o nmero de posio mxima do array, neste caso 20. Os arrays em ASP comeam desde a posio 0, ou seja, o primeiro elemento de um array est

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

17

Manuais e recursos para desenvolvimento web www.criarweb.com

na posio 0. Portanto, se o array foi definido com 20 campos, como no exemplo, ter 21 elementos, primeira posio ser a 0 e a ltima posio seria a 20. Para atribuir um valor a um array se realiza igual que uma varivel, porm acessando com o ndice da posio que queremos escrever. meuArray(0) = 234 Para utilizar o contedo de um array devemos faze-lo indicando o ndice ao que se deseja acessar. Por exemplo, se quisssemos imprimir na pgina a primeira posio de nosso Array o faramos desta maneira. document.write(meuArray(0)) Agora vamos ver um exemplo sobre como utilizar os arrays, onde vamos realizar dois percorridos, um para escrever nele e o outro para ler a informao e escreve-la na pgina.
dim matriz (10) for i=0 to 10 matriz(i)=100 * i next for i=0 to 10 document.writeln("Posicao " & i & ": " & matriz(i) & "<br>") next

Este exemplo escreveria na pgina as posies do array, que contm variveis numricas que correspondem de multiplicar seu ndice por 100. Arrays multidimensionais em VBScript Podem-se construir matrizes multidimensionais, ou seja, que nos permitam criar matrizes de vrias coordenadas. Para trabalhar com eles utiliza-se uma vrgula que separa os dois ndices. Por exemplo, podemos definir uma matriz de 8x8 desta maneira. dim meuArray2Dimensoes (7,7) Como o array de 8 campos, utilizamos um 7 e suas posies sero as 8 que vo desde o 0 ao 7. Para escrever e ler do Array podemos utilizar a vrgula de maneira similar a como se declara. Por exemplo, para colocar dados na posio 0,2 faramos o seguinte: meuArray2Dimensoes (0,2) = "texto posicao 0,2"

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

18

Manuais e recursos para desenvolvimento web www.criarweb.com

Redimensionar arrays Podemos declarar tambm arrays que mudem o nmero de campos que tm segundo se necessite em tempo de execuo. Este tipo de arrays redimensionais se chama array dinmico. Para criar este tipo de arrays podemos utilizar a sentena dim (como crivamos os anteriores) ou a sentena redim, com a particularidade que no lhe colocamos nenhum valor entre parnteses onde antes indicvamos o nmero de campos do array. dim meu_array() redim meu_outro_array() Quando usamos arrays dinmicos podemos utilizar a sentena redim para indicar o nmero de dimenses e a quantidade de campos de cada dimenso. Com esta sentena estamos indicando que meu_array deve ter o tamanho 10. Campos desde 0 at a 10. redim meu_array(10) Se indicamos a chave "preserve" estamos garantindo que o contedo dos campos que havia previamente no array se mantm. redim preserve meu_array(20) Por ltimo, se em qualquer momento reduzimos o nmero de campos perderemos o que possa ter sido salvo nos campos que se eliminaram. No seguinte exemplo criamos um array dinmico e o redimensionamos inicialmente a tamanho 3. Preenchemos e mostramos seus distintos valores. Posteriormente o redimensionamos outra vez para que chegue at a posio 7, salvando os valores antigos. Para acabar preenchendo os campos que criamos novos e mostramos todos os valores do array.
dim frutas() redim frutas(3) frutas(0) frutas(1) frutas(2) frutas(3) = = = = "Pra" "Uva" "Ma" "Melo"

for each fruta in frutas document.write fruta & "<br>" next redim preserve frutas(7) frutas(4) frutas(5) frutas(6) frutas(7) = = = = "Melancia" "Laranja" "Banana" "Tangerina"

for each fruta in frutas document.write fruta & "<br>" next

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

19

Manuais e recursos para desenvolvimento web www.criarweb.com

Nota: Os arrays de mais de uma dimenso tambm podem se redimensionar, porm s se pode alterar a ltima dimenso. Por exemplo, em um array de duas dimenses meuarray(2,4), se poderia redimensionar a segunda dimenso redim meuarray(2,8). Ou em um array de 3 dimenses, onde tambm poderamos mudar somente a ltima dimenso. Um exemplo de cdigo que faz isto : dim dados_prova() redim dados_prova(1,0) dados_prova(0,0)=12 dados_prova(1,0)="ola!" redim preserve dados_prova(1,1) dados_prova(0,1)=133 dados_prova(1,1)="segunda campo" for i=0 to ubound(dados_prova) document.write dados_prova(0,i) & "-" & dados_prova(1,i) & "<br>" next

Obter o nmero de campos de um array Um dos dados tpicos que necessitamos extrair de um array seu nmero de posies, til, por exemplo, para fazer um percorrido a um array, desde a primeira at o ltimo campo. Para isso, utilizamos a funo uBound() de VBScript. uBound() recebe o array do que queremos obter seu nmero de posies e devolve a posio mais alta do array. Por exemplo: dim cidades(5) document.write ubound (cidades) Escreveria na pgina o nmero do campo mais alto do array cidades, neste caso 5. Ademais, se por acaso algum dia necessitamos, tambm temos a nossa disposio a funo lBound(), que devolve o nmero da posio com ndice menor do array. document.write lbound (cidades) A ltima linha sobre nosso array de cidades definido anteriormente escreveria um 0 na pgina web, visto que o array comea na posio zero. Artigo por Miguel Angel Alvarez - Traduo de JML

Procedimentos e funes
Os procedimentos ou funes so muito interessantes e teis na programao. Servem para realizar uma tarefa concreta que provavelmente se executar vrias vezes ao longo da vida da pgina. Esta tarefa se especifica em um bloco de cdigo de maneira independente e quando se desejam realizar as aes do procedimento chama-se ao procedimento ou funo. Uma vez realizadas as aes pertinentes devolve-se o fluxo do programa ao lugar desde onde se embocou esse procedimento ou funo.

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

20

Manuais e recursos para desenvolvimento web www.criarweb.com

O primeiro que devemos fazer ao criar um procedimento pensar as coisas que se desejam fazer dentro da funo, a informao que necessitaremos (e que teremos que receber como parmetros) e a informao que devolver. Com estas idias claras se podem construir os procedimentos e funes sem muita dificuldade, seguindo estas estruturas. Para um procedimento Sub nome (parametro1, parametro2...) ... Cdigo do procedimento end Sub Para uma funo Function nome (parametro1, parametro2...) ... Cdigo da funo end Function Artigo por Miguel Angel Alvarez - Traduo de JML

Procedimentos. SUB
Dizamos que um procedimento era uma sub-rotina que se chamava e realizava aes, mas que no devolvia nenhum valor e portanto, no era possvel utiliza-la dentro de uma expresso. Vejamos algum exemplo de procedimento. uma sub-rotina que escreve na barra de estado uma mensagem. No muito complicada, porm tal como a apresentamos aqui no se deveria fazer, visto que utilizamos um loop vazio para que o navegador esteja um pouco mais lento e o texto saia pouco a pouco. Ao invs desse loop deveramos utilizar uma funo chamada setTimeout, porm, no desejamos introduzi-la agora.
sub mostraAbaixo(texto) dim i for i=0 to len(texto) dim actual actual = left(texto,i) window.status = actual dim j 'loop para frear o navegador deveria utilizar-se a funo setTimeOut for j=0 to 20000 j=j next next end sub

Este exemplo utiliza ademais vrias funes de cadeias de caracteres, esperamos que no represente muito problema para entende-lo. Basicamente, um loop que vai percorrendo toda a cadeia de caracteres que recebe por parmetro. medida que se realiza o loop vai criando uma sub-cadeia de caracteres da parte esquerda da cadeia original, que cada vez mais longa. Logo, imprime-se essa cadeia na barra de estado do navegador. Entre execuo e execuo do loop se realiza um atraso, no segundo loop for que deveria se realizar com um setTimeout.

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

21

Manuais e recursos para desenvolvimento web www.criarweb.com

Podemos ver a seguir como se colocaria um boto na pgina que chamasse a este procedimento.
<HTML> <HEAD> <TITLE>Procedimentos em VBS</TITLE> <script language=vbscript> option explicit sub mostraAbaixo(texto) dim i for i=0 to len(texto) dim actual actual = left(texto,i) window.status = actual dim j for j=0 to 20000 j=j next next end sub </script> </HEAD> <BODY> <h1>Procedimentos em VBS</h1> <P> <form> <input type="button" name=b value=colocarAbaixo! onclick="mostrarAbaixo('Abraos de Miguel')" language=vbscript> </form> </P> </BODY> </HTML>

Artigo por Miguel Angel Alvarez - Traduo de JML

Funes. Function
J vimos o que consistia uma funo, que no mais do que um pedao de cdigo que opera para devolver um valor. Agora veremos detalhadamente um exemplo de seu uso. Vamos definir uma funo que realize um clculo matemtico e devolva o resultado do mesmo. Vamos extrair os operandos de um formulrio. O exemplo pode ser agora mesmo um pouco complexo, por tratar com formulrios -que ainda no vimos- porm, podemos ver o cdigo da funo e termos uma idia exata de seu uso, que afinal de contas o que nos importa.

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

22

Manuais e recursos para desenvolvimento web www.criarweb.com

O cdigo da funo ser o seguinte:


function operar (operador,op1,op2) select case operador case "+": operar = op1 + op2 case "-": operar = op1 - op2 case "*": operar = op1 * op2 case else: operar = op1 / op2 end select end function

Vemos que a funo recebe trs parmetros, o primeiro um operador, que no mais do que um texto com o sinal da operao a realizar. Os dois seguintes parmetros so os operadores que h que tratar. A funo realiza uma operao matemtica dependendo do operador e devolve em cada caso o resultado conveniente. Observemos que para devolver um valor, deve-se realizar uma atribuio do nome da funo ao valor que se deseja devolver. No implica nenhuma complicao maior. Vamos ver agora o cdigo que poderamos utilizar para fazer a chamada funo. meuOperador="+" meuOperando1=221 meuOperando2=32 resultado = operar(meuOperador,meuOperando1,meuOperando2)

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

23

Manuais e recursos para desenvolvimento web www.criarweb.com

No final de todas estas sentenas a varivel resultado ter como valor 253. Vejamos o exemplo completo, que consistia em uma calculadora feita com um formulrio, que usa esta funo para obter os resultados.
<HTML> <HEAD> <link rel=stylesheet type=text/css href=estiloglobal.css> <TITLE>Funes em VBS</TITLE> </HEAD> <h1>Funes em VBS</h1> <script language=vbscript> function operar (operador,op1,op2) select case operador case "+": operar = op1 + op2 case "-": operar = op1 - op2 case "*": operar = op1 * op2 case else: operar = op1 / op2 end select end function sub opera () dim res operador = document.forms(0).operacion.value operando1 = cint(document.forms(0).op1.value) operando2 = cint(document.forms(0).op2.value) res = operar (operador,operando1,operando2) document.forms(0).result.value = res end sub </script> <BODY> <form> Operando 1 <input name=op1 > <br> Operando 2 <input name=op2 > <br> operacao: <select name=operacao> <option value="+" selected>+ <option value="-"><option value="*">* <option value="/">/ </select> <input type=button name=b value="realizar operacao" onclick=opera language=vbscript> <br> Resultado: <input name=result > </BODY> </HTML>

Tivemos que utilizar um procedimento de apoio para fazer o exerccio, j que se no utilizssemos a funo se tornaria um pouco mais complexa. Poderemos entender tudo j que no implica muita complicao e os procedimentos foram vistos no captulo anterior. Para ter ainda mais claro como se trabalha est pgina de exemplo podemos ver o exemplo funcionando.
Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 24

Manuais e recursos para desenvolvimento web www.criarweb.com

Temos um formulrio onde podemos ver campos para os operadores, uma caixa de seleo para o operando e um ltimo campo para o resultado. interessante tambm o boto de realizar operao, que o que coloca tudo em funcionamento graas a seu administrador de evento onclick, que quer dizer que quando se clica sobre o boto se realiza uma ao. Neste caso uma chamada ao procedimento opera. No procedimento opera podemos ver vrias sentenas para extrair a informao do formulrio e tambm a chamada funo que realiza os clculos. Por ltimo, se introduz no campo resultado o que a funo devolvia como resultado de realizar as operaes. Podemos ver o exemplo em funcionamento. Artigo por Miguel Angel Alvarez - Traduo de JML

Mais sobre procedimentos e funes


Agora veremos mais algumas coisas sobre sub-rotinas que faltaram ser ditas. Chamadas a sub-rotinas No Visual Basic Script as funes se utilizam como partes de expresses e os procedimentos como se fosse uma sentena independente. A chamada a uma funo, se for utilizada como parte de uma expresso deve ser chamada utilizando parnteses. meuResultado = soma(1,2) Se no se utiliza como parte de uma expresso, no tem porqu utilizar os parnteses, porm, o resultado da funo (o que devolve) se perder. soma 1,2 Call uma chamada a uma sub-rotina, utilizada para transferir o fluxo da aplicao para uma subrotina. necessrio utilizar parntesis quando se utiliza. Ademais, se se utiliza com uma funo se perder o resultado que devolva. call soma(1,2) Sada de uma sub-rotina Podemos sair de um procedimento ou funo em qualquer momento, independentemente de que a funo tenha terminado ou no. O enunciado para escapar de uma funo EXIT, que se pode utilizar em qualquer lugar do procedimento ou funo. A palavra exit deve ir acompanhada do tipo de sub-rotina da que se deseja sair, sendo assim, se dever utilizar exit function ou ento, exit sub.

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

25

Manuais e recursos para desenvolvimento web www.criarweb.com

Artigo por Miguel Angel Alvarez - Traduo de JML

Imprimir uma pgina sem ver o dilogo de impresso


Neste artigo, eminentemente prtico, veremos como imprimir uma pgina web sem que se pea confirmao ao usurio e sem visualizar a janela prvia de impresso. Neste caso, logicamente, a impresso se realizaria na impressora configurada como pr-determinada no sistema cliente e com as opes definidas por padro para essa impressora. um script na linguagem VBScript, que como provavelmente saibamos s ser compatvel com Internet Explorer. Se algum souber como pode ser feito isso com Javascript (se que isso possvel), para que seja compatvel com todos os navegadores, por favor, peo que inclua um comentrio ao artigo para compartilhar a informao. O cdigo est comentado para que se possa entender cada passo que se realiza.
<html> <head> <script language="VBScript"> SUB Print() OLECMDID_PRINT = 6 OLECMDEXECOPT_DONTPROMPTUSER = 2 OLECMDEXECOPT_PROMPTUSER = 1 'ACA no caso de usar frames, 'enfocamos o frame a imprimir: 'window.parent.frames.main.document.body.focus() window.document.body.focus() 'Chamamos ao comando de Impresso Print on error resume next call IEWB.ExecWB (OLECMDID_PRINT, -1) if err.number <> 0 then alert "No se pode imprimir" end if END SUB </script> </head> <body> <object id="IEWB" width="0" height="0" classid="clsid:8856F961-340A-11D0-A96B-00C04FD705A2" VIEWASTEXT></object> Esta uma prova de uma pgina que ser impressa, clicando no link abaixo, sem pedir confirmao ao usurio. <a href="javascript:Print ();">Imprimir</a> </body> </html>

O exemplo pode ser visto em funcionamento em uma pgina a parte. Lembra que s funcionar no Internet Explorer.
Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 26

Manuais e recursos para desenvolvimento web www.criarweb.com

Artigo por Darwin Manuel Daz Garrampi

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

27