Apostila VBS
Apostila VBS
Apostila VBS
O que VBScript?
Um dos recursos mais interessantes do ActiveX a disponibilidade de scripting em diversas linguagens. Desenvolvedores de aplicativo adotaram o Visual Basic com braos abertos porque era fcil de gerar aplicativos para Windows rapidamente sem se preocupar com muitos dos detalhes da programao do Windows. A Microsoft espera que, ao oferecer VBScript sob a plataforma de servios de scripting do ActiveX impulsione o desenvolvimento na Web de forma semelhante. O VBScript lhe permite incluir lgica condicional sofisticada e processamento de evento em uma pgina da Web sem compilar coisa alguma. E, se voc j conhece o Visual Basic, o VBScript ser muito fcil. Se voc nunca viu o Visual Basic, no se preocupe, pois o VBScript semelhante a outras linguagens de programao, e voc aprender rapidamente. O Microsoft Visual Basic Scripting Edition, o mais novo membro da famlia da lnguagem de programao Visual Basic, traz scripting ativo para uma vasta variedade de ambientes, incluindo o scripting de cliente com o Microsoft Internet Explorer e o scripting de servidor com o Microsoft Internet Information Server.
ActiveX Scripting
O ActiveX Scripting oferece muito mais do que apenas uma linguagem de scripting para navegadores da Web. ActiveX uma plataforma para desenvolvimento de qualquer quantidade de linguagens de scripting para qualquer finalidade que os desenvolvedores da Web exijam. Usando os servios de scripting do ActiveX, uma linguagem de scripting pode ser implementada em qualquer plataforma. O ActiveX Scripting construdo a partir de dois componentes principais bsicos: Hosts de Scripting do ActiveX - Os aplicativos em que um scripting executado. Mecanismos de Scripting do ActiveX A linguagem em que o scripting escrito. O ActiveX Scripting pode ser hospedado em diversos aplicativos. O melhor exemplo de um host do ActiveX MSIE 3.0. MSIE 3.0 aceita o VBScript. Alm disso, o ActiveX Scripting oferece um ambiente para dar suporte ao scripting em servidores da Web, ferramentas de autoria da Internet ou outros aplicativos, em diversas linguagens de scripting.
1/12
A Tag <SCRIPT>
Os cdigo do VBScript so escritos dentro da tag <SCRIPT>. Por Exemplo, um procedimento para testar uma data de entrega pode aparecer como se segue: <SCRIPT LANGUAGE="VBScript"> <!-Function CanDeliver(Dt) CanDeliver = (CDate(Dt) - Now()) > 2 End Function --> </SCRIPT> Inicia e conclui com a tag <SCRIPT>. O atributo LANGUAGE indica a linguagem de scripting. Voc deve especificar a lnguagem porque os browsers podem usar outros tipos linguagens de scripting. Note que a funo CanDeliver embutida nas tags de comentrio (<!-- e -->). Isto previne browsers que no compreende a tag <SCRIPT> de exibir o cdigo. Voc pode incluir o Script na seo HEAD da pgina: <HTML> <HEAD> <TITLE>Place Your Order</TITLE> <SCRIPT LANGUAGE="VBScript"> <!-Function CanDeliver(Dt) CanDeliver = (CDate(Dt) - Now()) > 2 End Function --> </SCRIPT> </HEAD> <BODY> ... Voc pode usar blocos de SCRIPT em qualquer parte de uma pgina HTML. Voc pode coloc-lo na seo BODY e ou HEAD. Entretanto, voc provavelmente desejar colocar todo o cdigo de scripting na seo HEAD, com o intuito de organiz-lo. Guardando seu cdigo na seo HEAD voc assegura que todo o cdigo est sendo lido e decodificado antes de qualquer chamadas da seo BODY da pgina HTML. Um exceo notvel para esta regra que voc pode desejar fornecer cdigo do inline scripting ao responder os eventos de objetos em seu formulrio. Por Exemplo, voc pode embutir cdigo do scripting para responder a um clique no boto em um formulrio: <HTML> <HEAD> <TITLE>Test Button Events</TITLE> </HEAD> <BODY> <FORM NAME="Form1"> <INPUT TYPE="Button" NAME="Button1" VALUE="Click"> <SCRIPT FOR="Button1" EVENT="onClick" LANGUAGE="VBScript"> MsgBox "Button Pressed!" </SCRIPT> </FORM> </BODY> </HTML> A maior parte de seu cdigo aparecer em procedimentos Sub ou Function, sendo executadas apenas quando forem chamadas. Entretanto, voc pode escrever cdigos em VBScript fora dos procedimentos, mas ainda dentro um bloco de SCRIPT. Este cdigo executado apenas uma vez, quando a pgina HTML for carregada. Isto permite a voc iniciar dados ou criar um dinamismo na forma de exibir sua pgina, enquanto ela carregada.
2/12
Subtipos Variant
Alm do tipo numrico ou string, uma Variant podem fazer distines sobre uma natureza especfica de informao numrica. Por Exemplo, voc pode ter informao numrica que representa uma data ou um tempo. Certamente, voc pode tambm ter uma variedade rica de informao numrica, essas categorias diferentes de informao que pode ser contida em uma Variant so chamadas subtipos. A seguinte tabela mostra os subtipos de dados que uma Variant pode conter: Subtipo Empty (Vazio) Null (Nulo) Boolean Byte Integer Currency Long Single Double Descrio Valor igual a 0 para variveis numricas ou ("") string de comprimento zero para variveis string. Variant contm intencionalmente nenhum valor vlido. Contm False (falso) ou True (Verdadeiro). Contm inteiro de 0 a 255. Contm inteiro de -32,768 a 32,767. 922,337,203,685,477.5808 a 922,337,203,685,477.5807. Contm inteiro de -2,147,483,648 a 2,147,483,647. 3.402823E38 a -1.401298E-45 para valores negativos; 1.401298E-45 a 3.402823E38 para valores positivos. Contm um nmero de dupla preciso em ponto flutuante variando de 1.79769313486232E308 a 4.94065645841247E-324 para valores negativos; 4.94065645841247E-324 a 1.79769313486232E308 para valores positivos. Contm um nmero que representa uma data entre 1 de Janeiro de 100 at 31 de Dezembro de 9999. Variveis alfanumricas, que podem ter um comprimento de 0 at aproximadamente 2 bilhes de caracteres. Qualquer referncia de Objeto. Contm um nmero de erro.
Voc pode usar funes de converso para converter dados de um subtipo para o outro. A funo VarType retorna informao sobre seus dados, e armazena dentro de uma Variant.
Variveis do VBScript
O que uma Varivel?
Uma varivel um nome conveniente para se referir a uma localizao de memria do computador, onde voc pode armazenar informaes de um programa sendo possvel alterar seu valor durante o processamento. Por exemplo, voc
3/12
pode criar uma varivel chamada ClickCount para armazenar o nmero de vezes que um usurio pressionou um objeto em uma pgina da Web. A forma com que a varivel armazenada na memria do computador sem importncia. O que importante que para alterar ou atribuir um valor para essa varivel voc deve referenci-la pelo seu nome. No VBScript, as variveis so sempre tipos de dados Variant.
Declarando Variveis
Voc declara variveis explicitamente em seu script usando a declarao Dim, a declarao Public, e a declarao Private. Por exemplo: Dim DegreesFahrenheit Voc pode declarar variveis mltiplas separando-as por vrgula. Por exemplo: Dim Top, Bottom, Left, Right Voc pode tambm declarar uma varivel implicitamente simplesmente usando seu nome no script. O que geralmente no uma boa prtica causando resultados inesperados no decorrer de seu script. Uma tima alternativa usar a declarao Option Explicit com a finalidade de forar todas as declaraes de variveis. A declarao Option Explicit deve ser a primeira declarao em seu script.
Restries de Nome
Os nomes de variveis seguem as regras padronizadas para serem identificadas pelo VBScript. Um nome de varivel: Deve ter o primeiro caracter do nome da varivel sendo uma letra. No pode conter vrgulas ou outros sinais grficos No deve exceder 255 caracteres. Deve ser nico no escopo em que foi declarado
4/12
mostrado entre parntesis acrecido de um Voc referencia cada dado de um elemento de array usando um ndice. Comeando com o zero e finalizando em 10, os dados podem ser atribuidos aos elementos de um array como se segue: A(0) = 256 A(1) = 324 A(2) = 100 . . . A(10) = 55 Os dados podem ser recuperados de qualquer elemento usando um ndice dentro do elemento de array. Por exemplo: . . . SomeVariable = A(8) . . . Arrays no so limitados para uma nica dimenso. Voc pode ter 60 dimenses, embora a maioria das pessoas no compreendem mais que trs ou quatro dimenses. Dimenses mltiplas so declaradas com nmeros relativos a sua dimenso, separados por vrgula entre parntesis. No seguinte exemplo, a varivel MyTable possui duas dimenses consistindo de 6 linhas e 11 colunas: Dim MyTable(5, 10) Em um array de duas dimenses, o primeiro nmero ser sempre o nmero de linhas; e o segundo nmero, o nmero de colunas. Voc pode tambm declarar um array cujo tamanho alterado durante o processamento do script. Este array chamado de array dinmico. O array inicialmente declarado dentro de um procedimento usando a declarao Dim ou ReDim. Entretanto, para um array dinmico, nenhum tamanho ou dimenso colocado no interior dos parntesis. Por exemplo: Dim MyArray() ReDim AnotherArray() Para usar um array dinmico, voc deve subseqentemente usar a declarao ReDim para determinar o nmero de dimenses e o tamanho de cada dimenso. No seguinte exemplo, ReDim atribue 25 ao tamanho inicial do array dinmico. Com a declarao ReDim feito um redimencionamento do array para 30, usando a palavra-chave Preserve para preservar o contedo do array. ReDim MyArray(25) . . . ReDim Preserve MyArray(30) No h limite para o nmero de vezes que voc pode redimensionar um array dinmico, mas voc deve saber que se o array for redimensionado com uma dimenso menor que a anterior, o contedo dos elementos eliminados sero perdidos.
Constantes do VBScript
O que uma Constante?
Uma constante um nome significativo que recebe um valor nmerico ou caracter. O VBScript define um nmero de constantes intrnsecas. Voc pode obter informao sobre essas constantes intrnsecas na Referncia da Linguagem VBScript.
Criando Constantes
Voc pode criar constantes definidas pelo usurio no VBScript usando a declarao Const. Usando a declarao Const, voc pode criar constantes strings ou numricas com nomes significativos que designam seus valores literais. Por exemplo: Const MinhaString = "Esta minha cadeia de caracter." Const MinhaIdade = 49 Note que a string literal cercada entre aspas(" "). As aspas so caminho bvio para diferenciar valores de string de valores numricos. Datas e valores do tempo so representados tendo o sinal (#) cercando o valor. Por Exemplo: Const UmaData = #8-23-97# Voc pode desejar adotar um esquema especfico para diferenciar constantes de variveis. Este procedimento evita durante a execuo do script, ocorrer um engano e usar constantes como variveis e vice-versa. Por exemplo, voc pode
5/12
usar prefixos "vb" ou "con" nos nomes de suas constantes, ou criar sua prpria nomeclatura. Diferenciando constantes de variveis, voc elimina a possibilidade de ocorrer um erro ao desenvolver scripts mais complexos.
Operadores do VBScript
O VBScript tem uma srie de operadores, incluindo operadores aritmticos, operadores de comparao, operadores de concatenao, e , operadores lgicos.
Precedncia de Operadores
Quando vrias operaes ocorrem em uma expresso, cada parte avaliada e resolvida em uma ordem predeterminada chamada precedncia do operador. Voc pode usar parntesis para alterar a ordem de precedncia e forar a avaliao de algumas partes de uma expresso. Operaes dentro de parntesis so sempre resolvidas primeiro independendo da ordem de resoluo dos operadores. Dentro dos parntesis, entretanto, a ordem de resoluo dos operadores mantida. Quando expresses contm operadores de mais de uma categoria, os operadores aritmticos so avaliados primeiros, depois os operadores de comparao, e os operadores lgicos so avaliados por ltimo. Todos os operadores de comparao tem precedncias iguais; estes, so avaliados da esquerda para direita. Os operadores Lgicos e Aritmticos so avaliados na seguinte ordem: Aritmticos Descrio Exponenciao Negao Unria Multiplicao Diviso Diviso inteira Comparao Smbolo Descrio ^ * / \ Igualdade Diferena Menor que Maior que Menor ou igual a Smbolo Descrio = <> < > <= Negao lgica E lgico Ou lgico Ou Exclusivo Equivalncia Lgica Implicao lgica Lgicos Smbolo Not And Or Xor Eqv
Mod +
>= Is
Imp
&
Quando ocorrer a multiplicao e a diviso juntamente em uma expresso, cada operao avaliada da esquerda para direita. Igualmente, quando ocorre a adio e a subtrao juntamente em uma expresso, cada operao avaliada em ordem da esquerda para direita. O operador de concatenao de string (&) no um operador aritmtico, mas por conveno tornou-se e na ordem de resoluo, ele est acima de todos os operadores de comparao. O operador Is um operador de comparao de objetos. Ele no compara objetos ou seus valores; ele apenas verifica e determina se duas referncias de objeto, referem-se ao mesmo objeto.
6/12
7/12
ElseIf value MsgBox ElseIf value Msgbox Else Msgbox End If End Sub
Voc pode adicionar muitas clusulas ElseIf dependendo da sua necessidade durante o fluxo do algortimo. Uso extenso das clusulas ElseIf freqentemente torna-se incmodo. Um melhor caminho para escolher entre vrias alternativas a declarao Select Case.
Realizando Loops
Usando Laos para repetir Cdigos
O Looping permite a voc executar uma seqncia de declaraes dependendo de uma condio. Alguns laos repetem as declaraes at uma condio ser Falsa; outros repetem declaraes at uma condio ser Verdadeira. H tambm laos que repetem declaraes num nmero especfico de vezes. As seguintes declaraes de looping so disponveis no VBScript: Do...Loop: Permanece no lao, enquanto ou at uma condio ser Verdadeira. While...Wend: Permanece no laos enquanto uma condio Verdadeira. For...Next: Usa um contador para executar as declaraes num nmero especfico de vezes. For Each...Next: Repete um grupo de declaraes para cada item de uma coleo ou cada elemento de um array.
8/12
Usando Do Loops
Voc pode usar a declarao Do...Loop para executar um bloco de declaraes num nmero indeterminado de vezes. As declaraes so repetidas enquanto a condio for Verdadeira ou at uma condio torna-se Verdadeira. Repetindo Declaraes Enquanto uma Condio Verdadeira Use a palvra-chave While para verificar a condio em uma declarao Do...Loop. Voc pode verificar a condio antes de entra no lao (como mostrado no exemplo ChkFirstWhile), ou voc pode verificar depois de ter entrado no lao no mnimo uma vez (como mostrado no exemplo ChkLastWhile). No procedimento ChkFirstWhile, se myNum recebe o valor igual a 9 em vez de 20, o cdigo no interior do lao nunca ser executado. No procedimento ChkLastWhile, o cdigo no interior do lao executado apenas uma vez porque a condio j Falsa. Sub ChkFirstWhile() Dim counter, myNum counter = 0 myNum = 20 Do While myNum > 10 myNum = myNum - 1 counter = counter + 1 Loop MsgBox "The loop made " & counter & " repetitions." End Sub Sub ChkLastWhile() Dim counter, myNum counter = 0 myNum = 9 Do myNum = myNum - 1 counter = counter + 1 Loop While myNum > 10 MsgBox "The loop made " & counter & " repetitions." End Sub Repetindo uma Declarao at uma Condio torna-se Verdadeira Voc pode usar a palavra-chave Until de duas maneiras para verificar uma condio da declarao Do...Loop. Voc pode verificar a condio antes de entrar no lao (como mostrado no exemplo ChkFirstUntil), ou voc pode verificar depois de ter entrado no lao no mnimo uma vez (como mostrado no exemplo ChkLastUntil). Enquanto a condio Falsa, o looping ocorre. Sub ChkFirstUntil() Dim counter, myNum counter = 0 myNum = 20 Do Until myNum = 10 myNum = myNum - 1 counter = counter + 1 Loop MsgBox "The loop made " & counter & " repetitions." End Sub Sub ChkLastUntil() Dim counter, myNum counter = 0 myNum = 1 Do myNum = myNum + 1 counter = counter + 1 Loop Until myNum = 10 MsgBox "The loop made " & counter & " repetitions." End Sub
9/12
Saindo do Interior de um lao Do...Loop Voc pode sair de um lao Do...Loop usando a declarao Exit Do Ocorrer casos em que voc desejar sair do lao em certas situaes. No seguinte exemplo, myNum designado um valor que cria um lao infinito. A declarao If...Then...Else verifica a condio, prevenindo a repetio infinita. Sub ExitExample() Dim counter, myNum counter = 0 myNum = 9 Do Until myNum = 10 myNum = myNum - 1 counter = counter + 1 If myNum < 10 Then Exit Do Loop MsgBox "The loop made " & counter & " repetitions." End Sub
Usando While...Wend
A declarao While...Wend fornecida no VBScript para familiarizar a linguagem. Entretanto, por falta de flexibilidade na declarao While...Wend, recomendado que voc use a declarao Do...Loop.
Usando For...Next
Voc pode usar a declarao For...Next para executar um bloco de declaraes num nmero especfico de vezes. usado uma varivel de contador cujo valor aumentado ou decrescido com cada repetio do lao. Por exemplo, o seguinte procedimento executa 50 vezes um chamado no procedimento MyProc. A declarao For especifica um contador, uma varivel x que recebe um valor inicial, precedida de uma palavra-chave To e depois de um valor final. A declarao Next incrementa a varivel contador de 1 unidade. Sub DoMyProc50Times() Dim x For x = 1 To 50 MyProc Next End Sub Usando a palavra-chave Step, voc pode incrementar ou decrementar a varivel contador pelo valor especificado na declarao Step. No seguinte exemplo, o contador uma varivel j incrementado de 2 unidades. Quando o lao terminado, a varivel total ter a soma de 2, 4, 6, 8, e 10. Sub TwosTotal() Dim j, total For j = 2 To 10 Step 2 total = total + j Next MsgBox "The total is " & total End Sub Para decrementar a varivel contador, deve-se atribuir um valor negativo para a declarao Step. Voc deve especificar um valor final que menor que o valor inicial. No seguinte exemplo, o contador a varivel myNum decrescido der 2 unidades. Quando o lao terminado, a varivel total ter a soma de 16, 14, 12, 10, 8, 6, 4, e 2. Sub NewTotal() Dim myNum, total For myNum = 16 To 2 Step -2 total = total + myNum Next MsgBox "The total is " & total End Sub Voc pode sair da declarao For...Next antes do contador alcanar seu valor final usando a declarao Exit For. Ocorrer casos em que voc desejar sair do lao em certas situaes.
10/12
VBScript Procedures
Tipos de Procedimentos
No VBScript h duas espcies de procedimentos; o procedimento Sub e o procedimento Function. Procedimentos Sub Um procedimento Sub uma srie de declaraes do VBScript, dentro das declaraes Sub e End Sub. Um procedimento Sub no retorna valor, mas voc pode tomar argumentos (constantes, variveis, ou expresses que so passados durante a chamada da Sub). Se um procedimento Sub no tem argumentos, sua declarao deve incluir um conjunto vazio de parntesis (). O seguinte procedimento Sub usa duas funes intrnsecas do VBScript, MsgBox e InputBox, para obter do usurio alguma informao. Depois exibe os resultados de um clculo baseado nas informaes. O clculo desempenhado em um procedimento Function criado usando o VBScript. O procedimento Function ser discutido a seguir. Sub ConvertTemp() temp = InputBox("Please enter the temperature in degrees F.", 1) MsgBox "The temperature is " & Celsius(temp) & " degrees C." End Sub
11/12
Procedimentos Function Um procedimento Function uma srie de declaraes do VBScript dentro das declaraes Function e End Function. Um procedimento Function parecido com um procedimento Sub, com a diferena de voc poder retornar um valor. Um procedimento Function pode tomar argumentos (constantes, variveis, ou expresses que so passadas pelo procedimento de chamada). Se um procedimento Function no tem argumentos, sua declarao deve incluir um conjunto vazio de parntesis. Uma Function retorna um valor que ser atribuido ao nome da funo no procedimento de chamada. O tipo do valor retornado por uma Function ser sempre Variant. No seguinte exemplo, a funo Celsius calcula a temperatura em graus Celsius a partir de graus Fahrenheit. Quando a funo chamada do procedimento Sub ConvertTemp, uma varivel contendo o valor do argumento passada funo. O resultado do clculo devolvido ao procedimento que chamou e exibido em uma caixa de mensagem. Sub ConvertTemp() temp = InputBox("Please enter the temperature in degrees F.", 1) MsgBox "The temperature is " & Celsius(temp) & " degrees C." End Sub Function Celsius(fDegrees) Celsius = (fDegrees - 32) * 5 / 9 End Function
12/12