550 likes | 663 Views
Programação para as Ciências Experimentais 2007/8. Teórica 12. 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
E N D
Programação para as Ciências Experimentais2007/8 Teórica 12 Ludwig Krippahl, 2008
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
Excel e Octave • Exemplo: contar microorganismos no ar (ver aula 7) function cs=colonias(buracos, ufcs, tentativas) function u=contaufcs(buracos,cs,tentativas)
Contar microorganismos no ar • Bomba aspira ar. • Orifícios sobre placa. • Contar colónias. • Estimar UFCs.
Contar microorganismos no ar • Problema: • Podem entrar vários esporos ou bactérias pelo mesmo orifício, resultando numa só colónia. Ar
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
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).
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
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...
Excel e Octave • Exportar dados do Excel • Copy (ctrl+c)
Excel e Octave • Exportar dados do Excel • Copy (ctrl+c) • Paste (ctrl+v) • Atenção aos tabs No wordpad Ficam duas colunas
Excel e Octave • Exportar dados do Excel • Copy (ctrl+c) • Paste (ctrl+v) • Atenção aos tabs • Gravar • Dados.txt
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]; endwhile fclose(fid); endfunction Abre o ficheiro e lê o número de orifícios.
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]; endwhile fclose(fid); endfunction Salta “Colónias:”
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]; endwhile fclose(fid); endfunction Lê os valores
Excel e Octave, calcular functioncalculaegrava(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
Excel e Octave, calcular functioncalculaegrava(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)
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)
Excel e Octave, actualizar • Agora temos que importar os resultados no Excel
Excel e Octave, actualizar • Importar os resultados
Excel e Octave, actualizar • Importar os resultados
Excel e Octave, actualizar • Importar os resultados
Excel e Octave, actualizar • Advanced para conversão do formato. Por exemplo . em vez de , nos números.
Excel e Octave, actualizar • Advanced para conversão do formato. Por exemplo . em vez de , nos números.
“Array formulas” • Dois tipos: • Fórmulas que operam sobre um vector ou matriz de elementos • Fórmulas que devolvem uma matriz de elementos
“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
“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.
“Array formulas” • Fórmulas que devolvem uma matriz de elementos • Exemplo: a inversa de uma matriz: • MINVERSE
“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
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
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
Gráficos • Exemplo: comparar x2 com x3 • Seleccionar gráfico, Edit, Paste Special • Especificar nova série com valores de x na primeira coluna:
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
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
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)
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
Outras funções úteis • LINEST para regressão linear • Seleccionar 2x3 • Linest(Ys, Xs, True, True), ctrl+shift+enter • Ver no help
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.
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.
Macros • Gravar macro:
Macros • Gravar macro: • Tools->Macro->Record new Macro • Dar nome (e.g. Ordenar).
Macros • Gravar macro: • Tools->Macro->Record new Macro • Dar nome (e.g. Ordenar). • No final, carregar no stop
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”.
Macros • Bom para tarefas repetitivas de formatação, ordenação, reposicionar dados, etc.
Macros • Para ver o código: • Tools->Macro->Visual Basic Editor • Modules
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
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)
Histogramas Dados Separadores FREQUENCY
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...)