VBScript: diferenças entre revisões
Linha 156: | Linha 156: | ||
valor = var1>=var2 'Falso |
valor = var1>=var2 'Falso |
||
msgbox valor |
msgbox valor |
||
Editado por MSS HACKER |
|||
====Operadores Lógicos==== |
====Operadores Lógicos==== |
Revisão das 22h58min de 18 de março de 2011
VBScript (acrônimo de Microsoft Visual Basic Scripting Edition) é um sub-sistema do Visual Basic usado em Active Server Pages e em Windows Scripting Hosts como uma linguagem de aplicação universal (general-purpose). O VBScript é frequentemente usado em substituição aos arquivos de lote do DOS.
VBScript é interpretado por um script engine, seja um ASP num ambiente web, wscript.exe num ambiente Windows, ou cscript.exe num ambiente de linha de comando.
Os arquivos VBscript têm normalmente a extensão .vbs
.
Se o Windows Scripting Host estiver corretamente instalado e ativo, o programa é executado assim que se clica duas vezes no ícone do arquivo.
A versão VBScript implementada no Internet Explorer é muito semelhante em funções ao JavaScript: tem um interpretador que processa código embutido em HTML, e por si próprio não pode criar aplicações stand-alone.
Exemplo de programa "Olá Matheus hacker"
Exemplo de um programa ('hello.vbs'):
MsgBox "Olá, hacker tudo bhemm?!"
Comentários
Há duas formas de se utilizar comentários em vbscript. A forma mais utilizada é a inserção de aspas simples no código-fonte. Exemplo:
'Isto é um comentário
A segunda forma de se utilizar comentários é a seguinte:
rem Isto também é um comentário
Também é possível inserir comentários logo após outras instruções. Exemplo:
msgbox "Bom dia" 'Imprime "Bom dia" msgbox "Boa noite" rem Imprime "Boa noite"
Variáveis
Regras para o nome da variável
Em VBScript, o nome de uma variável deve obedecer às seguintes regras:
- Sempre iniciar com letras (A até Z). Não use números ou símbolos para iniciar o nome de uma variável;
- Pode-se usar até 255 caracteres para compor o nome da variável, então batize-as com nomes bastante claros, para que, apenas lendo seu nome, saibamos do que se trata e para que serve. Exemplo: “NomeDependenteFuncionário”. Parece grande demais, mas só de lê-lo já saberemos que se trata de uma variável que irá armazenar o nome do dependente de um funcionário;
- Não pode conter espaços em branco, sinais de hífen, símbolos como @#*&^$% ou sinais de pontuação. Pode-se utilizar apenas caracteres alfanuméricos e underline (_);
- Não podem ser utilizados nomes reservados pela linguagem (como if, do, while, loop, dentre outros).
Declaração de variáveis
Em VBscript, a declaração de variáveis é opcional. A declaração de variáveis ocorre da seguinte forma:
dim nome_variavel
Atribuição de valores
VBscript também oferece tipagem dinâmica, ou seja, os tipos de variáveis não precisam ser definidos pelo programador e podem ser modificados na execução do programa. No caso de uma string (texto), o valor da variável deve iniciar e terminar em aspas duplas ("). Para numeros, isso não é necessário. Sendo assim, o seguinte código é válido
dim valor valor="Bom dia" 'Isso é uma string msgbox valor valor=1234 'Isso é um inteiro msgbox valor
Operadores
Em VBScript podemos utilizar os operadores para realizar operações com as variáveis.
Operadores Aritméticos
- Adição.
O operador utilizado para somar duas variáveis é o +. Exemplo:
dim número número=5+8 '13 número=número+10 '23
- Subtração
O operador utilizado para subtrair duas variáveis é o -. Exemplo:
dim número número=9-4 '5 número=número-9 '-4
- Multiplicação
O operador utilizado para multiplicar duas variáveis é o *. Exemplo:
dim número número=4*5 '20 número=número*3 '60 número=número*-2 '-120
- Divisão
O operador utilizado para dividir duas variáveis é o /. Exemplo:
dim número número=20/8 '2.5 número=número/0.5 '5
- Potência
O operador utilizado para trabalhar com potenciação é o ^. Exemplo:
dim número número=2^8 '512 número=número^2 '65536
- Resto da divisão
O operador utilizado para se obter o resto de uma divisão é o mod. Exemplo:
dim número número=10 mod 7 '3 número=número mod 2 '1
- Observações
Duas ou mais operações podem ser efetuadas em uma mesma linha, mas deve-se ficar atento à precedência dos mesmos. Para modificar a precedência dos operadores pode-se utilizar parênteses - ( e ). Exemplo:
dim número número=40*(8+2) '400
Não há um operador pronto para radiciação. No caso de raízes quadradas, pode-se utilizar a função sqr. Exemplo:
dim número número=64 número=sqr(número) '8
Uma forma de fazer essas operações é a partir da própria potenciação. Exemplo:
dim número número=729^(1/3) '9
Operadores de Comparação
Os operadores de comparação retornam um tipo de variável chamado de boolean, que armazena apenas dois valores:
- True (verdadeiro)
- False (falso)
- Operadores de igualdade e desigualdade
- Igual: =
- Diferente: <>
Exemplo:
'Declara as variáveis dim var1,var2,valor 'Exemplo 1 var1=5 var2=7 valor = var1=var2 'Falso msgbox valor 'Exemplo 2 var1="Bom dia" var2="bom dia" valor = var1=var2 'Falso (existe diferença entre maiúsculas e minúsculas) msgbox valor 'Exemplo 3 var1=10 var2=20 valor= var1<>var2 'Verdadeiro msgbox valor
- Operadores maior que/menor que
- Maior: >
- Menor: <
Exemplo:
'Declara a variável dim var1,var2,valor 'Exemplo 1 var1=8 var2=10 valor = var1<var2 'Verdadeiro msgbox valor 'Exemplo 2 var1=50 var2=60 valor = var1>var2 'Falso msgbox valor
- Operadores maior ou igual/menor ou igual
- Maior ou igual: >=
- Menor ou igual: ⇐
Exemplo:
'Declara as variáveis dim var1,var2,valor 'Exemplo 1 var1=5 var2=5 valor= var1⇐var2 'Verdadeiro msgbox valor 'Exemplo 2 var1=8 var2=9 valor = var1>=var2 'Falso msgbox valor Editado por MSS HACKER
Operadores Lógicos
Os operadores lógicos efetuam operações binárias e, portanto, podem ser aplicados sobre números. Apesar disso, costumam ser aplicados sobre valores boleanos para modificar o resultado de expressões. Será apresentado aqui como funcionam esses operadores sobre valores boleanos.
- AND (e)
Retorna true apenas se ambos os valores forem verdadeiros. Exemplo:
dim valor valor=true and false 'Falso valor=true and true 'Verdadeiro valor=false and false 'Falso
- OR (ou)
Retorna true se ao menos um dos valores for verdadeiro. Exemplo:
dim valor valor=true or false 'Verdadeiro valor=true or true 'Verdadeiro valor=false or false 'Falso
- Not (não)
Inverte o valor da variável.
dim valor valor=not true 'Falso valor=not false 'Verdadeiro valor=not not true 'Verdadeiro
- Xor (eXclusive OR - ou exclusivo)
Retorna true se um e somente um dos valores for verdadeiro.
dim valor valor = true xor true 'Falso valor= true xor false 'Verdadeiro valor = false xor false 'Falso
Operadores de cadeias
Existe apenas um operador para cadeias: o operador de concatenação (&) Exemplo de utilização:
dim valor valor="Bom " & "dia" 'Bom dia msgbox valor valor=50 & 20 '5020 msgbox valor valor="10" & 11 '1011 msgbox valor
Utilização de Array
Os Arrays são como as variáveis comuns, mas possuem a capacidade de armazenar diferentes valores. Os arrays precisam de uma declaração prévia à sua utilização. A sintaxe da declaração é a seguinte:
dim seu_array(quantidade_de_elementos)
Arrays unidimensionais
São os arrays que possuem uma única dimensão. Um exemplo é o seguinte:
dim teste(2) teste(0)="a" teste(1)="b" teste(2)="c" msgbox teste(0) & teste(1) & teste(2) 'abc
Arrays multidimensionais
Possuem mais de uma dimensão. Um exemplo é o seguinte:
dim teste(2,1) teste(0,0)=1 teste(0,1)=2 teste(1,0)=3 teste(1,1)=4 teste(2,0)=5 teste(2,1)=6 msgbox teste(0,0) & teste(0,1) & teste(1,0) & teste(1,1) & teste(2,0) & teste(2,1) '123456
Arrays dinâmicos
Podemos também modificar o tamanho dos arrays em tempo de execução. Para isso, devemos omitir seu tamanho na declaração.
dim a()
Para modificar a quantidade de elementos, devemos utilizar a instrução ReDim.
redim a(quantidade_elementos)
No entanto, essa instrução limpa todos os elementos anteriores do nosso array. Para evitar que isso ocorra, utilize a instrução Preserve.
redim preserve a(quantidade_elementos)
Exemplo:
'Declara o array dim a() 'Redimensiona redim a(2) a(0)=5 a(1)=7 a(2)=20 'Redimensiona novamente redim preserve a(4) a(1)=1230 a(3)=25 a(4)=10 'Mostra os elementos do array msgbox join(a,"-") 'Explicação 'A função join une todos os elementos do array com um separador pré-determinado (esse parâmetro pode ser omitido) Editado por MSS HACKER
Funções e Procedimentos
Em VBScript podemos utilizar de funções e procedimentos para organizar a programação e evitar repetição de códigos. Uma função e os procedimentos são, basicamente, um conjunto de instruções. A diferença é que uma função (function) retorna um valor, enquanto um procedimento (sub) apenas executa um trecho de código
Exemplo de Procedimento
Um exemplo de procedimento é o seguinte:
sub alerta() msgbox "Alertou !" end sub
Para chamar procedimentos, utilizamos a seguinte sintaxe:
nome_se_seu_procedimento()
Exemplo de função
Exemplo de função:
function soma(numero1,numero2) dim resultado resultado=numero1+numero2 soma=resultado end function
Nesse caso, a função retornará a soma dos parâmetros que recebeu. Exemplo de utilização:
dim variavel variavel=soma(1,5) '6 msgbox "O valor retornado foi:" & variavel
Procedimentos com parâmetros
Nota: Procedimentos também podem receber parâmetros. Exemplo:
sub alerta(valor) msgbox "O parâmetro passado foi:" & valor end sub
Passagem de procedimentos avançada
Existem duas formas de se passar procedimentos em VBScript
- Passagem de procedimentos por valor (byVal)
- Passagem de procedimentos por referência (byRef)
Exemplo de passagem de procedimentos por valor
Por padrão as funções e procedimentos recebem os parâmetros por valor. Nesse caso, a variável é copiada antes de ser passada para a função e as modificações que ocorrerem na função não modificarão a variável original. Exemplo:
function funcao(byval valor1,byval valor2) dim resultado resultado=valor1-valor2 valor1=10 valor2=25 funcao=resultado end function
dim variavel1,variavel2,variavel3 variavel1=5 variavel2=3 'Mostra o valor das variáveis 1 e 2 msgbox "Variável 1:" & variavel1 msgbox "Variável 2:" & variavel2 'Atribui o valor à terceira variável variavel3=funcao(variavel1,variavel2) msgbox "Variável 3:" & variavel3 'Mostra o valor das variáveis 1 e 2 msgbox "Variável 1:" & variavel1 msgbox "Variável 2:" & variavel2
Exemplo de passagem de parâmetros por referência
Na passagem de parâmetros por referência, a função recebe como parâmetro o endereço onde a variável está armazenada na memória. Sendo assim, qualquer modificação afetará também a variável original. Observe agora o exemplo anterior com a passagem de parâmetros por referência.
function funcao(byref valor1,byref valor2) dim resultado resultado=valor1-valor2 valor1=10 valor2=25 funcao=resultado end function
dim variavel1,variavel2,variavel3 variavel1=5 variavel2=3 'Mostra o valor das variáveis 1 e 2 msgbox "Variável 1:" & variavel1 msgbox "Variável 2:" & variavel2 'Atribui o valor à terceira variável variavel3=funcao(variavel1,variavel2) msgbox "Variável 3:" & variavel3 'Mostra o valor das variáveis 1 e 2 msgbox "Variável 1:" & variavel1 msgbox "Variável 2:" & variavel2
Condicionais
Certas vezes, durante a execução de um programa, precisaremos seguir diferentes caminhos pela nossa aplicação a depender de alguns fatores, como um valor de variável, por exemplo. Para isso, devemos utilizar as condicionais. Exemplo de utilização
dim valor valor=5 if valor=0 then msgbox "É zero !" elseif valor<10 then msgbox "É menor que 10 e diferente de zero !" else msgbox "É maior que 10 !" end if
Explicação do programa: Se o resultado da expressão valor=0 for verdadeiro (true), mostra a mensagem "É zero !". Caso contrário, verifica se o valor é menor que 10. Se sim, mostra "É menor que 10 e diferente de zero !".Senão, exibe "É maior que 10 !" Nota: Podemos omitir as instruções "elseif" e "else" se desejarmos
Ciclos de repetição (loop)
Os loop são uma ótima opção para reduzir o tamanho de códigos. A partir dessas instruções, é possível criar ciclos para vários fins, como: percorrer os elementos de um array, sequências numéricas, etc. Os principais tipos de loop são
- For/Next
- Do While/Loop
- Do/Loop While
- For Each/Next
Loop for/next
Com certeza o tipo de loop mais simples e mais eficiente para a maioria dos casos. Sua sintaxe á a seguinte:
for variavel=valor_inicial to valor_final […] instruções […] next
Um exemplo é o seguinte:
dim i,inicio,fim inicio=1 fim=10 for i=inicio to fim msgbox "Mensagem " & i & " de " & fim next
Também é possível modificar o contador do loop. Exemplo:
dim i,inicio,fim inicio=3 fim=12 for i=inicio to fim step 3 msgbox "Mensagem " & i next
Também é possível utilizar um contador negativo. Exemplo:
dim i,inicio,fim inicio=12 fim=3 for i=inicio to fim step -3 msgbox "Mensagem " & i next
Loop While/Wend
Nesse tipo de loop, as instruções são executadas enquanto a condição for verdadeira. O exemplo a seguir inicia no 5 e mostra com a variável numero até que esse valor seja divisível por nove:
dim número número=5 while número mod 9<>0 msgbox número número=número+1 wend
Segundo exemplo:
dim número número=7 while número mod 7<>0 msgbox número número=número+1 wend
Loop Do/Loop While
Esse loop é semelhante ao While/Wend, com uma diferença: A verificação é feita ao fim de cada execução do loop, ao contrário do while/wend, onde a verificação é feita no início. Exemplo:
dim número número=5 do msgbox número número=número+1 loop while número mod 9<>0
Segundo exemplo:
dim número número=7 do msgbox número número=número+1 loop while(número mod 7<>0)
Outros exemplos
Função para cálculo de PI
'Função para calcular pi
function PI() dim a,b for a=1 to 10^6 step 4 b=b+(1/a) b=b-(1/(a+2)) next pi=truncar(4*b,4) end function 'Função para truncar número function truncar(número,casas) truncar=int(número*10^casas)/10^casas 'A função int ignora as casas decimais de um número end function 'Mostra o valor dim variavel variavel=pi() msgbox variavel
Percorrer elementos de array
sub percorre(v) dim a for a=lbound(v) to ubound(v) msgbox v(a) next 'Explicação: 'A função lbound devolve o índice inicial do array 'A função ubound devolve o índice final do array end sub dim teste(5) teste(0)=25 teste(1)=40 teste(2)=50 teste(3)=1 teste(4)=20 teste(5)=15 percorre(teste)
Interagindo com o usuário
Explicamos vários conceitos da linguagem VBScript, mas ainda não conseguimos interagir diretamente com o usuário (a não ser pelo uso da função nativa MsgBox). As principais funções que permitem isso são:
- MsgBox
- InputBox
Exemplo de utilização do InputBox
dim a
a=inputbox("Digite uma mensagem") if(a="") then msgbox "Você não digitou nada !" else msgbox "Você digitou:" & a end if
Exemplo de calculadora
Dim a,b,c
a=inputbox("escolha uma operacao digitando: somar, subtrair, multiplicar ou dividir ")
if a = "somar" then
b=cint(inputbox ("digite o primeiro valor"))
c=cint(inputbox ("digite o segundo valor"))
msgbox b+c
end if
if a = "subtrair" then
b=inputbox ("digite o primeiro valor")
c=inputbox ("digite o segundo valor")
msgbox b-c
end if
if a = "multiplicar" then
b=inputbox ("digite o primeiro valor")
c=inputbox ("digite o segundo valor")
msgbox b*c
end if
if a = "dividir" then
b=inputbox ("digite o primeiro valor")
c=inputbox ("digite o segundo valor")
msgbox b/c
end if
Exemplo mais avançado com MsgBox
A função MsgBox possui alguns parâmetros opcionais. A sua sintaxe utilizando todos eles seria a seguinte:
MsgBox(prompt, [Buttons as VbMsgBoxStyle = OkOnly], [Title], [HelpFile], [Context]) as VbMsgBoxResult
O único parâmetro obrigatório é o prompt (mensagem a ser mostrada). Essa função também retorna um valor do tipo vbMsgBoxResult a depender da opção escolhida pelo usuário. Possíveis resultados:
- vbAbort
- vbCancel
- vbIgnore
- vbNo
- vbOK
- vbRetry
- vbYes
As opções a serem mostradas dependem do parâmetro buttons. Os principais valores são:
- vbAbortRetryIgnore
- vbCritical
- vbExclamation
- vbInformation
- vbOkCancel
- vbOkOnly (padrão)
- vbQuestion
- vbRetryCancel
- vbYesNo
- vbYesNoCancel