A Linguagem Basic VBEsp01 1 Histórico Darthmouth College em 1959 BASIC (Beginners All-Purpose Symbolic Instruction Code) Sub conjunto de FORTRAN Típica de mini computadores Linguagem interpretada VBEsp01 2 Histórico Interpretador de pequeno tamanho Crescimento com os micro computadores enorme Primeiro produto comercializado por Bill Gates Tornou-se a linguagem conhecida pelo maior número de usuários VBEsp01 3 Histórico Por diversas razões a linguagem Basic tem sido bastante prestigiada pela Microsoft Em março de 1988 Alan Cooper desenvolveu o produto “drag-and-drop” Tripod e negociou o conceito deste produto, cognominado Ruby com a Microsoft. Bill Gates comprou a empresa. Em março de 1991 foi lançada a primeira versão do produto Visual Basic, ou VB1 VB tornou-se uma extensão de Basic VBEsp01 4 Histórico Em novembro de 1992 foi lançado o VB2 com suporte a ODBC. Nessa ocasião foi lançado o Access. Em junho de 1993 foi lançado o VB3 e o revolucionário Data Control O VB4 foi lançado em outubro de 1996 O VB5 foi lançado em abril de 1997 Em outubro de 1998 foi lançado VB6. Em 2001 foi lançado o Visual Basic .NET VBEsp01 5 Tipos de Dados Variant tipo genérico Boolean True ou False Byte 0 até 255 Integer -32.768 até 32.767 Long -2.147.483.648 até 2.147.483.647 Single -3,402823E38 até -1,401298E-45 (para valores negativos) 1,401298E-45 até 3,402823E38 (para valores positivos) Double -1,79769313486232E308 até -4,94065645841247E-324 (negativos) 4,94065645841247E-324 até 1,79769313486232E308 (positivos) VBEsp01 6 Tipos de Dados Currency -922.337.203.685.477,5808 até 922.337.203.685.477,5807 Decimal +/-79.228.162.514.264.337.593.543.950.335 (sem casas decimais) +/-7,9228162514264337593543950335 (com casas decimais) Date 1 de Janeiro de 100 até 31 de Dezembro de 9999 String 1 até aproximadamente 2 bilhões de caracteres 65.400 caracteres se tamanho fixo Type definido pelo utilizador VBEsp01 Object referência a objetos 7 Variáveis Iniciando com letra Com até 255 caracteres Sem brancos, espaços, pontos, +/Diferentes das palavras reservadas VBEsp01 8 Declarações de variáveis Dim Com sufixos Integer Long Single Double Currency String % & ! # @ $ VBEsp01 9 Exemplos de variáveis vByte = 2 vBoolean = True vInteger = 333 vLong = 98007 vSingle = 3.141592 vDouble = 3.1492574567 vCurrency = 426.78 vDate = #18/09/1977”# vString = “String de amostragem” VBEsp01 10 O tipo de dados Variant O tipo de dados Variant é o tipo Default e pode armazenar qualquer tipo de dados, reajustando-se dinamicamente ao seu conteúdo. VBEsp01 11 Declaração de Variáveis Dim nomeUm as Integer Dim inteiroUm as Integer Dim longoDois as Long Dim singleTres as Single Dim duploUm as Double Dim quantiaUm as Currency Dim textoUm as String VBEsp01 12 Visibilidade das variáveis Declaradas em procedimentos ou funções tem visibilidade local Declaradas na área de declarações de módulos tem visibilidade dentro do módulo VBEsp01 13 Visibilidade Pública ou Global Dados que devam ser acessados por diversos procedimentos devem ser públicos. Para tornar um objeto público a sintaxe é Public nomeDaVariavel as tipoDaVariavel VBEsp01 14 Variáveis Estáticas Variáveis com visibilidade local são dinâmicas. O valor das variáveis dinâmicas é inicializado quando o procedimento for invocado Variáveis que devem guardar o seu último valor são variáveis estáticas Só se pode declarar objetos estáticos nos procedimentos e não nos módulos Para tornar um objeto estático a sintaxe é Static nomeDaVariavel as tipoDaVariavel VBEsp01 15 Visibilidade e longevidade de uma variável Public: visível em todos os módulos e durante toda a execução Private ou Dim: visível dentro do seu módulo e durante toda a execução Dim: visível dentro do seu procedimento e durante a sua execução Static: visível dentro do seu procedimento e durante toda a execução VBEsp01 16 Constantes As constantes são declaradas da forma Const nomeDaConstante as tipoDaConstante = valorDaConstante VBEsp01 17 Constantes System-defined constants: True; False; Null; Empty; Nothing Intrinsic constants (bibliotecas do VBA): Const LEFT_BUTTON = 1 Symbolic constants: Const PI = 3,14 VBEsp01 18 Operadores Texto & (concatenação) Relacionais = (igual a) > (maior que) < (menor que) <> (diferente de) >= (maior ou igual) <= (menor ou igual) Like (padrões de texto) Is (referência de objetos) VBEsp01 19 Precedência de Operadores Maior precedência ^ exponenciação - negação * , / multiplicação e divisão \ divisão inteira Mod resto da divisão + , - adição e subtração & concatenação = , > , < , <> , >= , <= , Like , Is comparação And , Or , Not , Imp , Xor , Eqv lógica Menor precedência VBEsp01 20 Outros caracteres ‘ ou Rem comentários : múltiplas instruções na mesma linha _ uma instrução em múltiplas linhas VBEsp01 21 Arrays Arrays são agregados de valores homogêneos A linguagem VB possui arrays fixos e dinâmicos Arrays fixos tem seu número de elementos determinado na declaração Arrays dinâmicos VBEsp01 22 Declaração de Arrays Dim/Public/Private nomeDoArray (númeroDeElementos) [sufixo] As tipoDoArray Dim Valores(500) as Integer ‘ Array com 500 elementos inteiros visível localmente Public Valores(500) as Integer ‘ Array com 500 elementos inteiros visível globalmente VBEsp01 23 Declaração de Arrays Dim Alfa (200) ‘ Array com 200 elementos tipo Variant visível localmente Public Alfa (200) ‘ Array com 200 elementos tipo Variant global Dim Dias (7) As String ‘ Array com 7 elementos tipo String visível localmente Public Dias (7) As String ‘ Array com 7 elementos tipo String global VBEsp01 24 Declaração de Arrays Por default o primeiro elemento de um array tem índice 0 Dim Valores (10 to 40) as Integer Dim Alfa (100 to 150) Public Dias (1 to 7) As String VBEsp01 25 Acesso a elementos de Arrays Dias(1) = “Domingo” Alfa(1) = “Rio de Janeiro” Alfa(15) = #12/12/1812# Alfa(180) = 512 Valores(12) = 412 VBEsp01 26 Arrays dinâmicos ReDim: redefine os limites de um dado array Redim Preserve: redefine os limites de um dado array e preserva os valores nele existentes (é aplicável apenas quando se redefine a última dimensão) LBound: retorna o limite inferior de um dado array UBound: retorna o limite superior de um dado array VBEsp01 27 Procedimentos Tipos Procedimentos Funções Classificação Da linguagem De eventos Do usuário VBEsp01 28 Definições Procedimentos e funções da linguagem são aqueles fornecidos pelo fornecedor do produto VB (Microsoft) Procedimentos e funções de eventos são ações em resposta a eventos da interface Procedimentos e funções do usuário são a parte do algoritmo implementada pelo usuário VBEsp01 29 Procedimentos de eventos Procedimentos de eventos são iniciados aplicando um duplo clique no objeto correspondente, o que abre a janela de código correspondente Sub Objeto_Evento (arg1, arg2, .. argN) ‘ comandos do procedimento End Sub VBEsp01 30 Exemplo de procedimentos de eventos Private Sub cmdExecutar_Click() Dim i, j As Single If Text1.Text = "" Then ‘ Caixa de textos 1 vazia i=0 Else: i = CSng(Text1.Text) ‘Converter para real o conteúdo End If If Text2.Text = "" Then ‘ Caixa de textos 2 vazia j=0 Else: j = CSng(Text2.Text) ‘Converter para real o conteúdo End If Text3.Text = i + j End Sub VBEsp01 31 Procedimentos do usuário Procedimentos e funções do usuário são criados da forma: Abrir a janela de códigos do módulo Dar um clique no menu Tools Selecionar a opção Add Procedure Efetuar as escolhas de tipo, escopo e tipo de variáveis Dar um clique no botão OK Digitar o código VBEsp01 32 Procedimentos do usuário Sub Nome_do_Procedimento (arg1, arg2, .. argN) ‘ comandos do procedimento End Sub VBEsp01 33 Exemplo de procedimento do usuário Sub Calculo (X As Variant) X=X*5 MsgBox “ O resultado desejado é “ & X End Sub VBEsp01 34 Funções do usuário Function Nome_da_Função (arg1, arg2, .. argN) ‘ comandos da função End Function VBEsp01 35 Exemplo de Função do usuário Private Function maximo(i As Double, j As Double) If i > j Then maximo = i Else maximo = j End If End Function VBEsp01 36 Edição de rotinas do usuário A visualização e edição das rotinas (procedimentos e funções) do usuário podem ser feitas usando: – Os ComboBoxes da janela de Códigos – As chamadas da rotina – O utilitário ObjectBrowser VBEsp01 37 Edição de rotinas do usuário usando ComboBoxes Abrir a janela de código do componente aonde foi inserida a rotina No ComboBox de objetos selecionar General Abrir a lista de procedimentos Selecionar o módulo desejado VBEsp01 38 Edição de rotinas do usuário usando as chamadas Abrir a janela de código do componente aonde foi inserida a rotina Posicionar o cursor sobre uma chamada à rotina Pressionar as teclas SHIFT+F2 VBEsp01 39 Edição de rotinas do usuário usando Object Browser Pressionar F2 ou abrir o menu View e selecionar Object Browser Abrir a janela de código do componente aonde foi inserida a rotina Na ListBox de Classes selecionar o nome do componente aonde foi inserida a rotina Na ListBox de “Member of...” selecionar a rotina VBEsp01 40 Declaração de parâmetros Os tipos de parâmetros são declarados na definição das rotinas Sub Objeto_Evento (arg1 As Tipo_1, arg2 As Tipo_2, ..., argN As Tipo_N) ‘comandos End Sub VBEsp01 41 Exemplo de declaração de parâmetros Private Sub Text1_KeyPress(KeyAscii As Integer) Dim Tecla as String Tecla$ = Chr(KeyAscii) If Tecla >= “0” And Tecla$ <= “9” Then Beep KeyAscii = 0 End If End Sub VBEsp01 42 Declaração de parâmetros Os argumentos podem ser passados por referência ou por valor O default é a passagem por referência VBEsp01 43 Declaração de parâmetros Quando não se desejar que a rotina altere os dados do procedimento chamador deve-se usar a passagem por valor que pode ser feita: Na definição da rotina Sub Objeto_Evento (ByVal arg1 As Tipo_1, ByVal arg2 As Tipo_2, ..., ByVal argN As Tipo_N) ‘comandos End Sub ou na chamada da rotina Objeto_Evento (arg1), (arg2), ..., (argN) VBEsp01 44 Exemplo de passagem por valor Sub Calculo (ByVal X As Variant) X=X*5 MsgBox “ O resultado desejado é “ & X End Sub VBEsp01 45 Argumentos Opcionais Com a declaração Optional especificam-se argumentos que o usuário pode utilizar ou não Quando o usuário não especificar argumentos opcionais serão utilizados argumentos default Quando se usa a declaração Optional para uma lista de parâmetros, todos os parâmetros subsequentes deverão também ser opcionais VBEsp01 46 Visibilidade de Rotinas Tal como as variáveis os procedimentos e as funções podem ser dos tipos Public Private Static O default para as rotinas é Public Procedimentos de eventos são privados VBEsp01 47 Estruturas Condicionais Tipos If .. End If Select Case End Select VBEsp01 48 Exemplo do uso de If 'Testa o número digitado If Text1.Text = "0" Or Text1.Text = "" Then 'Se for 0 ou vazio End 'Finaliza a aplicação ElseIf Text1.Text = "1" Then 'Se for 1 MsgBox "Número 1 foi digitado" ElseIf Text1.Text = "10" Then 'Se for 10 MsgBox "Número 10 foi digitado" Else 'Se não for 0,1, 10 ou "" (vazio) If IsNumeric(Text1.Text) Then 'Se o conteúdo for numérico MsgBox "Número Inválido" ElseIf VarType(Text1.Text) = vbString Then MsgBox "Não são permitidas as entradas de Strings" Else MsgBox "Conteúdo Inválido" End If VBEsp01 End If 49 Estruturas Condicionais If .condição Then comandos [ElseIf condiçãox Then] comandos [Else] comandos End If VBEsp01 50 Estruturas Condicionais Select Case condição [Case expressão1] [comandos] [Case Else] [comandos] End Select VBEsp01 51 Exemplo do uso de Select mesi=month(date) Select case mesi Case 1 stringMes="Janeiro" Case 2 stringMes="Fevereiro" Case 3 stringMes="Março" Case 12 stringMes="Dezembro" End Select VBEsp01 52 Repetições Tipos Do While While For VBEsp01 53 Repetições Do [{While | Until} condição] [comandos] [Exit DO] [comandos] Loop VBEsp01 54 Repetições While condição [comandos] Wend VBEsp01 55 Exemplo da estrutura While contador = 0 While menor <= maior menor = menor + terceiro contador = contador + 1 Wend Text3.Text = contador VBEsp01 56 Repetições For contador = valor_inic To valor_final [Step incremento] [comandos] [Exit For] [comandos] Next [contador] VBEsp01 57 Exemplo do uso de For .. Next Dim Contador% 'Variável contadora ‘Repete iniciando contador% com 0 'até que o contador seja igual à 2000 For Contador% = 0 To 2000 'Adiciona um novo Ítem no List Box List1.AddItem "Ítem " & Str(Contador%) Next VBEsp01 58 Estrutura Width Esta estrutura simplifica a escrita de código permitindo que os objetos apareçam implícitos em suas propriedades. Sintaxe Width objeto comandos End Width VBEsp01 59 Exemplo da estrutura Width Private Sub cmdTestar_Click() With Label1 .Caption = “Veja o teste” .FontBold = True .ForeColor = vbRed .AutoSize = True End Width End Sub VBEsp01 60 Estrutura For Each Esta estrutura permite a execução de uma seqüência de comandos para cada um dos elementos de um array ou conjunto. Sintaxe For Each elemento In grupo [comandos] [Exit For] Next VBEsp01 61 Exemplo de For ... Each Dim qry As QueryDef ' Processar cada consulta armazenada For Each qry In DB.QueryDefs QryList.AddItem qry.Name Next VBEsp01 62 Cláusula ParamArray Esta cláusula permite que um array seja definido como um parâmetro de procedimento. A chamada do procedimento pode ser feita passando quantos parâmetros forem necessários. VBEsp01 63 Exemplo Option Explicit Sub Insere (ParamArray Argumentos()) Dim x as Variant For Each x In Arguments List1.AddItem x Next End Sub Private Sub btnInsere_Click() Insere “Argumento 1”, “Argumento 2”, _ “Argumento 3” End Sub VBEsp01 64 Argumentos Nomeados Utilizando-se argumentos com nome podese chamar um procedimento ou função passando os argumentos em qualquer ordem. Dentro da chamada deve-se usar o nome do parâmetro com atribuição de valor pelos símbolos “:=“. Exemplo VBEsp01 65 Uso de argumentos com nome Private Sub Command1_Click() Exibir _ pLugar := vbCenter, pMens:= “Argumentos”, pTamanho: = 12 End Sub Private Sub Exibir (pMens As String, pTamanho As Integer, pPLugar as Integer) Label1.Alignment = pLugar Label1.FontSize = pTamanho Label1.Caption = pMens End Sub VBEsp01 66 Projetos Visual Basic VBEsp01 67 Arquivos Componentes de um Projeto De Projeto (.vdp) De Formulários (.frm) De Módulos (.bas) De Controles ActiveX (.ocx) De Controles do usuário (.ctl) VBEsp01 De páginas de propriedades (.pag) De recursos (.res_) Externos (.exe, .dll e outros) 68 Componentes de um Projeto Arquivos de Projeto contém um índice dos componentes do Projeto Documentos ActiveX são semelhantes a formulários visualizados por browsers Controles do usuário são controles ActiveX criados pelos usuários VBEsp01 69 Componentes de um Projeto Páginas de propriedades são arquivos para gerar interfaces de manipulação dos controles ActiveX gerados pelo usuário Arquivos de Recursos armazenam dados referentes a textos, menus, mapas de bits, sons, etc. VBEsp01 70