Variáveis Escalar e de Array Em alguns casos você apenas necessita designar um único valor para uma variável. Uma variável contendo um único valor é chamada de escalar. Entretanto é conveniente designar mais de um valor relacionado apenas a uma variável. Neste caso você pode criar uma variável que contenha uma série de valores. Essa variável é chamada de array. A declaração de uma variável de array é feita dando-se um nome seguindo os parêntesis ( ). No seguinte exemplo, é declarado um array contendo 11 elementos: Dim A(10) Embora o número mostrado nos parêntesis seja 10, todos os arrays no VBScript são iniciados com base zero, assim este array realmente contém 11 elementos. Você referencia cada dado de um elemento de array usando um índice. Começando 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:... Variavel = A(8)... Arrays não são limitados para uma única dimensão. Você pode ter 60 dimensões, embora, na maioria dos casos, não é prático manipular variáveis com mais do que duas dimensões. As dimensões são declaradas juntamente com a declaração da variável, sendo cada dimensão designada pelo valor de seu tamanho e as dimensões separadas por vírgula dentro de um parêntesis. No seguinte exemplo, a variável MyTable possui duas dimensões consistindo de 6 linhas e 11 colunas: Dim MyTable(5, 10) Em um array de duas dimensões, o primeiro número será sempre o número de linhas; e o segundo número, o número de colunas. Você pode também declarar um array cujo tamanho é alterado durante o processamento do script. Este array é chamado de array dinâmico. O array é inicialmente declarado dentro de um procedimento usando a declaração Dim ou ReDim. Entretanto, para um array dinâmico, nenhum tamanho ou dimensão é colocado no interior dos parêntesis. Por exemplo: Dim MyArray() ReDim AnotherArray()
Para usar um array dinâmico, você deve posteriormente usar a declaração ReDim para determinar o número de dimensões e o tamanho de cada dimensão. No seguinte exemplo, ReDim atribui 25 ao tamanho inicial do array dinâmico. Com a declaração ReDim é feito um redimencionamento do array para 30. A palavra-chave Preserve é empregada para que o conteúdo atribuído anteriormente à variável não seja perdida. ReDim MyArray(25)... ReDim Preserve MyArray(30) Não há limite para o número de vezes que você pode redimensionar um array dinâmico, mas você deve saber que se o array for redimensionado com uma dimensão menor que a anterior, o conteúdo dos elementos eliminados serão perdidos.
Entrada e Saída de Dados InputBox e MsgBox O VBscript possui várias funções e ferramentas que permitem uma interação entre o script e o usuário. Duas das formas mais simples é o InputBox e o MsgBox. A sintaxe do InputBox é: InputBox(prompt[,título][,default][,posição x][,posição y][,arquivo de ajuda, contexto]) Tudo que está entre colchetes [] é opcional, ou seja, podem não ser colocados. Prompt é a mensagem que aparece na janela, título é o que vai na barra superior de identificação da caixa de diálogo, default é a resposta padrão para entrada de dados, posição x e posição y definem a posição horizontal e vertical, respectivamente, da caixa de diálogo (se omitido, a caixa é centralizada). Arquivo de ajuda e contexto é o nome do arquivo de ajuda associado e o número do tópico de ajuda. De maior interesse para o momento, são os três primeiro parâmetros. Considere o seguinte exemplo: Dim Nome, Sobrenome Nome = InputBox("Qual é o seu nome? ", "Primeira pergunta", "João") Sobrenome = InputBox("E o seu sobrenome? ",,"da Silva") Note que no segundo InputBox, não aparece um título, pois é um opcional que podemos ignorar. É imprescindível, no entanto, que as posições sejam mantidas, ou seja, para atribuir um valor ao default, que vem depois de título, eu precisei usar duas vírgulas. Repare que no preenchimento dos parâmetros do InputBox, eu usei as aspas. Isso é necessário para que o InputBox saiba que o que você está colocando deve ser escrita literalmente e não é uma variável. Por exemplo: Dim Pergunta, Resposta Pergunta = InputBox("Faça uma pergunta. ") Resposta = InputBox(Pergunta) Neste caso, como Pergunta é uma variável, não foi utilizado aspas. Note também que eu omiti os opcionais Título e Default. Embora não faça muito sentido, podemos utilizar o Inputbox como saída de dados. Por exemplo: Dim Nome Nome = InputBox("Qual o seu nome? ")
InputBox(Nome & ", não vá embora ainda, a aula não terminou! ") Note que o primeiro InputBox funciona como entrada de dados, ou seja, ele coleta o nome digitado pelo usuário e guarda na variável chamada Nome. No entanto, o segundo InputBox, usado como saída de dados, não guarda valor algum, sendo ignorado tudo o que for digitado pelo usuário. No caso da saída de dados, os opcionais não são aceitos. Para a saída de dados o MsgBox é mais utilizado. A sua sintaxe como saída de dados é: MsgBox(prompt) O MsgBox também pode ser utilizado como entrada de dados, onde uma variável guarda qual o botão que foi pressionado pelo usuário. Neste caso, a sintaxe do MsgBox é: MsgBox(prompt[,buttons][,título][,arquivo de ajuda,contexto]) Além do prompt, temos ainda as opções buttons que determina quais os botões aparecem (o botão OK é o padrão), título, arquivo de ajuda e contexto, esses três últimos já descritos para o InputBox. Os buttons são disponibilizados de acordo com um código padrão do VBscript. Os principais são: 0 = vbokonly - OK 1 = vbokcancel - OK e Cancelar 2 = vbabortretryignore - Abortar, Tentar Novamente e Ignorar 3 = vbyesnocancel Sim, Não e Cancelar 4 = vbyesno Sim e Não 5 = vbretrycancel Tentar Novamente e Cancelar 16 = vbcritical Ícone de mensagem crítica 32 = vbquestion Ícone de pergunta 48 = vbexclamation Ícone mensagem de aviso 64 = vbinformation Ícone mensagem de informação A informação de qual botão foi pressionado é guardado em uma variável, de acordo com o seguinte padrão do VBscript: 1 = vbok - OK 2 = vbcancel - Cancelar 3 = vbabort - Abortar 4 = vbretry Tentar Novamente 5 = vbignore - Ignorar
6 = vbyes - Sim 7 = vbno Não Por exemplo, considere o programa. Resposta = MsgBox("Você é da turma de redes de computadores? ", 4) If Resposta =6 Then MsgBox("Ok.") End If If Resposta =7 Then MsgBox("Então você está na aula errada.") End If O programa acima pode ser reescrito, utilizando as constantes padronizadas do VBscript: Resposta = MsgBox("Você é da turma de redes de computadores? ", vbyesno) If Resposta =vbyes Then MsgBox("Ok.") End If If Resposta =vbno Then MsgBox("Então você está na aula errada.") End If O que torna a leitura do script mais intuitiva.
Condicional e Estruturas de Repetição Outras alternativas Somente com o If...Then...Else...End if e com o For... Next, é possível resolver boa parte dos problemas lógicos com as quais um computador consegue lidar. No entanto, por facilidade ou clareza, outras alternativas podem ser utilizadas. Nesse pequeno texto, serão colocadas as sintaxes dessas alternativas e um exemplo de aplicação. Select... Case Select Case Variável Case valor Case valor... Case Else End Select Exemplo: Dim Periodo Periodo = InputBox("Em que período você estuda?") Select Case Periodo Case "Manhã" MsgBox("Bom dia!") Case "Tarde" MsgBox("Boa tarde! ") Case "Noite" MsgBox(Boa noite!") Case Else MsgBox("Oi, tudo bem? ") End Select Do While condição Loop Do While Loop Exemplo: Resposta = vbno
Do While Resposta = vbno Resposta = MsgBox("Você me empresta dez reais?",vbyesno) Loop Do Until... Loop Do Until condição Loop ou Do Loop Until condição Exemplo: Resposta = vbno Do Until Resposta = vbyes Resposta = MsgBox("Você me empresta dez reais?",vbyesno) Loop While Wend While condição Wend Exemplo: Resposta = vbno While Resposta = vbno Resposta = MsgBox("Você me empresta dez reais?",vbyesno) Wend
Para praticar (1) Faça um programa em que o usuário dê entrada em dois números. A seguir, solicite que o usuário diga qual operação quer executar com os dois números. Se o símbolo for * faça uma multiplicação, se for / faça uma divisão, se for + faça uma adição e se for - faça uma subtração. Caso o usuário não digite nenhum dos casos acima, apresente uma mensagem de erro perguntando se o usuário quer tentar de novo. Em caso afirmativo retorne para a solicitação da operação. (2) Faça um jogo de sim ou não, para tentar descobrir o número que o usuário pensou. (3) Faça um programa que apresente em ordem crescente 20 números fornecidos pelo usuário.