Trabalho Computacional
Mecânica de Fluidos Ambiental
Dúvidas: [email protected]
Ext:3430
Página: https://fenix.ist.utl.pt/homepage/ist146730/mecanicados-fluidos-ambiental-2011-2012 (work in progress...)
Guillaume Riflet
Objectivos



Programming 101
MS-excel macros
Visual Basic for Applications (VBA) 101
https://fenix.ist.utl.pt/homepage/ist146730/mecan
ica-dos-fluidos-ambiental-2011-2012 (work in
progress...)
Interesse para engenheiros do
ambiente



Utilização mais avançadas de ferramentas
de folhas de cálculo.
Em muitas circunstâncias, o excel (ou
derivado) é a melhor ferramenta realizar
determinadas tarefas.
Qualquer empresa do sector público ou
privado usa uma ferramenta de folha de
cálculo. Muitas permitem utilizar macros.
Linguagens de programação







Visual Basic
Fortran
C/C++
C#
Matlab
Java
(pôr linguagem de programação favorita)
Diferenças entre VB e VBA
VB
VBA
Compilado
Interpretado
IDE próprio (VS2Kx)
IDE embebido no Office
Bibliotecas e classes
externas importadas
Bibliotecas e classes nativas
de Office
Exemplo I
Sheet1
Dica: Alt+F11
Exemplo I: glossário






Source-code, código-fonte
Compiler/interpreter,
compilador/interpretador
Subroutine, Subrotina
String, Sequência de caracteres
Propriedade dum objecto
Excel macro, Macro de excel
Exemplo II
Sheet1
Exemplo III
Sheet1
Exemplo III: glossário



Argument, Argumento
Argument passing, Passagem de argumento
Argument type, Tipo de argumento
Exemplo IV
Sheet1
Exemplo IV: glossário


Function, Função
Function type, Tipo de função
Exemplo V
Sheet1
Exemplo V: glossário


Variable, Variável
Variable type, Tipo de variável
Variáveis
Dim Nome As
Tipo
Dim Aluno as
String
Dim Idade as
Integer
Dim Nota as
Single
Declaração
Implícita/Explícita
Function SafeSqr(num)
TempVal = Abs(num)
SafeSqr = Sqr(TempVal)
End Function
Function SafeSqr(num)
TempVal = Abs(num)
Option Explicit
SafeSqr = Sqr(TemVal)
End Function
Tipos de variáveis I
Data type
Range
Byte
0 to 255
Boolean
True or False
Integer
-32,768 to 32,767
Long
(long integer)
-2,147,483,648 to 2,147,483,647
Single
(single-precision
floating-point)
-3.402823E38 to -1.401298E-45 for negative values; 1.401298E-45 to 3.402823E38 for
positive values
Double
(double-precision
floating-point)
-1.79769313486232E308 to
-4.94065645841247E-324 for negative values; 4.94065645841247E-324 to
1.79769313486232E308 for positive values
Currency
(scaled integer)
-922,337,203,685,477.5808 to 922,337,203,685,477.5807
Tipos de variáveis II
Decimal
+/-79,228,162,514,264,337,593,543,950,335 with no decimal point;
+/-7.9228162514264337593543950335 with 28 places to the right of the decimal;
Date
January 1, 100 to December 31, 9999
Object
Any Object reference
String
(variable-length)
0 to approximately 2 billion
String
1 to approximately 65,400
(fixed-length)
Variant
(with numbers)
Any numeric value up to the range of a Double
Variant
(with characters)
Same range as for variable-length String
User-defined
(using Type)
The range of each element is the same as the range of its data type.
Constantes
•Public Const conMaxPlanets As Integer = 9
•Const conReleaseDate = #1/1/95#
•Const conPi = 3.14159265358979
Constantes são valores que aparecem várias vezes no programa e que
ao contrário das variáveis não alteram o seu valor.
Projecto
Modulo
SubRotina
Private Nome as Tipo
Public Nome as Tipo
Dim Nome as Tipo
Sub-procedures & functions
Sub Rotinas
Funções
Sub teste (File As String)
Open (File)
Function Hypotenuse (A As Integer, B
As _ Integer) As Double
ReadFirstLine (File)
Hypotenuse = Sqr(A ^ 2 + B ^ 2)
...
End Sub
End Function
Call teste (A)
strX = Hypotenuse(Width, Height)
Arrays
Dim Conta(6) As Integer
i=0
i=1
i=2
i=3
i=4
i=5
0
i=4
3
i=5
Dim Teste(3,3) As Boolean
False
True
False
Teste(0,1) = True ; Teste (2,0) = True
False
False
False
True
False
False
Conta(0) = 12 ; Conta(3) = 21; Conta(5) = 3
12
i=0
0
i=1
0
i=2
21
i=3
Exemplo VI
Sheet1
Estruturas de loop I
Do While ... Loop
For Each...Next
Do While line < 10
Call ReadLine(line)
Loop
For Each File In folder.File()
Call ReadFile (File)
Next File
line = line+1
For...Next
For i = 0 To 10
For j = 0 to 10
Matriz(i,j) = cos(x)
Next
Next
Exemplo VII
Sheet1
Grupo de exercícios 1
1.
2.
3.
4.
5.
Criem a função de um argumento de tipo double que retorne 3x*x – 2.
Criem uma subrotina que teste a função para x=4 e x=25, escrevendo
o resultado numa folha de excel.
Concebam um ciclo for numa subrotina que escreva numa folha de
excel os resultados de 3x*x*x + 4 para todos os x que pertençam ao
intervalo [-30 , 50] com incrementos 2 em 2.
Caso não tenham feito, repitam o exercício anterior usando um array.
Repitam o exercício anterior, mas desta vez a função é 3x*x*x + 4 se
o resultado for positivo e 0 (zero) caso contrário (usem um if).
Gravem a macro dum gráfico com os resultados do exercício anterior
(com x nas abscissas e os valores da função nas ordenadas). Vejam o
código que resultou da gravação da vossa macro.
Configurações regionais


Atenção no que toca à linguagem nativa do
office. SEN (português) ou SIN (inglês).
Atenção às definições de separadores de
casas decimais (3.14 ou 3,14) e de formatos
de data (13/05/1980 ou 1980-05-13 ou...).
Download

VBA