Programação para as Ciências Experimentais 2006/7 Teórica 11 Ludwig Krippahl, 2007 Na aula de hoje... Excel • • • • • • • Macros Histogramas. Referência dinâmica (OFFSET) Formatação condicional Cálculo condicional (SUMIF, COUNTIF) Strings Informação sobre conteúdo das células Trabalho 2 Ludwig Krippahl, 2007 2 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, 2007 3 Macros Gravar macro: Ludwig Krippahl, 2007 4 Macros Gravar macro: • Tools->Macro->Record new Macro • Dar nome (e.g. Ordenar). Ludwig Krippahl, 2007 5 Macros Gravar macro: • Tools->Macro->Record new Macro • Dar nome (e.g. Ordenar). • No final, carregar no stop Ludwig Krippahl, 2007 6 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, 2007 7 Macros Bom para tarefas repetitivas de formatação, ordenação, reposicionar dados, etc. Ludwig Krippahl, 2007 8 Macros Para ver o código: • Tools->Macro->Visual Basic Editor • Modules Ludwig Krippahl, 2007 9 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, 2007 10 Histogramas Função FREQUENCY( É 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) • Dados; • Separadores) Ludwig Krippahl, 2007 11 Histogramas Dados Separadores FREQUENCY Ludwig Krippahl, 2007 12 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, 2007 13 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, 2007 14 Referências dinâmicas Exemplo: Ludwig Krippahl, 2007 15 Referências dinâmicas É útil para fazer depender a referência de um valor calculado. Por exemplo, com COUNTA, que conta o número de células não vazias. 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, 2007 16 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, 2007 17 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, 2007 18 Cálculo Condicional COUNTIF(células, condição) • Conta quantas preenchem condição • Condição é uma string • “>20”, “=12” SUMIF(células, condição, células a somar) • Soma as células no último argumento que correspondem às do primeiro que cumprem a condição. Ludwig Krippahl, 2007 19 Strings LEN(string) CONCATENATE(S1;S2;...) LEFT(string, numero de caracteres) RIGHT(string, numero de caracteres) • Comprimento. • União das strings • Devolve os primeiros caracteres da string Ludwig Krippahl, 2007 20 Informação sobre células ISBLANK(célula) ISNA(célula) ISERR(célula) ISNUMBER, ISTEXT, ISERROR... • True se está vazia • True se é um erro do tipo #N/A • True se qualquer erro excepto #N/A Ludwig Krippahl, 2007 21 Trabalho 2 Modelo: Ludwig Krippahl, 2007 22 Trabalho 2 Tem dois parâmetros mas a taxa de recuperação é 1 sobre o tempo médio de hospitalização. Ludwig Krippahl, 2007 23 Trabalho 2 Dados: • Doente com alta: Ver radiografias em anexo. Deu entrada a 4 de Maio de 2007. Sofre de miopia Teve alta a 10 de Maio de 2007. Ludwig Krippahl, 2007 24 Trabalho 2 Dados: • Data em que ficou infectado: Ver radiografias em anexo. Deu entrada a 4 de Maio de 2007. Sofre de miopia Teve alta a 10 de Maio de 2007. Ludwig Krippahl, 2007 25 Trabalho 2 Dados: • Data em que recuperou (já não conta como I): Ver radiografias em anexo. Deu entrada a 4 de Maio de 2007. Sofre de miopia Teve alta a 10 de Maio de 2007. Ludwig Krippahl, 2007 26 Trabalho 2 Dados: • Doente que ainda não teve alta (só tem data de entrada): Sofre de miopia Deu entrada a 21 de Maio de 2007. Tomou três aspirinas. Ludwig Krippahl, 2007 27 Trabalho 2 Dados: • Os dados são datas de entrada e saída Modelo • O modelo é acerca do número de susceptíveis, infectados, e recuperados Datas • Em cada lote os dados são até ao dia da última entrada. Não podemos saber quantos infectados há depois (quantos entram ou saem) Ludwig Krippahl, 2007 28 Trabalho 2 Actualizar • Substituir todos os ficheiros .txt pelos que • vêm no novo lote (pacientes sem alta podem já ter tido alta). Exemplo: • Maio21.zip: ficheiros 1 a 27 • Maio28.zip: ficheiros 1 a 70, para substituir os outros e adicionar mais dados Ludwig Krippahl, 2007 29 Trabalho 2 Ajuste do modelo • Pelos ficheiros podem obter o valor de I para • cada dia da epidemia (até à data do lote de ficheiros) e o valor da taxa de recuperação. Ajustem o modelo de forma a que o número de infectados no modelo corresponda o melhor possível ao número de infectados observado. Ludwig Krippahl, 2007 30 Trabalho 2 Resultado final • Um sistema prático e fácil de usar para se • actualizar os dados e ver no Excel a simulação, os dados, e a informação pedida (máximo de infectados ao mesmo tempo, total de afectados ao fim de 100 dias, a simulação para 100 dias, etc...) Deve estar explicado na folha Excel como usar o sistema. Ludwig Krippahl, 2007 31 Trabalho 2 Resultado final 1000 S 900 I 800 R Dados 700 600 500 400 300 200 100 0 0 Ludwig Krippahl, 2007 20 40 60 80 100 32 Próxima aula Dúvidas sobre o trabalho Dicas sobre o exame • Estrutura do enunciado • Tipos de perguntas • Alguns exemplos Revisões, ou o que quiserem (enviem sugestões antecipadamente) Ludwig Krippahl, 2007 33 Dúvidas Ludwig Krippahl, 2007 34