Operadores do VBScript (aritméticos e de concatenação)

4.11.2007

O VBScript possui uma vasta gama de operadores – aritméticos, de concatenação, de comparação e lógicos.

Os operadores aritméticos básicos são os mesmos para todas as linguagens estudadas por nós durante o curso:

Soma (+)

Dim a, b, c
a = 11
b = 4
'Soma
c = a + b
Response.Write(c)
'Resultado: 15

Subtração (-)

'Subtração
c = a - b
'Resultado: 7
Response.Write(c)

Multiplicação (*)

'Multiplicação
c = a * b
'Resultado: 44
Response.Write(c)

Divisão (/)

'Divisão
c = a / b
'Resultado: 2,75
Response.Write(c)

Os próximos operadores aritméticos não são tão triviais assim…

Divisão inteira (\) – retorna a porção inteira do resultado

'Divisão inteira
c = a \ b
'Resultado: 2
Response.Write(c)

Resto (mod)

'Resto
c = a mod b
'Resultado: 3
Response.Write(c)

Exponenciação (^)

'Exponenciação
c = a ^ b
'Resultado: 14641
Response.Write(c)

Para concatenar strings, podem ser utilizados dois operadores: o “+” (mais), que assim como no Javascript, pode ser usado para somar e para concatenar e o “&” (“e” comercial). Este último é usado exclusivamente para concatenar – concatenando até números. Para evitar confusões, recomendo o uso do “&” para concatenação.

Concatenação (& ou +)

'Concatenação
a = "Micro"
b = "camp"
c = a & b
'Resultado: Microcamp
Response.Write(c)

Detecção e conversão de subtipos em VBScript

4.11.2007

Veja como detectar o subtipo de uma variável no VBScript e avaliar se seu valor pode ser convertido ou não em um outro subtipo.

Na última aula, neste link, conhecemos os subtipos de valores do VBScript. Veremos agora como detectar o subtipo de uma variável, bem como converter seu valor de um subtipo para outro.

Valores numéricos

A função IsNumeric() retorna um valor lógico, indicando se o valor fornecido (entre parênteses) é um número ou pode ser convertido em tal.

Exemplos:

Dim valor
' valor recebe número inteiro
valor = 35
Response.Write(valor)
Response.Write(" é numérico? -> ")
' IsNumeric informa se a variável contém um número
Response.Write(IsNumeric(valor))
Response.Write("<br />")

' valor recebe string
valor = "abc"
Response.Write(valor)
Response.Write(" é numérico? -> ")
Response.Write(IsNumeric(valor))
Response.Write("<br />")

' valor recebe string com números
valor = "123"
Response.Write(valor)
Response.Write(" é numérico? -> ")
Response.Write(IsNumeric(valor))
Response.Write("<br />")

' valor recebe data (a data é inserida entre tralhas (cerquilhas, jogos-da-velha, etc) no formato mês/dia/ano)
valor = #11/24/2007#
Response.Write(valor)
Response.Write(" é numérico? -> ")
Response.Write(IsNumeric(valor))
Response.Write("<br />")

' valor recebe booleano
valor = True
Response.Write(valor)
Response.Write(" é numérico? -> ")
Response.Write(IsNumeric(valor))
Response.Write("<br />")

Com os exemplos acima, podemos perceber quais subtipos são considerados numéricos pelo VBScript. Estes valores considerados numéricos podem ser convertidos em um número propriamente dito usando uma das seguintes funções:

  • CByte() – converte para um inteiro de subtipo byte;
  • CInt() – converte para um inteiro de subtipo integer;
  • CLng() – converte para um inteiro de subtipo long;
  • CSng() – converte para um real de subtipo single;
  • CDbl() – converte para um real de subtipo double.

A diferença entre os subtipos está na capacidade de armazenamento (por exemplo, o byte só suporta números entre 0 e 255) – lembrando que isso já foi visto na aula anterior.

Exemplos de conversões para valores numéricos (as conversões que resultam em estouro devem ser testadas e depois comentadas, para que o script não seja interrompido): Leia o resto deste post »


Subtipos de dados do VBScript

4.11.2007

Nesta aula, vimos que qualquer variável declarada no VBScript possui um só tipo: Variant. Portanto, para armazenar números (inteiros ou não), strings, valores lógicos (booleanos), ou quaisquer outros valores, não é necessário o uso de variáveis de tipo específico.

Na prática, uma mesma variável pode ser utilizada para armazenar valores diversos, como no exemplo a seguir:

Dim valor
'valor recebe número inteiro
valor = 10
Response.Write(valor)
Response.Write("<br>")
'valor recebe número real
valor = 25.3
Response.Write(valor)
Response.Write("<br>")
'valor recebe string
valor = "Palavra"
Response.Write(valor)
Response.Write("<br>")
'valor recebe booleano
valor = True
Response.Write(valor)
Response.Write("<br>")
'valor recebe data no formato mês/dia/ano
valor = #11/1/2007#
Response.Write(valor)
Response.Write("<br>")
'valor recebe hora
valor = #20:44:15#
Response.Write(valor)
Response.Write("<br>")

Obs.: Percebam que, ao contrário do PHP (onde datas são introduzidas como números ou strings), no VBScript podemos atribuir diretamente uma data e/ou hora a uma variável, devendo o valor estar entre tralhas (jogo-da-velha). Internamente este valor é armazenado como um número.

A partir do valor atribuído a uma variável, é possível definir seu subtipo. Ou seja, embora uma variável não possua um tipo definido – sendo todas Variant – a depender do valor que ela armazena no momento, ela passa a pertencer a um subtipo. No código acima, a mesma variável – valor – recebeu valores diversos, o que resultou na constante mudança de seu subtipo.

Os subtipos em VBScript são os seguintes:

Subtipo Descrição
Empty O valor é zero para variáveis numéricas ou uma string de tamanho zero (“”), para variáveis de texto.
Null A variável não contém dados válidos.
Boolean Contém True (Verdadeiro) ou False (Falso).
Byte Contém um número inteiro de 0 a 255.
Integer Contém um número inteiro de -32.768 a 32.767.
Currency Contém um número de -922.337.203.685.477,5808 a 922.337.203.685.477,5807.
Long Contém um número inteiro de -2.147.483.648 a 2.147.483.647.
Single Contém um número de ponto flutuante de precisão simples na faixa de -3,402823E38 a -1,401298E-45 para valores negativos ou de 1,401298E-45 a 3,402823E38 para valores positivos.
Double Contém um número de ponto flutuante de precisão dupla na faixa de -1,79769313486232E308 a -4,94065645841247E-324 para valores negativos ou de 4,94065645841247E-324 a 1,79769313486232E308 para valores positivos.
Date (Time) Contém um número representando uma data entre 1º de janeiro de 100 a 31 de dezembro de 9999.
String Contém uma string de tamanho variável que pode conter até aproximadamente 2 bilhões de caracteres.
Object Contém um objeto.
Error Contém um código numérico de erro.

Nas próximas aulas, veremos funções que permitem identificar o atual subtipo de uma variável, bem como realizar conversões entre estes subtipos.