Calculo de Hoare Daniel Soares, Gabriel Alabarse Hernandez(150756) e Vanius Zapalowski(150843)

Slides:



Advertisements
Apresentações semelhantes
Especificação de Software
Advertisements

Programação Lógica: PROLOG
Informática Teórica Engenharia da Computação
Fábio de Oliveira Borges
Métodos Formais.
Prof. André Luis Roland Tancredo Engenheiro da Computação e Pesquisador em Desenvolvimento Tecnológico para Semicondutores pelo CNPq Especialista em Microeletrônica.
Fundamentos de linguagens de programação
Trechos de código que permitem reutilização de uma mesma tarefa. Qualquer código PHP pode estar contido no interior de uma função. Não se pode definir.
Laço ou loop e repetição
Larva/Virtuos í Antonio Kantek T ó picos Avan ç ados de Programa ç ão Orientada a Objetos - MAC 413/5715 Segundo Semestre de 2003 Prof. Fabio Kon.
FUNÇÃO CONTROLE É a função que compara as ações planejadas com os resultados obtidos. A partir dessa análise é possível dar início a eventuais correções.
Técnicas de Representação de Conhecimento Regras de Produção.
Funções Financeiras Parte 2. TAXA INTERNA DE RETORNO (TIR)  A Taxa Interna de Retorno (TIR) é outra medida de investimento, porém, diferentemente do.
Adriano A. Ribeiro. TAUTOLOGIA Uma tautologia é toda proposição cujo valor lógico é sempre verdade (V). Uma fórmula H é uma tautologia se o valor verdade.
Aula 5 Bioestatística. Estatísticas para uma variável.
MCEF 2012/2013. Introdução ao “Mathematica” Utilização do Mathematica Funcionamento do programa Regras da Linguagem Exemplos Exercícios!!
José Antônio da cunha IFRN Administração de Banco de Dados.
Aula 7 Validando os Modelos Prof. José Valentim Machado Vicente, D.Sc.
Web Application Rafael Muniz e Marcus Vinícius Plugins MAVEN 04/04/2009 Revisão 12/04/2009.
Cálculo Numérico Computacional Prof. Linder Cândido da Silva.
Sistemas Lineares Prof. Dr. Cesar da Costa 3.a Aula: Linearização de Sistemas e Transformada de Laplace.
Iterações Dilvan Moreira. Lembrando... Desenvolvimento de programas  Desenvolvimento incremental:  Evitar depuração de muito código.  A técnica consiste.
GRASP: Projeto de Objetos com Responsabilidade. 2 Pauta Responsabilidades e métodos Responsabilidades e métodos Padrões Padrões GRASP: Padrões e princípios.
INE5408 Estruturas de Dados Complexidade de Algoritmos - Complexidade de tempo - Interpretação da complexidade de tempo - Cálculo da complexidade de tempo.
Práticas Colaborativa de Programação Peterson Rodrigues Outubro de 2015.
A Ciência e A Construção do Conhecimento Científico Anderson - Biologia.
Professor: Gerson Leiria Nunes.  Análise dos sistemas discretos  Sistemas recursivos.
EAL ESTATÍSTICA, PLANEJAMENTO E OTIMIZAÇÃO DE EXPERIMENTOS.
IFRN Técnico em Informática para Internet Desenvolvimento de Algoritmos Prof. Gilbert Azevedo.
Mecânica Teórica Introdução e conceitos básicos da Mecânica Teórica:  Campos de Física Teórica;  Objecto de estudo;  Métodos da mecânica teórica; 
Elementos preliminares de monografias  O objetivo de pesquisa  A revisão bibliográfica  O problema (idéia de pesquisa)  O método de pesquisa  A justificativa.
Curso de Pré Física UTFPR – CM 2014/01 Aula 10 Monitores: Hugo Brito Natalia Garcia
15 anos15 anos. Onde encontrá-lo? Podemos encontrar todos os Procedimentos provenientes do SGQ disponibilizados em nossa rede pelo caminho : Z:\S G Q\Procedimentos.
Lógica de Programação Curso Técnico em Informática – Escola Olímpio Professor Marcelo Josué Telles
INE5408 Estruturas de Dados Introdução a Árvores - Conceitos - Árvores Binárias - Métodos e algoritmos de percurso - Métodos e algoritmos de balanceamento.
Programação para Internet Aula 06 Linguagem Java (Orientação a Objetos – Atributos e Métodos)
Sabe quem está chegando? A família Real de Marte, uma simpática família extra-terrestre. E sabe o que eles acharam de mais intrigante em suas primeiras.
Teste Estrutural: Caminho Básico Wolley W. Silva.
RAZÃO A razão consiste no cociente formado por dois números (ou grandezas) diferentes de zero. A “velocidade média”, por exemplo, corresponde à razão entre.
Problema do Empacotamento (Bin Packing) Heurística Simulated Annealing Dionatan de Souza Moura Lucas Nowaczyk Seadi Tobias Brignol Petry.
Programação para Internet Aula 12 SQL (Comandos de Consulta ao BD)
A ARTE DE GERENCIAR PESSOAS NAS ORGANIZAÇÕES Aprenda Como Tratar os Tipos de Funcionários Existentes Numa Empresa.
Eletrónica CET - Electromedicina Capítulo 4 – Ampop
Clique para editar o título Linguagem C Para programadores Python PMR
Prof. Tertuliano Estrutura Condicional em C++
Introdução a Programação Aula 05 Jackson Eduardo
GESTÃO DE PROJETOS. 1. Introdução ao Gerenciamento de Projetos 1.1. Definições de Projeto, Programa e Portfólio. Relações entre Gerenciamento de Projetos,
Normalização (4FN) Na literatura aparecem outras formas normais, como a forma normal de Boyce/Codd, a 4FN e a 5FN. Destas a única que tem importância na.
SISTEMAS DE INFORMAÇÃO GEOGRÁFICA APLICADOS Deteção remota GeoprocessamentoautomáticoWebSIG Modelos digitais de terreno de terreno Análise de imagem Análise.
Departamento de Informática – E D L M Teoria dos Conjuntos Rosen 5 th ed., §§ Estruturas Discretas e Lógica Matemática Dep. de Informática – UFMA.
Ciência da Computação Modelos Evolucionários e Tratamento de Incertezas Aula 07 Inferência Difusa Sistemas de Controle Difuso Max Pereira.
PROJETO DE NIVELAMENTO – ITEC/PROEX - UFPA PROJETO DE NIVELAMENTO – ITEC/PROEX - UFPA EQUIPE FÍSICA ELEMENTAR EQUIPE FÍSICA ELEMENTAR DISCIPLINA: FÍSICA.
AULA Mais Herança Curso: Informática (Subseqüente) Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
Detalhamento da Norma de Sistema de Gestão Ambiental: NBR ISO 14001:2004 Prefácio Introdução 1 Objetivo e campo de aplicação 2 Referências normativas 3.
Prof. César Felipe Lógica de programação. Nesta apostila estudaremos Lógica de Programação e, para isto, é importante ter uma visão geral do processo.
INE5408 Estruturas de Dados Estruturas de Dados básicas utilizando Vetores - Listas.
B.I. Business Inteligence PROFESSOR MARCELO CAMPINHOS.
Lógica de programação Estruturas de seleção Estruturas de repetição Sub-Rotinas 1.
Revisão de Conceitos Thiago Medeiros Barros. Algoritmos Qualquer problema de computação pode ser resolvido executando uma série de ações em uma ordem.
Gerenciamento de Projetos Prioritários acompanhados pelo software Microsoft Project Tania Faerman Julho/2010.
Diagramas de Sequência e Comunicação
Programas e Refinamento Programming from Specifications Carroll Morgan Prentice-Hall, 1994 [Capítulo 1] Equipe: Klaus Cavalcante Tarcísio Quirino Raquel.
1 1 Slide Programação Dinâmica Prof. Dr. Alexandre Pereira Salgado Junior.
Disciplina: Análise e Projeto de Sistemas I Aula 04: Engenharia de Software Profa. MSc. Daniela Gibertoni.
Prof. Gustavo Fernandes de Lima Descrevendo Circuitos Lógicos Capítulo 3 Parte II.
Algoritmos Grupos de Slides No 6. Prof. SIMÃO Estrutura de Repetição “faça até” do until Feito por Prof. Jean Marcelo SIMÃO e revisado por Prof. Luis Alberto.
OFICINA DE MÉTODO CIENTÍFICO
MUTAÇÃO DE INTERFACE (MI) JACKSON ANTONIO DO PRADO LIMA SILVIA REGINA VERGILIO.
Aula 5 - Métodos. Desenvolvimento de Programas A melhor forma de construir programas grandes é dividi-los em programas menores que executam tarefas específicas.
Algoritmos Grupos de Slides No 3. Prof. SIMÃO Estrutura de decisão composta "se senão" if else end Feito por Prof. Jean Marcelo SIMÃO e revisado por Prof.
Transcrição da apresentação:

Calculo de Hoare Daniel Soares, Gabriel Alabarse Hernandez(150756) e Vanius Zapalowski(150843)

Introdução A Semântica axiomática usada no cálculo de Hoare é embasada em métodos da dedução da lógica predicativa, a qual fornece uma sustentação lógica para as propriedades dos programas. A Semântica axiomática possui dois marcos iniciais: um artigo escrito por Robert Floyd e um ponto de vista diferente ao de Floyd por C.A.R. Hoare, é, obviamente, mais abstrata que outras semânticas, contudo, seu significado semântico é o mesmo para todas as semânticas. Assim, podemos nos valer de uma semântica mais “humana” e menos de máquina para resoluções do cálculo de Hoare.

Idéia Base do Cálculo de Hoare O Cálculo de Hoare consiste em asserções no programa que testam seu valor semântico. Na correção de programas usa-se a lógica predicativa de primeira ordem. Nela, as variáveis individuais correspondem a variáveis do programa e os símbolos funcionais incluem todas as operações que ocorrem nas expressões. O teste de significado é feito incluindo uma asserção antes do comando a ser testado, chamada de pré-condição, e outra após o a execução do comando, chamada pós-condição, conforme abaixo : {P} C {Q} onde P é a pré-condição, C é o comando testado e Q é a pós- condição. Logo, podemos dizer que o significado de C está intimamente ligado ao par, que é chamado de especificação de C. Sobre a correção de C, ela é verdadeira quando os valores de entrada passam por P e geram um verdadeiro para P, C é executado e para, e os valores de saída passam por Q e retornam um valor verdadeiro para Q.

Idéia Base do Cálculo de Hoare Assim, o objetivo desse método é obter regras de prova e axiomas que nos forneçam o resultado desse comando, portanto associando axiomas e provas a determinados trechos de programas, que por sua vez podem ser diferentes entre si, porém se tiverem as mesmas provas e axiomas associados serão equivalentes. Então, dado um código C que implementa B e uma otimização do algoritmo C, dita por C’, que implementa o mesmo algoritmo com algumas modificações, porém com as mesmas funções, e dadas asserções iniciais P e finais Q, portanto é válido dizer que: {P} C {Q} = {P} C’ {Q}.

Regras do Cálculo de Hoare O Cálculo de Hoare utiliza-se das seguintes regras básicas na analise de algoritmos: Comando SKIP Comando de atribuição Comando If-then-else Comando if-then Comando While Definição de força

Comando SKIP Não executa nada, assim não produz nenhum efeito no programa, é representado pelo teorema: ________________ { P } skip { P } Visto que skip não faz nada, sua pré- condição deve ser a mesma que a pós- condição, no caso P.

Comando de atribuição o valor de entrada é válido para a pré-condição, após a atribuição, a variável que recebeu o valor deve validar a mesma condição que no inicio, mas agora sendo essa condição a pós-condição e o valor de entrada do predicado a variável que recebeu o valor. Assim, tomando por exemplo V:=Z e P a pré-condição, temos o teorema : ____________________________ {P ( V ) } V := Z { P( Z ) }

Comando de atribuição Portanto, isso nos diz que as propriedades que o valor V possuía antes da atribuição, agora também são válidas para Z após a atribuição.

Comando If-then-else Comando If-then-else: nesse comando temos dois caminhos a serem provados para uma asserção, então é preciso que ambos os caminhos sejam verdadeiros, porém cada um para seus valores. Assim, tendo como exemplo C’ e C códigos e B um valor que define qual será executado, temos a regra: { P ^ B } C’ { Q } { P ^ ¬B } C { Q } { P } if B then C’ else C fi { Q }. No caso, B é uma expressão booleana nas asserções e no código para verificação do código.

Comando if-then Comando if-then : semelhante ao if-then- else, só que no lugar de else usamos skip, assim ele continua como está caso não seja necessário fazer nada. Usando os mesmo exemplos do comando if-then-else temos a regra: { P ^ B } C { Q } P ^ ¬B  Q (5) { P } if B then C fi { Q }.

Comando while Seguindo os exemplos anteriores, temos a regra : _______{ P ^ B } C { P }_______ { P } while B do C od { P ^ ¬B } Onde P é chamado invariante de loop, que para n iterações do while ela sempre deverá ser válida.

Comando while

Definição de força Podemos enfraquecer a pré-condição e a pós- condição de acordo com a necessidade e possibilidade da prova. Exemplos: { P } C { Q } Q  R { P } C { R } Temos o enfraquecimento da pós-condição, pois partindo de Q → R temos por certeza que tendo Q chegaremos em R, assim enfraquecendo a pós-condição para R.

Definição de força P  Q { Q } C { R } { P } C { R } Aqui Temos o enfraquecimento da pré- condição, pois partindo de P → Q temos por certeza que qualquer termo que implica Q também é asserção, então enfraquecemos a pré-condição para P.

Restrições da Semântica Axiomática Na semântica axiomática como na maioria das semânticas existem limitações que se não respeitadas geram resultados inesperados. Não é permitido o uso de funções, procedimentos, comandos que gerem efeitos colaterais, pois caso eles existam teremos que provar todos eles, e como não são previstos dificulta um pouco a prova de um efeito inesperado. Regras de escopo também são difíceis de serem descritas na semântica axiomática, a não ser que os nomes de escopo sejam únicos para cada código gerado.

Conclusão Apesar de suas restrições o cálculo de Hoare é uma técnica que facilita bastante a correção de algoritmos, o desenvolvimento de algoritmos “limpos e livres de bugs” e com semântica esperada e a geração automática de código de programa baseado em especificações de linguagens. Assim sendo, ele é uma ferramenta técnica de grande utilidade para programadores.

Bibliografia Juliana Carpes Imperial, “Técnicas para uso do Cálculo de Hoare em PCC”, em rio.br/pergamum/tesesabertas/ _03_cap_03.pdf, 2003, cap.3. rio.br/pergamum/tesesabertas/ _03_cap_03.pdf Luis Cares, “Tópicos Avançados em Linguagens e Modelos de Programação”, em second-course.html,2005/2006, Slides Adicionais sobre monitores e Lógica de Hoare. second-course.html Rosália Rodrigues, “Análise e Desenvolvimento de Algoritmos”, em /2007, A Axiomática de Hoare.