tutorial visual basic script

27

Click here to load reader

Upload: lithatog

Post on 11-Aug-2015

66 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

Tutorial de Visual Basic Script

Autores do manual

Este manual foi criado pelos seguintes colaboradores de Criarweb.com:

Miguel Angel Alvarez - Tradução de JML (20 capítulos)

Darwin Manuel Díaz Garrampié (1 capítulo)

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ © Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.

1

Page 2: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

Introdução ao Visual Basic ScriptA linguagem para descrever páginas, HTML, fica limitada na hora de definir qualquer tipo de interatividade. Uma vez que tivermos explorado sua potência, necessitaremos aprender alguma linguagem nova para fazer pequenos efeitos ou interatividades.

Scripts São os pequenos programinhas que, incrustados nas páginas, nos permitem definir aqueles efeitos ou interatividades.

Visual Basic Script Neste manual trataremos de Visual Basic Script, uma linguagem compatível com Internet Explorer e outros sistemas Microsoft, que à princípio é 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 compatível com os dois navegadores mais habituais.

Como colocar scripts

Para colocar um script em uma página web utilizamos a etiqueta de HTML <SCRIPT>. Tudo que colocarmos entre essa etiqueta e a de fechamento, </SCRITP>, tem que ser código da linguagem de scripting que estivermos utilizando. Também 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 inglês se escreve com dois "G": language. Se vocês errarem neste ponto, coisa bastante provável se escreverem rápido e distraídos, não funcionarão seus scripts, pois o navegador pensará que estão escritos em JavaScript.

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ © Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.

2

Page 3: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

Primeiro Script simples

Para terminar este capítulo vamos ver um primeiro exemplo de script em uma página web. O objetivo deste script é mostrar a data da última modificação do documento.

<html><head> <title> A última modificação do documento</title></head>

<body><h1>Script da última modificação 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 sentença document.write é um procedimento que escreve na página web o texto que recebe por parâmetro, o texto que está depois da sentença. A variável document.lastmodified armazena a data e a hora da última atualização. Este script dará como resultado que o documento lhe informe de sua última atualização, de uma maneira parecida a esta:

Artigo por Miguel Angel Alvarez - Tradução de JML

Primeiros passos com a linguagemAs linguagens de scripting têm uma série de características comuns, estas costumam tornar a programação mais fácil para as pessoas inexperientes, mas a longo prazo podem se converter em uma fonte de erros. Vejamos quais são estas características, em concreto para VBScript.

Maiúsculas e minúsculas Em VBScript não importa se utilizamos maiúsculas ou minúsculas na hora de escrever nosso código.

Variáveis As variáveis são espaços onde se armazenam os dados que utilizam os programas ou scripts.Não se declaram: em VBScript as variáveis não se devem ser declaradas, ou seja, quando necessitarmos uma variável, simplesmente a utilizamos e pronto. Mesmo assim, se desejarmos declarar uma variável utilizamos a palavra DIM Não existem tipos: as variáveis não estão classificadas por tipos, isto quer dizer que podemos salvar nelas igualmente números ou letras ou outras coisas.

Quebras de linha As quebras de linha são muito importantes. Expressam o final de uma instrução e o princípio da seguinte. Não se pode colocar duas instruções em uma mesma linha.

Comentários Em VBScript os comentários são 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 têm copyright dos autores. Não reproduzir sem autorização.

3

Page 4: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.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 (sentença msgbox) sendo as mensagens o conteúdo da variável pepe. Durante o exemplo o valor da variável muda e logo volta a mostrar. O exemplo demonstra que não importam as maiúsculas e minúsculas, e que é indiferente o tipo do conteúdo da variável, texto ou números.

<HTML><HEAD> <TITLE>Exemplo2 Comentário, caixa alert e variáveis</TITLE></HEAD><BODY><script language=VBScript> 'Isto é um comentário 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 - Tradução de JML

Diferentes formas de executar scriptsAgora que você já sabe como incluir scripts nas suas páginas 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 execução de VBScript são as seguintes:

• Scripts que se executam enquanto o navegador abre a página. • Scripts que se executam como resposta à ação de um usuário.

O primeiro dos casos se utiliza quando quiser fazer algo enquanto o navegador está carregando a página. Por exemplo, poderia mostrar uma mensagem de boas vindas que apareça quando o usuário entrar na sua página, ou que o navegador lhe informe da última atualização do documento (tal como foi visto no capítulo 1).

O segundo caso é útil quando desejar realizar ações como resposta a eventos do usuário.

Os eventos são ações que ocorrem quando um usuário faz alguma coisa sobre a página web, ou seja, um evento poderia ser de um usuário que escreve algo em uma caixa de texto, ou que coloque o mouse em cima de um link, etc. Quase qualquer coisa que o usuário pode realizar dentro da página tem um evento relacionado.

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ © Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.

4

Page 5: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

Utilizando os eventos podemos preparar algum efeito que seja visível somente quando o usuário realizar alguma ação dentro da página web.

Exemplo de tudo isto

Vejamos agora um exemplo para compreender de vez as duas formas de execução dos scripts.

Vamos fazer com que o navegador nos diga seu número de versão e outros dados em uma caixa de diálogo. Vamos fazer de duas maneiras: enquanto o usuário carrega a página e quando ele apertar um botão.

Exemplo de execução ao carregar a página Começamos pela execução de scripts quando o usuário carrega a página. Esta é a forma mais simples, e realmente você já deve conhecer vários exemplos disso pelo que foi visto nos capítulos anteriores.

<html><head> <title>Script de execução direta</title></head><body> Enquanto se carrega a página veremos a versão do navegador em uma caixa de diálogo. <script language=vbscript> msgbox(navigator.appVersion) </script></body></html>

Este exemplo não tem nenhum mistério, pois é muito parecido aos exemplos que realizamos. A única novidade é a variável navigator.appVersion. Esta armazena o que queremos que seja visto na caixa de diálogo: a versão do navegador. Clique aqui para ver o exemplo

Exemplo de execução como resposta à ação do usuário Agora vejamos o que temos que fazer quando desejarmos que esta caixa de diálogo não apareça até que o usuário clique em um botão.

<html><head> <title>Script de execução como resposta a um evento</title></head> <body> Clique o botão para ver a versão 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 botão com a etiqueta <INPUT> 2. Acrescentamos o atributo onclick. Este serve para indicar (na linguagem de script) as

ações que queremos realizar como resposta ao evento "click sobre o botão". 3. Acrescentamos o a atributo language para especificar a linguagem em que está escrito

o código script associado aol evento.

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ © Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.

5

Page 6: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

Agora temos um botão que, quando se clica, executará o código que abre uma caixa de diálogo com a versão do navegador.

Clique aqui para ver o exemplo

Artigo por Miguel Angel Alvarez - Tradução de JML

Declarar variáveisAntes de passar a temas mais interessantes falta explicar a forma de declarar variáveis em VBScript. Dissemos antes que não era necessário declarar estas variáveis, mas pode ser um bom costume fazer para evitar erros.

Uma variável 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 não importa que tipo de informação vai conter a variável, sempre se declaram de forma igual.

Option explicit Pode-se utilizar a cláusula Option explicit para forçar a declaração de variáveis em nossos scripts. Se desejar evitar a possível fonte de erros que supõe a liberdade de não declarar as variáveis pode utilizar esta cláusula e fará com que seus scripts respondam com mensagens de erro se utilizar uma variável que não 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 variável "tomas" não foi declarada antes de seu uso.

Artigo por Miguel Angel Alvarez - Tradução de JML

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ © Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.

6

Page 7: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

Tipos de dadosVisual Basic Script possui vários tipos de dados, mas na prática só possui um tipo de variável, que vai mudando de um estado a outro segundo a informação que introduzirmos dentro. Este tipo principal de dados é o tipo Variant, no qual podemos introduzir vários subtipos de dados com total liberdade.

Para mudar o subtipo de um variant, só temos que introduzir um dado na variável. A variável variant muda automaticamente de um subtipo a outro, sem que tenhamos que fazer nenhuma operação adicional. Os distintos subtipos de dados que temos são os seguintes:

Booleano

É um tipo de dados que contém um sim ou um não.Correspondem-se: TRUE equivale a (-1) FALSE equivale a (0)

Byte Numérico, inteiro sem sinal até 65.000

Currency

Tipo de moeda, utiliza-se para manipular de maneira exata valores monetários, e em geral qualquer cálculo que requeira uma precisão de até 15 dígitos decimais

Data É um tipo de 64 bits de tamanho que armazena datas. Utiliza-se o formato americano: mês, dia, hora.

Double Vírgula flutuante com dupla precisão (64 bits)

Inteiro Número inteiro, com sinal.Desde -32.768 até 32.767

Inteiro longo

Este tipo é um valor inteiro com sinal de dupla precisão. Como os novos computadores trabalham com palavras de 32 bits, e não menos, recomenda-se usar este tipo antes do tipo inteiro normal.

Objeto O subtipo de objeto é uma referência de ponteiro de 32 bits a uma instância de objeto de automatização OLE. Os controles Active-X e Java. Utilizam esta sintaxe: Set meuobjeto = new oleObjeto

Single Vírgula flutuante de precisão simples

Cadeia Conjunto contínuo de valores de caracteres, de longitude variável.

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ © Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.

7

Page 8: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

Como saber de que subtipo é uma variável

Para averiguar o subtipo de uma variável podemos utilizar a função VarType, desta maneira:

v1 = 3 document.write VarType (v1)

Neste script declaramos uma variável e lhe colocamos um número e a seguir, imprimimos na página o valor que devolve a função VarType.

Ao executar este script poderemos ver um "2" escrito na página.

Segundo o tipo de dados que achar na variável, VarType devolverá um valor diferente, como indica esta tabela:

Constant Value Description

vbEmpty 0 Empty (uninitialized)

vbNull 1 Null (no valid data)

vbInteger 2 Integer

vbLong 3 Long integer

vbSingle 4 Single-precision floating-point number

vbDouble 5 Double-precision floating-point number

vbCurrency 6 Currency

vbDate 7 Date

vbString 8 String

vbObject 9 Automation object

vbError 10 Error

vbBoolean 11 Boolean

vbVariant 12 Variant (used only with arrays of Variants)

vbDataObject 13 A data-access object

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ © Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.

8

Page 9: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

vbByte 17 Byte

vbArray 8192 Array

Artigo por Miguel Angel Alvarez - Tradução de JML

Operadores I – AritméticosVisual Basic Script, como qualquer linguagem de programação, tem um conjunto de operadores, divididos em várias seções:

Operadores Aritméticos

Que suportam as operações matemáticas mais simples.

+ Soma

- Subtração

* Multiplicação

/ Divisão em vírgula flutuante. É a divisão normal.Devolve um número real se for o resultado

\Divisão de inteirosDevolve um número inteiro, resultado da divisão.

^ Potência

Mod Resto da divisão

Vejamos a seguir um exemplo de script que realiza ações 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 têm copyright dos autores. Não reproduzir sem autorização.

9

Page 10: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

soma = v1 + v2

subtracao = v1- v2

potencia = v1 ^ v2

divisaoInteiros = v1 \ v2

msgbox(divisaoInteiros)

DivisaoReal = v1 /v2

msgbox(divisaoReal)

A função msgbox serve para mostrar um valor em uma janelinha de alerta típica de Windows. Podemos ver este script em funcionamento.

Artigo por Miguel Angel Alvarez - Tradução de JML

Operadores II – ComparaçãoPara realizar comparações, 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 operações de comparação, embora antes de vê-lo deveríamos pontuar que os operadores de comparação costumam ser utilizados dentro de uma estrutura condicional, que avalia uma expressão com estes comparadores e realiza ações dependendo do resultado dessas comparações. Por este motivo incluímos 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 têm copyright dos autores. Não reproduzir sem autorização.

10

Page 11: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

end if

Podemos ver este script em funcionamento.

Artigo por Miguel Angel Alvarez - Tradução de JML

Operadores III lógicos e cadeiasOperadores lógicos

Os operadores lógicos se utilizam sobre expressões booleanas e nos devolvem um valor booleano (verdadeiro ou falso) resultado dessa operação. Um matiz seria que não é necessário que as parcelas relacionadas no cálculo sejam variáveis booleanas, podendo ser de qualquer tipo.

Como operadores lógicos enmVisual Basic Script temos:

AND E lógico

OR OU lógico

Xor Xor

Not NÃO lógico

Operadores de cadeias

Como operador de cadeias de caracteres em Visual Basic Script temos um único exemplo: a concatenação. O operador para concatenar cadeias é o &. Vejamos um exemplo de utilização deste operador:

cadeia1 = "Oi "

cadeia2 = "Zé!"

concatenar = cadeia1 & cadeia2

msgbox (concatenar)

Podemos ver este script em funcionamento.

Artigo por Miguel Angel Alvarez - Tradução de JML

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ © Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.

11

Page 12: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

Estruturas de controleAs estruturas de controle nos permitem realizar ações típicas em nossos scripts como podem ser os loops ou a tomada de decisões.

VBScript tem as estruturas de controle típicas das linguagens de programação. Veremos nos seguintes capítulos a sintaxe e a maneira de trabalhar destas estruturas detalhadamente:

Condicionais

• IF, condicional que decide entre sim/não • CASE, outra condicional com várias possibilidades

Loops

• FOR, repetição um determinado número de vezes • FOR EACH, repetição para um conjunto de elementos • WHILE...WEND, repetição enquanto ocorra alguma coisa • DO...LOOP, repetição um determinado número de vezes

Artigo por Miguel Angel Alvarez - Tradução de JML

Estrutura IFA estrutura de controle IF permite decidir entre duas opções resultantes da avaliação de uma sentença. Se a avaliação for positiva se faz uma coisa, também podemos especificar ações para realizar no caso de que a avaliação seja negativa. Veamos cómo funciona en VBscript.

IF (expresion) then Sentencias ....END IF

Vemos que em primeiro lugar temos a sentença IF, logo uma expressão, que pode ou não ir entre parênteses, e mais tarde a palavra THEN. Vemos que logo há uma quebra de linha antes de colocar as sentenças associadas à avaliação positiva da sentença. Em VBScript as linhas sim que importam. Depois de colocar as sentenças associadas à avaliação positiva colocamos um END IF, para acabar a estrutura do IF.

Enunciado ELSE

Opcionalmente pode-se colocar uma série de sentenças associadas à avaliação negativa da expressão. Estas sentenças 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 têm copyright dos autores. Não reproduzir sem autorização.

12

Page 13: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

Enunciado ELSEIF

Em Visual Basic Script existe a possibilidade de utilizar um enunciado especial no lugar onde utilizaríamos um ELSE. Serve para encadear sentenças IF de modo que em um resultado negativo de um IF se possa avaliar outra expressão, 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 expressão, no caso positivo executam-se as sentenças1, no caso negativo avalia-se a expressão 2. Se a expressão 2 for positiva executam-se as sentenças 2 em caso negativo avaliamos a expressão 3 com o seguinte ELSEIF. Tudo acaba em um ELSE neste exemplo, porém o ELSE final não é obrigatório.

Artigo por Miguel Angel Alvarez - Tradução de JML

Estrutura CASECom a estrutura de controle CASE podemos avaliar uma variável e realizar ações dependendo do valor desta. A diferença com o IF consiste em que o número de possibilidades da avaliação desta variável não tem porque ser sim ou não, podendo fazer coisas para um número 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 variável, se essa variável tiver como valor o valor1 realizamos as ações associadas ao valor1. Se tiver o valor2, executamos as ações relacionadas

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ © Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.

13

Page 14: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

com este valor3. Assim com quantos valores desejarmos. Por último temos um ELSE para realizar ações no caso de que não tivessem sido nenhum dos valores anteriores. Este ELSE é opcional.

Vejamos com um exemplo esta sentença muito simples. O primeiro que faz é solicitar um número e logo informa o dia da semana com o que corresponde. Se o número não for do um ao sete, informa isso também.

dim diadia = inputbox ("diz um dia da semana")SELECT CASE diaCASE 1: msgbox("O dia é SEGUNDA")CASE 2: msgbox("O dia é TERÇA")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 número, do 1 ao 7")END SELECT

Pode-se ver em funcionamento este script.

Artigo por Miguel Angel Alvarez - Tradução de JML

Loop FORA sentença FOR é utilizada para os loops, quando sabemos o número de vezes que devemos executar o loop. Vejamos sua simples sintaxe:

FOR (iniciacao) TO (termo do loop) STEP (passo) sentencas ........NEXT

A sentença realiza uma repetição através da iniciação até o termo do loop. Para levar a conta se utiliza uma variável, já veremos no exemplo como se utiliza esta variável. Com cada execução do loop se executam umas sentenças. NEXT serve para delimitar o final do loop, quando se encontra com o NEXT volta-se outra vez ao princípio do FOR, assim até realizar o número de execuções determinado.

Existe um valor que serve para indicar o grande que se deseja realizar os saltos entre execução e execução, é o valor STEP. Um STEP 2 determinaria que entre execução e execução a variável incrementa-se em 2 unidades. No caso de não indicar nada realizam-se passos de 1 em 1. Também 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 têm copyright dos autores. Não reproduzir sem autorização.

14

Page 15: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

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

Este exemplo apresentaria uma mensagem com um numero da variável i, utilizada para levar a conta das execuções do loop. Pode-se ver um exemplo deste script funcionando .

Artigo por Miguel Angel Alvarez - Tradução de JML

Loop FOR EACHA estrutura de controle FOR EACH serve para mover-se pelos elementos de uma estrutura de dados, como poderia ser um vetor, e realizar ações para cada um dos elementos.

Vejamos com um exemplo esta estrutura de controle: No exemplo, primeiro criamos um vetor e preenchemos com números cada um de seus campos, com um loop FOR normal. Mais tarde utilizamos o loop FOR EACH para acessar a cada uma das posições deste vetor de números e escrever na página cada um destes números.

dim tor(20)for i=0 to 20 tor(i) = inextfor 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) faça um document.write(tor(i)). Com tor(i) acessamos ao campo atual e document.write() serve para escrever algo na página web. Conbinados, o que é escrito é o que existe na posição atual do vetor. Pode-se ver este script funcionando .

O.b.s.: Este exemplo não foi provado em Mozilla Firefox.

Artigo por Miguel Angel Alvarez - Tradução de JML

Loop WHILE WENDO loop WHILE...WEND serve para realizar um tipo de loop muito utilizado em programação que é o loop Enquanto, que se executa enquanto se cumprir uma condição. A diferença do loop FOR é que este se utiliza quando não conhecemos o número de iterações que temos que realizar.

O loop funciona da seguinte maneira. Quando se vai executar, avalia uma expressão 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 têm copyright dos autores. Não reproduzir sem autorização.

15

Page 16: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

sentenças que continuam até o WEND), em caso contrário 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 número a número até chegar ao 13. Em cada iteração do loop mostra em uma janelinha o número 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 não. Como dizíamos, se deixarmos o exemplo sem tocar nada, contará até 13, mas se introduzirmos um número no inputbox continuará a conta pelo número introduzido. Se o número introduzido for maior que 13 também sairá do loop.

option explicitdim aa = 0WHILE (a < 13) a = a + 1 a = inputbox("Dá-me um valor inteiro, please","Petição de número",a,200,100)WEND

Artigo por Miguel Angel Alvarez - Tradução de JML

Loop DO LOOPO loop DO...LOOP é muito versátil. Com ele se pode criar grande variedade de loops diferentes, loops que comprovem uma condição antes de executar o loop uma vez, depois da primeira execução e com combinações com enquanto (WHILE) que se cumpre uma condição ou até (UNTIL) que essa condição se cumpra. A sintaxe desta estrutura é a seguinte:

DO [WHILE | UNTIL (condicao)] Sentencas .....LOOP [WHILE | UNTIL (condicao)]

Vamos tratar de explicar esta sentença de maneira pausada para que seja mais fácil de entender. O que sempre tenderemos nesses loops é o DO e o LOOP, entre estes dois colocaremos as sentenças que queremos executar em cada Iteração do loop. O loops têm que avaliar entre cada iteração se continuam se executando ou não, para isso avaliam uma condição. O versátil deste loop é que a condição se pode expressar de muitas maneiras distintas.

Condição expressada ao lado do DO: neste caso a condição se avalia antes de começar a se executar o loop.Condição expressada ao lado do LOOP: neste caso a condição se avalia depois de se executar o loop. Tem como diferença principal frente ao outro método que neste caso o loop se executará pelo menos uma vez.

Além de poder expressar a condição nesse dois sites também se pode construir a condição com um enunciado enquanto (WHILE) ou um enunciado até (UNTIL). As diferenças semânticas destas duas possibilidades se transferem também 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 têm copyright dos autores. Não reproduzir sem autorização.

16

Page 17: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

constantemente o nome do autor da página e não pára até que o nome seja "migue". O usuário também tem a possibilidade de escrever "out", nesse caso, comprovado com um enunciado IF, se sai do loop rompendo com a sentença EXIT DO, utilizada para romper loops.

Dim entradaentrada = ""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 ifLOOP

O seguinte exemplo realiza uma conta e entre conta e conta se mostra o valor da conta atual em uma janelinha onde sai um botão 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 trás, de maneira parecida a como se saia no exemplo anterior, com EXIT DO.

option explicitdim contdim respostacont = 0DO 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 ifLOOP UNTIL (cont = 6)

Artigo por Miguel Angel Alvarez - Tradução de JML

Arrays em VBScriptOs Arrays ou matrizes são umas estruturas de dados muito utilizadas em Qualquer linguagem. Trata-se de variáveis, porém que estão preparadas para Salvar uma quantidade maior de elementos. É como uma variável que tem vários compartimentos para salvar a informação e a cada um desses compartimentos há que acessar como um índice.

Antes de utilizar um array devemos declara-lo de maneira obrigatória, 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 parênteses, coloca-se o número de posição máxima do array, neste caso 20.

Os arrays em ASP começam desde a posição 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 têm copyright dos autores. Não reproduzir sem autorização.

17

Page 18: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

na posição 0. Portanto, se o array foi definido com 20 campos, como no exemplo, terá 21 elementos, primeira posição será a 0 e a última posição seria a 20.

Para atribuir um valor a um array se realiza igual que uma variável, porém acessando com o índice da posição que queremos escrever.

meuArray(0) = 234

Para utilizar o conteúdo de um array devemos faze-lo indicando o índice ao que se deseja acessar. Por exemplo, se quiséssemos imprimir na página a primeira posição de nosso Array o faríamos 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 informação e escreve-la na página.

dim matriz (10)for i=0 to 10 matriz(i)=100 * inext

for i=0 to 10 document.writeln("Posicao " & i & ": " & matriz(i) & "<br>")next

Este exemplo escreveria na página as posições do array, que contém variáveis numéricas 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 várias coordenadas. Para trabalhar com eles utiliza-se uma vírgula 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 posições serão as 8 que vão desde o 0 ao 7. Para escrever e ler do Array podemos utilizar a vírgula de maneira similar a como se declara. Por exemplo, para colocar dados na posição 0,2 faríamos 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 têm copyright dos autores. Não reproduzir sem autorização.

18

Page 19: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

Redimensionar arrays

Podemos declarar também arrays que mudem o número de campos que têm segundo se necessite em tempo de execução. Este tipo de arrays redimensionais se chama array dinâmico. Para criar este tipo de arrays podemos utilizar a sentença dim (como criávamos os anteriores) ou a sentença redim, com a particularidade que não lhe colocamos nenhum valor entre parênteses onde antes indicávamos o número de campos do array.

dim meu_array() redim meu_outro_array()

Quando usamos arrays dinâmicos podemos utilizar a sentença redim para indicar o número de dimensões e a quantidade de campos de cada dimensão.

Com esta sentença 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 conteúdo dos campos que havia previamente no array se mantém.

redim preserve meu_array(20)

Por último, se em qualquer momento reduzimos o número de campos perderemos o que possa ter sido salvo nos campos que se eliminaram.

No seguinte exemplo criamos um array dinâmico e o redimensionamos inicialmente a tamanho 3. Preenchemos e mostramos seus distintos valores. Posteriormente o redimensionamos outra vez para que chegue até a posição 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) = "Pêra" frutas(1) = "Uva" frutas(2) = "Maçã" frutas(3) = "Melão"

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

redim preserve frutas(7)

frutas(4) = "Melancia" frutas(5) = "Laranja" frutas(6) = "Banana" frutas(7) = "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 têm copyright dos autores. Não reproduzir sem autorização.

19

Page 20: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

Nota: Os arrays de mais de uma dimensão também podem se redimensionar, porém só se pode alterar a última dimensão.

Por exemplo, em um array de duas dimensões meuarray(2,4), se poderia redimensionar a segunda dimensão redim meuarray(2,8). Ou em um array de 3 dimensões, onde também poderíamos mudar somente a última dimensão.

Um exemplo de código 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 número de campos de um array

Um dos dados típicos que necessitamos extrair de um array é seu número de posições, útil, por exemplo, para fazer um percorrido a um array, desde a primeira até o último campo. Para isso, utilizamos a função uBound() de VBScript.

uBound() recebe o array do que queremos obter seu número de posições e devolve a posição mais alta do array. Por exemplo:

dim cidades(5) document.write ubound (cidades)

Escreveria na página o número do campo mais alto do array cidades, neste caso 5.

Ademais, se por acaso algum dia necessitamos, também temos a nossa disposição a função lBound(), que devolve o número da posição com índice menor do array.

document.write lbound (cidades)

A última linha sobre nosso array de cidades definido anteriormente escreveria um 0 na página web, visto que o array começa na posição zero.

Artigo por Miguel Angel Alvarez - Tradução de JML

Procedimentos e funçõesOs procedimentos ou funções são muito interessantes e úteis na programação. Servem para realizar uma tarefa concreta que provavelmente se executará várias vezes ao longo da vida da página. Esta tarefa se especifica em um bloco de código de maneira independente e quando se desejam realizar as ações do procedimento chama-se ao procedimento ou à função. Uma vez realizadas as ações pertinentes devolve-se o fluxo do programa ao lugar desde onde se embocou esse procedimento ou função.

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ © Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.

20

Page 21: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

O primeiro que devemos fazer ao criar um procedimento é pensar as coisas que se desejam fazer dentro da função, a informação que necessitaremos (e que teremos que receber como parâmetros) e a informação que devolverá. Com estas idéias claras se podem construir os procedimentos e funções sem muita dificuldade, seguindo estas estruturas.

Para um procedimento

Sub nome (parametro1, parametro2...) ... Código do procedimentoend Sub

Para uma função

Function nome (parametro1, parametro2...) ... Código da funçãoend Function

Artigo por Miguel Angel Alvarez - Tradução de JML

Procedimentos. SUBDizíamos que um procedimento era uma sub-rotina que se chamava e realizava ações, mas que não devolvia nenhum valor e portanto, não era possível utiliza-la dentro de uma expressão.

Vejamos algum exemplo de procedimento. É uma sub-rotina que escreve na barra de estado uma mensagem. Não é muito complicada, porém tal como a apresentamos aqui não 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 invés desse loop deveríamos utilizar uma função chamada setTimeout, porém, não 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 função setTimeOut for j=0 to 20000 j = j next nextend sub

Este exemplo utiliza ademais várias funções de cadeias de caracteres, esperamos que não represente muito problema para entende-lo. Basicamente, é um loop que vai percorrendo toda a cadeia de caracteres que recebe por parâmetro. À 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 execução e execução 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 têm copyright dos autores. Não reproduzir sem autorização.

21

Page 22: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

Podemos ver a seguir como se colocaria um botão na página que chamasse a este procedimento.

<HTML><HEAD><TITLE>Procedimentos em VBS</TITLE><script language=vbscript>option explicitsub 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 nextend sub</script></HEAD><BODY><h1>Procedimentos em VBS</h1>

<P><form><input type="button" name=b value=colocarAbaixo! onclick="mostrarAbaixo('Abraços de Miguel')" language=vbscript> </form></P></BODY></HTML>

Artigo por Miguel Angel Alvarez - Tradução de JML

Funções. FunctionJá vimos o que consistia uma função, que não é mais do que um pedaço de código que opera para devolver um valor. Agora veremos detalhadamente um exemplo de seu uso.

Vamos definir uma função que realize um cálculo matemático e devolva o resultado do mesmo. Vamos extrair os operandos de um formulário. O exemplo pode ser agora mesmo um pouco complexo, por tratar com formulários -que ainda não vimos- porém, podemos ver o código da função e termos uma idéia 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 têm copyright dos autores. Não reproduzir sem autorização.

22

Page 23: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

O código da função 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 selectend function

Vemos que a função recebe três parâmetros, o primeiro é um operador, que não é mais do que um texto com o sinal da operação a realizar. Os dois seguintes parâmetros são os operadores que há que tratar.

A função realiza uma operação matemática dependendo do operador e devolve em cada caso o resultado conveniente. Observemos que para devolver um valor, deve-se realizar uma atribuição do nome da função ao valor que se deseja devolver.

Não implica nenhuma complicação maior. Vamos ver agora o código que poderíamos utilizar para fazer a chamada à função.

meuOperador="+"meuOperando1=221meuOperando2=32resultado = operar(meuOperador,meuOperando1,meuOperando2)

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ © Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.

23

Page 24: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

No final de todas estas sentenças a variável resultado terá como valor 253.

Vejamos o exemplo completo, que consistia em uma calculadora feita com um formulário, que usa esta função para obter os resultados.

<HTML><HEAD><link rel=stylesheet type=text/css href=estiloglobal.css><TITLE>Funções em VBS</TITLE></HEAD><h1>Funções 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 selectend 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 = resend 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 exercício, já que se não utilizássemos a função se tornaria um pouco mais complexa. Poderemos entender tudo já que não implica muita complicação e os procedimentos foram vistos no capítulo anterior. Para ter ainda mais claro como se trabalha está página de exemplo podemos ver o exemplo funcionando.

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ © Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.

24

Page 25: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

Temos um formulário onde podemos ver campos para os operadores, uma caixa de seleção para o operando e um último campo para o resultado. É interessante também o botão de realizar operação, que é o que coloca tudo em funcionamento graças a seu administrador de evento onclick, que quer dizer que quando se clica sobre o botão se realiza uma ação. Neste caso é uma chamada ao procedimento opera.

No procedimento opera podemos ver várias sentenças para extrair a informação do formulário e também a chamada à função que realiza os cálculos. Por último, se introduz no campo resultado o que a função devolvia como resultado de realizar as operações.

Podemos ver o exemplo em funcionamento.

Artigo por Miguel Angel Alvarez - Tradução de JML

Mais sobre procedimentos e funçõesAgora veremos mais algumas coisas sobre sub-rotinas que faltaram ser ditas.

Chamadas a sub-rotinas

No Visual Basic Script as funções se utilizam como partes de expressões e os procedimentos como se fosse uma sentença independente.

A chamada a uma função, se for utilizada como parte de uma expressão deve ser chamada utilizando parênteses.

meuResultado = soma(1,2)

Se não se utiliza como parte de uma expressão, não tem porquê utilizar os parênteses, porém, o resultado da função (o que devolve) se perderá.

soma 1,2

Call

É uma chamada a uma sub-rotina, utilizada para transferir o fluxo da aplicação para uma sub-rotina. É necessário utilizar parêntesis quando se utiliza. Ademais, se se utiliza com uma função se perderá o resultado que devolva.

call soma(1,2)

Saída de uma sub-rotina

Podemos sair de um procedimento ou função em qualquer momento, independentemente de que a função tenha terminado ou não. O enunciado para escapar de uma função é EXIT, que se pode utilizar em qualquer lugar do procedimento ou função. A palavra exit deve ir acompanhada do tipo de sub-rotina da que se deseja sair, sendo assim, se deverá utilizar exit function ou então, exit sub.

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ © Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.

25

Page 26: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

Artigo por Miguel Angel Alvarez - Tradução de JML

Imprimir uma página sem ver o diálogo de impressãoNeste artigo, eminentemente prático, veremos como imprimir uma página web sem que se peça confirmação ao usuário e sem visualizar a janela prévia de impressão. Neste caso, logicamente, a impressão se realizaria na impressora configurada como pré-determinada no sistema cliente e com as opções definidas por padrão para essa impressora.

É um script na linguagem VBScript, que como provavelmente saibamos só será compatível com Internet Explorer. Se alguém souber como pode ser feito isso com Javascript (se é que isso é possível), para que seja compatível com todos os navegadores, por favor, peço que inclua um comentário ao artigo para compartilhar a informação.

O código 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 Impressão Print

on error resume next call IEWB.ExecWB (OLECMDID_PRINT, -1)

if err.number <> 0 then alert "Não 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 página que será impressa, clicando no link abaixo, sem pedir confirmação ao usuário.

<a href="javascript:Print ();">Imprimir</a>

</body> </html>

O exemplo pode ser visto em funcionamento em uma página 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 têm copyright dos autores. Não reproduzir sem autorização.

26

Page 27: Tutorial Visual Basic Script

Manuais e recursos para desenvolvimento webwww.criarweb.com

Artigo por Darwin Manuel Díaz Garrampié

Manual Tutorial de Visual Basic Script: http://www.criarweb.com/visual_basic/ © Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.

27