15
Cupertino Monteiro Miranda Programação Funcional Avançada QuickTime™ 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

Folhas de Cálculo Apresentação para disciplina Programação Funcional Avançada

Embed Size (px)

Citation preview

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

Folhas de Cálculo

Apresentação para disciplina

Programação Funcional Avançada

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

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

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.

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

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.

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

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

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

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.

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

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.

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

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.

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

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.

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

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.

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

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.

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

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.

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

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

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

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

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

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