folhas de cálculo apresentação para disciplina programação funcional avançada

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

Upload: internet

Post on 17-Apr-2015

102 views

Category:

Documents


0 download

TRANSCRIPT

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