Objectivos Introdução à programação Macros em Microsoft Excel Introdução ao Visual Basic para Aplicações (VBA)
Vantagens da programação Eficiência em operações repetitivas Melhor clarividência na decomposição de problemas Mais-valia em termos académicos (resolução de problemas; trabalhos) e profissionais Cálculo numérico aplicado aos mecanismos de transporte e dispersão de poluentes
Linguagens de programação Visual Basic FORTRAN C, C++, C# Java...
Glossário Código-fonte Compilador/Interpretador
Exemplo Código-fonte em Visual Basic DimNumberOfWords As Integer = 0 For Each Line In File. Lines For Each Word In Line.Words NumberOfWords = NumberOfWords + 1 Next Tradução Define NumberOfWords como sendo um número inteiro igual a zero Por cada linha do conjunto de linhas que compõe o ficheiro Por cada palavra do conjunto de palavras que compõe uma linha Adiciona mais uma palavra ao número total de palavras Passa à próxima palavra Next StatusBar.Text = Str(NumberOfWords) + words Passa à próxima linha Escreve o número total de palavras do ficheiro na StatusBar (Barra de estado)
Definição de variáveis Dim Nome As Tipo Dim Nome As String Dim Numero As Integer Dim DataDeNascimento As Date Nome = Luís Fernandes Numero = 91 DataDeNascimento = 19-08-1977
Tipo de variável Byte Boolean Domínio de aplicação Mínimo Máximo 0 255 True ou False Integer -32768 32767 Long -2147483648 2147483647 Single Valores negativos Valores positivos -3.402823e38 1.401298e-45-1.401298e-45 3.402823e38 Double Valores negativos Valores positivos -1.79769313486232e308 4.94065645841247E-324-4.94065645841247e-324 1.79769313486232e308 Date 1 de Janeiro de 100 31 de Dezembro de 9999 Object String Variant User defined type Qualquer tipo de variável Conjunto de caracteres (limite de aprox. 2 biliões) Variável com valor numérico ou não-numérico (caracteres) Tipo de variável definido pelo utilizador, que pode consistir de uma variável formada pelo conjunto de outras variáveis primárias (ver exemplo)
Tipos definidos Type Estudante Nome As String DataDeNascimento As Date Numero As Integer MediaCurso As Single PagouAsPropinas As Boolean End Type Dim UmEstudante As Estudante Dim OutroEstudante As Estudante UmEstudante.Nome = Luís Fernandes UmEstudante.PagouAsPropinas = False OutroEstudante.MediaCurso = 15.3 OutroEstudante.Numero = 103
Declaração de constantes Const Pi As Double = 3.1415926535897932384626433832795 Perímetro = 2 * Pi * Raio Área = Pi * Raio * Raio
Declaração implícita/explícita Dim Numero As Integer Dim Raiz As Single Numero = 36 Raiz = Sqr(Numro) Raiz = 0 Option Explicit Dim Numero As Integer Dim Raiz As Single Numero = 36 Raiz = Sqr(Numro) Erro ortográfico não é detectado Com a opção Option Explicit o erro é detectado
Procedimentos Subrotinas Dim a, b, c As Integer Call Soma(a, b, c) Sub Soma(a As Integer, b As Integer, _ c As Integer) c = a + b End Sub Funções Dim a, b, c As Integer c = Soma(a,b) Function Soma(a As Integer, _ b As Integer) As Boolean Soma = a + b End Function
Passagens de argumentos Sub Main() Dim a As Integer a = 10 Call TestVal(a) Call TestRef(a) a = 10 a = 11 Sub TestVal (ByVal a As Integer) a = a + 1 End Sub Sub TestRef (ByRef a As Integer) a = a + 1 End Sub a = 11 a = 11 End Sub
Arrays Dim Turma(1 To 25) As Estudante Turma(1).Nome = Zé Turma(2).Nome = Chico... Turma(27).Nome = António Dim Turma(27) As Estudante Turma(0).Nome = Zé Turma(1).Nome = Chico... Turma(27).Nome = António
Estruturas de decisão Dim a As Integer a = 1 If a > 0 Then MsgBox O valor é maior que zero End If If a > 0 Then MsgBox O valor é maior do que zero Else MsgBox O valor não é maior do que zero End If If a > 0 Then MsgBox O valor é maior do que zero ElseIf a = 0 Then MsgBox O valor é igual a zero Else End If MsgBox O valor é menor do que zero Dim a As Integer Select Case a Case -1 MsgBox O valor é igual a -1 Case 0 MsgBox O valor é igual a zero Case 1 MsgBox O valor é igual a 1 Case Else End Select MsgBox O valor é outro que não -1, 0 ou 1
Estruturas loop I Dim i As Integer For i = 1 To 10 MsgBox Esta é a operação nº & i Next For i = 1 To 10 MsgBox Esta é a operação nº & i If i = 7 Then Exit For Next Dim Estudante As Estudante Dim Estudantes As Collection For Each Estudante In Estudantes MsgBox Estudante.Nome Next
Estruturas loop II Dim i As Integer i = 0 Do While i<10 Loop MsgBox Esta é a operação nº & i i = i + 1 Dim i As Integer i = 0 Do Loop MsgBox Esta é a operação nº & i i = i + 1 If i > 10 Then Exit Do Dim i As Integer i = 0 While i<10 MsgBox Esta é a operação nº & i Wend Dim i As Integer i = 0 Do Until i=10 i = i + 1 MsgBox Esta é a operação nº & i Loop