Trabalho Computacional
Mecânica de Fluidos Ambiental
aula 5
Guillaume Riflet,
Dúvidas: [email protected] Ext:3430
Página:
https://fenix.ist.utl.pt/homepage/ist146730/mecanica-dosfluidos-ambiental
Sumário aula 1






subrotinas, funções,
argumentos, variáveis, tipos de variáveis,
arrays,
ciclos while e for,
Alcance (Public, Private)
debug.
https://fenix.ist.utl.pt/homepage/ist146730/mecanica-dosfluidos-ambiental
Exercícios aula 1





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.
Sumário aula 2









condições (if),
Passagem de argumentos por valor ou por referência
Interface Excel-VBA,
Tipos
eventos,
userforms,
Gravação de macros,
Alguns objectos nativos de VBA para excel
Apresentação da equação da difusão.
Exercícios aula 2





Com um ciclo for e com uma condição if, escreva numa coluna de
excel os valores da função seguinte, definida no intervalo [-50,50] com
incrementos de 5 unidades de intervalo: f(x) = x * Sqr(-x) se x pertence
a [-50,-10], f(x) = -10 * Sqr(10) + ( x^2 – 10^2) se x pertence a ]-10,20],
f(x) = 300 – Sqr(10^3) - x^3 em caso contrário.
Conceba uma subrotina que faça o gráfico automático da função a
partir da gravação duma macro.
Tente alterar a subrotina de criação de gráfico de modo a que receba
um argumento contendo o número de linhas da coluna de excel a
usar.
Repita o primeiro exercício com um incremento de apenas 2 unidades
de intervalo.
Crie uma userform que peça ao utilizador o intervalo e o incremento da
função e que tenha um botão que faça o gráfico correspondente.
Exercícios aula 2


Escreva uma subrotina que contenha uma variável inteira a inicializada
a 22. Tente incrementar a variável a chamando uma subrotina que use
um argumento ByRef e chamando outra subrotina que use um
argumento ByVal. Quais das subrotinas que é incrementa de facto a
variável a? (recomendação: use o debugger para ver, passo a passo,
a evolução das variáveis.)
Escreva uma subrotina que contenha um array de reais. Inicialize o
array com um ciclo for com valores da função f(x) = A * exp(-x)
definidos no intervalo [-3, 4] e com um incremento de 0.3. Chame uma
subrotina que inverta a ordem dos valores no array. (Deve usar ByRef
ou ByVal?). Escreva os valores do array numa coluna de excel e faça
o gráfico da função.. (Recomendação: use o debugger).
Sumário aula 3



Aula mudada para LTI lemac (~40 min de atraso)
Familiarização com o ambiente de desenvolvimento
em VBA.
Resolução de exercícios e exemplos em VBA.
–
–
–
–


Ciclo for
Condição if
Manipulações de arrays
Criação de subrotinas e de funções.
Criação duma userform.
Criação duma macro para fazer um gráfico.
Exercícios aula 3





Programe a função f que varia no espaço e no tempo: f(x,t) = x^2 * t +
Sqr(Abs(x)).
Programe um array numa subrotina que inicialize a função f(x,t0) onde
x pertença ao intervalo [0 1000] com um incremento dx=50 e t0=0.0.
Escreva os resultados para vários instantes de t no interval [0.0 10.0]
de f(x,t), um instante por linha, usando um ciclo for .
Programe o gráfico com várias séries de resultados de f(x,t), (uma
série por instante).
Crie uma userform onde o utilizador possa inserir os incrementos de
espaço e de tempo, (dx e dt) e onde possa definir o comprimento de a
duração do domínio de f.
Sumário aula 4


Finalização do exercício da aula anterior (userform +
gráfico). Ficou por finalizar (aula 5).
Métodos numéricos diferenças finitas (explícito,
implícito, centrado) para 1a e 2a derivada. Ordem do
erro.
Conteúdo programado aula 5






Finalização do exercício da aula anterior (gráfico).
Dedução da equação algébrica por diferenças finitas
(dt e dx constantes) da equação do calor. Condição
de positividade (e estabilidade).
Condições de fronteira de fluxo diffusivo nulo.
Condição inicial.
Emissão instantânea.
Emissão contínua.
Conteúdo das aulas seguintes

Programação do trabalho computacional para mfa
Alguns excertos úteis de código
VBA 0
Manuseamento de strings:
Dim texto as string
texto = "ba"
‘Escreve na célula « b-a-ba, abcd »
Cells(2,2) = "b-a-" & texto & ", abcd"
‘ou ...
Cells(2,2) = "b-a-" + texto + ", abcd"
Alguns excertos úteis de código
VBA I
Manuseamento de Userforms:
 UserForm1.Show (mostra)
 UserForm1.Hide (esconde)
 UserForm1.TextBox1.Textlength (tamanho da
entrada em unidades de caracteres de texto)
 UserForm1.TextBox1.Value (valor da entrada)
Alguns excertos úteis de código
VBA II
Delecção de células, linhas e colunas:
 Range ("A1:B3"). ClearContents (apaga janela de células da
tabela indo de A1 até B3).
 Range("A1:A1").EntireColumn.ClearContents (apaga coluna
inteira contendo a célula A1).
 Range(Range("A1:A1"),
Range("A1:A1").End(xlDown)).ClearContents (apaga o conjunto
de células contíguas escritas da tabela, a começar da célula A1
para baixo).
 Range(Range("D3:D3"),
Range("D3:D3").End(xlDown).End(xlToRight)).ClearContents
(apaga o conjunto de células contíguas escritas na tabela, a
começar da célula D3 até à última para baixo e para a direita).
Alguns excertos úteis de código
VBA III
Manuseamento de gráficos:
‘Faz um gráfico simples (finalline é a última linha da tabela que contem os dados. A2
é a primeira linha.)
Dim finalline as integer
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range("Sheet1!A2:N" & finalline)
ActiveChart.ChartType = xlLine
ActiveChart.PlotBy = xlRows
‘Apaga todos os gráficos
Dim chart as ChartObject
For Each Chart in ActiveSheet.ChartObjects
Chart.Delete
Next
Alguns excertos úteis de código
VBA IV
Manuseamento de gráficos:
‘Faz um gráfico usando a subrotina makegraphic do ficheiro
GraficoSampleCode.xls disponível na página
'Call makegraphic(número de linhas, número de colunas, _
'
índice da primeira linha, índice da primeira coluna, _
'
valor maximo da escala nas ordenadas do gráfico)
Call makegraphic(14, 5, 2, 7, 800)
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

Acetatos aula5