Baixe o app para aproveitar ainda mais
Prévia do material em texto
102 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 Unidade III Unidade III 5 LINGUAGEM DE PROGRAMAÇÃO VBSCRIPT 5.1 Introdução O Visual Basic Script Language é uma das muitas possibilidades de linguagem script que rodam num servidor e, para o IIS (servidor web criado pela Microsoft para seus sistemas operacionais para servidores), ela é a linguagem default (padrão). Desenvolver aplicações utilizando esta linguagem não é difícil. A seguir, algumas características da linguagem: • é similar ao VBA (Visual Basic Application), linguagem criada para fornecer aos aplicativos outras funcionalidades e Visual Basic; • permite a manipulação de strings, datas e numéricos; • possibilita a utilização de todos os comandos do Visual Basic, porém não propicia a manipulação de banco de dados e acesso aos periféricos; • a manipulação do banco de dados é feita através do objeto ADO, o VBScript apenas cria instâncias deste objeto. A partir daí, podemos utilizar os métodos deste objeto para manipular os dados; • tem um mecanismo de comunicação com servidores de objetos COM, como o Microsoft Exchange Server, Microsoft Index Server, Database Servers. Baseada nas funcionalidades de programação do Visual Basic, é uma linguagem leve, que nativamente é executada pelo Internet Explorer e que pode ser realizada por outros browsers a partir de plug‑in. Observação Sendo uma linguagem baseada nos conceitos e aplicações do Visual Basic puro, o VB Script adota as mesmas definições para manipulação de dados, criação de estruturas para execução dos scripts e estruturas de decisão. 103 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 LINGUAGEM DE PROGRAMAÇÃO APLICADA 5.1.1 Princípios do VBScript 5.1.1.1 Criando uma página ASP Inicialmente, deve‑se ter em mente que alguma coisa tem que interpretar os códigos do VBScript. O responsável por esta interpretação é o IIS (Internet Information Server), por isso entendemos que o código deve ser interpretado no servidor, e não no cliente, que só terá o browser. Para que o código seja interpretado pelo servidor, é preciso seguir algumas instruções: Utilizando a tag <% %> Esta tag deve ser usada quando se pretende executar qualquer código VBScript no servidor. Entre <% e %> é possível ser escrito qualquer código em VBScript. Quando um script possuir HTML e código VBScript, o servidor saberá qual informação deverá ser retornada para o cliente (browser). Por exemplo: <% if Hour(Now) < 12 then %> Bom dia! <% else %> Boa tarde! <% end if %> No exemplo anterior, as linhas que estiverem entre a tag <% %> serão interpretadas pelo servidor IIS e dependendo da condição satisfeita, se a hora for menor que 12, será mostrado um HTML com “Bom dia! ”; se não, o HTML retornado pelo servidor conterá “Boa Tarde! ”. Para retornar valores de variáveis no HTML diretamente do script, deve ser utilizada a seguinte sintaxe: A data de hoje é <% = Date %>. Utilizando a tag <SCRIPT> Com esta tag também é possível criar scripts que rodam no servidor utilizando a sintaxe: <SCRIPT LANGUAGE = VBScript RUNAT=Server> </SCRIPT> É preciso especificar a linguagem script a ser utilizada e onde esta será interpretada. A partir disso, é só fazer a chamada de alguma parte do HTML. No caso anterior, o script que estiver entre a tag <SCRIPT> </SCRIPT> deve ser escrito na linguagem VBScript e será interpretado por um servidor IIS. Esta tag é muito utilizada para criar funções e sub‑rotinas. Por exemplo: 104 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 Unidade III <SCRIPT LANGUAGE=VBScript RUNAT=Server> Function RetornaData() RetornaData = Date End Function </SCRIPT> Esta função retornará a data do sistema no servidor. Para fazer a chamada desta função, será necessário utilizar as tags <% %>, como pode ser visto no exemplo a seguir: A data de hoje é <% = RetornaData() %> Outra alternativa disponível no IIS para retornar valores direto para o HTML, sem utilizar a chamada anterior, é usando o Response.Write: <SCRIPT LANGUAGE=VBScript RUNAT=Server> Function RetornaData() Response.Write “A data de hoje é “ & Date & “.” End Function </SCRIPT> Quando é feito um pedido ao servidor pela execução de um ASP, o servidor executa todas as funções declaradas no ASP. Então, pode‑se concluir que esta função também foi feita. Como o Response.Write retorna o conteúdo do texto diretamente para o HTML, será mostrado para o utilizador o texto definido. O próximo passo para a criação de uma página ASP é introduzir o código HTML. <HTML> <BODY> <% if Hour(Now) < 12 then %> <CENTER> Bom dia! </CENTER><BR> <% else %> <CENTER> Olá! </CENTER> <BR> <% end if %> <CENTER> A sua primeira página utilizando VBScript e HTML! </CENTER> </BODY> </HTML> Este código inteiro constitui uma página ASP, na qual se mesclou código em HTML e VBScript. O servidor saberá que o código entre <% %> será interpretado e não deve ser mostrado para o cliente, apenas o seu resultado. 105 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 LINGUAGEM DE PROGRAMAÇÃO APLICADA Lembrete Os arquivos com código VBScript devem ser nomeados com a extensão ASP, por exemplo: primeiro_programa.asp. Dessa forma, o IIS entenderá que o pedido foi feito a partir de uma página ASP. Se for utilizada a Tag <SCRITP> </SCRIPT>, o código VBScript e HTML ficará: <SCRIPT LANGUAGE=VBScript RUNAT=Server> Function RetornaData() RetornaData = Date End Function </SCRIPT> <HTML> <BODY> <CENTER><B>A data de hoje é <% = RetornaData() %>.</B></CENTER> </BODY> </HTML> Com o VBScript é possível criar rotinas que sejam executadas pelo cliente. Porém, dois aspectos devem ser observados quando decidimos programar sub‑rotinas e funções para rodar no browser: • no nosso caso, será necessário que o browser seja o Internet Explorer 4.0 ou superior; • a programação deve ser baseada nos eventos dos objetos do formulário e do próprio formulário. Por exemplo: ONCLICK, CHANGE, GOTFOCUS. A seguir um primeiro exemplo de script em uma página web. O objetivo desse 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> <p><input type=”button” name=”BOTAO1”value=”Vamos mudar o value!”></p> 106 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 Unidade III </form> </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. O HTML: <form NAME=RodarCli method=”POST”> <p><input type=”button” name=”BOTAO1” value=”Vamos mudar o value!”></p> </form> Nesta parte está sendo criado o botão. Para que a sub‑rotina seja executada, o botão deve ser criado num form, ser definido um nome para este objeto e o seu tipo deve ser button. Depois de definir o objeto que deve disparar a ação, é necessário programar a sub‑rotina: <script language=”VBScript”> SUB BOTAO1_ONCLICK() RodarCli.BOTAO1.Value = “Mudamos o Value!” END SUB </script> Esta sub‑rotina será executada pelo browser. Observe que não foi configurada a Tag <SCRIPT> com o parâmetro RUNAT. O evento que deve disparara ação será o ONCLICK, ou seja, quando clicarmos no botão, o código escrito será disparado. Lembrete Por estarmos analisando uma linguagem de script, todos os objetos visuais a serem utilizados serão criados em tempo de execução através de comandos da linguagem VB Script. Não faremos uso de ferramentas visuais que disponibilizam os objetos de forma gráfica. Para fazer a referência ao objeto do formulário, é necessário seguir a sintaxe que está na sequência: NomeFormulário.NomeObjeto.PropriedadeObjeto 107 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 LINGUAGEM DE PROGRAMAÇÃO APLICADA Por exemplo: RodarCli.BOTAO1.Value 5.1.1.2 Características do VBScript As linguagens de scripting têm uma série de características comuns que 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 o código. Observação O VBScript não é CASE Sensitive, ou seja, ele consegue interpretar os comandos independentemente de estarem escritos em letra maiúscula ou minúscula. • Variáveis As variáveis são espaços onde se armazenam os dados que utilizam os programas ou scripts. Em VBScript, as variáveis não se devem ser declaradas, ou seja, quando é necessária uma variável, ela é utilizada e pronto. Mesmo assim, caso se deseje declarar uma variável, utiliza‑se a palavra DIM. Não existem tipos: as variáveis não estão classificadas por tipos, isto quer dizer que podem ser salvar nelas igualmente números, letras ou outras coisas. Lembrete As variáveis só podem ser utilizadas ao longo de um código de programa caso tenham sido declaradas de forma correta, definindo‑se o nome e o seu tipo. Essa declaração pode ser feita em qualquer ponto do código, porém o ideal é que sejam declaradas no início para um melhor entendimento. • Quebras de linha As quebras de linha são muito importantes, pois 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. 108 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 Unidade III • Comentários Em VBScript, os comentários são colocados com uma aspas simples ‘. Isto serve para que tudo o que se encontre nessa linha depois das aspas simples seja ignorado pelo explorador. Na sequência, um simples script que serve de exemplo para tudo que foi dito anteriormente. No exemplo a seguir, são abertas umas janelinhas com mensagens (sentença msgbox), sendo as últimas 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 alerta 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> 5.2 Diferentes formas de executar scripts Agora que já foi abordado como incluir scripts nas suas páginas e alguns fundamentos da linguagem, serão vistos dois casos em que o Internet Explorer pode executar seus scripts. A seguir, será visto o 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 se quer 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. O segundo caso é útil quando se deseja 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 109 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 LINGUAGEM DE PROGRAMAÇÃO APLICADA em cima de um link etc. Quase qualquer coisa que o usuário pode realizar dentro da página tem um evento relacionado. Ao utilizar os eventos, pode‑se preparar algum efeito que seja visível somente quando o usuário realizar alguma ação dentro da página web. Será dado um exemplo para a compreenção das 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, e isso será feito de duas maneiras: enquanto o usuário carrega a página e quando ele apertar um botão. Na sequência, um exemplo de execução ao carregar a página. A execução de scripts tem início quando o usuário carrega a página. Esta é a forma mais simples e já foi vista anteriormente. <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 com os exemplos que já foram realizados. 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. A seguir, tem‑se um exemplo de execução como resposta a ação do usuário. Nele existe uma amostra do que o programador tem que fazer quando deseja 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> 110 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 Unidade III Este exemplo tem algumas informações novas que devem ser destacadas: 1. Cria‑se um botão com a etiqueta <INPUT>. 2. Acrescenta‑se 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 atributo language para especificar a linguagem em que está escrito o código script associado ao evento. 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. Saiba mais Como referência bibliográfica adicional sobre as linguagens de script, segue a indicação: COSTA, D. G. Administração de redes com scripts: bash script, python e VBScript. São Paulo: Brasport, 2007. 5.3 Variáveis em VBScript 5.3.1 Conceito e utilização Têm‑se como definição de variável tudo aquilo que é sujeito a variações, que é incerto, instável ou inconstante. E quando se fala de computadores, temos que ter em mente que o volume de informações a serem tratadas é grande e diversificado. Dessa forma, os dados a serem processados serão bastante variáveis. Como visto anteriormente, informações correspondentes a diversos tipos de dados são armazenadas nas memórias dos computadores. Para acessar individualmente cada uma dessas informações, em princípio, seria necessário saber o tipo de dado dessa informação (ou seja, o número de bytes de memória por ela ocupados) e a posição inicial deste conjunto de bytes na memória. Percebe‑se que esta sistemáticade acesso a informações na memória é bastante ilegível e difícil de trabalhar. Para contornar essa situação, criou‑se o conceito de variável, que é uma entidade destinada a guardar uma informação. Basicamente, uma variável possui três atributos: um nome, um tipo de dado associado a ela e a informação por ela guardada. 111 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 LINGUAGEM DE PROGRAMAÇÃO APLICADA Toda variável possui um nome que tem a função de diferenciá‑la das demais. Cada linguagem de programação estabelece suas próprias regras de formação de nomes de variáveis. Para os algoritmos, serão adotadas as seguintes regras: • um nome de variável deve necessariamente começar com uma letra; • um nome de variável não deve conter nenhum símbolo especial, exceto a sublinha (_), e nenhum espaço em branco; • um nome de variável não poderá ser uma palavra reservada a uma instrução de programa. Exemplos de nomes de variáveis: • Salário – correto • 1ANO – errado (não começou uma letra) • ANO1 – correto • SAL/HORA – errado (contém o caractere / ) • SAL_HORA – correto • _DESCONTO – errado (não começou com uma letra) Obviamente, é interessante adotar nomes de variáveis relacionados às funções que serão exercidas por elas dentro de um programa. Outro atributo característico de uma variável é o tipo de dado que ela pode armazenar. Ele define a natureza das informações contidas na variável. Por último, há o atributo informação, que nada mais é do que a informação útil contida na variável. Uma vez definidos, os atributos nome e tipo de dado de uma variável não podem ser alterados e assim permanecem durante toda a sua existência, desde que o programa que a utiliza não seja modificado. Por outro lado, o atributo informação está constantemente sujeito a mudanças de acordo com o fluxo de execução do programa. Em resumo, o conceito de variável foi criado para facilitar a vida dos programadores, permitindo acessar informações na memória dos computadores por meio de um nome, em vez do endereço de uma célula de memória. 112 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 Unidade III 5.3.2 Tipos de dados O Visual 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 é introduzida. 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, é necessário inserir 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: Quadro 14 SubTipo Descrição Empty Valor é 0 (zero) para variáveis numéricas e comprimento zero (“”) para variáveis string. Null Variant possui um valor que não é válido. Boolean Verdadeiro ou Falso. Byte Inteiro com valores entre 0 e 255. Integer Inteiro com valores entre ‑32.768 e 32.767. Currency Tipo moeda. Valores entre ‑922.337.203.685.477.5808 e 922.337.203.685.477.5807. Long Inteiro com valores entre ‑2.147.483.648 e 2.147.483.647 Single Ponto flutuante com precisão simples. Valores entre: – 3.402823E38 e ‑1.401298E‑45 para números negativos e entre 1.401298E‑45 e 3.402823E38 para números positivos. Double Ponto flutuante com dupla precisão. Valores entre: – 1.7976931348623E308 ... 308 e ‑4.94065645841247E‑324 para valores negativos e entre 4.94065645841247E‑324 e 1.79769313486232E308 para valores positivos. Date (Time) Contém um número que representa uma data entre 01/01/100 e 31/12/9999 String Contém um comprimento variável de texto que pode chegar até 2 bilhões de caracteres. Object Contém um objeto. Exemplo do comportamento de uma variável do tipo Variant: Figura 26 113 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 LINGUAGEM DE PROGRAMAÇÃO APLICADA Observação O tipo Variant, sendo um sub‑tipo genérico, é o que utiliza a maior quantidade de memória alocada, portanto, deve‑se, sempre que possível, evitar o seu uso, otimizando assim a utilização dos recursos de hardware do sistema. 5.4 Funções de conversão de tipos de dados Antes de descrever as funções, é necessário saber para que serve uma função de conversão de tipo. Essas funções são utilizadas para forçar uma variável Variant a assumir um subtipo específico. A partir do momento que as páginas ASP começaram a ser distribuídas pela internet, ou seja, pessoas do mundo inteiro acedendo a sua página, as configurações de datas e moeda passaram a ser um fator preocupante, pois estas configurações são recuperadas da opção Configurações Regionais do Painel de Controle da máquina, onde o VBScript está sendo executado. Como o VBScript, na maioria das vezes, é executado num servidor, as configurações recuperadas são as aquelas feitas no próprio servidor. As funções de conversão de dados foram criadas para evitar erros em tempo de execução ou mesmo de lógica por sua aplicação não reconhecer o tipo de dados pelas configurações. Essas funções conseguem reconhecer as configurações regionais e interagir com vários formatos diferentes de dados sem mudá‑los, evitando que erros ocorram. O quadro a seguir descreve as funções que permitem a conversão de dados: Quadro 15 Função Valor retornado Descrição Cbool Boolean Converte uma expressão de uma variante de booleano subtipo Cbyte Byte Converte uma expressão de uma variante de byte subtipo Ccur Currency Converte uma expressão de uma variante da moeda subtipo Cdate Date Converte uma data válida e expressão tempo para a variante do subtipo data CDbl Double Converte uma expressão de uma variante do subtipo duplo Cint Integer Converte uma expressão de uma variante de integer subtipo CLng Long Converte uma expressão de uma variante do subtipo longo CSng Single Converte uma expressão de uma variante de subtipo único CStr String Converte uma expressão de uma variante de corda subtipo 114 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 Unidade III 5.4.1 Identificando o tipo de dados Como o VBScript consegue identificar uma série de subtipos de variáveis, será necessário, às vezes, que saibamos qual o subtipo que se está trabalhando no script. Para isso, usaremos a função VarType, que identifica o subtipo por um valor numérico. A tabela a seguir descreve os valores retornados pela função: Tabela 1 – Valores retornados pela função Subtipo Valor Retornado Empty 0 Null 1 Integer 2 Long 3 Single 4 Double 5 Currency 6 Date (Time) 7 String 8 Automation Object 9 Error 10 Boolean 11 Variant 12 Non‑Automation Object 13 Byte 17 Array 8192 O exemplo a seguir demonstra a utilização das funções para conversão de tipo de dados: Dim Retorna, cont Retorna = 1 For cont = 1 to Valor Retorna = Retorna * Cont Next Media = Retorna End Function teste = 5 if teste = 5 then Mensagem = “O valor da variável Teste é igual a 5” End if ResultMedia = Media(teste) %> 115 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 LINGUAGEM DE PROGRAMAÇÃO APLICADA <HTML><BODY><center><b> <FONT COLOR=”#008000”> O tipo que variável <i>Teste</i> assumiu foi: <% = VarType(teste) %></FONT><BR> <FONT COLOR=”#0000C0”>O tipo que variável <i>Mensagem</i> assumiu foi: <% = VarType(Mensagem) %></FONT><BR> <FONT COLOR=”#400040”> O tipo que variável <i>ResultMedia</i> assumiufoi: <% = VarType(ResultMedia) %></FONT><BR> <FONT COLOR=”#0000FF”>As variáveis Retorna e Cont não podem ser referenciadas, pois existem apenas quando a Função Media está a ser executada/FONT> </b></center></BODY></HTML> Para verificar o subtipo de dados que a variável teste assumiu, utilize o código script: <% = VarType(teste) %> que já retornará o valor numérico correspondente ao subtipo assumido. No caso do variável teste, o valor retornado é 2, que indica o subtipo Integer. Não podemos referenciar as variáveis cont e Retorna, pois elas existem apenas para a função, para o restante do script são inválidas. 5.5 Declaração de variáveis Quando declaramos variáveis, precisamos ter em mente a sua utilização: se será uma variável que deverá ser utilizada por toda uma aplicação ou apenas por um módulo, uma função, sub‑rotina. Este período de vida da variável é flexível, ou seja, podemos definir onde, quando e por quanto tempo esta variável deverá existir. As variáveis no VBScript podem existir em dois níveis ou escopos: script ou procedimento. O termo escopo está relacionado ao espaço de tempo no qual uma memória pode ser referenciada na memória. O espaço de tempo, que se refere ao tempo de vida da variável, depende em qual nível esta variável foi declarada. Quando uma variável é definida fora de qualquer função e procedimento, é caracterizada uma variável válida para todo o script. 5.5.1 Procedimento Quando verificar que uma variável precisa ser apenas válida para uma função ou procedimento, declare‑a dentro deste procedimento ou função. Desta maneira, assim que a função ou procedimento for executado, a variável deixa de existir na memória. 116 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 Unidade III Uma variável se declara utilizando a palavra DIM, vejamos como: <script language=”vbscript”> dim minha_nova_variavel ‘Agora ja existe a variável ‘Seguidamente vou fazer uso dela minha_nova_variavel = “Valor da variavel” </script> Não importa que tipo de informação vai conter a variável, sempre se declaram de forma igual. 5.5.1.1 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 ser utilizada esta cláusula, fazendo com que seus scripts respondam com mensagens de erro caso se utilize uma variável que não tiver sido declarada 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. A seguir, um exemplo mais completo de um script com a adoção de procedimentos e declaração de variáveis: <% Dim teste Dim Mensagem Dim ResultMedia Function Media(Valor) Dim Retorna Dim cont 117 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 LINGUAGEM DE PROGRAMAÇÃO APLICADA Retorna = 1 For cont = 1 to Valor Retorna = Retorna + Cont Next Retorna = Retorna / cont Media = Retorna End Function teste = 5 if teste = 30 then Mensagem = “O valor da variável Teste é igual a 30” Else Mensagem = “O valor da variável Teste é igual a 5” End if ResultMedia = Media(teste)%> <HTML><BODY> <CENTER><B><% = mensagem %><BR><BR> A média ponderada dos valores da variável Teste é igual a: <% = ResultMedia %> </B></CENTER> </BODY></HTML> Explicação do código: <% Dim teste Dim Mensagem Dim ResultMedia No exemplo criado, as variáveis anteriores foram declaradas fora de qualquer função ou sub‑rotina; dessa forma, podem ser utilizadas por todo o script escrito para esta página, o que significa que podem ser referenciadas em qualquer ponto do script. Function Media(Valor) Dim Retorna Dim cont Retorna = 1 Diferente das variáveis teste, Mensagem e ResultMedia, as variáveis Retorna e cont podem apenas ser referenciadas dentro da função. Para o restante do scritp, as variáveis Retorna e cont não são válidas. Até este ponto, foram vistos os tipos de variáveis, funções de conversão e seu escopo (“tempo de vida”). 118 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 Unidade III Para declarar variáveis em seu script, o programador deve utilizar as cláusulas: Dim, Public, Static. Dim Variáveis declaradas com o Dim num script estão disponíveis para todos os procedimentos inclusos neste script, porém as variáveis declaradas em um procedimento apenas poderão ser utilizadas neste procedimento. Por exemplo: Dim nomevar [([dimensão])) Dim nomevar [([dimensão])), nomevar2 Onde nomevar e nomevar2 são nomes de variáveis e dimensão representa o número da dimensão do vetor. Com a cláusula Dim é também possível declarar vetores. Um vetor é tratado como uma variável, porém é utilizado para armazenar uma coleção de informações similares. Esta coleção é acedida pelo seu índice, começando pelo 0 (zero). Por exemplo, o próximo código cria um vetor com cinco posições. Como os vetores começam com a posição zero, cinco posições da variável TipoProduto são alocadas. A segunda e terceira linha do código preenchem a primeira e segunda posições do vetor com os valores Material de Construção e Material Escolar: Dim TipoProduto(4) ‘Como o vetor começa com 0 (zero), a primeira posição é 0 e a quinta posição é 4 TipoProduto(0) = “Material de Construção” TipoProduto(1) = “Material Escolar” Observação A opção Option Explicit não indica quando variáveis que foram declaradas não são utilizadas ao longo do código. A criação de variáveis é uma atividade que deve ser feita com muito critério, evitando, dessa forma, definições desnecessárias e elevando a utilização dos recursos de hardware. 5.5.1.2 Função ReDim A função ReDim é utilizada para manipular vetores dinâmicos. Para o VBScript, os vetores podem ser definidos em dois tipos: estáticos ou dinâmicos. Um vetor estático tem seu número de índices definidos, como o vetor que foi definido no exemplo anterior, que possui cinco posições. Um vetor dinâmico tem o número de índices variado, o qual é definido quando a aplicação é executada. Podemos criar um vetor dinâmico apenas declarando‑o com os parênteses vazios. 119 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 LINGUAGEM DE PROGRAMAÇÃO APLICADA Os vetores dinâmicos são diferentes dos estáticos. Eles são utilizados quando a alocação de memória precisar ser dinâmica, ou seja, o vetor pode assumir vários tamanhos. Para que isso seja possível, utilize o comando ReDim. Este comando é utilizado para redefinir o tamanho do vetor, que pode aumentar ou diminuir. Se precisarmos aumentar o tamanho do vetor e precisarmos manter os elementos já inclusos nas posições existentes, utiliza‑se o comando Preserve. Por exemplo, o código a seguir cria um vetor dinâmico chamado ProdutosSelecionados e redimensiona o vetor com três posições. A última linha expande o número de elementos do vetor para seis. Como está sendo utilizada a cláusula Preserve, o conteúdo já incluso no vetor permanecerá. Dim ProdutosSelecionados() ReDim ProdutosSelecionados(3) ProdutosSelecionados(0) = “Caderno” Redim Preserve ProdutosSelecionados(6) 5.5.1.3 Public Quando declaramos uma variável como pública, ela pode ser referenciada por todo o script da página. Também pode‑se declarar vetores estáticos ou dinâmicos com a cláusula Public. Sintaxe Public nomevar[([dimensão])]Onde nomevar é o nome da variável e dimensão é o número de elementos do vetor. 5.5.1.4 Private Variáveis declaradas com a cláusula Private são o oposto das variáveis declaradas com a cláusula Public. São válidas apenas dentro do script no qual foram declaradas. Podemos também declarar vetores dinâmicos e estáticos com o Private. Sintaxe Private nomevar[([dimensão])] Onde nomevar é o nome da variável e dimensão é o número de elementos do vetor. 5.5.1.5 Regras para nomear as variáveis Para nomear as variáveis, é preciso seguir algumas regras: • devemos começar com um caractere alfabético; • não se pode exceder o tamanho de 255 caracteres; • o nome deve ser único no escopo no qual a variável é declarada. 120 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 Unidade III Exemplo com a opção Option Explicit: <% teste = 5 if teste = 30 then Mensagem = “O valor da variável Teste é igual a 30” Else Mensagem = “O valor da variável Teste é igual a 5” End if %> <HTML><BODY> <CENTER><B><% = Mensagem %><BR><BR> </B></CENTER> </BODY></HTML> Onde teste e Mensagem são variáveis declaradas implicitamente, o VBScript encarrega‑se de entendê‑las como variáveis. Esta declaração implícita não é considerada uma boa prática pelos programadores, pois estamos sujeitos a erros de digitação, e para este tipo de declaração, declarar uma variável chamada teste e outra teste são consideradas variáveis diferentes. Para evitar esse tipo de erro, a declaração do Option Explicit está disponível para que obrigatoriamente todas as variáveis sejam declaradas explicitamente. Se optar por utilizá‑lo, a sua declaração deve ser feita antes de qualquer outra declaração, como, por exemplo: <% Option Explicit teste = 5 if teste = 30 then Mensagem = “O valor da variável Teste é igual a 30” Else Mensagem = “O valor da variável Teste é igual a 5” End if %> <HTML><BODY> <CENTER><B><% = Mensagem %><BR><BR> </B></CENTER> </BODY></HTML> Observe neste exemplo que foi declarada a cláusula Option Explicit, porém não foi exposta explicitamente a variável teste. Ao executar este ASP no servidor, será retornado um erro. A mensagem do erro retornado Variable is undefined: ‘teste’ significa que a variável não foi declarada. Se voltarmos ao script, percebe‑se que realmente a variável não foi declarada. 121 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 LINGUAGEM DE PROGRAMAÇÃO APLICADA <% Option Explicit Dim teste teste = 5 if teste = 30 then Mensagem = “O valor da variável Teste é igual a 30” Else Mensagem = “O valor da variável Teste é igual a 5” End if %> Se o ASP for executado novamente, não ocasionará o erro, pois a variável foi declarada. 6 OPERADORES E ESTRUTURAS DE FLUXO DE EXECUÇÃO 6.1 Operadores 6.1.1 Operadores aritméticos A linguagem VBScript é muito rica em operadores, sendo alguns mais utilizados do que outros, como é o caso dos operadores aritméticos que executam operações aritméticas. A seguir estão relacionados os operadores aritméticos binários, ou seja, que executam operações entre dois operandos em VBScript. Quadro 16 Símbolo Operação + Soma ‑ Subtração * Multiplicação / Divisão em vírgula flutuante. É a divisão normal devolvendo um número real se for o resultado \ Divisão de inteiros. Devolve 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 soma = v1 + v2 subtracao = v1‑ v2 122 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 Unidade III 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. O VBScript possui também um operador do tipo unário (‑) que indica a troca do sinal algébrico do valor. O operador (=) já é conhecido dos exemplos apresentados anteriormente. Em VBScript, o sinal de igual não tem a interpretação dada em matemática. Representa a atribuição da expressão à direita ao nome da variável à esquerda. Já os operadores + – / * representam as operações aritméticas básicas de soma, subtração, divisão e multiplicação. 6.1.2 Operadores relacionais Os operadores relacionais são usados para fazer comparações. Em VBScript não existe um tipo de variável chamada booleana, isto é, que assume um valor verdadeiro ou falso. O valor zero (0) é considerado falso e qualquer valor diferente de 0 é considerado verdadeiro e é representado pelo inteiro 1. Os operadores relacionais comparam dois operandos e retornam 0 se o resultado for falso e 1 se o resultado for verdadeiro. Os operadores relacionais disponíveis em VBScript são: Quadro 17 Símbolo Operação = <> Igual e diferente > < Maior que e menor que >= <= Maior ou igual que e menor ou igual que A seguir um exemplo de script que realiza operações de comparação, embora antes de vê‑lo deve‑se 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”) end if 123 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 LINGUAGEM DE PROGRAMAÇÃO APLICADA Nota‑se que o operador relacional de igualdade (=) tem a mesma simbologia do operador de atribuição, portanto, deve‑se tomar muito cuidado na aplicação de ambos, pois não haverá erro de execução pelo interpretador, podendo não se obter o resultado esperado com a utilização errada deste operador. 6.1.3 Operadores lógicos Estes operadores são empregados para comparar os bits contidos em duas variáveis, por isso, são denominados operadores lógicos binários. Ou seja, estes operadores fazem uma comparação lógica entre cada bit dos operandos envolvidos. Os operadores binários disponíveis são: Quadro 18 Operador Operação AND E lógico OR OU lógico XOR XOR NOT NÃO lógico Exemplo de utilização dos operadores lógicos em VBScript: Dim a : a = 10 Dim b : b = 0 Dim c If a<>0 AND b<>0 Then x= msgbox (“AND Resultado do operado é: True”) Else x= msgbox (“AND Resultado do operado é: False”) End If If a<>0 OR b<>0 Then x= msgbox (“OR Resultado do operado é: True”) Else x= msgbox (“OR Resultado do operado é: False”) End If If NOT(a<>0 OR b<>0) Then x= msgbox (“NOT Resultado do operado é: True”) Else x=msgbox (“NOT Resultado do operado é: False”) End If If (a<>0 XOR b<>0) Then x=msgbox (“XOR Resultado do operado é: True”) Else x=msgbox (“XOR Resultado do operado é: False”) End If 124 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 Unidade III 6.1.4 Operadores de concatenação Esse tipo de operador tem a função de interligar duas cadeias de caracteres (strings). 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: Dim a : a = “Microsoft” Dim b : b = “VBScript” Dim c c=a+b x=msgbox (“Concatenação do valor:1 é “ &c) ‘Adiciona um valor c=a&b x=msgbox (“Concatenação dovalor:2 é “ &c) ‘Concatena dois valores 6.2 Estruturas de fluxo de execução 6.2.1 Estruturas de decisão Uma das tarefas fundamentais de qualquer programa é decidir o que deve ser executado a seguir. Os comandos de decisão permitem determinar qual é a ação a ser tomada com base no resultado de uma expressão condicional. Isso significa que pode‑se selecionar entre ações alternativas dependendo de critérios desenvolvidos no decorrer da execução do programa. 6.2.1.1 IF...THEN O comando if é usado para testar uma condição e caso esta seja verdadeira, o programa irá executar uma instrução ou um conjunto delas. A sintaxe de estrutura é mostrada a seguir: IF (expressão) then Sentenças .... END IF Em primeiro lugar, tem‑se 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, é utilizado um END IF para acabar a estrutura do IF. 125 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 LINGUAGEM DE PROGRAMAÇÃO APLICADA 6.2.1.2 IF...THEN...ELSE Opcionalmente, pode‑se colocar uma série de sentenças associadas à avaliação negativa da expressão. Essas sentenças devem ser colocadas depois da ordem ELSE e antes do END IF. A seguir, a sintaxe desse tipo de estrutura: IF (expressão) then Sentenças .... ELSE Sentenças .... END IF 6.2.1.3 IF...THEN...ELSEIF Em Visual Basic Script existe a possibilidade de utilizar um enunciado especial no lugar onde seria utilizado 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. Pode 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; em 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. 126 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 Unidade III A seguir um exemplo de aplicação desse tipo de estrutura: Dim strCountry strCountry = “USA” If strCountry = “USA” Then WScript.Echo “United States of America.” ElseIf strCountry = “CA” Then WScript.Echo “Canada.” Else WScript.Echo “Some other country.” End If 6.2.1.4 Select Case Com 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 (variável) CASE (valor1): (ação para caso valor1) CASE (valor3): (ação para caso valor2) CASE (valor3): (ação para caso valor3) CASE ELSE: (ação em caso de que não se cumpra nenhum anterior caso) 6.2.1.5 End Select Funciona da seguinte forma: primeiro se avalia a variável, se essa variável tiver como valor o valor1, são realizadas as ações associadas ao valor1. Se tiver o valor2, executam‑se as ações relacionadas com este valor 2. Assim, com quantos valores desejados. Por último, tem‑se um ELSE para realizar ações no caso de que não tivessem sido nenhum dos valores anteriores. Este ELSE é opcional. A seguir tem‑se um exemplo com esta sentença muito simples. O primeiro a se fazer é solicitar um número e logo informar o dia da semana com o que corresponde. Se o número não for do um ao sete, informa‑se isso também. Dim dia dia = inputbox (“diz um dia da semana”) SELECT CASE dia 127 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 LINGUAGEM DE PROGRAMAÇÃO APLICADA CASE 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 6.2.2 Estruturas de repetição As estruturas de repetição – também conhecidas como estruturas de looping – permitem a execução de uma linha ou bloco de código repetidamente até que uma condição seja verdadeira. O uso de loopings nos programas é uma prática comum, pois, em muitos casos, é preciso percorrer uma determinada coleção de dados, um conjunto de registros, valores de matrizes etc. 6.2.2.1 Laço FOR A sentença FOR é utilizada para os loops quando sabe‑se o número de vezes que deve‑se executar o loop. A seguir, sua simples sintaxe: FOR (iniciacao) TO (termo do loop) STEP (passo) sentencas ........ NEXT 128 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 Unidade III 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, como será visto no exemplo de 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 quanto que se deseja realizar os saltos entre execução e execução, é o valor STEP. Por exemplo, um STEP 2 determinaria que entre execução e execução, a variável incrementa‑se de duas unidades. No caso de não indicar nada, realizam‑se passos de um em um. Também podemos realizar passos em valores negativos. Um exemplo destes dados seria o seguinte: for i=0 to 6 step 2 msgbox(i) next 6.2.2.2 LOOP FOR EACH A 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. Primeiro deve ser criado um vetor e preenche‑se com números cada um de seus campos, com um loop FOR normal. Mais tarde, é utilizado o loop FOR EACH para acessar a cada uma das posições deste vetor de números e escrever na página cada um desses números. dim tor(20) for i=1 to 20 tor(i)=i next for each in tor response.write(tor(i)) next No 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 response.write(tor(i)). Com tor(i) acessa‑se ao campo atual e response.write() serve para escrever algo na página web. Combinados, o que é escrito é o que existe na posição atual do vetor. 6.2.2.3 LOOP WHILE WEND O 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 é utilizado quando não conhecemos o número de iterações que temos que realizar. 129 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 LINGUAGEM DE PROGRAMAÇÃO APLICADA O loop funciona da seguinte maneira. Quando se vai executar, avalia‑se uma expressão e comprova‑se que esta dá resultados positivos.Se for assim, executa‑se o corpo do loop (as sentenças que continuam até o WEND); em caso contrário, se sai. Isso pode ser visto na sintaxe a seguir. WHILE (condicao) sentenças .... WEND A seguir 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 é mostrada em uma janelinha o número atual e é oferecida a possibilidade de alterá‑lo, já que a janelinha é uma janela Input que oferece a oportunidade de mudar o valor e devolver esse valor mudado ou não. Caso não se mexa em nada no exemplo, este contará até 13, mas se introduzirmos um número no inputbox, a conta continuará pelo número introduzido. Se o número introduzido for maior que 13, este também sairá do loop. option explicit dim a a = 0 WHILE (a < 13) a = a + 1 a=inputbox(“Dá‑me um valor inteiro, please”,”Petição de número”,a,200,100) WEND 6.2.2.4 Loop DO...LOOP O loop DO...LOOP é muito versátil. Com ele se pode criar grande variedade de loops diferentes, os quais 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 (condição)] sentenças ........ LOOP [WHILE | UNTIL (condição)] 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. Os loops têm que avaliar entre cada iteração se continuam se executando ou não, para isso avaliam uma condição. A versatilidade 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. 130 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 Unidade III • 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 nesses 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 dessas duas possibilidades se transferem também à sua maneira de funcionar. Na sequência, dois exemplos deste loop para compreender seu funcionamento. O exemplo pede constantemente o nome do autor da página e não para 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 entrada entrada = “” 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 if LOOP 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 saía no exemplo anterior, com EXIT DO. option explicit dim cont dim resposta cont = 0 DO cont = cont + 1 resposta = msgbox (cont,69,”Variavel do loop, com valor 6 se sair”) if (resposta = 2) then msgbox “Conta Cancelada”,16,”Cancelou!” exit DO end if LOOP UNTIL (cont = 6) 131 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 LINGUAGEM DE PROGRAMAÇÃO APLICADA Saiba mais No fim da década de 1970, surgiu uma nova linguagem de programação voltada para o ensino, principalmente, de crianças e adolescentes. Essa linguagem se chama Logo. Versões desse programa ainda podem ser encontradas gratuitamente na internet. Para aqueles que tiverem a curiosidade, o site xLogo oferece gratuitamente o manual e o programa: <http://xlogo.tuxfamily.org/pt/>. 6.3 Array Os 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 cada um desses compartimentos há que acessar como um índice. Antes de utilizar um array, devemos declará‑lo de maneira obrigatória. Para isso, utilizamos a palavra‑chave DIM da seguinte maneira: dim meuArray(20) Depois da palavra DIM, deve‑se 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á na posição 0. Portanto, se o array foi definido com 20 campos, como no exemplo, terá 21 elementos, a primeira posição será a 0 e a última posição seria a 20. Para atribuir um valor a um array, se realiza igual a uma variável, porém acessando com o índice da posição a ser escrita. meuArray(0) = 234 Para utilizar o conteúdo de um array, deve‑se indicar o índice que se deseja acessar. Por exemplo, caso se queira imprimir na página a primeira posição do array, esta ação deveria ser feita da seguinte maneira: response.write(meuArray(0)) A seguir, um exemplo sobre como utilizar os arrays, em que serão realizados dois percorridos, um para escrever nele e o outro para ler a informação e escrevê‑la na página. 132 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 Unidade III dim matriz (10) for i=1 to 10 matriz(i)=100 * i next for i=1 to 10 response.write(“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 multiplicar seu índice por 100. 6.3.1 Arrays multidimensionais Podem‑se construir matrizes multidimensionais, ou seja, que permitem criar matrizes de várias coordenadas. Para trabalhar com elas, utiliza‑se uma vírgula que separa os dois índices. Por exemplo, pode‑se definir uma matriz de 8x8 desta maneira: dim meuArray2Dimensoes (7,7) Como o array é de oito campos, utilizamos sete e suas posições serão as oito que vão desde o um ao oito. Para escrever e ler do array, pode‑se utilizar a vírgula de maneira similar a como se declara. Por exemplo, para colocar dados na posição 1,2, deve‑se fazer o seguinte: meuArray2Dimensoes (1,2) = “texto posicao 1,2” 6.3.2 Redimensionamento de array Existem situações em que necessitamos alterar o tamanho de um array em tempo de execução, ou seja, conforme o código vai sendo executado. Chamamos esse tipo de array, que se redimensiona, de array dinâmico. Para criar este tipo de array, pode‑se utilizar a sentença dim (como os anteriores) ou a sentença redim, com a particularidade de que não se coloca nenhum valor entre parênteses, onde antes se indicava o número de campos do array. dim meu_array() redim meu_outro_array() Quando são utilizados arrays dinâmicos, pode‑se usar 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 indica‑se que meu_array deve ter o tamanho 10. Campos desde 0 até a 10. redim meu_array(10) 133 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 LINGUAGEM DE PROGRAMAÇÃO APLICADA Caso se indique a chave “preserve”, garante‑se 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 é reduzido o número de campos,perde‑se o que possa ter sido salvo nos campos que se eliminaram. No seguinte exemplo foi criado um array dinâmico e o seu redimensionamento inicialmente a tamanho três. São preenchidos e mostrados seus distintos valores. Posteriormente, redimensiona‑se outra vez para que se chegue até a posição sete, salvando os valores antigos, para preencher os campos criados novos e mostrar 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 in frutas response.write frutas(i) & “<br>” next redim preserve frutas(7) frutas(4) = “Melancia” frutas(5) = “Laranja” frutas(6) = “Banana” frutas(7) = “Tangerina” for each in frutas response.write frutas(i) & “<br>” next 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 três dimensões, onde também pode‑se mudar somente a última dimensão. 6.3.3 Obtendo 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. Isso é útil, por exemplo, para fazer um percorrido a um array, desde o primeiro até o último campo. Para isso, é utilizada 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: 134 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 Unidade III dim cidades(5) document.write ubound (cidades) Na página, seria escrito o número do campo mais alto do array cidades, neste caso cinco. Temos disponível 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 o array de cidades definido anteriormente escreveria um zero na página web, visto que o array começa na posição zero. 6.4 Funções ou procedimentos As funções servem para agrupar um conjunto de instruções de acordo com a tarefa que elas desempenham. Uma vez implementada corretamente essa tarefa, basta usar a sua função. Por exemplo, quando utilizada “response.write” para imprimir informações na tela, não há preocupação de como o programa realiza esta tarefa, pois a função já fornecia este serviço de forma adequada. As funções, quando bem empregadas, facilitam bastante a organização modular do programa, permitindo a reutilização de suas partes, além de facilitar a sua manutenção. Uma função é uma unidade de código de programa autônoma desenhada para cumprir uma tarefa particular. Provavelmente, a principal razão da existência de funções é impedir que o programador tenha que escrever o mesmo código repetidas vezes. A primeira atitude a ser tomada ao criar um procedimento é pensar as coisas que se desejam fazer dentro da função, a informação que é necessitada (e que terá que ser recebida como parâmetro) e a informação que será devolvida. Com estas ideias claras, pode‑se construir os procedimentos e funções sem muita dificuldade, seguindo estas estruturas. Para um procedimento Sub nome (parametro1, parametro2...) ... Código do procedimento end Sub Para uma função Function nome (parametro1, parametro2...) ... Código da função end Function 135 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 LINGUAGEM DE PROGRAMAÇÃO APLICADA 6.4.1 Procedimentos ou sub Diz‑se 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 utilizá‑la dentro de uma expressão. A seguir, um exemplo de procedimento. É uma sub‑rotina que escreve na barra de estado uma mensagem. Utiliza‑se um loop vazio para que o navegador esteja um pouco mais lento e o texto saia pouco a pouco. Ao invés desse loop, poderia ser utilizada uma função chamada setTimeout, porém não será introduzida agora. sub mostraAbaixo(texto) dim i, j dim actual for i=0 to len(texto) actual = left(texto,i) window.status = actual ‘loop para frear o navegador deveria utilizar‑se a função setTimeOut for j=0 to 20000 j = j next next end sub 6.4.2 Funções Uma função nada mais é do que um pedaço de código que opera para devolver um valor. Agora será visto detalhadamente um exemplo de seu uso. Define‑se uma função que realize um cálculo matemático e devolva o resultado do mesmo. Extrai‑se os operandos de um formulário. Agora, o exemplo pode ser um pouco complexo, por tratar com formulários – os quais ainda não foram vistos –, porém pode‑se ver o código da função e ter uma ideia exata de seu uso, que, afinal de contas, é o que importa. 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 select end function 136 Re vi sã o: F ab ríc ia - D ia gr am aç ão : J ef fe rs on - 0 7/ 06 /1 7 Unidade III A função recebe três parâmetros; o primeiro é um operador, que não é nada 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. 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. A seguir o código que pode ser utilizado para fazer a chamada à função. meuOperador=”+” meuOperando1=221 meuOperando2=32 resultado = operar(meuOperador,meuOperando1,meuOperando2) No final de todas essas sentenças, a variável resultado terá como valor 253. Resumo Nesta unidade apresentamos os principais conceitos de uma linguagem de programação baseada em scripts, a linguagem VB Script. Mostrou‑se como um script é inserido dentro de uma página desenvolvida para web através da criação de páginas com extensão ASP. A estrutura de uma página ASP, com seus marcadores e formatações, foi demonstrada por meio de de alguns exemplos, bem como os requisitos necessários para que uma página ASP possa ser executada por um sistema operacional. Foram apresentadas as principais características da linguagem VB Script como tipos de dados e quais os operadores e as estruturas de controle de fluxo de execução de um código. Mostrou‑se também como criar, através de um código botões, caixas de texto e mais alguns objetos para interação direta do usuário com o software. Tipos de variáveis e formas de declará‑las foram demonstradas com exemplos para fácil entendimento.
Compartilhar