ludwig krippahl, 2008 programação para as ciências experimentais 2007/8 teórica 12

55
Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

Upload: internet

Post on 17-Apr-2015

102 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

Ludwig Krippahl, 2008

Programação para as Ciências Experimentais

2007/8

Teórica 12

Page 2: 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

Page 3: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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)

Page 4: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

Ludwig Krippahl, 2008 4

Contar microorganismos no ar

Bomba aspira ar. Orifícios sobre placa. Contar colónias. Estimar UFCs.

Page 5: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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

Page 6: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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

Page 7: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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).

Page 8: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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

Page 9: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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...

Page 10: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

Ludwig Krippahl, 2008 10

Excel e Octave

Exportar dados do Excel Copy (ctrl+c)

Page 11: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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

Page 12: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

Ludwig Krippahl, 2008 12

Excel e Octave

Exportar dados do Excel Copy (ctrl+c) Paste (ctrl+v) Atenção aos tabs Gravar

• Dados.txt

Page 13: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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.

Page 14: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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:”

Page 15: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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

Page 16: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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

Page 17: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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)

Page 18: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

Ludwig Krippahl, 2008 18

Excel e Octave, calcular

Page 19: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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)

Page 20: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

Ludwig Krippahl, 2008 20

Excel e Octave, actualizar

Agora temos que importar os resultados no Excel

Page 21: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

Ludwig Krippahl, 2008 21

Excel e Octave, actualizar

Importar os resultados

Page 22: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

Ludwig Krippahl, 2008 22

Excel e Octave, actualizar

Importar os resultados

Page 23: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

Ludwig Krippahl, 2008 23

Excel e Octave, actualizar

Importar os resultados

Page 24: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

Ludwig Krippahl, 2008 24

Excel e Octave, actualizar

Advanced para conversão do formato. Por exemplo . em vez de , nos números.

Page 25: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

Ludwig Krippahl, 2008 25

Excel e Octave, actualizar

Advanced para conversão do formato. Por exemplo . em vez de , nos números.

Page 26: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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

Page 27: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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

Page 28: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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.

Page 29: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

Ludwig Krippahl, 2008 29

“Array formulas”

Fórmulas que devolvem uma matriz de elementos

Exemplo: a inversa de uma matriz: MINVERSE

Page 30: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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

Page 31: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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

Page 32: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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

Page 33: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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:

Page 34: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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

Page 35: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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

Page 36: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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

Page 37: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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

Page 38: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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

Page 39: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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.

Page 40: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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.

Page 41: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

Ludwig Krippahl, 2008 41

Macros

Gravar macro:

Page 42: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

Ludwig Krippahl, 2008 42

Macros

Gravar macro:• Tools->Macro->Record new Macro

• Dar nome (e.g. Ordenar).

Page 43: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

Ludwig Krippahl, 2008 43

Macros

Gravar macro:• Tools->Macro->Record new Macro

• Dar nome (e.g. Ordenar).

• No final, carregar no stop

Page 44: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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”.

Page 45: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

Ludwig Krippahl, 2008 45

Macros

Bom para tarefas repetitivas de formatação, ordenação, reposicionar dados, etc.

Page 46: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

Ludwig Krippahl, 2008 46

Macros

Para ver o código:• Tools->Macro->Visual Basic Editor

• Modules

Page 47: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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

Page 48: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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)

Page 49: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

Ludwig Krippahl, 2008 49

HistogramasDados Separadores

FREQUENCY

Page 50: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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...)

Page 51: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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.

Page 52: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

Ludwig Krippahl, 2008 52

Referências dinâmicas

Exemplo:

Page 53: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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”).

Page 54: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

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).

Page 55: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 12

Ludwig Krippahl, 2008 55

Dúvidas