Baixe o app para aproveitar ainda mais
Prévia do material em texto
100 Unidade III Unidade III 5 LINGUAGEM DE PROGRAMAÇÃO VBSCRIPT 5.1 Introdução O Visual Basic Script Language (VBScript) é uma das muitas linguagens de script que rodam em um servidor e, para o IIS (servidor web da Microsoft voltado a seus sistemas operacionais para servidores), ela é a linguagem padrão. Utilizar esta linguagem para desenvolver aplicações não é difícil. A seguir, algumas características da linguagem: • é um subconjunto do Visual Basic, logo, será muito familiar se o usuário já tiver usado Visual Basic ou Visual Basic Application (VBA); • permite a manipulação de números, datas e strings; • possibilita a utilização dos comandos do Visual Basic, com exceção dos comandos de manipulação de banco de dados e de acesso aos periféricos; • o acesso ao banco de dados é feito através do objeto ActiveX Data Object (ADO).O VBScript apenas cria instâncias e através dos métodos desse objeto os dados podem ser manipulados; • tem um mecanismo de comunicação com servidores de objetos Common Object Model (COM), como o Microsoft Exchange Server, Microsoft Index Server, Database Servers. O VBScript é uma linguagem leve, baseada nas funcionalidades do Visual Basic e que roda nativamente no browser Internet Explorer. A execução em outros browsers também pode ser realizada através de plug-ins. 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. 5.2 Características do VBScript Há algumas características comuns nas linguagens de scripting que as tornam mais fáceis de serem utilizadas, principalmente para pessoas com pouca experiência em sua utilização. No entanto, essas mesmas facilidades também podem se tornar uma fonte de problemas, se não tomados os devidos cuidados. Podemos ver algumas dessas características: 101 LINGUAGEM DE PROGRAMAÇÃO APLICADA Maiúsculas e minúsculas Para a linguagem VBScript, o código pode ser escrito tanto em letras maiúsculas quanto em letras minúsculas. Observação O VBScript não é CASE Sensitive, ou seja, ele interpreta os comandos independentemente se estão escritos em letra maiúscula ou minúscula. Variáveis As variáveis são espaços reservados na memória, utilizados para ler e escrever dados que são utilizados em programas ou scripts. Em VBScript, as variáveis não devem ser declaradas, ou seja, quando necessário, 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, isso quer dizer que podem ser salvas 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. Observação O VBScript suporta apenas o tipo de variável Variant. Esse tipo é único pois suporta todos os outros tipos: integer, double, string, date e currency. O tipo Variant assume o tipo de variável dependendo da atribuição feita a ele. Quebras de linha As quebras de linha são muito importantes, pois expressam o final de uma instrução e o início da instrução seguinte. Não se pode colocar duas instruções em uma mesma linha. Comentários Códigos-fonte de programação podem ser difíceis de ler e entender. Práticas de programação até podem melhorar isso um pouco, mas se um programador quer ter certeza que vai entender seu código posteriormente, ele deverá usar o recurso de comentários disponibilizado pelo VBScript. 102 Unidade III Para comentar uma linha de um código desenvolvido em VBScript, deve-se inserir aspas simples no início dessa linha, assim, essa linha será ignorada pelo interpretador do código do sistema. Na sequência, apresentamos um script simples, que exemplifica essas características vistas anteriormente. Esse script faz com que janelas do tipo message box sejam abertas, trazendo o conteúdo da variável pepe. Em seguida, o valor da variável é alterado, e a janela é chamada novamente. Nesse exemplo, podemos comprovar que os comandos podem ser escritos tanto em letras maiúsculas quanto em letras minúsculas. Também podemos ver os comentários inseridos no código através do uso das aspas simples. Além disso, podemos verificar que as variáveis podem receber qualquer tipo de valor, nesse caso, textos e 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.3 Criando uma página ASP Inicialmente, deve-se ter em mente que será necessário interpretar os códigos do VBScript. O responsável por essa interpretação é o Internet Information Server (IIS), sendo assim, entende-se que o código deve ser interpretado no servidor, e não no cliente (browser). Existem algumas instruções que devem ser seguidas para que o código seja interpretado pelo servidor. Seguem algumas delas: Utilizando a tag <% %> Utiliza-se a tag <% e %> quando se deseja executar algum código VBScript no servidor. O código deve ser inserido entre esses caracteres para poder ser interpretado. Quando o script possuir código HTML e VBScript, o servidor saberá qual informação deverá ser retornada para o cliente (browser). Por exemplo: 103 LINGUAGEM DE PROGRAMAÇÃO APLICADA <% if Hour(Now) < 12 then %> Bom dia! <% else %> Boa tarde! <% end if %> No código do exemplo anterior, os comandos que estiverem entre a tag <% %> serão interpretados pelo servidor IIS. Se a hora for menor que 12, será mostrado um HTML com o texto “Bom dia!”; se não, o HTML retornado pelo servidor conterá o texto “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> Utilizando essa tag, também é possível criar scripts que rodam no servidor, conforme pode ser visto a seguir: <SCRIPT LANGUAGE = VBScript RUNAT=Server> </SCRIPT> É preciso especificar qual a linguagem script que será utilizada no código e onde esse código será interpretado. A partir daí, basta realizar a chamada de alguma parte do HTML. No exemplo anterior, a linguagem script que estiver entre a tag <SCRIPT></SCRIPT> deve ser do tipo VBScript e será interpretada por um servidor IIS. Essa tag é muito utilizada para criar funções e sub-rotinas. Por exemplo: <SCRIPT LANGUAGE=VBScript RUNAT=Server> Function RetornaData() RetornaData = Date End Function </SCRIPT> No caso do exemplo anterior, o código retornará a data do sistema no servidor. Deve-se utilizar as tags <% %> para fazer a chamada dessa função, conforme exemplo a seguir: A data de hoje é <% = RetornaData() %> Outra forma de retornar valores direto para o HTML é utilizando o método response.write, conforme pode ser visto em seguida: <SCRIPT LANGUAGE=VBScript RUNAT=Server> Function RetornaData() Response.Write “A data de hoje é “ & Date & “.” End Function </SCRIPT> 104 Unidade III Quando é realizada uma solicitação ao servidor pela execução de um ASP, o servidor executa as funções declaradas nele. Como o método response.write retorna o conteúdo do texto diretamente para o HTML, será mostrado para o utilizador o texto definido. O passo seguinte 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> Essa mescla de códigos HTML e VBScript constitui uma página ASP. O servidor saberá que o código entre <% %> deverá ser interpretado e ocultado para o cliente,mostrando apenas o seu resultado. Lembrete Os arquivos que contêm código VBScript devem ser nomeados com a extensão “.ASP”, por exemplo: MeuPrimeiroPrograma.asp. Dessa forma, o IIS entenderá que a chamada foi feita a partir de uma página ASP. Utilizadando a tag <SCRITP></SCRIPT>, o código VBScript e HTML ficará da seguinte forma: <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> O VBScript também permite criar rotinas que sejam executadas do lado do cliente (browser). Para isso, devemos observar dois aspectos principais ao programar sub-rotinas e funções para rodar no browser, são eles: 105 LINGUAGEM DE PROGRAMAÇÃO APLICADA • versão do browser (Internet Explorer); • a codificaçã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 exemplo de script em uma página web. Esse código mostra 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> </form> </body> </html> O método document.write escreve na página web o texto que recebe por parâmetro, localizado logo após a sentença. A variável document.lastmodified armazena a data e a hora da última atualização do documento. Na sequência do código, temos o seguinte trecho: <form NAME=RodarCli method=”POST”> <p><input type=”button” name=”BOTAO1” value=”Vamos mudar o value!”></p> </form> Nesse trecho, está sendo criado o objeto botão. Para que a sub-rotina seja executada, o botão deve ser criado em um form, ser definido um nome para ele e o seu tipo deve ser button. Depois de definir o evento que deve disparar a ação (nesse caso, ONCLICK), é necessário programar a sub-rotina: <script language=”VBScript”> SUB BOTAO1_ONCLICK() RodarCli.BOTAO1.Value = “Mudamos o Value!” END SUB </script> Essa sub-rotina será executada no lado cliente (browser). Observe que o parâmetro RUNAT não foi configurado na tag <SCRIPT>. 106 Unidade III O evento que deve disparar a ação será o ONCLICK, ou seja, quando clicarmos no botão, o código escrito será executado. Lembrete Não será feito o uso de ferramentas visuais, que disponibilizam os objetos de forma gráfica, para a construção da interface gráfica. Todos os objetos visuais utilizados serão criados em tempo de execução, através de comandos da linguagem VBScript. Para fazer a referência ao objeto do formulário, é necessário seguir a seguinte sintaxe: NomeFormulário.NomeObjeto.PropriedadeObjeto Por exemplo: RodarCli.BOTAO1.Value 5.4 Diferentes formas de execução de scripts Agora que já abordamos 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 e, em seguida, será apresentado o conceito de evento. As formas de execução de VBScript são: • scripts que são executados enquanto o navegador abre a página; • scripts que são executados como resposta a uma ação do usuário. O primeiro caso é utilizado quando se quer fazer algo enquanto o navegador está carregando a página. Por exemplo, poderia mostrar uma mensagem de boas-vindas quando o usuário entrar na página ou que o navegador informe a respeito da última atualização do documento. O segundo caso ocorre quando se deseja realizar ações como resposta a comportamentos do usuário. Os eventos são ações que ocorrem quando um usuário faz alguma coisa na página web, ou seja, um evento poderia ser a escrita de um texto em uma caixa de texto, o posicionamento do mouse sobre um link, o clique em um botão etc. Praticamente toda ação executada pelo usuário em uma página web 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 compreensão das duas formas de execução dos scripts. Vamos fazer com que o código retorne a versão do navegador e alguns outros dados em uma caixa de diálogo, e isso 107 LINGUAGEM DE PROGRAMAÇÃO APLICADA será feito de duas maneiras: enquanto o usuário carrega a página e no clique de um botão. No exemplo a seguir, o script é executado ao carregar a página: <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> Esse exemplo é muito parecido com os vistos anteriormente. A única novidade é a variável navigator. appVersion, a qual retorna na caixa de diálogo a versão do navegador. Agora podemos ver a execução do script como resposta à ação do usuário. A caixa de diálogo contendo a versão do navegador só irá aparecer quando o usuário pressionar o 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> Esse exemplo tem algumas informações novas que devem ser destacadas: • cria-se um botão com a tag <INPUT>; • acrescenta-se o atributo onclick e, com isto, indica-se a ação que se quer realizar como resposta ao clique sobre o botão; • acrescentamos o atributo language para especificar a linguagem em que o código associado ao evento está sendo desenvolvido. 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. 108 Unidade III Saiba mais Como referência bibliográfica adicional sobre as linguagens de script, leia: COSTA, D. G. Administração de redes com scripts: bash script, python e VBScript. São Paulo: Brasport, 2007. 5.5 Variáveis em VBScript 5.5.1 Conceito e utilização Variáveis são elementos básicos de um programa. É tudo aquilo que é sujeito a variações, que é incerto, instável ou inconstante. O volume de informações manipuladas em computadores é muito grande e diversificado, sendo assim, utilizam-se muitas variáveis no processamento dos dados. Como já visto anteriormente, as memórias dos computadores armazenam informações de diferentes tipos. Para acessar cada uma dessas informações, a princípio, seria necessário saber o tipo de dado de cada uma e a posição inicial desse conjunto de bytes na memória. Percebe-se que essa sistemática de acesso às informações na memória é consideravelmente complexa. Para contornar essa situação, criou-se o conceito de variável, um objeto capaz de reter e representar um valor ou expressão. Basicamente, uma variável possui três atributos: um nome, um tipo de dado associado à mesma e a informação por ela guardada. As variáveis possuem um nome para identificá-las e diferenciá-las das demais. Cada linguagem de programação pode definir suas próprias regras e boas práticas para definição de nomes de variáveis. Para os algoritmos, sã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 ounderscore (_) e nenhum espaço em branco; • um nome de variável não poderá ser uma palavra reservada a uma instrução de programa. 109 LINGUAGEM DE PROGRAMAÇÃO APLICADA Observação Palavras reservadas em linguagens de programação não podem ser usadas como um identificador, pois são reservadas para uso da gramática da linguagem. Por exemplo, na linguagem de programação VBScript, um programador não pode utilizar uma variável com o nome If, pois essa palavra é reservada para construção de estruturasde condição. 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 criar variáveis com nomes que se relacionem às funções que irão exercer 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 nela. Por último, há o atributo informação, que nada mais é do que o valor contido 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 de um endereço de memória. 5.5.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 acordo com a informação que é introduzida. Esse tipo principal de dados é o tipo Variant, no qual podemos introduzir vários subtipos de dados. Para mudar o subtipo de um Variant, é necessário inserir um dado na variável, fazendo-a mudar automaticamente de um subtipo a outro, sem que tenhamos que fazer nenhuma operação adicional. 110 Unidade III Quadro 12 – Subtipos de dados que podem ser utilizados no Variant 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 até 32.767 Currency Tipo moeda. Valores entre -922.337.203.685.477.5808 até 922.337.203.685.477.5807 Long Inteiro com valores entre -2.147.483.648 até 2.147.483.647 Single Ponto flutuante com precisão simples. Valores entre: - 3.402823E38 até -1.401298E-45 para números negativos; 1.401298E-45 até 3.402823E38 para números positivos Double Ponto flutuante com dupla precisão. Valores entre: – 1.7976931348623E308 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 até 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 No exemplo de código a seguir, podemos ver o tipo de dados Variant assumindo dois subtipos, Integer e String. <% Dim teste Dim Mensagem teste = 25 if teste = 30 then Mensagem = “O valor de Teste é igual a 30“ Else Mensagem = “O valor de Teste é igual a 25“ End if %> Declaramos duas variáveis do tipo Variant, onde Teste assume um valor inteiro e Mensagem assume o valor string Figura 30 Observação O tipo Variant, sendo um subtipo genérico, é o que utiliza a maior quantidade de memória alocada, portanto se deve, sempre que possível, evitar seu uso, otimizando a utilização dos recursos de hardware do sistema. 5.6 Funções de conversão de tipos de dados Utilizaremos as funções de conversão de tipo de dados para forçar uma variável Variant a assumir um subtipo específico. Esse passo é importante, pois esse tipo de dados é o que utiliza a maior quantidade de memória alocada. 111 LINGUAGEM DE PROGRAMAÇÃO APLICADA As funções de conversão de dados também podem evitar erros em tempo de execução ou mesmo de lógica, se a aplicação, por exemplo, não reconhecer o tipo de dado que está sendo manipulado. 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 13 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 5.6.1 Identificando o tipo de dados Como o VBScript consegue identificar uma série de subtipos de variáveis, é necessário, às vezes, que saibamos qual o subtipo que está sendo utilizado no código. Para isso, usa-se a função VarType, que identifica o subtipo por um valor numérico. Tabela 2 – 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 112 Unidade III O exemplo a seguir demonstra a utilização das funções para conversão de tipo de dados: <% Dim teste, Mensage, ResultMedia Function Media(Valor) 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) %> <HTML><BODY><center><b> <FONT COLOR=”#008000”> O tipo que a 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> assumiu foi: <% = 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 assume, utiliza-se a função: <% = VarType(teste) %> Essa função retornará o código numérico correspondente ao subtipo assumido. Nesse caso (variável teste), o valor retornado é 2, que corresponde ao subtipo Integer. As variáveis cont e retorna não podem ser referenciadas, pois existem apenas para a função (Media), não sendo enxergadas pelo restante do script. 5.7 Declaração de variáveis Quando declaramos variáveis, precisamos ter em mente o seu escopo, ou seja, se será uma variável utilizada em toda a aplicação ou apenas em um módulo, uma função ou uma sub-rotina. Esse ciclo de vida da variável é flexível, ou seja, deve-se definir onde, quando e por quanto tempo ela existirá. 113 LINGUAGEM DE PROGRAMAÇÃO APLICADA As variáveis no VBScript podem existir em dois níveis ou escopos: script ou procedimento. O termo escopo está relacionado a quais pontos do programa aquela variável vai efetivamente existir. O espaço de tempo, que se refere ao tempo de vida da variável, depende do nível em que foi declarada. Quando uma variável é definida fora de uma determinada função ou de um procedimento, caracterizamos essa variável como global, ou seja, pode ser referenciada em qualquer ponto do script. 5.7.1 Procedimento Quando se verifica que uma variável precisa ser utilizada apenas para uma função ou procedimento, ela é declarada dentro dessa função ou procedimento. Dessa maneira, assim que a função ou procedimento deixar de ser executado, a variável deixa de existir na memória. Uma variável se declara utilizando a palavra dim, vejamos como: <script language=”vbscript”> dim minha_nova_variavel ‘Agora que a variável já existe podemos fazer uso dela minha_nova_variavel = “Valor da variavel”</script> Não importa que tipo de informação a variável vai conter, a declaração é feita da mesma forma. 5.7.1.1 Option explicit A declaração option explicit pode ser utilizada para forçar que variáveis sejam declaradas em nossos scripts. Isso pode impedir a ocorrência de erros, quando da tentativa de utilizar uma variável sem tê-la criado. Essa opção pode ser utilizada para evitar a possível ocorrência de erros em virtude da liberdade de não declarar as variáveis. No exemplo do código a seguir, vemos que o sistema gerará uma mensagem de erro devido ao uso de uma variável que não foi declarada previamente (tomas). <HTML> <HEAD> <TITLE>Option explicit</TITLE> </HEAD> <BODY> <script language=vbscript> option explicit dim Pepe pepe = 3 tomas = 87 </script> </BODY> </HTML> 114 Unidade III 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 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 Nesse trecho de código anterior, as variáveis foram declaradas fora de qualquer função ou sub-rotina e, sendo assim, podem ser utilizadas ou referenciadas em qualquer parte do script. Function Media(Valor) Dim Retorna Dim cont Retorna = 1 115 LINGUAGEM DE PROGRAMAÇÃO APLICADA Diferentemente das variáveis teste, mensagem e resultmedia, as variáveis retorna e cont foram declaradas dentro da função media e, sendo assim, só podem ser utilizadas ou referenciadas dentro dessa própria função. Para o restante do código, as variáveis retorna e cont não são válidas. Para declarar variáveis em VBScript, podemos usar algumas declarações e modificadores de acesso como, por exemplo: dim, public, static. A seguir, veremos mais detalhes dessas declarações. Para se declarar uma variável explicitamente, utiliza-se a dim, por exemplo: Dim nomevar [([dimensão])) Dim nomevar [([dimensão])), nomevar2 Em que nomevar e nomevar2 são nomes de variáveis, e dimensão representa o número da dimensão do vetor. No exemplo anterior, somos apresentados a um novo tipo de estrutura de dados. Essa estrutura é chamada de vetor. Observação Um vetor é uma variável utilizada para armazenar uma coleção de informações similares. Essa coleção é acessada através de seu índice, que começa na posição 0 (zero). A declaração dos vetores é semelhante à das demais variáveis. A única diferença é a opção de especificar a quantidade de posições que o seu vetor deverá conter. O código a seguir 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. Podemos ver a declaração da variável do tipo vetor (TipoProduto) e também a definição do seu tamanho (5 posições). Nas linhas seguintes, são inseridos valores do tipo “String” na primeira e na segunda posição do vetor. DimTipoProduto(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” 116 Unidade III Lembrete A opção Option Explicit não indica quando variáveis que foram declaradas não estão sendo utilizadas no 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 consequente elevação da utilização dos recursos de hardware. 5.7.1.2 Função ReDim A instrução ReDim pode ser usada para dimensionar ou redimensionar um vetor dinâmico. Para o VBScript, os vetores podem ser definidos como estáticos ou dinâmicos. Um vetor estático tem seu número de índices definido na declaração, como o vetor que foi definido no exemplo anterior (TipoProduto), que possui cinco posições. Já um vetor dinâmico pode variar o seu número de posições, sendo definido quando a aplicação é executada. Podemos criar um vetor dinâmico apenas declarando-o com os parênteses vazios (sem subíndices de dimensão). Sendo assim, os vetores dinâmicos são utilizados quando a alocação de memória precisar ser dinâmica, ou seja, o vetor pode assumir vários tamanhos, podendo aumentar ou diminuir. Se, ao aumentar o tamanho de um vetor, precisarmos manter os elementos já inclusos nas posições existentes, devemos utilizar o comando preserve, garantindo, assim, que o conteúdo dos campos que haviam previamente no vetor sejam mantidos. Por exemplo, o código a seguir cria um vetor dinâmico chamado ProdutosSelecionados e o redimensiona 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.7.1.3 Modificador de acesso public Uma variável declarada com o modificador de acesso public pode ser referenciada por todas as procedures de todos os scripts. Também é possível declarar vetores estáticos ou dinâmicos com a cláusula public. Sintaxe Public nomevar[([dimensão])] Em que nomevar é o nome do vetor, e dimensão é seu número de elementos. 117 LINGUAGEM DE PROGRAMAÇÃO APLICADA 5.7.1.4 Modificador de acesso private Uma variável declarada com o modificador de acesso private tem um nível de acesso mais restrito e consequentemente um grau de segurança um pouco maior, uma vez que só podem ser referenciadas no escopo (ou script) em que foram declaradas. Também é possível declarar vetores estáticos ou dinâmicos com a cláusula private. Sintaxe Private nomevar[([dimensão])] Em que nomevar é o nome do vetor, e dimensão é seu número de elementos. 6 OPERADORES E ESTRUTURAS DE FLUXO DE EXECUÇÃO 6.1 Operadores de execução Podemos definir os operadores em linguagens de programação como sendo os componentes que definem as operações a serem realizadas entre dois operandos, resultando em um determinado valor, que depende do tipo de dados que participam. Eles se classificam em alguns tipos como veremos a seguir. 6.1.1 Operadores aritméticos A linguagem VBScript é muito rica em operadores, que ajudam a manipular as variáveis em suas páginas ASP, como é o caso dos operadores 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. Quadro 14 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 esses operadores: 118 Unidade III dim v1 dim v2 v1 = 34 v2 = 43 soma = v1 + v2 subtracao = v1- v2 potencia = v1 ^ v2 divisaoInteiros = v1 \ v2 msgbox(divisaoInteiros) DivisaoReal = v1 /v2 msgbox(divisaoReal) A função msgbox mostra uma janela de alerta típica do Windows, com o conteúdo passado a ela via parâmetro. O operador (=) em VBScript não tem a interpretação dada em matemática. Ele representa a atribuição da expressão à direita ao nome da variável à esquerda. Já os operadores +, -, / e * representam as operações aritméticas básicas de soma, subtração, divisão e multiplicação, respectivamente. 6.1.2 Operadores relacionais Os operadores relacionais são usados para fazer comparações entre valores do mesmo tipo. 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 15 Símbolo Operação = Igual <> Diferente > Maior que < Menor que >= Maior ou igual que <= Menor ou igual que A seguir, um exemplo de script que realiza operações de comparação. Antes de mais nada, pontuemos que os operadores de comparação costumam ser utilizados dentro de uma estrutura condicional e realizam ações dependendo do resultado das comparações realizadas dentro dessas estruturas. Por esse motivo, incluímos no script a estrutura condicional if, que veremos com profundidade mais adiante. 119 LINGUAGEM DE PROGRAMAÇÃO APLICADA preco = 20000 dinheiroAtual = 3500 if (dinheiroAtual = preco) then msgbox (“está certinho”) end if if (dinheiroAtual < preco) then msgbox (“falta dinheiro”) end if Perceba 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 o interpretador não acusará erro de execução no caso de sua utilização incorreta. 6.1.3 Operadores lógicos Os operadores lógicos são empregados na comparação entre dois valores booleanos (0 ou 1), por isso, são denominados operadores lógicos binários. Como operadores lógicos em VBScript, temos: Quadro 16 Operador Operação AND E lógico OR OU lógico XOR XOR NOT NÃO lógico No código a seguir, podemos ver um 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 msgbox (“AND Resultado do operado é : True”) Else msgbox (“AND Resultado do operado é : False”) End If If a<>0 OR b<>0 Then msgbox (“OR Resultado do operado é : True”) Else msgbox (“OR Resultado do operado é : False”) End If If NOT(a<>0 OR b<>0) Then msgbox (“NOT Resultado do operado é : True”) 120 Unidade III Else msgbox (“NOT Resultado do operado é : False”) End If If (a<>0 XOR b<>0) Then msgbox (“XOR Resultado do operado é : True”) Else msgbox (“XOR Resultado do operado é : False”) End If 6.1.4 Operadores de concatenação Esse tipo de operador tem a função de interligar duas cadeias de caracteres (strings). Podemos concatenar as cadeias de strings utilizando tanto o operador & quanto o operador +. Vejamos um exemplo de utilização: 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 do valor: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 é tomar decisões ao longo de sua execução. Os comandos de decisão permitem determinar qual é a ação a ser tomada, com base no resultado de uma expressão condicional. O funcionamento é simples, com base no resultado de uma expressão booleana (verdadeiro ou falso), o fluxo do algoritmo segue para um bloco de instruções, ou não. 6.2.1.1 If...then O comando if serve para alterar o fluxo de execução de um programa, baseado no valor booleano (verdadeiro ou falso), de uma expressão lógica 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 depois uma expressão, que pode ou não ir entre parênteses, e, mais tarde, a palavra then. Na linha seguinte, é inserido o bloco de código que será 121 LINGUAGEM DE PROGRAMAÇÃO APLICADA executado caso a expressão seja verdadeira. Depois de colocar as sentenças associadas à avaliação positiva, é utilizado um end if para finalizar a estrutura do if. 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 VBScript, existe a possibilidade de utilizar um enunciado especial no lugar do comando else. Isso serve para encadear sentenças if, de modo que em um resultado negativo de um if possa se avaliar outra expressão que teria, por sua vez, outros enunciados then e provavelmente else ou novamente elseif. Veja o exemplo em seguida: 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 sentencas1; no caso negativo, avalia-se a expressao2. Se a expressao2 for positiva, executam-se as sentencas2; em caso negativo, avaliamos a expressao3. Se a expressão 3 for positiva, executam-se as sentencas3, e se nenhuma das expressões for positiva ele executa as sentencas4. A seguir, um exemplo de aplicação desse tipo de estrutura: 122 Unidade III Dim strCountry strCountry = “USA” If strCountry = “USA” Then MsgBox(“United States of America.”) ElseIf strCountry = “CA” Then MsgBox(WScript.Echo “Canada.”) Else MsgBox(WScript.Echo “Some other country.”) End If 6.2.1.4 Select case A estrutura select case busca uma variável definida dentro de uma lista de conjuntos possíveis. Se a variável pertencer àquele conjunto, o código imediatamente abaixo de case é executado. A diferença dessa estrutura com a estrutura do if se dá pelo fato de a estrutura select case não permitir comandos condicionais, apenas valores. Após a execução da estrutura, o bloco é finalizado com a instrução end select. Veja a sintaxe da estrutura a seguir: 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) End Select Vejamos agora um exemplo para facilitar o entendimento dessa estrutura. Faremos um cálculo fictício de imposto de renda. Suponha a seguinte tabela de imposto de renda: Tabela 3 Índice Salário 0% R$ 800,00 2% R$ 1.000,00 4% R$ 3.000,00 6% R$ 6.000,00 Nossa variável é o salário e cada valor é um conjunto. Observe: 123 LINGUAGEM DE PROGRAMAÇÃO APLICADA Select Case salário Case 800 taxa = 0 msgbox (“Salário é igual a 800”) Case 1000 taxa = 2 msgbox (“Salário é igual a 1000”) Case 3000 taxa = 4 msgbox (“Salário é igual a 3000”) Case 6000 taxa = 6 msgbox (“Salário é igual a 6000”) Case else msgbox (“Salário fora dos valores”) End Select No código anterior, a variável salário será comparada com cada valor de salário. Quando a variável salário for igual ao valor, a taxa é definida, uma caixa de texto será apresentada e a instrução pula para end select, encerrando o procedimento. 6.2.2 Estruturas de repetição As estruturas de repetição – também conhecidas como estruturas de looping – permitem a execução de grupo ou bloco de instruções repetidamente. As instruções podem ser repetidas até que uma condição seja falsa ou até que seja verdadeira. Essa é uma prática bem comum, pois, em muitos casos, é preciso percorrer uma determinada coleção de dados, um conjunto de registros, índices em matrizes etc. 6.2.2.1 Laço FOR A sentença for é utilizada para os loops, quando se sabe o número de vezes que o bloco de código deve ser executado. A seguir, sua sintaxe: FOR (iniciacao) TO (termo do loop) STEP (passo) sentencas ........ NEXT A Instrução realiza uma repetição através da iniciação até o termo do loop. Essa estrutura percorre todos os elementos de uma lista e, a cada visita, executa as sentenças presentes no bloco. O comando next serve para delimitar o final do loop, voltando outra vez ao princípio do for, assim até realizar o número de execuções determinado. 124 Unidade III O parâmetro STEP determina a quantidade de incremento ou decremento à qual a variávelserá submetida. No exemplo a seguir, o contador de uma variável j é incrementado em 2 unidades. Quando o laço é terminado, a variável total terá a soma de 2, 4, 6, 8 e 10. Sub SomaStep() Dim j, total For j = 2 To 10 Step 2 total = total + j Next MsgBox (“O Total é “ & total ) End Sub 6.2.2.2 Laço FOR EACH O laço for each é parecido com o laço for next, porém, em vez de percorrer os elementos um número específico de vezes, o laço for each percorre o laço para cada item de uma coleção de objetos. Vejamos o exemplo da estrutura de controle a seguir. Primeiro, cria-se um vetor, preenchido com valores numéricos em cada um de seus campos através de um loop for next comum. Em seguida, é utilizado o loop for each para acessar cada uma das posições desse vetor de números e escrever na página cada um deles. dim tor(20) for i=1 to 20 tor(i)=i next for each i 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, nesse caso, um vetor) faça um response.write(tor(i)). Com tor(i), acessa-se o índice atual e response.write() serve para escrever algo na página web. Combinados, o que é escrito, então, é o conteúdo da posição atual do vetor. 6.2.2.3 Laço WHILE ... WEND O laço de repetição while ... wend realiza um tipo de loop muito utilizado em programação, que é o loop enquanto. Esse loop é executado enquanto uma determinada condição for verdadeira. A diferença dessa estrutura em relação à estrutura do laço for é que esta é utilizada quando não conhecemos o número de iterações que temos que realizar. 125 LINGUAGEM DE PROGRAMAÇÃO APLICADA Seu funcionamento é assim: a condição é testada e, se for verdadeira, as sentenças serão executadas até encontrar a declaração wend. Em seguida, o controle retorna para a declaração while e a condição é verificada novamente. Se a condição ainda for verdadeira, o processo é repetido. Se for falsa, a execução é encerrada. Veja, a seguir, a sintaxe do comando: WHILE (condicao) sentenças .... WEND O código a seguir realiza a somatória de números inteiros enquanto o valor for menor do que 13. Em cada iteração do laço, o número é apresentado em uma janela. Também é possível alterar o número nessa mesma janela. Se introduzirmos um novo número nela, a conta continuará a partir do número introduzido. Se o número introduzido for maior que 13, o loop será finalizado. option explicit dim a a = 0 WHILE (a < 13) a = a + 1 a=inputbox(“Entre com um valor inteiro”,”Petição de número”,a,200,100) WEND 6.2.2.4 Laço DO ... LOOP O laço do ... loop é muito versátil. Ele, além de ser simples, é um dos mais flexíveis. Pode ser combinado às instruções while e until. A diferença entre essas duas combinações é o modo como a estrutura avalia a expressão lógica. A sintaxe fica da seguinte forma: DO [WHILE | UNTIL (condição)] sentenças ........ LOOP [WHILE | UNTIL (condição)] Entre o do e o loop, colocaremos as sentenças que queremos executar em cada iteração do loop. Os loops têm que avaliar em cada iteração se continuam executando as sentenças ou não. Para isso, avaliam uma condição. A versatilidade desse loop é que a condição pode ser expressa de modo que: • a condição ao lado do comando do é avaliada antes de começar a se executar o loop; • a condição ao lado do comando loop é avaliada depois de se executar o loop. Nesse caso, o loop será executado pelo menos uma vez. 126 Unidade III Na sequência, vejamos dois exemplos dessa construção, para melhor compreender seu funcionamento. O exemplo pede constantemente o nome do autor da página até que o nome digitado seja “Miguel”. O usuário também tem a possibilidade de escrever “out” e, nesse caso, o loop é encerrado através da sentença exit do, utilizada para finalizar loops. Dim entrada entrada = “” DO WHILE (entrada <> “Miguel”) entrada = inputbox (“Diga o nome do autor”,”seguraca”,”Miguel”,2,3) if (entrada = “out”) then msgbox “saia pela porta dos fundos” exit do end if LOOP Este outro exemplo apresenta uma janela em que existem dois botões: repetir e cancelar. Pressionando o botão “repetir”, é realizada a soma dos números inteiros até que o valor 6 seja alcançado e, após isso, o loop é finalizado. Se o botão “cancelar” for pressionado, o loop é finalizado no mesmo instante e uma janela com uma mensagem de cancelamento é apresentada. 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) 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 adolescents. 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/>. 127 LINGUAGEM DE PROGRAMAÇÃO APLICADA 6.3 Array Os arrays são estruturas de dados muito utilizadas em qualquer linguagem de programação. Trata-se de variáveis que podem guardar uma quantidade maior de elementos, pois possuem compartimentos em que a informação pode ser salva. O acesso a esses compartimentos é feito através de índices. 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 de utilizá-la, deve-se indicar o nome do array e, a seguir, entre parênteses, coloca-se seu número de posições, nesse caso, 20. Os arrays em VBScriptse iniciam na 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, primeira posição será a 0 e a última posição será a 20. Observação Em VBScript, assim como na maioria das linguagens de programação, os índices de listas são “zero-based”, ou seja, começam a contar do zero (0), e não do um (1), como estamos acostumados em nosso dia a dia. A atribuição de um valor em um array é semelhante à atribuição em variáveis comuns, porém é necessário indicar a posição em que o valor será atribuído, conforme pode ser visto na sintaxe em seguida: 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, essa ação deverá ser feita da seguinte maneira: response.write(meuArray(0)) A seguir, um exemplo sobre como utilizar os arrays. O primeiro laço preenche o array com valores, e o segundo imprime o conteúdo de cada posição do array na página. 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 128 Unidade III 6.3.1 Arrays multidimensionais Os arrays multidimensionais, também chamados de matrizes, são estruturas de dados que armazenam os valores em mais de uma dimensão. Os arrays vistos anteriormente armazenam valores em apenas uma dimensão, por isso, para acessar as suas posições, utilizamos somente um índice. Os arrays de duas posições, por exemplo, armazenam os valores de alguma forma, como em linhas e colunas e, por isso, é necessário dois índices para acessar cada uma de suas posições. Por exemplo, pode-se definir uma matriz de 8x8 dessa maneira: dim meuArray2Dimensoes (7,7) Como o array é de oito linhas e oito colunas, utilizamos o tamanho sete (de zero a sete). Para escrever e ler o array, pode-se utilizar a vírgula de maneira similar a como se declara. Por exemplo, para colocar dados na coluna 2 da linha 1, deve-se fazer o seguinte: meuArray2Dimensoes (1,2) = “texto posicao 1,2” 6.3.2 Redimensionamento de array Existem situações em que é necessário 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 criá-lo, utiliza-se o comando dim (como os anteriores) ou o comando redim, com a particularidade de que não se coloca nenhum valor entre parênteses, onde antes se indicava o tamanho 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 essa sentença, indica-se que meu_array deve ter o tamanho 10. Campos desde 0 até a 10. redim meu_array(10) O comando preserve garante que o conteúdo dos campos previamente existentes no array sejam preservados. redim preserve meu_array(20) Por último, se em qualquer momento for reduzido o número de posições do array, perde-se o que possa ter sido salvo nessas posições. No exemplo a seguir, foi criado um array dinâmico. Em seguida, este array foi redimensionado para o tamanho três. Seus campos são preenchidos e seus valores apresentados. Posteriormente, redimensionou-se o array para o tamanho sete, salvando os valores antigos através do comando preserve. 129 LINGUAGEM DE PROGRAMAÇÃO APLICADA Após isso, os novos campos criados foram preenchidos e a sequência do código apresenta um laço que escreve o conteúdo de todo o array na página. 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 i in frutas response.write frutas(i) & “<br>” next 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 percorrer um array desde o primeiro até o último campo. Para isso, é utilizada a função uBound(). Essa função retorna um valor contendo o maior índice para a dimensão definida de um array. Por exemplo: dim cidades(5) document.write ubound (cidades) Na página, seria escrito o número do maior índice do array cidades, nesse 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) Na página, seria escrito o número do menor índice do array cidades, nesse caso, zero, visto que o array começa na posição zero. 6.4 Funções e procedimentos As funções e procedimentos são recursos muito utilizados em programação, pois servem para agrupar um conjunto de instruções de acordo com a tarefa que elas desempenham. Por exemplo, quando chamamos a função response.write para imprimir informações na tela, não há preocupação de como o programa realiza essa tarefa, pois a função já realiza esse serviço da forma adequada. 130 Unidade III Essas estruturas, 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. Esses blocos de código são designados a cumprir uma tarefa particular. Provavelmente, a principal razão de sua existência é não precisar copiar o código todas as vezes que precisar executar determinada operação. A primeira atitude a ser tomada ao se criar uma estrutura desse tipo é pensar no motivo pelo qual ela será criada, a informação que precisará para ser executada (e que terá que ser recebida como parâmetro) e a informação que será devolvida. Com essas ideias em mente, podem-se construir os procedimentos e funções sem muita dificuldade, seguindo a estrutura a seguir. 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 6.4.1 Procedimentos ou sub Os procedimentos diferem das funções apenas por não retornarem resultado. A seguir, um exemplo de procedimento. Este procedimento chamado de “digaOla”, quando chamado, exibe uma mensagem em uma caixa de texto contendo o seguinte texto: “Olá pessoal!” <!DOCTYPE html> <html> <body> <script language=”vbscript” type=”text/vbscript”> Sub digaOla() msgbox(“Olá pessoal!”) End Sub </script> </body> </html> 6.4.2 Funções Como visto na definição dos procedimentos, as funções são blocos de códigos que retornam um valor ao serem chamadas pelo programa principal. Vejamos o exemplo que segue. Foi criada uma função que realiza um cálculo matemático e retorna o resultado do mesmo. O código da função será o seguinte: 131 LINGUAGEM DE PROGRAMAÇÃO APLICADA 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 A função recebe três parâmetros: o primeiro é um operador, que nada mais é do que um texto com o sinal da operação a ser realizada; os dois seguintes são os números que serão utilizados no cálculo. 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. 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 VBScript. 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 através 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 VBScript, como tipos de dados, quais os operadores e as estruturas de controle de fluxo de execução de um código. Mostrou-se 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. 132 Unidade III Exercícios Questão 1. (Esaf 2008) Quanto à estrutura, propriedades e sintaxe da linguagem de programação VBScript, é correto afirmar que: A) A instrução de tratamento de erro “On Error Clear” faz com que o Script continue funcionando, caso este erro ocorra em tempo de execução. Apesar de a mensagem de erro não ser gerada, o objeto Err armazena as informações da origem do erro. B) A instrução de tratamento de erro “On Error Resume Next” permite que o script corrija um erro e continue funcionando caso este erro ocorra em tempo de execução. Uma mensagem de erro é gerada apenas para informar que ocorreu erro. C) Sempre que o script encontra um erro em tempo de execução, as propriedades do objeto Err são preenchidas automaticamente com as informações que identificam o erro. D) Sempre que o objeto de automação for responsável pelo erro, a mensagem “Microsoft VBScript runtime error” é exibida como a origem. E) Após a ocorrência de um erro, os valores das propriedades do objeto Err são reinicializados automaticamente com valor null sempre que uma nova linha do script é executada com sucesso. Resposta correta: alternativa C. Análise das alternativas A) Alternativa incorreta. Justificativa: sem tratamento de erros, qualquer erro de tempo de execução que ocorre é fatal: uma mensagem de erro é exibida e a execução é interrompida. B) Alternativa incorreta. Justificativa: o VBScript não suporta o conceito de continuar a execução em um rótulo de tratamento de erros. Em outras palavras, você não pode usar On Error GoTo no VBScript. Em vez disso, use On Error Resume Next. C) Alternativa correta. Justificativa:isso realmente acontece quando se encontra o erro em tempo de execução. D) Alternativa incorreta. 133 LINGUAGEM DE PROGRAMAÇÃO APLICADA Justificativa: Microsoft VBScript runtime error é o Err.Source. E) Alternativa incorreta. Justificativa: suas propriedades serão preenchidas como o tipo de erro. Questão 2. (FGV 2010) No desenvolvimento de sistemas interativos para a web, o recurso ASP possui a seguinte característica: A) Tecnologia executada nativamente em servidores Linux, através do serviço chamado IIS, codificada em linguagem de marcação DHTML. B) Tecnologia executada nativamente em servidores Windows, através do serviço chamado ActiveX, codificada em linguagem de marcação XML. C) Estrutura de programação em script que se utiliza de Perlscript ou Python, processada pelo lado do cliente para geração de conteúdo estático na web. D) Estrutura de programação em VBscript que se utiliza de Ajax e C#, processada pelo lado do servidor para geração de conteúdo dinâmico na web. E) Estrutura de programação em script que se utiliza de VBScript ou Jscript, processada pelo lado servidor para geração de conteúdo dinâmico na web. Resolução desta questão na plataforma.
Compartilhar