170 likes | 303 Views
Trabalho Computacional Mecânica de Fluidos Ambiental aula 5. Guillaume Riflet ,. Dúvidas: guillaume.maretec@ist.utl.pt Ext:3430 Página: https://fenix.ist.utl.pt/homepage/ist146730/mecanica-dos-fluidos-ambiental. Sumário aula 1. subrotinas , funções ,
E N D
Trabalho Computacional Mecânica de Fluidos Ambiental aula 5 GuillaumeRiflet, Dúvidas: guillaume.maretec@ist.utl.ptExt:3430 • Página: https://fenix.ist.utl.pt/homepage/ist146730/mecanica-dos-fluidos-ambiental
Sumário aula 1 • subrotinas, funções, • argumentos, variáveis, tipos de variáveis, • arrays, • cicloswhile e for, • Alcance (Public, Private) • debug. https://fenix.ist.utl.pt/homepage/ist146730/mecanica-dos-fluidos-ambiental
Exercícios aula 1 • Criem a função de umargumento de tipo double que retorne 3x*x – 2. Criemumasubrotina que teste a função para x=4 e x=25, escrevendo o resultado numa folha de excel. • Concebamumciclofor numa subrotina que escreva numa folha de excel os resultados de 3x*x*x + 4 para todos os x que pertençamaointervalo [-30 , 50] comincrementos 2 em 2. • Casonãotenhamfeito, repitam o exercícioanteriorusandoumarray. • Repitam o exercícioanterior, mas destavez a função é 3x*x*x + 4 se o resultado for positivo e 0 (zero) casocontrário (usemumif). • Gravem a macro dumgráficocom os resultados do exercícioanterior (com x nasabscissas e os valores da funçãonasordenadas). Vejam o código que resultou da gravação da vossa macro.
Sumário aula 2 • condições (if), • Passagem de argumentosporvalor ou porreferência • Interface Excel-VBA, • Tipos • eventos, • userforms, • Gravação de macros, • Algunsobjectosnativos de VBA para excel • Apresentação da equação da difusão.
Exercícios aula 2 • Com umciclofor e comumacondiçãoif, escreva numa coluna de excel os valores da funçãoseguinte, definida no intervalo [-50,50] comincrementos 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 emcasocontrário. • Concebaumasubrotina que faça o gráficoautomático da função a partir da gravaçãoduma macro. • Tente alterar a subrotina de criação de gráfico de modo a que recebaumargumentocontendo o número de linhas da coluna de excel a usar. • Repita o primeiroexercíciocomumincremento de apenas 2 unidades de intervalo. • Crie umauserformque peçaaoutilizador o intervalo e o incremento da função e que tenhaumbotão que faça o gráficocorrespondente.
Exercícios aula 2 • Escrevaumasubrotina que contenhaumavariávelinteiraainicializada a 22. Tente incrementar a variávela chamandoumasubrotina que use umargumentoByRefe chamando outra subrotina que use umargumentoByVal. Quais dassubrotinas que é incrementa de facto a variávela? (recomendação: use o debugger para ver, passo a passo, a evoluçãodasvariáveis.) • Escrevaumasubrotina que contenhaumarray de reais. Inicialize o arraycomumciclofor comvalores da função f(x) = A * exp(-x) definidos no intervalo [-3, 4] e comumincremento de 0.3. Chameumasubrotina que inverta a ordem dos valores no array. (Deve usarByRef ou ByVal?). Escreva os valores do arraynuma 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çãocom o ambiente de desenvolvimentoem VBA. • Resolução de exercícios e exemplosem VBA. • Ciclofor • Condiçãoif • Manipulações de arrays • Criação de subrotinas e de funções. • Criaçãodumauserform. • Criaçãoduma macro para fazerumgrá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)). • Programeumarray numa subrotina que inicialize a função f(x,t0) onde x pertençaaointervalo [0 1000] comumincrementodx=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 porlinha, usandoumciclofor . • Programe o gráficocomvárias séries de resultados de f(x,t), (uma série por instante). • Crie umauserform onde o utilizadorpossainserir os incrementos de espaço e de tempo, (dx e dt) e onde possadefinir 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). Ficouporfinalizar(aula 5). • Métodosnuméricosdiferençasfinitas (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çãoalgébricapordiferençasfinitas (dt e dx constantes) da equação do calor. Condição de positividade (e estabilidade). • Condições de fronteira de fluxodiffusivonulo. • Condiçãoinicial. • Emissãoinstantânea. • Emissãocontínua.
Conteúdo das aulas seguintes • Programação do trabalhocomputacional 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 entradaemunidades 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 (apagajanela de células da tabela indo de A1 até B3). • Range("A1:A1").EntireColumn.ClearContents (apagacolunainteiracontendo a célula A1). • Range(Range("A1:A1"), Range("A1:A1").End(xlDown)).ClearContents (apaga o conjunto de célulascontíguasescritasdatabela, a começardacélula A1 parabaixo). • Range(Range("D3:D3"), Range("D3:D3").End(xlDown).End(xlToRight)).ClearContents (apaga o conjunto de célulascontíguasescritasnatabela, a começardacélula D3 até à últimaparabaixo e para a direita).
Alguns excertos úteis de código VBA III Manuseamento de gráficos: ‘Fazumgráfico simples (finalline é a últimalinha da tabela que contem os dados. A2 é a primeiralinha.) Dim finalline as integer ActiveSheet.Shapes.AddChart.Select ActiveChart.SetSourceData Source:=Range("Sheet1!A2:N" & finalline) ActiveChart.ChartType = xlLine ActiveChart.PlotBy = xlRows ‘Apagatodos os gráficos Dim chart as ChartObject For EachChart in ActiveSheet.ChartObjects Chart.Delete Next
Alguns excertos úteis de código VBA IV Manuseamento de gráficos: ‘Fazumgráficousando a subrotinamakegraphic do ficheiro GraficoSampleCode.xls disponível na página 'Callmakegraphic(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) Callmakegraphic(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...).