A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Apresentação para disciplina Programação Funcional Avançada

Apresentações semelhantes


Apresentação em tema: "Apresentação para disciplina Programação Funcional Avançada"— Transcrição da apresentação:

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

2 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. São fácil utilização

3 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. Ferramenta automática de detecção de falhas. Ferramenta manual para detecção de falhas.

4 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. Exemplo no quadro.

5 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: Mes Fruta[Maçã]&Mes[Janeiro] Fruta[Maçã]&Mes[Janeiro] | Fruta[Banana]& Mes[Janeiro]

6 Regras a respeitar Qualquer célula que não tenha cabeçalho define uma classe. Uma célula com valor v (v é texto) e um cabeçalho u define um classe u[v]. Quando não existe classes de topo comuns é permitido intersectar classes 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.

7 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. Inicialmente todas se econtram como erradas Ao serem validadas as que referencia ficam com menos probabilidade de erro. Permite que durante a contrucção da folha de cálculo, seja possível ir validando.

8 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. slicing e dicing são utilizados para inferir: backward slicing - que células podem conter erro e executado quando é confirmado erro. forward slicing - para verificar se todos os casos foram testados. casos não testados -> coloca interrogação e contorno roxo.

9 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. Backwad Slicing - fornece a lista de elementos de que este depende. Vários tons de erros. Caso marque key2_out a válido -> key2_1 e key2 ficam mais claros. Exemplo a frente.

10 Exemplo prático Células parcialmente testadas têm contorno roxo.
Células totalmente validadas têm contorno azul.

11 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. CDs: - Se já se sabe fazer alguma coisa da liguaguem quanto do resto puderá ser deduzido. - Este método terá de ser possível inferir funções de folhas já definidas. Não existir obrigatoriedade de criar a função ante de começar a inserir dados. Para que esta regra seja respeitado, não pode existir muitas + operações. quase tudo tem de ser sem necessidade de aprender Necessidade de trabalhar com matrizes.

12 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. Funções podem chamar outras funções.

13 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. As matrizes são encapsuladas numa célula. Vectores transformados em matrizes -> efectuar-se oprações com matrizes Valores soltos tb são transformados em matrizes. A invocação na Sheet1 seria do tipo: =MyAvg(A1:A5, {1, 2, 2, 1, 2})

14 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

15 Bibliografia Header and Unit Inference for Spreadsheets Through Spatial Analyses, Robin Abraham and Martin Erwig A User-Centred Approach to Functions in Excel, Simon Peyton-Jones, Alan Blackwell and Margaret Burnett, Slicing Spreadsheets: An Integrated Methodology for Spreadsheet Testing and Debugging, James Reichwein, Gregg Rothermel, Margaret Burnett, 1999


Carregar ppt "Apresentação para disciplina Programação Funcional Avançada"

Apresentações semelhantes


Anúncios Google