Cupertino Monteiro Miranda Programação Funcional AvançadaQuickTime™ and a decompressor
are needed to see this picture.Folhas de Cálculo - Apresentação
QuickTime™ and a decompressor
are needed to see this picture.
Universidade do Minho
QuickTime™ and a decompressor
are needed to see this picture.Departamento
de Inform ática
Folhas de Cálculo
Apresentação para disciplina
Programação Funcional Avançada
Cupertino Monteiro Miranda Programação Funcional AvançadaQuickTime™ and a decompressor
are needed to see this picture.Folhas de Cálculo - Apresentação
QuickTime™ and a decompressor
are needed to see this picture.
Universidade do Minho
QuickTime™ and a decompressor
are needed to see this picture.Departamento
de Inform ática
Problemas a resolver• Alta taxa de erros:
– Alguns estudos concluem que 90% das folhas de cálculo contêm erros
– Dificuldade em fazer debug a folhas de cálculo
• é complicado seguir grandes cadeias de formulas,
• pequenas falhas no inicio podem não ser aparentes enquanto não se propagarem no resultado final.
• Não aconselhado para problemas complexos
– Funções aparte das já definidas no software só puderam ser definidas por programadores experientes.
– Um problema complexo necessitaria de muitas folhas para a sua resolução.
Cupertino Monteiro Miranda Programação Funcional AvançadaQuickTime™ and a decompressor
are needed to see this picture.Folhas de Cálculo - Apresentação
QuickTime™ and a decompressor
are needed to see this picture.
Universidade do Minho
QuickTime™ and a decompressor
are needed to see this picture.Departamento
de Inform ática
Objectivos da palestra
• Minimizar a possibilidade de obtenção de erros nas folhas de calculo.– de forma automática,
– com auxilio humano.
• Possibilitar a criação de funções de uma forma:– robusta,
– sem necessidade de aprendizagem aparte dos conhecimentos mínimos de folhas de cálculo.
Cupertino Monteiro Miranda Programação Funcional AvançadaQuickTime™ and a decompressor
are needed to see this picture.Folhas de Cálculo - Apresentação
QuickTime™ and a decompressor
are needed to see this picture.
Universidade do Minho
QuickTime™ and a decompressor
are needed to see this picture.Departamento
de Inform ática
Estratégia para Validação por inferência de classes de Células
• A maior parte das folhas de cálculo respeitam determinada estrutura:– No cabeçalho encontra-se informação sobre os valores
apresentados.
– No rodapé encontram-se cálculos sobre os valores apresentados.
• Para este tipo de folhas poderemos utilizar uma estratégia de validação de operações por inferência das classes das células referenciadas.
Cupertino Monteiro Miranda Programação Funcional AvançadaQuickTime™ and a decompressor
are needed to see this picture.Folhas de Cálculo - Apresentação
QuickTime™ and a decompressor
are needed to see this picture.
Universidade do Minho
QuickTime™ and a decompressor
are needed to see this picture.Departamento
de Inform ática
Inferência de classes de células
• cada célula de dados tem uma classe associada inferida do seu cabeçalho.
• uma classe pode derivar de outra existente no seu cabeçalho.• exemplos de atribuição de classes:
Fruta[Maçã]&Mes[Janeiro]Fruta[Maçã]&Mes[Janeiro] | Fruta[Banana]& Mes[Janeiro]
Mes
Cupertino Monteiro Miranda Programação Funcional AvançadaQuickTime™ and a decompressor
are needed to see this picture.Folhas de Cálculo - Apresentação
QuickTime™ and a decompressor
are needed to see this picture.
Universidade do Minho
QuickTime™ and a decompressor
are needed to see this picture.Departamento
de Inform ática
Regras a respeitar
1. Qualquer célula que não tenha cabeçalho define uma classe.
2. Uma célula com valor v (v é texto) e um cabeçalho u define um classe u[v].
3. Quando não existe classes de topo comuns é permitido intersectar classes
4. Quando existe classes de topo comuns é permitido unir classes.
• Qualquer falha detectada a estas regras origina que a célula fique pintada de vermelho assim como todas as que a referenciam.
Cupertino Monteiro Miranda Programação Funcional AvançadaQuickTime™ and a decompressor
are needed to see this picture.Folhas de Cálculo - Apresentação
QuickTime™ and a decompressor
are needed to see this picture.
Universidade do Minho
QuickTime™ and a decompressor
are needed to see this picture.Departamento
de Inform ática
Estratégias para validação manual
• Para outros tipos de folhas de cálculo poderemos utilizar uma validação incremental– Inicialmente todas as células são candidatas a ter
erro até serem validadas pelo utilizador.– Assim que algumas células vão sendo validadas a
probabilidade de existência de erro nas células que a referenciam é menor.
– Este método é prático para validar folhas de cálculo durante a sua construção.
Cupertino Monteiro Miranda Programação Funcional AvançadaQuickTime™ and a decompressor
are needed to see this picture.Folhas de Cálculo - Apresentação
QuickTime™ and a decompressor
are needed to see this picture.
Universidade do Minho
QuickTime™ and a decompressor
are needed to see this picture.Departamento
de Inform ática
Modo de funcionamento• Para a resolução destes
problemas usam-se técnicas de dynamic/static slicing e dicing.
• Valores verificados são marcados com um visto e contorno azul.
• Valores ainda não validados encontram-se com um ponto de interrogação
• Valores errados são marcados com uma cruz.
• O fundo destas varia entre o vermelho e branco dependendo da probabilidade de existência de erro.
QuickTime™ and aTIFF (Uncompressed) decompressor
are needed to see this picture.
Cupertino Monteiro Miranda Programação Funcional AvançadaQuickTime™ and a decompressor
are needed to see this picture.Folhas de Cálculo - Apresentação
QuickTime™ and a decompressor
are needed to see this picture.
Universidade do Minho
QuickTime™ and a decompressor
are needed to see this picture.Departamento
de Inform ática
Exemplo prático
• Quando se verifica que uma determinada célula está com um valor errado marca-se esta célula.
• As células de que este depende são marcadas a tonalidade vermelha.
• Uma célula que seja dependência de uma outra marcada como válida vai ter menos tom vermelho.
QuickTime™ and aTIFF (Uncompressed) decompressor
are needed to see this picture.
Cupertino Monteiro Miranda Programação Funcional AvançadaQuickTime™ and a decompressor
are needed to see this picture.Folhas de Cálculo - Apresentação
QuickTime™ and a decompressor
are needed to see this picture.
Universidade do Minho
QuickTime™ and a decompressor
are needed to see this picture.Departamento
de Inform ática
Exemplo prático
• Células parcialmente testadas têm contorno roxo.
• Células totalmente validadas têm contorno azul.
QuickTime™ and aTIFF (Uncompressed) decompressor
are needed to see this picture.
Cupertino Monteiro Miranda Programação Funcional AvançadaQuickTime™ and a decompressor
are needed to see this picture.Folhas de Cálculo - Apresentação
QuickTime™ and a decompressor
are needed to see this picture.
Universidade do Minho
QuickTime™ and a decompressor
are needed to see this picture.Departamento
de Inform ática
Estratégia para criação amigável de funções
• A ideia é criar um ambiente capaz de respeitar as Cognitive Dimensions of Notacions (CDs).
• Este ambiente deverá ser capaz de criar novas funções só com os conhecimentos comuns de folhas de cálculo.
• Deverá ser baseado nas próprias folhas de cálculo.• Conseguir inferir funções a partir de células ou conjuntos de
células.• Trabalhar com matrizes ou vectores.• Deverá ser fácil executar debug ás funções geradas.
Cupertino Monteiro Miranda Programação Funcional AvançadaQuickTime™ and a decompressor
are needed to see this picture.Folhas de Cálculo - Apresentação
QuickTime™ and a decompressor
are needed to see this picture.
Universidade do Minho
QuickTime™ and a decompressor
are needed to see this picture.Departamento
de Inform ática
Ambiente para a criação de funções
• A criação da função passa por criar uma “instance function sheet”
• Os inputs/outputs são definidos na “instace panel” no fundo da janela da função
• Os textos na esquerda são meras descrições
• Da instance function sheet pode ser inferida uma arvore para a função que por motivos de performance pode depois ser compilada.
• Esta função pode ser inferida/criada de uma formula ou conjunto de formulas definidas em células da folha.
Cupertino Monteiro Miranda Programação Funcional AvançadaQuickTime™ and a decompressor
are needed to see this picture.Folhas de Cálculo - Apresentação
QuickTime™ and a decompressor
are needed to see this picture.
Universidade do Minho
QuickTime™ and a decompressor
are needed to see this picture.Departamento
de Inform ática
Criação de funções sobre matrizes
• Para a criação deste tipo de funções é necessária o encapsulamento das matrizes numa única célula.
• Todos os vectores são transformados em matrizes com uma só linha.
• Valores isolados são transformados numa matriz unidimensional.
• É possível do mesmo modo inferir/criar funções sobre matrizes como mostrado no exemplo anterior.
A invocação na Sheet1 seria do tipo: =MyAvg(A1:A5, {1, 2, 2, 1, 2})
Cupertino Monteiro Miranda Programação Funcional AvançadaQuickTime™ and a decompressor
are needed to see this picture.Folhas de Cálculo - Apresentação
QuickTime™ and a decompressor
are needed to see this picture.
Universidade do Minho
QuickTime™ and a decompressor
are needed to see this picture.Departamento
de Inform ática
Vantagens
• Evita repetições no código.
• Reduz erros de manutenção
• Capacidade de juntar muitas células numa só
• Distribuição de funcionalidades
• Protecção do código
• Performance
Cupertino Monteiro Miranda Programação Funcional AvançadaQuickTime™ and a decompressor
are needed to see this picture.Folhas de Cálculo - Apresentação
QuickTime™ and a decompressor
are needed to see this picture.
Universidade do Minho
QuickTime™ and a decompressor
are needed to see this picture.Departamento
de Inform ática
Bibliografia
• Header and Unit Inference for Spreadsheets Through Spatial Analyses, Robin Abraham and Martin Erwig. 20042.
• A User-Centred Approach to Functions in Excel, Simon Peyton-Jones, Alan Blackwell and Margaret Burnett, 20033.
• Slicing Spreadsheets: An Integrated Methodology for Spreadsheet Testing and
Debugging, James Reichwein, Gregg Rothermel, Margaret Burnett, 1999