Professional Documents
Culture Documents
com
Autores do manual Este manual foi criado pelos seguintes colaboradores de Criarweb.com: Miguel Angel Alvarez Traduo de JML
(20 captulos)
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.
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.
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
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.
o que se encontre nessa linha depois das aspas simples seja ignorado pelo explorador.
Clique aqui para ver o exemplo Artigo por Miguel Angel Alvarez - Traduo de JML
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.
Utilizando os eventos podemos preparar algum efeito que seja visvel somente quando o usurio realizar alguma ao dentro da pgina web.
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.
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.
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
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.
Como saber de que subtipo uma varivel Para averiguar o subtipo de uma varivel podemos utilizar a funo VarType, desta maneira:
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.
vbByte vbArray
17 8192
Byte Array
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
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
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
end if Podemos ver este script em funcionamento. Artigo por Miguel Angel Alvarez - Traduo de JML
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
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
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
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
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
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
O.b.s.: Este exemplo no foi provado em Mozilla Firefox. 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.
15
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
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
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)
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
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
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"
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
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
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
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>
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
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
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
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
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
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
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