Conjuntos (continuação)

Slides:



Advertisements
Apresentações semelhantes
Estruturação de Linguagens (Pascal e C++)
Advertisements

Lógica de Predicados e Representação de Conhecimento
Software Básico Silvio Fernandes
03/08/2011 Professor Leomir J. Borba- –
Banco de Dados SQL Stored Procedures
Prof. Yandre Maldonado e Gomes da Costa
Elsa Carvalho 49 Universidade da Madeira Departamento de Matemática e Engenharias Programação em Lógica e Funcional (2000/01) (Actualizado em 2005/06)
1 Domínios Finitos A eficiência das programas em domínios finitos (incluindo booleanos) podem ainda ser melhoradas pelo uso de Algoritmos de Propagação.
Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes
SISTEMAS DE EQUAÇÕES.
Ivan Saraiva Silva Aula 1 - Álgebra Booleana
Orientação a Objetos: Encapsulamento e Classificação
Algoritmos Distribuídos Professora: Lúcia Drummond
Instituto de Computação - UFF Detecção de Terminação Algoritmos Distribuídos Professora: Lúcia Drummond.
Algoritmos Distribuídos Professora: Lúcia Drummond
Exemplo de Espalhamento Extensível 1. Definição dos dados a processar 2 Escondido pela moldura.
Estruturas de Dados e Algoritmos
LINGUAGEM C.
INTRODUÇÃO À PROGRAMAÇÃO
Programação Lógica: PROLOG
Polinômios Prof. Marlon.
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Material III-Bimestre Wagner Santos C. de Jesus
01(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
04(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
Introdução ao -calculus
Arquitetura de Computadores
Instrutor: Nilo Menezes
Aula 4 Nomes, Vinculações, Tipos e Escopos
Sincronização e Comunicação entre Processos
Indução Métodos de prova já vistos Excepções
Linguagem de 1ª ordem da teoria de conjuntos
Listas Encadeadas.
Revisão da Linguagem C.
A Lógica das Sentenças Abertas Profa. Ana Florencia Aula 9
Administração de Sistemas de Informação Banco de Dados
Análise Semântica e Representação Intermédia
Algoritmos Computacionais ( Programas )
Fundamentos de Engenharia de SW
1 Funções (versão C) Funções são pedaços de código encapsulados para fácil acesso. Em C e C++ o processo de construção de uma função passa por 2 etapas.
IAED Tagus, 2009/2010 Introdução à Programação em C (I)
Funcionamento básico de um computador
PROGRAMAÇÃO ESTRUTURADA II
Conceitos de Lógica Digital
Bags n Servem para armazenar a repetição de elementos n Tal qual conjuntos, a ordem dos elementos não importa n Por isso, também recebem a designação de.
Esquemas e suas operações n Forma geral: Ident. Declarações ou Ident. = [Declarações | Predicado] Predicado ^ n Esquemas são estruturas que agrupam variáveis.
Aula Prática: A Ferramenta Possum
Linguagem Funcional 2 Linguagem Funcional 2 - LF2 Estende LF1 com funções de alta ordem Uma função passa a ser um valor O contexto inclui um único componente:
Paradigma Funcional Apresentação de LF1.
Linguagem de Programação JAVA
Algoritmo e Programação
1.
BCC101 Matemática Discreta I
Campus de Caraguatatuba Aula 2: Somatório e Produtório
Campus de Caraguatatuba Licenciatura em Matemática Semestre de 2013
Paradigma funcional.
Nome alunos 1 Título UC. Título – slide 2 Conteúdo Conteúdo 2.
BCC /01 Aula Teórica 09 Funções Material Didático Proposto. 1 BCC701 – Programação de Computadores I Universidade Federal de Ouro Preto Departamento.
CSP-Z Disciplina: Especificação de Sistemas Distribuídos Mestrado em Ciências da Computação Aleciano Jr. Leonilson Barbosa
Algoritmos e Estrutura de Dados I Jean Carlo Mendes
Programação Lógica com Prolog
Aula Prática: A Ferramenta ZANS
Aula Prática 3 Funções Monitoria Introdução à Programação.
Paulo Borba e Augusto Sampaio Departamento de Informática Universidade Federal de Pernambuco Especificação Usando Conjuntos.
CIn.ufpe.br CSP-Z Disciplina: Especificação de Sistemas Distribuídos Mestrado em Ciências da Computação Aleciano Jr. Leonilson Barbosa.
Diagrama de Classes Herança Dependências.
Transcrição da apresentação:

Conjuntos (continuação) Notação Os operadores de conjunto (união, interseção, etc.) serão introduzidos através de definições axiomáticas na linguagem Z Forma geral de uma definição axiomática onde T é uma variável de tipo que possibilita definições polimórficas [T] declaração predicado

União Definição Teoremas [X] __: [P X  [P X  [P X  S, T : [P X . S  T = {x:X | x  S  x  T} [X] Teoremas S  S = S idempotência S  T = T  S comutatividade S  (T  R) = (S  T)  R associatividade S  {} = S elemento neutro S  (S  T)

Interseção Definição Teoremas [X] __: [P X  [P X  [P X  S, T : [P X . S  T = {x:X | x  S  x  T} [X] Teoremas S  S = S idempotência S  T = T  S comutatividade S  (T  R) = (S  T)  R associatividade S  {} = {} elemento nulo (S  T)  S S  (T  R) = (S  T)  (S  R) distributividade S  (T  R) = (S  T)  (S  R) distributividade

Diferença Definição Teoremas [X] _\_: [P X  [P X  [P X  S, T : [P X . S \ T = {x:X | x  S  x  T} [X] Teoremas S \ S = {} S \ {} = S {} \ S = {} (S \ T) \ R = S \ (T  R) (S \ T)  S (S  T) \ R = (S \ R)  (T \ R) (S  T) \ R = (S \ R)  (T \ R)

União Distribuída  {S1, S2, ..., Sn} = S1  S2  ...  Sn Generalização da união binária para um número arbitrário de conjuntos  {S1, S2, ..., Sn} = S1  S2  ...  Sn Exemplos  {{1,2,3}, {2,3,4}, {5,6}} = {1,2,3,4,5,6}  {{1}} = {1}  {{}} = {}

União Distribuída  : [P ([P X)  [P X  {} = {}  {S,T} = S  T Definição  : [P ([P X)  [P X  SS : [P ([P X) .  SS = {x:X |  S : SS . x  S} [X] Teoremas  {} = {}  {S,T} = S  T  (SS  TT) = ( SS)  ( TT) ( SS) \ T =  {S : SS . S \ T} SS  TT  ( SS)  ( TT)

Interseção Distribuída Generalização da interseção binária para um número arbitrário de conjuntos  {S1, S2, ..., Sn} = S1  S2  ...  Sn Exemplos  {{1}, {1,2}, {1,2,3}} = {1}  {{1},{1,2},{2,3}} = {}  {{1}} = {1}

Interseção Distribuída Definição  : [P ([P X)  [P X  SS : [P ([P X) .  SS = {x:X |  S : SS . x  S} [X] Teoremas  {S,T} = S  T  (SS  TT) = ( SS)  ( TT) S \ ( TT) =  {T : TT . S \ T} SS  TT  ( TT)  ( SS)

Uma especificação usando conjuntos Controle de acesso de pessoas a um local (por exemplo, sala de aula) Operações Inicialização (inicialmente não há pessoas) Inclusão (chegada de uma nova pessoa) Remoção (saída de uma pessoa) Consulta (verifica se ausente/presente) Restrição Máximo de 50 pessoas na sala

Uma especificação usando conjuntos: estrutura de um solução imperativa program Controle_Acesso type Pessoa = ... type Mensagem = ausente | presente; var s : set Pessoa; const lim = 50; procedure init () ... s = {} ... procedure inclusao(p: Pessoa) ... if (lim < 50) and (p  s) then s = s  {p} ... procedure exclusao(p: Pessoa) ... if p  s then s = s \ {p} ... procedure consulta(p: Pessoa; m: Mensagem) ... if p  s then m = presente else m = ausente ...

Em Z ... Deve-se abstrair da representação de alguns tipos que modelam entidades básicas (como Pessoa). Isto é feito introduzindo-se apenas um nome para o tipo, entre colchetes, sem uma definição Exemplo: [Pessoa] Constantes são introduzidas como em linguagens de programação Exemplo: lim == 50 Tipos enumerados são semelhantes aos datatypes de programação funcional Exemplo: Msg ::= ausente | presente

Em Z ... As variáveis globais, juntamente com as restrições sobre valores que estas podem assumir, formam o estado do sistema e são declaradas dentro de uma estrutura denominada esquema Exemplo: Estado s : |P Pessoa # s  lim

Em Z ... Como variáveis em lógica não podem ser atribuídas, faz-se necessária uma convenção para representar a mudança de estado. Em Z, usa-se o símbolo ’ no final do nome da variável Exemplo: s’ = s \ {p} Quando o símbolo é usado em um nome de esquema, este é adicionado a todas as variáveis Exemplo: Estado´ corresponde ao esquema Estado’ s’ : |P Pessoa # s’  lim

Em Z ... A inicialização define os valores iniciais das variáveis de estado e devem usar o ’ para indicar a atribuição de valor Exemplo: Observe a ocorrência do nome do esquema Estado na parte de declaração de Init; isto permite o acesso às variáveis Init Estado’ s’ = {}

Em Z ... Algumas operações modificam o estado e referenciam variáveis de estado iniciais e as finais (com o ’). Tais operações devem incluir o esquema D Estado que equivale a D Estado Estado Estado’ D Estado s,s’ : |P Pessoa #s  lim  #s’ lim

Em Z ... A operação de inclusão é um exemplo de operação que muda o estado Observe a variável p? na parte de declaração de esquema: é uma convenção para variáveis de entrada Inclusão D Estado p?: Pessoa (#s < lim ^ p?  s) s’ = s  {p?}

Em Z ... Algumas operações não modificam o estado mas devem tornar isto explícito. Tais operações devem incluir o esquema XEstado Exemplo: XEstado Estado Estado’ s’ = s

Em Z ... A operação de consulta é um exemplo de operação que não muda o estado Observe a variável m! na parte de declaração de esquema: é uma convenção para variáveis de saída Consulta X Estado p?: Pessoa m!: Msg (p? Î s ^ m! = presente) v (p? Ï s ^ m! = ausente)

Especificação em Z: Controle de Acesso Estado s : |P Pessoa # s  lim Init Estado’ s’ = {} [Pessoa] lim == 50 Inclusão D Estado p?: Pessoa (#s < lim ^ p?  s) s’ = s  {p?} Msg ::= ausente | presente Consulta X Estado p?: Pessoa m!: Msg (p? Î s ^ m! = presente) v (p? Ï s ^ m! = ausente) Exclusão D Estado p?: Pessoa p? Î s s’ = s \ {p?}