ludwig krippahl, 2008 programação para as ciências experimentais 2007/8 teórica 12
TRANSCRIPT
Ludwig Krippahl, 2008
Programação para as Ciências Experimentais
2007/8
Teórica 12
Ludwig Krippahl, 2008 2
Na aula de hoje... Excel
Usar dados dinâmicos• Trocar dados com o Octave
“Array formulas”, formulas com vectores ou matrizes.
Gráficos Consulta de tabelas Algumas funções úteis
• Macros, Histogramas, Referência dinâmica (OFFSET), Formatação condicional, goal seek
Ludwig Krippahl, 2008 3
Excel e Octave
Exemplo: contar microorganismos no ar (ver aula 7)
function cs=colonias(buracos, ufcs, tentativas)
function u=contaufcs(buracos,cs,tentativas)
Ludwig Krippahl, 2008 4
Contar microorganismos no ar
Bomba aspira ar. Orifícios sobre placa. Contar colónias. Estimar UFCs.
Ludwig Krippahl, 2008 5
Contar microorganismos no ar
Problema:• Podem entrar vários esporos ou bactérias
pelo mesmo orifício, resultando numa só colónia.
Ar
Ludwig Krippahl, 2008 6
Excel e Octave
function cs=colonias(buracos, ufcs, tentativas)
Devolve o número de colónias estimado (média das tentativas) para o numero de UFCs dado
Ludwig Krippahl, 2008 7
Excel e Octave
function u=contaufcs(buracos,cs,tentativas)
Estima o numero de UFCs (média das tentativas) a partir no numero de colónias (usa a função anterior para experimentar valores).
Ludwig Krippahl, 2008 8
Excel e Octave
Esquema:• Temos os dados no Excel
• Gravamos num ficheiro txt
• O Octave lê, estima os UFCs, e grava um ficheiro
• O Excel actualiza a informação
Ludwig Krippahl, 2008 9
Excel e Octave
Exportar dados do Excel• Forma mais prática: seleccionar, paste no
notepad, gravar.
Ler com o Octave• Ter atenção ao formato do ficheiro...
Ludwig Krippahl, 2008 10
Excel e Octave
Exportar dados do Excel Copy (ctrl+c)
Ludwig Krippahl, 2008 11
Excel e Octave
Exportar dados do Excel Copy (ctrl+c) Paste (ctrl+v) Atenção aos tabs
No wordpad
Ficam duas
colunas
Ludwig Krippahl, 2008 12
Excel e Octave
Exportar dados do Excel Copy (ctrl+c) Paste (ctrl+v) Atenção aos tabs Gravar
• Dados.txt
Ludwig Krippahl, 2008 13
Excel e Octave, ler os dados
function [orif,cols]=lerdados(fich)fid=fopen(fich,"r");orif=fscanf(fid,"Orificios\t%i\n“,”C”);cols=[];fgetl(fid); while !feof(fid)
c=fscanf(fid,"%i“,”C”);cols=[cols,c];
endwhilefclose(fid);endfunction
Abre o ficheiro e lê o número de orifícios.
Ludwig Krippahl, 2008 14
Excel e Octave, ler os dados
function [orif,cols]=lerdados(fich)fid=fopen(fich,"r");orif=fscanf(fid,"Orificios\t%i\n“,”C”);cols=[];fgetl(fid); while !feof(fid)
c=fscanf(fid,"%i“,”C”);cols=[cols,c];
endwhilefclose(fid);endfunction
Salta “Colónias:”
Ludwig Krippahl, 2008 15
Excel e Octave, ler os dados
function [orif,cols]=lerdados(fich)fid=fopen(fich,"r");orif=fscanf(fid,"Orificios\t%i\n“,”C”);cols=[];fgetl(fid); while !feof(fid)
c=fscanf(fid,"%i“,”C”);cols=[cols,c];
endwhilefclose(fid);endfunction
Lê os valores
Ludwig Krippahl, 2008 16
Excel e Octave, calcular
function calculaegrava(orif,tentat,fich,cols)
fid=fopen(fich,"w");
for f=1:length(cols)
u=contaufcs(orif,cols(f),tentat);
fprintf(fid,"%i\t%i\r\n",cols(f),u);
endfor
fclose(fid);
endfunction
Calcula os UFCs para cada valor no vector de colónias, e grava no ficheiro
Ludwig Krippahl, 2008 17
Excel e Octave, calcular
function calculaegrava(orif,tentat,fich,cols)
fid=fopen(fich,"w");
for f=1:length(cols)
u=contaufcs(orif,cols(f),tentat);
fprintf(fid,"%i\t%i\r\n",cols(f),u);
endfor
fclose(fid);
endfunction
Mudar de linha em DOS e Windows (em Linux só é preciso \n)
Ludwig Krippahl, 2008 18
Excel e Octave, calcular
Ludwig Krippahl, 2008 19
Excel e Octave, actualizar
Basta agora um script para actualizar (actualiza.m), que lê os dados de dados.txt, calcula com 20 tentativas cada e grava em ufcs.txt:
[orif,d]=lerdados("dados.txt")
calculaegrava(orif,20,"ufcs.txt",d)
Ludwig Krippahl, 2008 20
Excel e Octave, actualizar
Agora temos que importar os resultados no Excel
Ludwig Krippahl, 2008 21
Excel e Octave, actualizar
Importar os resultados
Ludwig Krippahl, 2008 22
Excel e Octave, actualizar
Importar os resultados
Ludwig Krippahl, 2008 23
Excel e Octave, actualizar
Importar os resultados
Ludwig Krippahl, 2008 24
Excel e Octave, actualizar
Advanced para conversão do formato. Por exemplo . em vez de , nos números.
Ludwig Krippahl, 2008 25
Excel e Octave, actualizar
Advanced para conversão do formato. Por exemplo . em vez de , nos números.
Ludwig Krippahl, 2008 26
“Array formulas”
Dois tipos:• Fórmulas que operam sobre um vector ou
matriz de elementos
• Fórmulas que devolvem uma matriz de elementos
Ludwig Krippahl, 2008 27
“Array formulas”
Fórmulas que operam sobre um vector ou matriz de elementos
Exemplo: Quantos alunos melhoraram do primeiro para o segundo teste.• Teste 1 em A3:A13, teste 2 em B3:B13
• =SUM(IF(B3:B13>A3:A13;1;0))
• ctrl+shift+enter para indicar que é uma fórmula para vectores
Ludwig Krippahl, 2008 28
“Array formulas”
• Teste 1 em A3:A13, teste 2 em B3:B13
• =SUM(IF(B3:B13>A3:A13;1;0))
• ctrl+shift+enter para indicar que é uma fórmula para vectores
• O Excel vai percorrer todas as células, comparar elemento a elemento, somar 1 cada vez que a condição é verdadeira e devolve a soma.
Ludwig Krippahl, 2008 29
“Array formulas”
Fórmulas que devolvem uma matriz de elementos
Exemplo: a inversa de uma matriz: MINVERSE
Ludwig Krippahl, 2008 30
“Array formulas”
Exemplo: a inversa de uma matriz em A1:B3• Seleccionar as células onde aparecerá o
resultado
• =MINVERSE(A1:B3)
• ctrl+shift+enter
Ludwig Krippahl, 2008 31
Gráficos
Para fazer um gráfico basta seleccionar as células e carregar no botão• Alguns detalhes:
• Com valores de X e Y tem que ser sempre o XY(Scatter)
• Se temos valores em colunas com formatos diferentes, ou vários conjuntos X e Y o mais prático é fazer o gráfico para a primeira série e depois acrescentar outras com copy e paste special
Ludwig Krippahl, 2008 32
Gráficos
Exemplo: comparar x2 com x3
• Calcular pontos x, y
• Seleccionar os do x2, traçar gráfico
• Seleccionar os do x3, copy
• Seleccionar gráfico, Edit, Paste Special
Ludwig Krippahl, 2008 33
Gráficos
Exemplo: comparar x2 com x3
• Seleccionar gráfico, Edit, Paste Special
• Especificar nova série com valores de x na primeira coluna:
Ludwig Krippahl, 2008 34
Consultar tabelas (VLOOKUP)
VLOOKUP(Valor a encontrar;
Tabela;
Índice da coluna a devolver;
Procura por intervalo (True/False))
Exemplo: encontrar a nota de um aluno
Ludwig Krippahl, 2008 35
Consultar tabelas (VLOOKUP)
Exemplo: encontrar a nota de um aluno =VLOOKUP(C9;A1:B6;2;FALSE)
• Não queremos que devolva um valor dentro do intervalo, mas apenas o valor exacto
Ludwig Krippahl, 2008 36
Consultar tabelas (VLOOKUP)
Exemplo: Altura versus peso =VLOOKUP(H10;I3:J7;2;TRUE) Se não for esse o valor exacto para a
altura, queremos o peso aproximado Neste caso dá o último que encontrou
antes de passar o valor pedido. (Ver folha excel-t10.xls, página Lookup)
80
Ludwig Krippahl, 2008 37
Outras funções úteis
SUM, AVERAGE, SUMIF, COUNT, COUNTIF
AND, OR (para usar no IF, por exemplo) LINEST para regressão linear Receita:
• Seleccionar 2x3
• Linest(Ys, Xs, True, True), ctrl+shift+enter
80
Ludwig Krippahl, 2008 38
Outras funções úteis
LINEST para regressão linear• Seleccionar 2x3
• Linest(Ys, Xs, True, True), ctrl+shift+enter
• Ver no help
80
m b
erro m erro b
r^2 erro y
Ludwig Krippahl, 2008 39
Outras funções úteis
Como usar funções que não conhecem:• Ver no help.
• Usar Insert, Function, e seguir as instruções.
• Procurar no Google.
Ludwig Krippahl, 2008 40
Macros
«Macro-instrução»• Conjunto de instruções que é executado
como uma só (significado inicial, 1970s).
• Hoje em dia tem um significado mais geral, refere-se a qualquer programa escrito numa linguagem usada para controlar uma aplicação. No caso do Excel, Visual Basic.
Ludwig Krippahl, 2008 41
Macros
Gravar macro:
Ludwig Krippahl, 2008 42
Macros
Gravar macro:• Tools->Macro->Record new Macro
• Dar nome (e.g. Ordenar).
Ludwig Krippahl, 2008 43
Macros
Gravar macro:• Tools->Macro->Record new Macro
• Dar nome (e.g. Ordenar).
• No final, carregar no stop
Ludwig Krippahl, 2008 44
Macros
Alternativas para correr a macro:• Tools->Macro->Macros->Run
• Usar a combinação de teclas definida quando gravámos (ou definir uma em Tools->Macro->Macros->Options
• Atribuir a macro a um objecto na folha (um botão, um desenho). Para um desenho, click botão da direita e “Assign Macro”.
Ludwig Krippahl, 2008 45
Macros
Bom para tarefas repetitivas de formatação, ordenação, reposicionar dados, etc.
Ludwig Krippahl, 2008 46
Macros
Para ver o código:• Tools->Macro->Visual Basic Editor
• Modules
Ludwig Krippahl, 2008 47
Macros
Sub Ordena()
Columns("A:B").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub
Ludwig Krippahl, 2008 48
Histogramas
Função FREQUENCY(• Dados;
• Separadores)
É uma função que devolve um vector de dimensão igual a um mais o número de separadores, com as contagens dos elementos entre os separadores (ou maiores que o último)
Ludwig Krippahl, 2008 49
HistogramasDados Separadores
FREQUENCY
Ludwig Krippahl, 2008 50
Referências dinâmicas
OFFSET(• Célula de referência, a partir da qual
contamos as linhas e colunas;
• Linhas;
• Colunas;
• Altura;
• Largura) Tem que ser usada como argumento de
outra função (e.g. SUM, AVERAGE...)
Ludwig Krippahl, 2008 51
Referências dinâmicas
Exemplo: OFFSET(A1,3,5,2,4)
• Grupo de 2x4 (altura x largura) células a começar da 3ª linha e 5ª coluna a contar da A1.
Ludwig Krippahl, 2008 52
Referências dinâmicas
Exemplo:
Ludwig Krippahl, 2008 53
Referências dinâmicas
É útil para fazer depender a referência de um valor calculadoo número de células não vazias. . Por exemplo, com COUNTA, que conta
Exemplo• =SUM(OFFSET(A1;1;1;COUNTA(B:B)-1;1))
• Soma a coluna dos gastos, qualquer que seja o numero de entradas (o -1 desconta o cabeçalho “Gastos”).
Ludwig Krippahl, 2008 54
Formatação Condicional
Seleccionar células Format->Conditional Formatting Especificar condições e formatação se
as condições forem preenchidas (Exemplo: a vermelho e bold se o gasto for maior que €100).
Ludwig Krippahl, 2008 55
Dúvidas