1/23/2009. Quais as forças que atuam sobre a asa de uma nova aeronave sendo projetada? Onde fica a rua do porto?
|
|
- Lívia Carreira Camarinho
- 6 Há anos
- Visualizações:
Transcrição
1 Onde fica a rua do porto? Siga reto nessa rua mesmo, depois vire à direita no semáforo. Passe um posto de gasolina, é a terceira rua! Quais as forças que atuam sobre a asa de uma nova aeronave sendo projetada?
2 Como ficará a ocupação urbana da capital Xangai em 2020? Pedro tem dois irmãos Daqui a cinco anos, o mais novo terá a metade da idade de Pedro Daqui a dez anos, o mais velho terá o triplo da idade do mais novo Quantos anos tem Pedro e os irmãos? O uso de modelos pode ajudar a respondê-las Modelos abstraem detalhes Modelos representam conceitos Modelos possuem informação útil Modelos são fáceis de compreender Outras propriedades... 2
3 /23/2009 maps.google.com 3
4 Idade de Pedro hoje = x Idade do irmão mais novo hoje = y Idade do irmão mais velho hoje = z Sistema y+5 = (x+5)/2 z+0 = (y+0)3 Modelo de Classes Modelo de interface Requisitos Rabiscos Modelo de Dados Modelo de Casos de Uso Modelo de Componentes Um modelo de um sistema é uma descrição ou especificação daquele sistema e seu ambiente, para um determinado propósito. Um modelo é frequentemente apresentado como uma combinação de desenhos e texto. O texto pode ser em uma linguagem de modelagem ou uma linguagem natural. 4
5 Modelos devem servir de entrada para geradores, transformadores, etc... Portanto, precisam ser automaticamente intepretáveis Por uma máquina Capacidade cognitiva limitada Devem ser Estruturados Formalmente definidos Sintaticamente corretos Completos Não ambíguos... Calculadora Some 56 com treze, e depois quarenta e cinco. Do total, subtraia cinquenta e sete. Tudo isso vezes meia-meia Software que entende um modelo Realiza ações Demonstração - calculadora 5
6 Preciso de: Um formato que o computador entenda Um analisador Dentro da ciência da computação Compiladores Linguagens Autômatos Linguagem natural Ainda está distante... Análise-Síntese Lê um programa em uma linguagem de origem Escreve um programa equivalente em uma linguagem de destino Exibe erros Analisador três fases Análise linear Caracteres são lidos, da esquerda para a direita Agrupados em tokens (sequência de caracteres que possuem um significado coletivo) Análise hierárquica Tokens são agrupados em coleções que possuem um significado Análise semântica Verificações para garantir que os componentes do programa fazem sentido 6
7 Análise linear Análise léxica ou scanning posicao := inicial + taxa 60. Identificador posicao 2. Sinal de atribuição := 3. Identificador inicial 4. Sinal de soma + 5. Identificador taxa 6. Sinal de multiplicação 7. Número 60 Expressões regulares Definem as combinações de caracteres que caracterizam um token Tokens: { Sinal de Atribuição = :=, Sinal de Soma = +, Sinal de Multiplicação =, Número = ( - )?[0-9]+, Identificador = [a-za-z][a-za-z0-9] } posicao := inicial + taxa 60 Tokens: { Sinal de Atribuição = :=, Sinal de Soma = +, Sinal de Multiplicação =, Número = ( - )?[0-9]+, Identificador = [a-za-z][a-za-z0-9] } 7
8 posicao igual inicial mais taxa vezes 60 Tokens: { Sinal de Atribuição = igual, Sinal de Soma = mais, Sinal de Multiplicação = vezes, Número = ( - )?[0-9]+, Identificador = [a-za-z][a-za-z0-9] } Análise hierárquica Análise sintática ou parsing Atribuição Identificador posicao := + Identificador inicial Identificador taxa Número 60 Regras sintáticas Atribuição Identificador := ; Identificador Número + ; 8
9 posicao := inicial + taxa 60 Atribuição Identificador := ; Identificador Número + ; Atribuição Identificador posicao := inicial + taxa 60 + Identificador taxa 60 inicial Identificador taxa Número 60 posicao := inicial + taxa 60 Atribuição Identificador := ; Identificador Número + ; Atribuição Identificador posicao Identificador inicial := + Identificador taxa Número 60 Programa prog { (Comando ; ) } ; Comando Atribuição Laço Se; Atribuição Identificador := ; Identificador Número + ; Laço... prog { a = 2; b = a + 5; se (b < 4) a = 0; } 9
10 Análise semântica Checagens diversas (tipo, declaração, etc) prog { a = 2.573f; b = a + 5; se (a == 5 && c < 4) a = 0; } Sintaxe abstrata vs sintaxe concreta Atribuição Identificador posicao := + Identificador inicial Identificador taxa Número 60 Sintaxe abstrata vs sintaxe concreta Atribuição Identificador t id t2 Identificador t3 id2 Identificador id3 Número n 0
11 id t id2 t2 id3 t3 n posicao := inicial + taxa 60 Sintaxe abstrata Voltada ao compilador Estrutura Formalismo Validade Computabilidade Sintaxe concreta Voltada ao programador Aparência Legibilidade Expressividade Muito mais detalhes Implementação Otimizações Técnicas/abordagens Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman - Compiladores Princípios, Técnicas e Ferramentas Editora: Ltc, 995
12 Modelo Representação, abstração, especificação... Sistema / ambiente Propósito Linguagem de modelagem Linguagem Interpretada por uma máquina Técnicas de compiladores Objeto Linguagem Sintaxe abstrata Tamanho Peso Sintaxe concreta Alavanca Comprimento Força Ponto de apoio Pessoa Idade Objeto o ( Tamanho (3,4,2) Peso 20kg ) Pessoa p ( Idade 20 ) Objeto o ( Tamanho (3,4,2) Peso 20kg ) Pessoa p ( Altura,80 ) public class Objeto { int larg, alt, prof; float peso; } public class pessoa { int altura; } 2 Tarefa impossível! São necessárias: -3 pessoas (>,70) -6 alavancas (> 5.5m) 3 20kg 4 7 2
13 AST Parsing Ações semânticas Objeto o ( Tamanho (3,4,2) Peso 20kg ) Pessoa p ( Altura,80 ) Geração de código Execução canônica Cálculos Demonstração São boas para modelos hierárquicos (árvore) Classes, Tabelas, Objetos, Atributos, etc São boas para aspectos de algoritmos Sequência de passos, comandos Expressões regulares Funcionam bem com sistemas de controle de versões (CVS, SVN,...) 3
14 Linguagens textuais Árvores Sempre que é necessária uma referência Precisa percorrer a árvore novamente Demonstração Utilizar um modelo Orientado a Objetos Sintaxe abstrata Ainda precisa percorrer várias vezes a árvore Porém, uma vez lida, a informação fica mais fácil de ser consultada Demonstração public class Endereco { String rua; int numero; } Pessoa public class Pessoa { String nome; enderecoprofissional Endereco enderecoresidencial; Endereco enderecoprofissional; } Endereco rua:string numero:int enderecoresidencial 4
15 public class Pessoa { String nome; Endereco enderecoresidencial; Endereco enderecoprofissional; } Pessoa public class Endereco { String rua; int numero; } enderecoprofissional Endereco rua:string numero:int?? enderecoresidencial Programas Sentenças Palavras Caracteres Regras Léxicas Sintáticas Parsers precisavam ser implementados à mão Tabela de símbolos Máquina de estados Otimizações Obs: para linguagens complexas, ainda é necessário 5
16 Compiler Compiler Ou geradores de compiladores Parser generators YACC, ANTLR,... Regras (léxica + sintática) CC Parser Código Ferramentas para Modelagem Textual Parser + Metamodelo Eclipse TCS Textual Concrete Syntax Xtext (OpenArchitectureWare) Regras (léxica + sintática) CC Parser API metamodelo Código Facilita a construção de interpretadores Maior flexibilidade Poder computacional Facilidade de manutenção Mudanças nas regras são propagadas para o parser e metamodelo Demonstração Xtext 6
17 XML (extensible Markup Language) SAX Simple API for XML À base de eventos Árvore é percorrida e eventos são disparados quando elementos são encontrados DOM Document Object Model Modelo OO do documento Vantagens Parsers já existem! Permite a checagem de metadados XMLSchema / DTD Consulta facilitada (XPath) Desvantagens Baixa legibilidade Prejudica seu poder expressivo Ainda é uma árvore! Demonstração Para as linguagens que são naturalmente grafos Modelos estruturais (arquiteturas, topologias, etc) Diagramas blocos e setas Orientação a Objetos Entidade-Relacionamento Muitos outros Sintaxe abstrata orientada a objetos 7
18 Sintaxe Abstrata Concreta Sintaxe abstrata Modelo orientado a objetos Estrutura dos modelos (classes, relacionamentos, herança, atributos,...) MetaModelo atributos ClasseUML lados AssociaçãoUML AtributoUML tipo:string 2 LadoAssociaçãoUML multiplicidade: String participante AgregaçãoUML referencia:boolean Produto:ClasseUML Cliente:ClasseUML produto fabricante:string string preço:currency fone:string Compra:ClasseUML data:date depto comprador Departamento:ClasseUML obj:cliente nome = João 0/03/2008 =joao@ .com fone= obj2:cliente nome = Pedro =pedro@bol.com fone= obj3:produto nome = Secadora fabricante = Brastemp preço = R$ 2600,00 depto = Eletrodomésticos obj4:departamento nome = Eletrodomésticos 8
19 AssociaçãoUML atributos ClasseUML lados Metamodelo AtributoUML 2 tipo:string LadoAssociaçãoUML AgregaçãoUML multiplicidade: String referencia:boolean participante Produto:ClasseUML Cliente:ClasseUML produto Modelo fabricante:string string preço:currency fone:string Departamento:ClasseUML Compra:ClasseUML data:date depto comprador obj:cliente nome = João 0/03/2008 =joao@ .com obj3:produto Informação fone= nome = Secadora fabricante = Brastemp preço = R$ 2600,00 obj2:cliente depto = Eletrodomésticos obj4:departamento nome = Pedro nome = Eletrodomésticos =pedro@bol.com fone= M2 AssociaçãoUML atributos ClasseUML lados Metametadados AtributoUML 2 tipo:string LadoAssociaçãoUML AgregaçãoUML multiplicidade: String referencia:boolean participante Cliente:ClasseUML string fone:string M comprador Produto:ClasseUML produto Metadados fabricante:string preço:currency Departamento:ClasseUML Compra:ClasseUML data:date depto obj:cliente nome = João 0/03/2008 =joao@ .com obj3:produto Dados fone= nome = Secadora fabricante = Brastemp preço = R$ 2600,00 obj2:cliente depto = Eletrodomésticos nome = Pedro =pedro@bol.com fone= M0 obj4:departamento nome = Eletrodomésticos atributos Entidade Relacionamento Atributo Papel cardinalidade: {,N} participante 3 papéis Cliente Fabricante Nome N Produto Nome Departamento Nome Tabela Clientes ID Nome João joao@ .com 2 Pedro pedro@ .com Tabela Produtos ID Nome Fabricante DeptoID Secadora Brastemp 2 Fogão Dako 2 Tabela Departamentos ID Nome Eletrodomésticos 2 Cozinha Restrição de chave estrangeira Produtos(DeptoID) Departamentos(ID) 9
20 Objeto tipo Mensagem ordem:int conteudo:string de para Classe 5: verifica() 4: envia(txt) s:sms c:central 3: conecta(nro) : new() :AplicativoMIDP 2: enviatexto( , Mensagem ) public class SMS { public Central c; public void enviatexto(string nro, String txt) { c.conecta(nro); c.envia(txt); c.verifica(); } } public class Central { public void conecta(string nro) {... } public void envia(string txt) {... } public void verifica() {... } } public class AplicativoMIDP { void main{ SMS s = new SMS(); s.enviatexto( , Mensagem ); } } Metamodelo Colaboração UML Mensagem ordem:int conteudo:string Objeto tipo Classe de para Metamodelo E-R atributos Entidade Relacionamento Atributo Papel cardinalidade: {,N} participante 3 papéis Metamodelo Classes UML atributos ClasseUML lados AssociaçãoUML AtributoUML tipo:string 2 LadoAssociaçãoUML multiplicidade: String participante AgregaçãoUML referencia:boolean M3 Metametamodelo Metametametadados Metametamodelo M2 Metamodelo Metametadados Metamodelo UML Metamodelo E-R M Modelo Metadados Modelo de classes Modelo E-R Modelo de colaboração M0 Informação Dados objetos objetos tabelas tabelas programas 20
21 Deve ser rica o bastante para descrever modelos de vários domínios Portanto, deve ser capaz de descrever a si mesma MOF Meta-Object Facility OMG Diagrama classes UML simplificado Ecore Eclipse EMF MOF adaptado para maior eficiência MetaGME MIC Vanderbilt Generic Modeling Environment Sintaxe abstrata Voltada ao computador Metamodelo Sintaxe concreta Voltada ao ser humano Ícones Caixas Linhas Setas Cores... Múltiplas sintaxes concretas Exemplo Diagrama de sequência Diagrama de colaboração 2
22 GME Demonstração Através de API Como no exemplo no início desta apresentação Benefícios da orientação a objetos Métodos Coleções Referências Builder Object Network (GME) Originalmente em C++ Existe uma versão em Java Demonstração Visual (estrutura) Analisar a tarefa Linguagem Abstrata Concreta Analisar o domínio do problema Domínio Modelo Textual (hierarquia, algoritmo) Gerar código Simular Experimentar Problema Testar Analisar 22
23 Especialista do domínio Especialista em TI finanças medicina economia jogos turismo geologia esportes Problema MODELOS componentes classes subrotinas frameworks bits código máquina padrões bytes objetos Solução Como definir linguagem Ferramentas para linguagem Visual Textual E quanto à UML? Modelagem de software não é sinônimo de UML? É a linguagem mais conhecida Com maior suporte de ferramentas Grande documentação Supre as principais necessidades Análise, casos de uso, negócio, aspectos estáticos e dinâmicos, componentes, implantação... 23
24 Um organograma Um circuito elétrico Um esquema físico de BD Uma GUI Mesmo com perfis Ainda tem pouca capacidade expressiva Fica preso à semântica da UML No contexto do MDD É uma falha grave Domínios técnicos (horizontais): aspectos técnicos comuns a diversas aplicações Distribuição GUI Persistência Domínios funcionais (verticais): aspectos de negócio, organizacionais Bancos Finanças Seguros Aeronáutica Sistemas automotivos Sistemas embarcados Diesel Controladores de motor Gas 24
25 Sistemas web E-Commerce Aplicações ebusiness E-Banking Sistema Persistência GUI Comunicação Transações Segurança E-commerce Web Compras Cartão de crédito Boleto Fórum Showroom Sistemas automotivos Linguagens de modelagem de propósito geral GPL General Purpose Language Sistemas embarcados Controladores de motor Diesel Gas Sistemas web E-Commerce Aplicações ebusiness E-Banking 25
26 Focada Em um problema Em uma organização Em um projeto Linguagem pequena, normalmente declarativa, que oferece poder expressivo focado em um domínio de problema em particular Arie van Deursen, Paul Klint, and Joost Visser. Domain-specific languages: An annotated bibliography. SIGPLAN Notices - ACM Press, 35(6):2636, Sistemas embarcados Sistemas automotivos Controladores de motor Diesel Gas Linguagens de modelagem de propósito geral GPL General Purpose Language Linguagens específicas de domínio DSL Domain-Specific Language Sistemas web E-Commerce Aplicações ebusiness E-Banking Eficiência Produtividade Dificuldade na implementação GPL DSL Aplicabilidade (nro. de cenários) Facilidade de utilização (ferramentas prontas) 26
27 Eficiência Produtividade Tecnologia de DSL MDA Ferramentas atuais Dificuldade na implementação Aplicabilidade (nro. de cenários) Facilidade de utilização (ferramentas prontas) GPL DSL Flexibilidade Proximidade do domínio Possibilidade de customização ) Defina uma gramática para a linguagem SQL abaixo SELECT tabela. campo, tabela. campo2, tabela2. campo3 FROM tabela, tabela2 WHERE tabela. campo = tabela2.campo AND tabela. campo2 = tabela2. campo2 Exemplo: Consulta : SELECT Campos From Tabelas...; Campos:... 27
28 2) Esboce o metamodelo OO criado para esta linguagem Exemplo: Consulta Campos... Preciso ler arquivos de dados Os arquivos estão em um formato texto Cada linha do arquivo é uma sequência de campos separados por um caractere qualquer Cada linha pode ser um tipo de registro diferente, os três primeiros caracteres indicam o tipo Cada registro possui um identificador, localizado nos três caracteres após o tipo Podem existir referências entre os registros, indicadas através do identificador PES00:João:END00: PES002:Carlos:END002: END00:Rua treze de maio:35:jardim II:São Carlos:SP PES003:Maria:END00: END002:Rua central:000:centro:são Paulo:SP DEP00:Pedrinho:0:PES00 DEP002:Paulinho:5:PES00 DEP003:Sofia::PES003 28
29 Defina uma linguagem textual para descrever os tipos de registros (estilo JavaBeans) Defina uma linguagem textual para descrever o formato do arquivo, relacionando-a com os tipos de registros Defina o metamodelo para a seguinte linguagem visual: Início Questão 5 Questão 2 Resposta Resposta 4 Resposta 5 Resposta 8 Resposta 2 Questão 6 Questão Questão 3 Resposta 6 Resposta 9 Mensagem 2 Resposta 3 Questão 4 Mensagem Resposta 7 Defina o metamodelo para definir conexões físicas de rede, com os elementos: Computador Nome Endereço IP HUB Nome Portas Roteador Nome Endereço IP Portas 29
30 Sugestões: Qual linguagem de metamodelagem é melhor? Ecore, MOF ou MetaGME? É possível criar modelos visuais fora do padrão blocos e setas? É possível combinar modelos visuais e textuais? Quanto está custando o kg da picanha bovina? Sério! Vai ter coffe break?? Estamos sozinhos no universo? Soluções de valor zero matematicamente interessantes da função zeta de Riemann todas tem uma forma a + bi? Os matemáticos conseguirão libertar os poderes das equações de Navier-Stokes? 30
WebMedia 2009 Minicurso 3 Parte 3: Modelagem Parte 3 MODELAGEM 1
Parte 3 MODELAGEM 1 Antes, uma pergunta Onde fica a rua do porto? Siga reto nessa rua mesmo, depois vire à direita no semáforo. Passe um posto de gasolina, é a terceira rua! www.oliverdominguez.com 2 Outra
Leia maisCP Compiladores I Prof. Msc.. Carlos de Salles
CP 5017.9 Prof. Msc.. Carlos de Salles 1 - EMENTA O Processo de Compilação. Deteção e Recuperação de Erros. Introdução à geração de Código Intermediário. Geração de Código de Máquina. Otimização. Uma visão
Leia mais1/26/2009. Metamodelo MMA. Metamodelo MMB. Modelo A2. Modelo A. Modelo B. Transformação M2M
Abstrações do mundo real Sistema e seu ambiente Com um propósito específico Simulação, geração de código No MDD Quem lê e entende o modelo é o computador Uma vez que o computador entenda o modelo... O
Leia maisIntrodução à Programação
Introdução à Programação Linguagens de Programação: sintaxe e semântica de linguagens de programação e conceitos de linguagens interpretadas e compiladas Engenharia da Computação Professor: Críston Pereira
Leia maisCompiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores
Motivação Prof. Sérgio Faustino Compiladores Conhecimento das estruturas e algoritmos usados na implementação de linguagens: noções importantes sobre uso de memória, eficiência, etc. Aplicabilidade freqüente
Leia maisLinguagens de Domínio Específico
Linguagens de Domínio Específico Fabio Mascarenhas 2017.1 http://www.dcc.ufrj.br/~fabiom/dsl Definindo DSLs Linguagem específica de domínio: uma linguagem de programação de computadores de expressividade
Leia maisApresentação. !! Familiarização com os métodos de construção de compiladores de linguagens e com as técnicas de compilação mais habituais.
Apresentação Universidade dos Açores Departamento de Matemática www.uac.pt/~hguerra/!! Aquisição de conceitos sobre a definição de linguagens de programação.!! Familiarização com os métodos de construção
Leia maisAutômatos e Linguagens
Autômatos e Linguagens Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Agosto, 2016 1 / 41 Sumário 1 Compiladores 2 Linguagens de programação 3 Ciência dos compiladores
Leia maisProjeto de Compiladores
Projeto de Compiladores FIR Faculdade Integrada do Recife João Ferreira 12 e 13 de fevereiro de 2007 Questionário 1. Em quais linguagens de programação você já programou? 2. O que você sabe sobre compiladores?
Leia maisCompiladores. Conceitos Básicos
Compiladores Conceitos Básicos Processadores de Linguagem De forma simples, um compilador é um programa que recebe como entrada um programa em uma linguagem de programação a linguagem fonte e o traduz
Leia maisUniversidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Introdução geovanegriesang@unisc.br Processadores de linguagem Linguagens de programação são notações para se descrever
Leia maisConceitos de Linguagens de Programação
Conceitos de Linguagens de Programação Aula 03 Processo de Compilação Edirlei Soares de Lima Métodos de Implementação Arquitetura de Von Neumann: A linguagem de máquina de um computador
Leia mais6.1. Teste Baseado em Gramática e Outras Abordagens de Teste
6 Discussão Além das técnicas de teste usando modelos gramaticais, existem outras abordagens de teste funcional de sistemas que estão sendo estudadas pela comunidade científica. Algumas delas se dedicam
Leia maisCompiladores 02 Analise léxica
Compiladores 02 Analise léxica Sumário Análise Léxica Definição: Lexema, tokens Tabela símbolos Expressões regulares, automatos Relembrando O compilador é dividido em duas etapas Análise Síntese Análise
Leia maisCompiladores I Prof. Ricardo Santos (cap 1)
Compiladores I Prof. Ricardo Santos (cap 1) Compiladores Linguagens de programação são notações que permitem descrever como programas devem executar em uma máquina Mas, antes do programa executar, deve
Leia maisCompiladores. Introdução
Compiladores Introdução Apresentação Turma Noite Continuada I 20/03 Continuada II 22/05 Atividades Regimental 05/06 Total 1 Ponto 1 Ponto 1 Ponto 7 Pontos 10 Pontos Aulas expositivas teórico-práticas Exercícios
Leia maisV.2 Especificação Sintática de Linguagens de Programação
V.2 Especificação Sintática de Linguagens de Programação Deve ser baseada: No planejamento da Linguagem / Compilador Objetivos, Filosofia, Potencialidades,... Nos critérios de projeto/avaliação Legibilidade,
Leia maisProjeto de Compiladores
Projeto de Compiladores FIR Faculdade Integrada do Recife João Ferreira 26 e 27 de fevereiro de 2007 Agenda da Aula Revisão Linguagem de Programação Tradutores Compilador As Fases de Um Compilador Linguagem
Leia maisUML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos
UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Roteiro A importância da UML para projetar sistemas. Principais características do diagrama de classes e de sequência.
Leia maisPró-Reitoria Acadêmica Diretoria Acadêmica Assessoria Pedagógica da Diretoria Acadêmica
FACULDADE: CENTRO UNIVERSITÁRIO DE BRASÍLIA UniCEUB CURSO: CIÊNCIA DA COMPUTAÇÃO DISCIPLINA: CONSTRUÇÃO DE COMPILADORES CARGA HORÁRIA: 75 H. A. ANO/SEMESTRE: 2017/02 PROFESSOR: EDUARDO FERREIRA DOS SANTOS
Leia maisCompiladores. Fabio Mascarenhas
Compiladores Fabio Mascarenhas 2017.1 http://www.dcc.ufrj.br/~fabiom/comp Introdução Compiladores x Interpretadores Offline x Online Um compilador transforma um programa executável de uma linguagem fonte
Leia maisCompiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 32. Instituto de C
ompiladores Introdução Bruno Lopes Bruno Lopes ompiladores 1 / 32 Apresentação Em que período estão? O quanto sabem de programação? Quais linguagens? O quanto sabem de unix? O quanto sabem de Linguagens
Leia maisUniversidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores
Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores 2013-2 Compilador para a Linguagem Cafezinho Especificação dos trabalhos: T2 (Geração da Representação Intermediária e Análise
Leia maisApresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP:
Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP: 8429016 Definição de MDA OMG (Object Management Group) propôs uma aplicação abrangente das práticas
Leia maisLinguagens de Programação
O estudante estuda muito. Regras: 7 9 12 14. . Regras: 2 4 . Regras: 1 Representar através de uma árvore de derivação. 77 O estudante estuda muito.
Leia maisUniversidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação
Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação Análise Semântica Disciplina: Compiladores Equipe: Luiz Carlos dos Anjos Filho José Ferreira Júnior Compiladores Um compilador
Leia maisCiência da Computação. Análise e Projeto Orientado a Objetos UML. Anderson Belgamo
Ciência da Computação Análise e Projeto Orientado a Objetos UML Anderson Belgamo 1 Evolução do Software O rápido crescimento da capacidade computacional das máquinas resultou na demanda por sistemas de
Leia maisParadigmas de Linguagem de Programação. Aspectos Básicos
Paradigmas de Linguagem de Programação Aspectos Básicos Introdução Nesta segunda etapa de nossos estudos, veremos: aspectos básicos de programa e linguagem de programação; revisão de conceitos de compilador
Leia maisSergio Roberto de Mello Canovas Carlos Eduardo Cugnasca WTA 2015
Sergio Roberto de Mello Canovas Carlos Eduardo Cugnasca WTA 2015 1 Introdução Motivação; MDE; Programas Adaptativos. SBMM; Metamodelo para Programas Adaptativos; Ferramenta CASE para Programas Adaptativos;
Leia maisDesenvolvimento Dirigido por Modelos: Conceitos, Aplicações, e Perspectivas. Prof. Valdemar Neto INF-UFG
Desenvolvimento Dirigido por Modelos: Conceitos, Aplicações, e Perspectivas Prof. Valdemar Neto INF-UFG Agenda Introdução Conceitos Ferramentas Aplicações Perspectivas Engenharia de Software Convencional
Leia maisLinguagens de Programação Aula 3
Aula 3 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada... Classificação das LPs (nível, geração e paradigma) Paradigmas Imperativo, OO, funcional, lógico e concorrente 2/33 Na aula de hoje...
Leia maisAULA 02. OBJETIVO: Características da Linguagem Orientada a Objetos.
AULA 02 OBJETIVO: Características da Linguagem Orientada a Objetos. HABILIDADES TRABALHADAS: Comparação das características das linguagens orientadas a objetos frente às linguagens estruturadas. Conhecimentos
Leia maisCompiladores. Lex e Yacc / Flex e Bison. Ferramentas Flex/Bison
Ferramentas Flex/Bison Prof. Sergio F. Ribeiro Lex e Yacc / Flex e Bison São ferramentas de auxílio na escrita de programas que promovem transformações sobre entradas estruturadas. São ferramentas desenvolvidas
Leia maisCompiladores Análise Semântica
Compiladores Análise Semântica Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp Árvores Sintáticas Abstratas (ASTs) A árvore de análise sintática tem muita informação redundante Separadores,
Leia maisHierarquia de Chomsky e sua relação com os autômatos
Hierarquia de Chomsky: Linguagens Regulares, Livres de Contexto, Sensíveis ao Contexto e Irrestritas seus Reconhecedores, e Geradores Autômatos são essenciais para o estudo dos limites da computação. Existem
Leia maisCAP. VI ANÁLISE SEMÂNTICA
CAP. VI ANÁLISE SEMÂNTICA VI.1 Introdução Semântica SIGNIFICADO, SENTIDO LÓGICO, COERÊNCIA,... Diferença entre SINTAXE e SEMÂNTICA Sintaxe : descreve as estruturas de uma linguagem; Semântica : descreve
Leia maisNomes, vinculações e escopos
Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Leia maisVisão Geral... e conceitos básicos
Visão Geral.. e conceitos básicos 1 Curso de... Programação O que se estuda aqui? Algoritmos 2 E o que são algoritmos? Sequência finita e não ambígua de passos para a solução de um problema. Lembre- se
Leia maisCompiladores. Análise Léxica
Compiladores Análise Léxica Regras Léxicas Especificam o conjunto de caracteres que constituem o alfabeto da linguagem, bem como a maneira que eles podem ser combinados; Exemplo Pascal: letras maiúsculas
Leia mais1.1. Declaração do Problema e Limitações dos Trabalhos Relacionados Um Framework Conceitual para SMAs
1 Introdução Os sistemas multiagentes (SMAs) estão tendo cada vez mais aceitação no setor da engenharia de software e no meio acadêmico como um paradigma para o desenvolvimento e a criação de sistemas
Leia maisPró-Reitoria Acadêmica Diretoria Acadêmica Assessoria Pedagógica da Diretoria Acadêmica
FACULDADE: CENTRO UNIVERSITÁRIO DE BRASÍLIA UniCEUB CURSO: CIÊNCIA DA COMPUTAÇÃO DISCIPLINA: CONSTRUÇÃO DE COMPILADORES CARGA HORÁRIA: 75 H. A. ANO/SEMESTRE: 2016/02 PROFESSOR: EDUARDO FERREIRA DOS SANTOS
Leia maisIntrodução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação
Aula 03 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação Linguagens de Programação A primeira linguagem de programação foi criada por Ada Lovelace. Amiga
Leia maisRequisitos de sistemas
Requisitos de sistemas Unidade III - Casos de Uso Identificação de casos de uso Conceitos de orientação a objetos Modelagem do diagrama de classes e casos de uso 1 Casos de uso CONCEITO Especifica o comportamento
Leia maisDESENVOLVIMENTO DO COMPILADOR PARA A LINGUAGEM SIMPLE
DESENVOLVIMENTO DO COMPILADOR PARA A LINGUAGEM SIMPLE Jeferson MENEGAZZO 1, Fernando SCHULZ 2, Munyque MITTELMANN 3, Fábio ALEXANDRINI 4. 1 Aluno 5ª fase do Curso de Ciência da Computação do Instituto
Leia maisCapítulo 1. Aspectos Preliminares
Capítulo 1 Aspectos Preliminares Tópicos do Capítulo 1 Razões para estudar conceitos de linguagens de programação Domínios de programação Critérios de avaliação de linguagens Influências no projeto de
Leia maisINE5421 LINGUAGENS FORMAIS E COMPILADORES
INE5421 LINGUAGENS FORMAIS E COMPILADORES PLANO DE ENSINO Objetivo geral Conhecer a teoria das linguagens formais visando sua aplicação na especificação de linguagens de programação e na construção de
Leia maisAnálise e projeto de sistemas
Análise e projeto de sistemas Conteúdo: UML O processo de desenvolvimento de software Prof. Patrícia Lucas A linguagem de modelagem unificada (UML) A UML teve origem em uma tentativa de se unificar os
Leia maisCompiladores. Eduardo Ferreira dos Santos. Fevereiro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 38
Compiladores Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Fevereiro, 2017 1 / 38 Sumário 1 Compiladores 2 Linguagens de programação 3 Ciência dos compiladores
Leia maisCurso de Sistemas de Informação. Karla Donato Fook DESU / DComp. Modelagem de Dados UML
Curso de Sistemas de Informação Karla Donato Fook karladf@ifma.edu.br DESU / DComp 2017 Modelagem de Dados UML 2 1 Eduardo Bezerra Editora Campus/Elsevier Porcentagem de projetos que terminam dentro do
Leia maisProgramação de Sistemas (Sistemas de Programação) Semana 10, Aula 17
PCS3616 Programação de Sistemas (Sistemas de Programação) Semana 10, Aula 17 Linguagens e Compiladores Programação em linguagem de alto nível Escola Politécnica da Universidade de São Paulo Roteiro 1.
Leia maisQ d( ) P. a( ) c( ) e( ) c( ) S. c( ) d( )
ELEMENTOS BÁSICOS DA LINGUAGEM JAVA Patricia Della Méa Plentz INE-CTC-UFSC E-Mail: plentz@inf.ufsc.br URL: http://moodle.ufsc.br INE5605-Turma 0238B Sumário 2.1 Classes e Objetos na POO 2.2 2 Revisão da
Leia maisFACULDADE LEÃO SAMPAIO
FACULDADE LEÃO SAMPAIO Paradigmas de Programação Curso de Análise e Desenvolvimento de Sistemas Turma: 309-5 Semestre - 2014.2 Paradigmas de Programação Prof. MSc. Isaac Bezerra de Oliveira. 1 PARADIGMAS
Leia maisUML (Unified Modelling Language)
UML (Unified Modelling Language) Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior Referências: Booch, G. et al. The Unified Modeling Language User Guide
Leia maisNomes, vinculações e escopos
Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Leia maisCompiladores Aula 1. Celso Olivete Júnior.
Aula 1 Celso Olivete Júnior olivete@fct.unesp.br Tópicos da disciplina Introdução à compilação Analisador léxico Analisador sintático descendente Analisador sintático ascendente Análise semântica Geração
Leia maisUML. Adriano J. Holanda 21/3/
UML Adriano J. Holanda 21/3/2016 UML Introdução UML - Unified Modeling Language Linguagem Unificada de Modelagem. Adquiriu maturidade na segunda década de 1990 pela fusão dos métodos e diagramas de Grady
Leia mais3 Tecnologias Relacionadas
Tecnologias Relacionadas 31 3 Tecnologias Relacionadas O objetivo deste capítulo é apresentar um resumo de cada tecnologia relacionada ao processo proposto nesta dissertação, mostrando suas principais
Leia maisLinguagens e Compiladores
Linguagens e Compiladores Aula 1: a) Critérios b) Noções de Compiladores e Interpretadores c) Usos da tecnologia de compilação d) Compiladores, filtros e pré-processadores e) Estruturação lógica de compiladores
Leia maisCOMPILADORES PROGRAMA E BIBLIOGRAFIA
COMPILADORES PROGRAMA E BIBLIOGRAFIA Mariza A. S. Bigonha e Roberto S. Bigonha UFMG 27 de maio de 2008 Todos os direitos reservados Proibida cópia sem autorização dos autores OBJETIVOS DO CURSO Ensinar
Leia maisNotas de Aula 03: Introdução a Orientação a Objetos e a UML
Notas de Aula 03: Introdução a Orientação a Objetos e a UML Objetivos da aula: Introduzir os conceitos da Orientação à Objetos (O.O) Introduzir os conceitos da UML Relacionar os processos às ferramentas
Leia maisINE5416 Paradigmas de Programação. Ricardo Azambuja Silveira INE CTC UFSC E Mail: URL:
INE5416 Paradigmas de Programação Ricardo Azambuja Silveira INE CTC UFSC E Mail: silveira@inf.ufsc.br URL: www.inf.ufsc.br/~silveira Conceitos Léxica estudo dos símbolos que compõem uma linguagem Sintaxe
Leia maisLinguagens de Programação Classificação
Classificação Classificação A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível): Linguagem de máquina (primeira geração) Linguagem assembly - de montagem (segunda
Leia maisIntrodução parte II. Compiladores. Mariella Berger
Introdução parte II Compiladores Mariella Berger Sumário Partes de um compilador Gerador da Tabela de Símbolos Detecção de erros As fases da análise As fases de um compilador Montadores O que é um Compilador?
Leia maisCompiladores. Prof. Bruno Moreno
Compiladores Prof. Bruno Moreno Apresentação - Professor Bruno Neiva Moreno Graduado em Ciência da Computação (UFPB) 2004 a 2009 Bolsista PIBIC/CNPq LARHENA - Laboratório de Recursos Hídricos e Engenharia
Leia maisXML - Extensible Markup Language
Por Sergio Crespo XML - Extensible Markup Language Extensible Markup Language (XML) é linguagem de marcação de dados (meta-markup language) que provê um formato para descrever dados estruturados. Isso
Leia maisDouglas Matheus de Souza Prof. Marcel Hugo, Mestre - Orientador
Douglas Matheus de Souza Prof. Marcel Hugo, Mestre - Orientador Introdução Objetivos Fundamentação teórica Desenvolvimento da ferramenta Operacionalidade Resultados e discussão Conclusões Versões futuras
Leia maisAs fases de um compilador
As fases de um compilador Compilando um programa simples estrutura de um compilador formas de organização de um compilador processo de execução de uma linguagem de alto-nível Compilando um programa simples
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3. Linguagem de programação C 3.1. Conceitos
Leia maisLinguagens Formais e Autômatos 02/2016. LFA Aula 01 24/10/2016. Celso Olivete Júnior.
LFA Aula 01 Apresentação 24/10/2016 Celso Olivete Júnior olivete@fct.unesp.br 1 Professor Celso Olivete Júnior Bacharelado em Ciência da Computação (Unoeste-2002) Mestrado e Doutorado em Engenharia Elétrica
Leia maisQuestões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO
Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO QUESTÃO 1 : Enviada por: Francisco Carlos Moraes Junior Duvidas: Thaise Domínios de programação são áreas onde os computadores são usados.
Leia maisUNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA DEPARTAMENTO DE INFORMÁTICA APLICADA
UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA DEPARTAMENTO DE INFORMÁTICA APLICADA DISCIPLINA: CÓDIGO: CURSOS/PRE-REQUISITO: CIC Linguagens formais e autômatos N COMPILADORES INF01147
Leia maisAnálise Sintática I. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 42
Análise Sintática I Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Abril, 2017 1 / 42 Sumário 1 Introdução 2 Derivações 3 Ambiguidade 4 Análise sintática descendente
Leia maisLinguagens de Domínio Específico
Linguagens de Domínio Específico Fabio Mascarenhas 2017.1 http://www.dcc.ufrj.br/~fabiom/dsl Por que DSLs? Melhorar a produtividade dos programadores input =~ /\d{3}-\d{3}-\d{4}/ Facilitar a escrita e
Leia maisUnidade: Introdução à POO (Programação Orientada a Objetos)
Unidade: Introdução à POO (Programação Orientada a Objetos) 0 Unidade: Introdução à POO (Programação Orientada a Objetos) Paradigmas de Programação Um paradigma de programação fornece (e determina) a visão
Leia maisDIAGRAMAS UML NA VERIFICAÇÃO FORMAL DE SOFTWARE
DIAGRAMAS UML NA VERIFICAÇÃO FORMAL DE SOFTWARE Relatório parcial PIBIC Bolsista: Eduardo Rohde Eras e-mail: eduardorohdeeras@gmail.com Responsável: Prof. Dr. Nandamudi L. Vijaykumar e-mail: vijay@lac.inpe.br
Leia maisTécnicas para Reutilização de Software
DCC / ICEx / UFMG Técnicas para Reutilização de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Panorama de Reutilização Frameworks Padrões de projeto Aplicações configuráveis Padrões de
Leia maisAs fases de um compilador
As fases de um compilador Paradigmas de LP Métodos de Implementação de LP Compilando um programa simples estrutura de um compilador formas de organização de um compilador processo de execução de uma linguagem
Leia maisFormas de Gerência de Dados XML
Bancos de Dados XML Formas de Gerência de Dados XML SGBDRs estendidos com suporte à XML adequados a dados XML fortemente estruturados ( documentos orientados a registros ) beira-mar104apto
Leia maisINF1013 MODELAGEM DE SOFTWARE
INF1013 MODELAGEM DE SOFTWARE Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 1 O Paradigma Orientado a Objetos A Linguagem UML Descrição da Arquitetura 1 Programa
Leia maisInterfaces de Vanguarda do Compilador
Interfaces de Vanguarda do Compilador Stefani Henrique Ramalho¹, Prof Mário Rubens Welerson Sott¹ ¹DCC Departamento de Ciência da Computação Universidade Presidente Antônio Carlos (UNIPAC) Barbacena MG
Leia maisAnálise Sintática. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 18
Análise Sintática Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Outubro, 2016 1 / 18 Sumário 1 Introdução 2 Derivações 2 / 18 1 Introdução 2 Derivações 3 /
Leia maisCompiladores. Prof. Bruno Moreno Aula 8 02/05/2011
Compiladores Prof. Bruno Moreno Aula 8 02/05/2011 RECONHECIMENTO DE TOKENS Reconhecimento de Tokens Até aqui aprendemos a identificar tokens Para reconhecimento, a única abordagem utilizada foi árvores
Leia maisIntrodução as Máquinas de Autômatos
Faculdade de Engenharia da Computação Disciplina: Autômatos e Linguagens Formais Introdução as Máquinas de Autômatos Site : http://www1.univap.br/~wagner/ec.html Prof. Responsáveis Wagner Santos C. de
Leia maisPROJETO DE PROGRAMAS. Projeto de Programas PPR0001
PROJETO DE PROGRAMAS Projeto de Programas PPR0001 Desenvolvimento de Software 2 3 Desenvolvimento de Software Análise de Requisitos Distinguir e dividir o sistema em componentes: Analisar os componentes
Leia maisProjeto de Linguagem. Linguagens de Programação
Projeto de Linguagem Renato Ferreira Linguagens de Programação Linguagens são adotadas para preencher uma demada Facilitar uma aplicação outrora difícil/impossível Independente da qualidade da linguagem
Leia maisCompiladores - JACC. Fabio Mascarenhas
Compiladores - JACC Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp JACC Gerador de analisadores sintáticos LALR que gera código Java Sintaxe baseada na sintaxe do YACC (e de muitos outros
Leia maisPROJETO DE PROGRAMAS. Projeto de Programas PPR0001
PROJETO DE PROGRAMAS Projeto de Programas PPR0001 Desenvolvimento de Software 2 3 Desenvolvimento de Software Análise de Requisitos Distinguir e dividir o sistema em componentes: Analisar os componentes
Leia maisALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br
Leia maisAnalisador Léxico parte II
Analisador Léxico parte II Compiladores Mariella Berger Sumário Definições Regulares Gerador de Analisador Léxico Flex Exemplos As fases de um Compilador Análise Léxica Análise Sintática ANÁLISE Análise
Leia maisProjeto de Banco de Dados. Componentes de um Sistema de Informação. Arquitetura de SI. Sistema de Informação (SI) SI nas Organizações
Sistema (SI) Coleção de atividades de Banco de Dados que regulam o compartilhamento, SI nas Organizações a distribuição de informações Fernando Fonseca e o armazenamento de dados relevantes ao gerenciamento
Leia maisCompiladores Ficha de exercícios práticos
Compiladores Ficha de exercícios práticos Simão Melo de Sousa Ano lectivo 2004/2005 O objectivo desta ficha é a implementação dos pequenos programas ou funções sugeridos pelo enunciado dos exercícios seguintes.
Leia maisLINGUAGEM E TECNICAS DE PROGRAMAÇÃO
LINGUAGEM E TECNICAS DE PROGRAMAÇÃO Aula 03 Lógica Entrada de dados Lógica Lógica, no seu sentido mais amplo, está presente em todos os passos de nossas vidas, servindo de base para resolução de nossos
Leia maisConstrução de Compiladores
Construção de Compiladores Parte 1 Introdução Linguagens e Gramáticas F.A. Vanini IC Unicamp Klais Soluções Motivação Porque compiladores? São ferramentas fundamentais no processo de desenvolvimento de
Leia maisMecanismos de Interrupção e de Exceção, Barramento, Redes e Sistemas Distribuídos. Sistemas Operacionais, Sistemas
Arquitetura de Computadores, Arquitetura de Computadores Organização de Computadores, Conjunto de Instruções, Sistemas Operacionais, Sistemas Operacionais, Sistemas Mecanismos de Interrupção e de Exceção,
Leia maisEderson Luiz da Silva Ciência da Computação. Algoritmos e Programação
Ederson Luiz da Silva Ciência da Computação Algoritmos e Programação Linguagem de programação Linguagem de Programação Linguagem de máquina http://www.assemblyprogressivo.net/p/curso.html Linguagem de
Leia maisMetamodelos para Banco de Dados. Carlos Julian Menezes Araújo Prof. Dr. Robson do Nascimento Fidalgo
Metamodelos para Banco de Dados Carlos Julian Menezes Araújo cjma@cin.ufpe.br Prof. Dr. Robson do Nascimento Fidalgo 1 Agenda Metadados MDA MOF Metamodelos CWM Pacote Relacional Referências 2 Metadados
Leia maisAula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU
Aula 5 Oficina de Programação Introdução ao C Profa. Elaine Faria UFU - 2017 Linguagem de Programação Para que o computador consiga ler um programa e entender o que fazer, este programa deve ser escrito
Leia mais