Programação para as Ciências Experimentais 2006/7 Teórica 10 Ludwig Krippahl, 2007 Na aula de hoje... Conceitos básicos de Excel Usar dados dinâmicos • • Trocar dados com o Octave Leitura formatada com Octave (fscanf) “Array formulas”, formulas com vectores ou matrizes. Gráficos Consulta de tabelas Algumas funções úteis Ludwig Krippahl, 2007 2 Conceitos básicos de Excel Célula: A5 Grupo de células: A5:B12 Referência relativa ou absoluta: • O cifrão marca uma referência absoluta. • A$5, $B$5 Nestes casos o 5 e o B estão • fixos. Sem cifrão a referência é relativa, e muda com copy/paste ou fill down/right Ludwig Krippahl, 2007 3 Conceitos básicos de Excel Referência relativa: • Nota: fórmulas começam sempre por = Ludwig Krippahl, 2007 4 Conceitos básicos de Excel Referência relativa: • O B passou a C e o C a D copiando para a direita Ludwig Krippahl, 2007 5 Conceitos básicos de Excel Referência relativa: • O 2 passou a 3 copiando para baixo Ludwig Krippahl, 2007 6 Conceitos básicos de Excel Referência absoluta Ludwig Krippahl, 2007 7 Conceitos básicos de Excel Referência absoluta • Fill down (seleccionar, ctrl+d) Ludwig Krippahl, 2007 8 Conceitos básicos de Excel Referência absoluta • Multiplicar pelo C1, mas sem mudar o 1... Ludwig Krippahl, 2007 9 Conceitos básicos de Excel Referência absoluta • Marcar o 1 como ref. absoluta Ludwig Krippahl, 2007 10 Conceitos básicos de Excel Referência absoluta • Marcar o 1 como ref. absoluta Ludwig Krippahl, 2007 11 Conceitos básicos de Excel Dar nomes às células. • Exemplo: 2A B • Parâmetros • Constante • DeltaT Ludwig Krippahl, 2007 12 Conceitos básicos de Excel Dar nomes às células. • Exemplo: 2A B • Parâmetros • Constante • DeltaT Ludwig Krippahl, 2007 13 Conceitos básicos de Excel Dar nomes às células. • Exemplo: 2A B • Parâmetros • Constante • DeltaT Ludwig Krippahl, 2007 14 Conceitos básicos de Excel Dar nomes às células. • Exemplo: 2A B • Parâmetros • Constante • DeltaT Ludwig Krippahl, 2007 15 Conceitos básicos de Excel Dar nomes às células. • Exemplo: 2A B • Parâmetros • Constante • DeltaT Ludwig Krippahl, 2007 16 Conceitos básicos de Excel Dar nomes às células. • Exemplo: 2A B • Parâmetros • Constante • DeltaT Ludwig Krippahl, 2007 17 Conceitos básicos de Excel Dar nomes às células. • Exemplo: 2A B • Parâmetros • Constante • DeltaT Ludwig Krippahl, 2007 18 Conceitos básicos de Excel Dar nomes às células. • Exemplo: 2A B • Parâmetros • Constante • DeltaT Ludwig Krippahl, 2007 19 Conceitos básicos de Excel Dar nomes às células. • Exemplo: 2A B • Fill down... • Mas falta o tempo. Ludwig Krippahl, 2007 20 Conceitos básicos de Excel Seleccionar a primeira coluna (click no topo da coluna, no A). Ludwig Krippahl, 2007 21 Conceitos básicos de Excel Insert, Columns Ludwig Krippahl, 2007 22 Conceitos básicos de Excel Insert, Columns Ludwig Krippahl, 2007 23 Conceitos básicos de Excel Definir a fórmula, e fill down. Ludwig Krippahl, 2007 24 Conceitos básicos de Excel IF(condição; valor se verdade; valor se falso) Ex: Ludwig Krippahl, 2007 25 Conceitos básicos de Excel IF(condição; valor se verdade; valor se falso) Ex: Ludwig Krippahl, 2007 26 Conceitos básicos de Excel Exemplo: raiz do polinómio x3+2 Ludwig Krippahl, 2007 27 Conceitos básicos de Excel Exemplo: raiz do polinómio x3+2 Ludwig Krippahl, 2007 28 Conceitos básicos de Excel Exemplo: raiz do polinómio x3+2 Fill right, fill down Ludwig Krippahl, 2007 29 Conceitos básicos de Excel Exemplo: raiz do polinómio x3+2 Ludwig Krippahl, 2007 30 Conceitos básicos de Excel Exemplo: raiz do polinómio x3+2 Fill down Ludwig Krippahl, 2007 31 Excel e Octave Exemplo: contar microorganismos no ar (ver aula 6) function cs=colonias(buracos, ufcs, tentativas) function u=contaufcs(buracos,cs,tentativas) Ludwig Krippahl, 2007 32 Contar microorganismos no ar Bomba aspira ar. Orifícios sobre placa. Contar colónias. Estimar UFCs. Ludwig Krippahl, 2007 33 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, 2007 34 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, 2007 35 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, 2007 36 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, 2007 37 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, 2007 38 Excel e Octave Exportar dados do Excel Copy (ctrl+c) Ludwig Krippahl, 2007 39 Excel e Octave Exportar dados do Excel Copy (ctrl+c) Paste (ctrl+v) Atenção aos tabs No wordpad Ficam duas colunas Ludwig Krippahl, 2007 40 Excel e Octave Exportar dados do Excel Copy (ctrl+c) Paste (ctrl+v) Atenção aos tabs Gravar • Dados.txt Ludwig Krippahl, 2007 41 Excel e Octave, ler os dados [v1,v2,v3...]=fscanf(id,formato) Por exemplo, um texto com x=12;y=13 x=14;y=28 Lê-se • [x,y]=fscanf(fid,”x=%i;y=%i/n”) Ludwig Krippahl, 2007 42 Excel e Octave, ler os dados [v1,v2,v3...]=fscanf(id,formato) • [x,y]=fscanf(fid,”x=%i;y=%i/n”) Devolve 2 valores Ludwig Krippahl, 2007 43 Excel e Octave, ler os dados [v1,v2,v3...]=fscanf(id,formato) • [x,y]=fscanf(fid,”x=%i;y=%i/n”) Devolve 2 valores, inteiros Ludwig Krippahl, 2007 44 Excel e Octave, ler os dados [v1,v2,v3...]=fscanf(id,formato) • [x,y]=fscanf(fid,”x=%i;y=%i/n”) Devolve 2 valores, inteiros, numa string que começa por x=, seguida do primeiro valor, depois ;y=, o segundo valor, e finalmente muda de linha. Ludwig Krippahl, 2007 45 Excel e Octave, ler os dados function [orif,cols]=lerdados(fich) fid=fopen(fich,"r"); orif=fscanf(fid,"Orificios\t%i\n"); cols=[]; fgetl(fid); Abre o ficheiro e lê o while !feof(fid) número de orifícios. c=fscanf(fid,"%i\t\n"); cols=[cols,c]; endwhile fclose(fid); endfunction Ludwig Krippahl, 2007 46 Excel e Octave, ler os dados function [orif,cols]=lerdados(fich) fid=fopen(fich,"r"); orif=fscanf(fid,"Orificios\t%i\n"); cols=[]; fgetl(fid); Salta while !feof(fid) c=fscanf(fid,"%i\t\n"); cols=[cols,c]; endwhile fclose(fid); endfunction Ludwig Krippahl, 2007 “Colónias:” 47 Excel e Octave, ler os dados function [orif,cols]=lerdados(fich) fid=fopen(fich,"r"); orif=fscanf(fid,"Orificios\t%i\n"); cols=[]; fgetl(fid); Lê os valores, saltando while !feof(fid) os tabs que o Excel c=fscanf(fid,"%i\t\n"); deixou na segunda cols=[cols,c]; coluna endwhile fclose(fid); endfunction Ludwig Krippahl, 2007 48 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\n",cols(f),u); Calcula os UFCs para endfor cada valor no vector de fclose(fid); colónias, e grava no endfunction ficheiro Ludwig Krippahl, 2007 49 Excel e Octave, calcular Ludwig Krippahl, 2007 50 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, 2007 51 Excel e Octave, actualizar Agora temos que importar os resultados no Excel Ludwig Krippahl, 2007 52 Excel e Octave, actualizar Importar os resultados Ludwig Krippahl, 2007 53 Excel e Octave, actualizar Importar os resultados Ludwig Krippahl, 2007 54 Excel e Octave, actualizar Importar os resultados Ludwig Krippahl, 2007 55 Excel e Octave, actualizar Advanced para conversão do formato. Por exemplo . em vez de , nos números. Ludwig Krippahl, 2007 56 Excel e Octave, actualizar Advanced para conversão do formato. Por exemplo . em vez de , nos números. Ludwig Krippahl, 2007 57 Excel e Octave, actualizar Advanced para conversão do formato. Por exemplo . em vez de , nos números. Especificar a conversão pode ser muito importante. No Octave os números fraccionários têm um ponto, mas em Português tipicamente usa-se a vírgula. Ludwig Krippahl, 2007 58 “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, 2007 59 “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, 2007 60 “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, 2007 61 “Array formulas” Fórmulas que devolvem uma matriz de elementos Exemplo: a inversa de uma matriz: MINVERSE Ludwig Krippahl, 2007 62 “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, 2007 63 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, 2007 64 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, 2007 65 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, 2007 66 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, 2007 67 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, 2007 68 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) Ludwig Krippahl, 2007 80 69 Outras funções úteis SUM, AVERAGE, SUMIF, COUNT, COUNTIF AND, OR (para usar no IF, por exemplo) LINEST para regressão linear (vão ver na aula prática, usem o help). Ludwig Krippahl, 2007 80 70 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, 2007 71 Dúvidas Ludwig Krippahl, 2007 72