SEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end.

Tamanho: px
Começar a partir da página:

Download "SEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end."

Transcrição

1 SEMÂNTICA program simples = var x : int := 3 in x := x + 5 end. rode =? Rogério Rocha

2 Roteiro Introdução Sintaxe Semântica Dinâmica (Métodos formais) Operacional Axiomática Denotacional Estática Conclusão Referências 2

3 Introdução A tarefa de apresentar uma descrição concisa e inteligível de uma linguagem de programação (LP) é difícil, porém fundamental para o sucesso dela. Exemplos: ALGOL 60 ALGOL 68 Ambas concisas, mas as descrições eram de difícil entendimento e ineficiente implementação. Os níveis de aceitação de ambas as linguagens acima citadas sofreram em consequência disso. O grande objetivo de implementadores de LP s é determinar clara e precisamente a descrição de uma linguagem. 3

4 Introdução Dessa forma, usuários devem ser capazes de codificar sistemas consultando manuais de referência da linguagem, normalmente única fonte de informação impressa autorizada sobre uma linguagem. O estudo da descrição de LP s pode ser dividido em exames da sintaxe e da semântica. A sintaxe de uma LP é a forma de suas expressões, de suas instruções e de suas unidades de programa. A semântica por sua vez, é o significado destas três. Em uma LP, a semântica deve seguir-se diretamente da sintaxe. Descrever uma sintaxe é mais fácil que a semântica. 4

5 Aplicações Importante para projetistas, implementadores e usuários (programadores) Um padrão preciso para implementação Documentação útil para o usuário Uma ferramenta para projeto e análise de linguagens Geração de compiladores 5

6 SINTAXE 6

7 Sintaxe É a forma como as instruções de uma linguagem são escritas, mas sem atender ao seu significado. Exemplo em C: while (<expressão>) { } <instrução> Exemplo em Pascal: while <expressão> do begin <instrução> end; 7

8 Sintaxe O método mais usado para descrever formalmente a sintaxe das linguagens de programação é o BNF(Backus-Naur form). Definida por Peter Naur e melhorada por John Backus, daí o nome Backus-Naur form. 8

9 SEMÂNTICA 9

10 Semântica É a área de estudo de ciência da computação que se preocupa em especificar o significado (ou comportamento) de programas de computador e partes de hardware. Um dos objetivos é analisar um programa a partir somente da sintaxe da linguagem, sem necessariamente ter que executála. Exemplo: while (<expressão>) { } <instrução> Significado: enquanto o valor atual de <expressão> for verdadeiro executa <instrução>. 10

11 Semântica Algumas das razões para descrever semântica: Saber precisamente o que as instruções de uma linguagem fazem. As provas de exatidão do programa recorrem a descrição formal da semântica da linguagem. Ao contrário de sintaxe, não existe uma notação, ou um formalismo, amplamente aceito para descrever semântica. Porém, existem alguns métodos usados: Operacional, denotacional, axiomática, algébrica, de ações... 11

12 Semântica As regras semânticas são classificadas em: Semântica Dinâmica (Operacional, denotacional, axiomática) As regras semânticas são checadas em tempo de execução, descrevendo os resultados da execução do programa. Exemplo: O índice de um array está dentro do limite correto Divisão por zero Semântica Estática (algébrica, de ações) As regras semânticas são checadas em tempo de compilação, descrevendo as características de uma programa válido. Exemplo: Todo identificador deve ser declarado antes de ser usado Os parâmetros utilizados na chamada de uma função têm o tipo correto 12

13 Semântica Dinâmica Operacional 13

14 Semântica Dinâmica Operacional O objetivo é descrever o significado de um programa ao executar as instruções em uma máquina, seja ela real ou simulada. As mudanças no estado da máquina (memória, registradores, etc.) definem o significado da instrução. Para entender o conceito considere uma instrução de linguagem de máquina. Digamos que o estado de um computador sejam os valores de todos os seus registradores e de suas localizações de memória, inclusive códigos de condição e registro de status. Ao se registrar o estado do computador, executar uma determinada instrução e depois examinar o novo estado da máquina, a semântica será clara: ela é representada pela mudança no estado do computador, causada pela execução da instrução. 14

15 Semântica Dinâmica Operacional Para usar a semântica operacional em linguagens de alto nível, uma máquina virtual é necessária Definição de hardware... Construção de um interpretador puro... Semântica PODE ser descrita usando um interpretador puro para a linguagem. Problemáticas: Complexidade hardware e do SO Computadores diferentes?? Depende de algoritmos, não da matemática. Avaliação: Bom se usado informalmente (manuais da linguagem, etc.) Extremamente complexa se usada formalmente (Ex. VDL) 15

16 Semântica Dinâmica Axiomática 16

17 Semântica Dinâmica Axiomática A semântica axiomática foi definida em conjunto com o desenvolvimento de um método para provar a exatidão dos programas que mostra a computação descrita por sua especificação, quando pode ser construída. Em uma prova, cada instrução de um programa tanto é precedida como seguida de uma expressão lógica (asserções) que especifica restrições a variáveis. Asserções que precedem uma instrução é chamada de précondição. Asserções que seguem imediatamente uma instrução é chamada de pós-condição. 17

18 Semântica Dinâmica Axiomática A pré-condição mais fraca é aquela que menos restringe a garantia da validade de uma pós-condição associada. Exemplo: soma = 2*x + 1; {soma > 1} A pré-condição mais fraca neste caso é {x > 0}. O exemplo acima é fruto da aplicação de um axioma para Instruções de Atribuição. P = Q x E Onde P (pré-condição) é computado como Q (pós-condição) com todas as instâncias de x substituídas por E. 18

19 Semântica Dinâmica Axiomática A pré-condição mais fraca de uma sequência de instruções não pode ser descrita por meio de um axioma porque depende dos tipos particulares de instruções da sequência. Neste caso, a pré-condição somente pode ser descrita com uma regra de inferência. P = Q1 x E Q1 = Q2 y F Onde Q1 (pré-condição) é computado como Q2 (pós-condição) com todas as instâncias de y substituídas por F e P (pré-condição) é computado como Q1 (pós-condição) com todas as instâncias de x substituídas por E. 19

20 Semântica Dinâmica Axiomática Exemplo: 1) y = 3 * x + 1 2) x = y + 3 {x < 10} A pré-condição da segunda atribuição é y < 7 Essa será a pós-condição para a primeira. A pré-condição para a primeira instrução de atribuição agora poderá ser calculada. 3 * x + 1 < 7 x<2 20

21 Semântica Dinâmica Axiomática Consideremos em seguida a regra de inferência para instruções de seleção. Consideremos somente as seleções que incluem cláusulas else. Essa regra indica que as instruções de seleção devem ser provadas para ambos os casos. A primeira instrução lógica acima da linha é a cláusula then; a segunda é a clausula else. Exemplo: if ( x > 0) then y = y -1 else y = y + 1 Suponhamos que a pós-condição para essa instrução de seleção seja {y > 0}. Podemos usar o axioma para a atribuição na cláusula then. y = y -1 {y > 0} 21

22 Semântica Dinâmica Axiomática Isso produzirá {y -1 > 0} ou simplesmente {y > 1}. Aplicaremos agora à cláusula else y = y + 1 {y > 0} Isso Produzirá a pré-condição {y + 1 > 0} ou {y > -1}. Uma vez que {y > 1} => {y > -1}, a regra de consequência, nos permite usar {y > 1} para a pré-condição da instrução de seleção. Outra construção fundamental de uma linguagem de programação imperativa é o laço de pré-teste lógico, ou laço while. Computar a pré-condição mais fraca para um laço while é inerentemente mais difícil do que uma sequência, pois o número de iterações não pode ser previamente determinado em todos os casos. Em casos que esse número é conhecido, o laço pode ser tratado como uma sequência. 22

23 Semântica Dinâmica Axiomática O problema de computar a pré-condição mais fraca para laços é similar ao problema de provar um teorema sobre todos os números inteiros. O passo principal será encontrar uma hipótese O passo correspondente na semântica axiomática de um laço while é encontrar uma asserção chamada invariante de laço. A pré-condição mais fraca para o while deve garantir a verdade da invariante do laço. Assim, deve garantir a veracidade da pós-condição após a finalização do laço. Durante a execução do laço, a veracidade da invariante do laço não deve ser afetada pela avaliação da expressão booleana que controla o laço. 23

24 Semântica Dinâmica Axiomática Como encontrar o invariante? Usamos a pós-condição de laço Q para computar précondições para diversos números de iterações do corpo do laço, iniciando com nenhum. A seguinte função deve ser utilizada: wp(instrução, pós-condição) = pré-condição. Exemplo: while y < x do end y = y+1 {y = x} A pré-condição mais fraca é {y = x} 24

25 Semântica Dinâmica Axiomática Para uma iteração wp(y = y + 1, {y = x} )= {y + 1 = x}, ou {y = x - 1} Para duas iterações wp(y = y + 1, {y = x-1} )= {y + 1 = x-1}, ou {y = x - 2} Para três iterações wp(y = y + 1, {y = x-2} )= {y + 1 = x-2}, ou {y = x - 3} Basta {y<x} para uma ou mais iterações ou simplesmente {y<=x} Devemos assegurar que nossa escolha satisfaça a 5 critérios: A pré-condição deve ser o invariante; O invariante é a pré-condição e pós-condição para a condição verdadeira do while; O invariante e a condição verdadeira do while são pré-condições para a instrução do while e o invariante é a pós-condição; 25

26 Semântica Dinâmica Axiomática O invariante e a condição negada do while são pós-condição; E que o laço encerra-se. Terceiro critério: {y <=x and y<>x} y = y +1 {y <=x} y = y + 1 {y <= x} {y+1<=x} que é equivalente a {y < x} Quarto critério: {(y<=x) and (not(y<>x))} => {y = x} {(y<=x) and (y=x)} => {y=x} {y=x} => {y=x} A finalização do laço {y <= x} while y<x do y = y + 1 end{y=x} 26

27 Semântica Dinâmica Denotacional 27

28 Semântica Dinâmica Denotacional É o método mais rigoroso, bastante conhecido para descrever o significado de programas. O método mais abstrato de descrição da semântica. Baseia-se solidamente na teoria de funções recursivas. O processo de construção da especificação denotacional para uma linguagem define um objeto matemático para cada entidade da linguagem Define uma função que mapeia instâncias das entidades da linguagem em instâncias dos correspondentes objetos matemáticos; Nome é DENOTACIONAL pois os objetos matemáticos denotam o significado de suas entidades sintáticas correspondentes. 28

29 Semântica Dinâmica Denotacional Exemplo: A função semântica M bin, relaciona os objetos sintáticos com valores decimais <num_bin> 0 1 <num_bin> 0 <num_bin> 1 Definindo M bin : M bin ( 0 ) = 0 M bin ( 1 ) = 1 M bin (<num_bin> 0 ) = 2*M bin (<num_bin>) M bin (<num_bin> 1 ) = 2*M bin (<num_bin>) + 1 Por exemplo: M bin ( 1010 ) = 2*M bin ( 101 ) = 2*(2*M bin ( 10 )+1)= 2*(2*(2*M bin ( 1 ))+1)= 2*(2*(2*(1))+1)= 10 29

30 Semântica Dinâmica Denotacional Operacional vs Denotacional: Na semântica operacional, as mudanças de estados são definidas por algoritmos codificados; Na semântica denotacional, as mudanças de estados são definidas por funções matemáticas. 30

31 Semântica Estática 31

32 Semântica Estática Em resumo pode-se entender Semântica Estática como o conjunto de restrições que determinam se programas sintaticamente corretos são válidos. Compreende checagem de tipos, análise de escopo de declarações, checagem de número e tipo de parâmetros de funções/procedimentos, ou seja, checagem em tempo de compilação. Exemplo: Todo identificador deve ser declarado antes de ser usado. Os parâmetros utilizados na chamada de uma função têm o tipo correto. 32

33 Conclusão Existem três métodos principais de descrição das regras semânticas dinâmicas: operacional, axiomático e denotacional. A semântica operacional é um método para descrever o significado de construções de linguagem em termos de seus efeitos sobre uma máquina ideal. A semântica axiomática, que se baseia na lógica formal, foi idealizada como uma ferramenta para provar a exatidão de programas. Na semântica denotacional, objetos matemáticos são usados para representar os significados das construções de linguagem. As entidades de linguagem são convertidas nesses objetos matemáticos com funções recursivas. Dessa forma mesmo não sendo notações universais, podemos contar com esses métodos para descrever bem a semântica, evitando assim ambiguidades na definição da linguagem e outros problemas que podem surgir ao se utilizar uma Linguagem de programação. 33

34 Referência SEBESTA, ROBERT W. Conceitos de Linguagens de programação. 5ª ed. Editora Bookman p. 34

Semântica Operacional

Semântica Operacional Semântica Conceitos Semântica é o estudo do significado. Incide sobre a relação entre significantes, tais como palavras, frases, sinais e símbolos, e o que eles representam, a sua denotação. Semântica

Leia mais

SEMÂNTICA 02/09/2013. Conceitos de LPs - Semântica

SEMÂNTICA 02/09/2013. Conceitos de LPs - Semântica UNIVERSIDADE ESTADUAL DE SANTA CRUZ CURSO: CIÊNCIA DA COMPUTAÇÃO DISCIPLINA: CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO DOCENTE: ROGÉRIO VARGAS DISCENTE: MARIANNA NOVAES Semântica SEMÂNTICA Semântica é a área

Leia mais

Sintaxe e Semântica. George Darmiton da Cunha Cavalcanti.

Sintaxe e Semântica. George Darmiton da Cunha Cavalcanti. Sintaxe e Semântica George Darmiton da Cunha Cavalcanti (gdcc@cin.ufpe.br) Tópicos Introdução O problema de descrever a sintaxe Métodos formais para descrever a sintaxe Gramáticas de atributos Descrevendo

Leia mais

Introdução à Programação

Introduçã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 mais

Introdução O problema geral de descrever sintaxe Métodos formas de descrever sintaxe Gramática de atributos Semântica dinâmica

Introdução O problema geral de descrever sintaxe Métodos formas de descrever sintaxe Gramática de atributos Semântica dinâmica Capítulo 3 Descrevendo sintaxe e semântica ISBN 0-321-19362-8 Tópicos Introdução O problema geral de descrever sintaxe Métodos formas de descrever sintaxe Gramática de atributos Semântica dinâmica Copyright

Leia mais

Paradigmas de Linguagens de Programação. Descrevendo a Sintaxe e a Semântica

Paradigmas de Linguagens de Programação. Descrevendo a Sintaxe e a Semântica Descrevendo a Sintaxe e a Semântica Cristiano Lehrer Introdução Descrição, compreensível, de uma linguagem de programação é difícil e essencial. Capacidade de determinar como as expressões, instruções

Leia mais

Semântica Denotacional

Semântica Denotacional Semântica Denotacional Uma introdução ISBN 0-321-19362-8 Semântica denotacional é um método formal para definir a semântica de linguagens de programação. Interessa a: projetista de linguagens, quem escreve

Leia mais

INE5416 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: 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 mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Sintaxe e semântica Aula 4 Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Sintaxe A sintaxe de uma linguagem de programação é a forma

Leia mais

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Introduçã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 mais

Linguagens de Programação Aula 3

Linguagens 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 mais

15/03/2018. Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação

15/03/2018. Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação Conjunto de regras que definem a forma da linguagem; Como as sentenças podem ser formadas como sequências

Leia mais

ao paradigma imperativo

ao paradigma imperativo PARADIGMA FUNCIONAL PARADIGMA FUNCIONAL: INTRODUÇÃO G Exemplos de linguagens funcionais LISP - Início: LP puramente funcional - Depois: acréscimo de alguns recursos imperativos (aumentaram eficiência de

Leia mais

FACULDADE LEÃO SAMPAIO

FACULDADE 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 mais

Sintaxe e Semântica. George Darmiton da Cunha Cavalcanti.

Sintaxe e Semântica. George Darmiton da Cunha Cavalcanti. Sintaxe e Semântica George Darmiton da Cunha Cavalcanti (gdcc@cin.ufpe.br) Tópicos Introdução O problema de descrever a sintaxe Métodos formais para descrever a sintaxe Gramáticas de atributos Descrevendo

Leia mais

Linguagens de Programação

Linguagens de Programação 45 Linguagens de Programação O paradigma de programação imperativo está diretamente atrelado à arquitetura básica dos computadores sobre os quais os programas eram executados. Boa parte dos computadores

Leia mais

Nomes, vinculações e escopos

Nomes, 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 mais

3 Cálculo de Hoare. 3.1 Semântica Axiomática de Linguagens de Programação

3 Cálculo de Hoare. 3.1 Semântica Axiomática de Linguagens de Programação Cálculo de Hoare 31 3 Cálculo de Hoare 3.1 Semântica Axiomática de Linguagens de Programação As técnicas para as semânticas operacional e denotacional de linguagens de programação são fundamentadas na

Leia mais

Lógica de Hoare. Abordagem que usaremos: aplicar o método de Hoare sobre uma linguagem de programação imperativa simplificada.

Lógica de Hoare. Abordagem que usaremos: aplicar o método de Hoare sobre uma linguagem de programação imperativa simplificada. Lógica de Hoare Método axiomático para provar que determinados programas são corretos. Introduzido em 1969 por Charles Antony Richard Hoare. Também utilizado para especificar a semântica de linguagens

Leia mais

Nomes, vinculações e escopos

Nomes, 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 mais

CAP. VI ANÁLISE SEMÂNTICA

CAP. 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 mais

Compiladores. Introdução

Compiladores. 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 mais

Projeto de Compiladores

Projeto 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 mais

Expressões e sentença de atribuição

Expressões e sentença de atribuição Expressões e sentença de atribuição 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 mais

Linguagens de Programação. Marco A L Barbosa

Linguagens de Programação. Marco A L Barbosa Expressões e sentença de atribuição Linguagens de Programação Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. http://github.com/malbarbo/na-lp-copl

Leia mais

Linguagens de Programação Funcional

Linguagens de Programação Funcional Linguagens de Programação Funcional Conceitos de Linguagens de Programação Pedro Libório Setembro de 2013 2 Roteiro Introdução Funções matemáticas Fundamentos das linguagens de programação funcionais A

Leia mais

Compiladores Análise de Tipos

Compiladores Análise de Tipos Compiladores Análise de Tipos Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp Tipos Um tipo é: Um conjunto de valores Um conjunto de operações sobre esses valores Os tipos de uma linguagem

Leia mais

Capítulo 8. Estruturas de Controle no Nível de Sentença

Capítulo 8. Estruturas de Controle no Nível de Sentença Capítulo 8 Estruturas de Controle no Nível de Sentença Níveis de fluxo de controle Computações são realizadas por meio da avaliação de expressões e da atribuição dos valores a variáveis Para tornar a computação

Leia mais

Compiladores Análise de Tipos

Compiladores Análise de Tipos Compiladores Análise de Tipos Fabio Mascarenhas 2015.1 http://www.dcc.ufrj.br/~fabiom/comp Tipos Um tipo é: Um conjunto de valores Um conjunto de operações sobre esses valores Os tipos de uma linguagem

Leia mais

Especificações Gerais do Compilador e Definição de FRANKIE

Especificações Gerais do Compilador e Definição de FRANKIE Especificações Gerais do Compilador e Definição de FRANKIE 1. Especificações Gerais do Compilador (Decisões de projeto) 2. Especificações da Linguagem Fonte Definição Informal Considerações Léxicas Considerações

Leia mais

Semântica Axiomática

Semântica Axiomática Semântica Axiomática O estilo axiomático presta-se particularmente à prova e raciocínio sobre propriedades dos programas, e à sua verificação, i.e. à prova de correcção dos programas face às suas especificações.

Leia mais

Programação I Apresentação

Programação I Apresentação Programação I Apresentação Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Referências JUNIOR, D. P.; NAKAMITI, G. S.; ENGELBRECHT, A. de M. E.; BIANCHI, F. Algoritmos e Programação

Leia mais

Introdução. Compiladores Análise Semântica. Introdução. Introdução. Introdução. Introdução 11/3/2008

Introdução. Compiladores Análise Semântica. Introdução. Introdução. Introdução. Introdução 11/3/2008 Compiladores Análise Semântica Fabiano Baldo Análise Semântica é por vezes referenciada como análise sensível ao contexto porque lida com algumas semânticas simples tais como o uso de uma variável somente

Leia mais

Primeira Prova de Linguagens de Programação - DCC024 -

Primeira Prova de Linguagens de Programação - DCC024 - Primeira Prova de Linguagens de Programação - DCC024 - Ciência da Computação Nome: Eu dou minha palavra de honra que não trapacearei neste exame. Número de matrícula: As regras do jogo: A prova é sem consulta.

Leia mais

Paradigmas de Linguagens de Programação. Expressões e Instruções de Atribuição

Paradigmas de Linguagens de Programação. Expressões e Instruções de Atribuição Expressões e Instruções de Atribuição Cristiano Lehrer Introdução Expressões são o meio fundamental de especificar computações em uma linguagem de programação: Familiarização com as ordens de avaliação

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 04 Sintaxe e Semântica Edirlei Soares de Lima Sintaxe e Semântica A descrição de uma linguagem de programação envolve dois aspectos principais:

Leia mais

4) Defina o que vem a ser um algoritmo, e porque, o mesmo depende do processo.

4) Defina o que vem a ser um algoritmo, e porque, o mesmo depende do processo. Lista de Exercício 1 Algoritmo e Programação 29/08/2018 (Solução) 1) Escreva conforme a premissas computacionais, o que vem a ser, lógica. R: São as premissas básicas para se executar instruções, alocadas

Leia mais

Conceitos de Linguagem de Programação - 2

Conceitos de Linguagem de Programação - 2 Conceitos de Linguagem de Programação - 2 Arthur Jovita Guerra Thalles Santos Silva Universidade Estadual de Santa Cruz - Ilhéus, BA 1 de novembro de 2011 1 Revisão Natureza das linguagens de Programação

Leia mais

PLANO DE UNIDADE DIDÁTICA- PUD

PLANO DE UNIDADE DIDÁTICA- PUD Professor: Marcus Vinícius Midena Ramos Coordenação: Ricardo Argenton Ramos Data: 03/08/2010 Página: 1 de 5 EMENTA: Conceitos básicos de linguagens. Histórico, classificação e principais aplicações de

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Expressões Precedência e associatividade de operador Sobrecarga de operador Expressões de modo misto Várias formas de

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação de Linguagens de Programação Bruno Lopes Bruno Lopes Linguagens de Programação 1 / 11 Propriedades desejáveis Legibilidade: A leitura do programa é facilmente compreendida? Redigibilidade:

Leia mais

Desenvolvimento de Aplicações Desktop

Desenvolvimento de Aplicações Desktop Desenvolvimento de Aplicações Desktop Conceitos Básicos de Programação Professor: Charles Leite O Desenvolvimento de Programas A programação consiste em indicar como o computador (hardware) deve trabalhar

Leia mais

Como construir um compilador utilizando ferramentas Java

Como construir um compilador utilizando ferramentas Java Como construir um compilador utilizando ferramentas Java p. 1/2 Como construir um compilador utilizando ferramentas Java Aula 1 - Introdução Prof. Márcio Delamaro delamaro@icmc.usp.br Como construir um

Leia mais

Programação de Computadores:

Programação de Computadores: Instituto de C Programação de Computadores: Introdução a Linguagens de Programação Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Seis Camadas Problema

Leia mais

Compiladores. Fabio Mascarenhas

Compiladores. 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 mais

Análise Semântica e Representação Intermédia

Análise Semântica e Representação Intermédia Análise Semântica e Representação Intermédia Compiladores, Aula Nº 22 João M. P. Cardoso 1 Representação do fluxo de controlo Nós de enunciados Nó if Árvore de expressão para a condição Nó para o corpo

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Faculdade de Ciências e Tecnologia Departamento de Matemática e Computação Bacharelado em Ciência da Computação Conceitos de Linguagens de Programação Aula 02 (rogerio@fct.unesp.br) Linguagens de Programação

Leia mais

Programação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1

Programação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1 Programação de Computadores IV Introdução a Linguagens de Programação Simone Martins simone@ic.uff.br SLIDES CEDIDOS POR BRUNO MARQUES 1 Arquitetura de programação 2 O Que é um Dado? Dado é o elemento

Leia mais

Universidade Estadual de Santa Cruz

Universidade Estadual de Santa Cruz Universidade Estadual de Santa Cruz Conceitos de Linguagens de Programação Linguagens Imperativas e Funcionais Prof. Dr. Rogério Vargas Ilhéus-Ba, 16 de Maio de 2013. Linguagens Imperativas Linguagens

Leia mais

Compiladores Análise de Tipos

Compiladores Análise de Tipos Compiladores Análise de Tipos Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp Tipos Um tipo é: Um conjunto de valores Um conjunto de operações sobre esses valores Os tipos de uma linguagem

Leia mais

Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens

Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens 1 Introdução Estudar computação do ponto de vista teórico é sinônimo de caracterizar

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Fabio Mascarenhas - 2015.2 http://www.dcc.ufrj.br/~fabiom/lp Introdução Quais das expressões abaixo têm o mesmo significado? (vector-ref a 42) Introdução Quais das expressões

Leia mais

Capítulo 7. Expressões e Sentenças de Atribuição

Capítulo 7. Expressões e Sentenças de Atribuição Capítulo 7 Expressões e Sentenças de Atribuição Introdução Expressões são os meios fundamentais de especificar computações em uma linguagem de programação Para entender a avaliação de expressões, é necessário

Leia mais

Compiladores Análise de Tipos

Compiladores Análise de Tipos Compiladores Análise de Tipos Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Tipos Um tipo é: Um conjunto de valores Um conjunto de operações sobre esses valores Os tipos de uma linguagem

Leia mais

TÉCNICO DE INFORMÁTICA - SISTEMAS

TÉCNICO DE INFORMÁTICA - SISTEMAS 782 - Programação em C/C++ - estrutura básica e conceitos fundamentais Linguagens de programação Linguagem de programação são conjuntos de palavras formais, utilizadas na escrita de programas, para enunciar

Leia mais

Análise Semântica e Representação Intermédia

Análise Semântica e Representação Intermédia Análise Semântica e Representação Intermédia Compiladores Cristina C. Vieira 1 Representação do fluxo de controlo Nós de enunciados Nó if Árvore de expressão para a condição Nó para o corpo do then e nó

Leia mais

Compiladores. Análise Semântica

Compiladores. Análise Semântica Compiladores Análise Semântica Cristiano Lehrer, M.Sc. Atividades do Compilador Arquivo de origem Análise léxica Análise semântica Síntese Análise sintática Análise Gramáticas Estruturas internas Arquivo

Leia mais

INE5421 LINGUAGENS FORMAIS E COMPILADORES

INE5421 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 mais

Aula 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 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

Programação: Vetores

Programação: Vetores Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia

Leia mais

Compiladores. Análise Semântica

Compiladores. Análise Semântica Compiladores Análise Semântica Análise semântica A semântica define o significado dos programas sintaticamente corretos; Por exemplo, em C, a instrução if(a>b) max = a; else max = b; Diz que a expressão

Leia mais

02. [Sebesta, 2000] Qual é o perigo potencial dos nomes que fazem distinção entre maiúsculas e minúsculas?

02. [Sebesta, 2000] Qual é o perigo potencial dos nomes que fazem distinção entre maiúsculas e minúsculas? 01. [Sebesta, 2000] Quais são as questões de projeto referentes a nomes? Nomes, Vinculações, Verificação de Tipos e Escopos 02. [Sebesta, 2000] Qual é o perigo potencial dos nomes que fazem distinção entre

Leia mais

INSTITUTO FEDERAL DE! EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

INSTITUTO FEDERAL DE! EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE Algoritmos ANSI C - Introdução Copyright 2014 IFRN Agenda Conceitos básicos ANSI C Hello World Funções em C Exercícios 2 /26 A linguagem

Leia mais

Expressões e Instruções de Atribuição. George Darmiton da Cunha Cavalcanti

Expressões e Instruções de Atribuição. George Darmiton da Cunha Cavalcanti Expressões e Instruções de Atribuição George Darmiton da Cunha Cavalcanti (gdcc@cin.ufpe.br) Tópicos Introdução Expressões Aritméticas Operadores Sobrecarregados Conversões de Tipo Expressões Relacionais

Leia mais

Introdução à Programação de Computadores Fabricação Mecânica

Introdução à Programação de Computadores Fabricação Mecânica Introdução à Programação de Computadores Fabricação Mecânica Edilson Hipolito da Silva edilson.hipolito@ifsc.edu.br - http://www.hipolito.info Aula 04 - Linguagens de Programação, Interpretador, compilador

Leia mais

FACULDADE BATISTA MINEIRA - CST Banco de Dados Estruturas de Dados - Variáveis

FACULDADE BATISTA MINEIRA - CST Banco de Dados Estruturas de Dados - Variáveis Variável, na Matemática, é um termo utilizado em substituição de outro, normalmente, desconhecido. É utilizado para representar um número ou um conjunto. No contexto da programação de computadores, uma

Leia mais

Paradigmas. Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I

Paradigmas. Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I Paradigmas Paradigmas Tradicional Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I Paradigmas Tradicional Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I OO Simula-67, Smalltalk, C++, Eiffel, Object Pascal,

Leia mais

Linguagens de Programação Classificação

Linguagens 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 mais

INE5318 Construção de Compiladores. Ricardo Azambuja Silveira INE-CTC-UFSC URL:

INE5318 Construção de Compiladores. Ricardo Azambuja Silveira INE-CTC-UFSC   URL: INE5318 Construção de Compiladores Ricardo Azambuja Silveira INE-CTC-UFSC E-Mail: silveira@inf.ufsc.br URL: www.inf.ufsc.br/~silveira Conceitos de Linguagens de Programação Prof. Ricardo A. Silveira Conceitos

Leia mais

Linguagem de Programação e Compiladores

Linguagem de Programação e Compiladores Linguagem de Programação e Compiladores Fernando Antônio Asevedo Nóbrega Instituto de Ciências Matemáticas e de Computação USP SCC-206 Introdução à Compilação 24 de abril de 2012 1 / 20 Sumário 1 Introdução

Leia mais

Conceito de Linguagens de Programação - 1

Conceito de Linguagens de Programação - 1 Conceito de Linguagens de Programação - 1 Arthur Jovita, Thalles Silva November 1, 2011 1 Natureza das linguagens de Programação Linguagens Estáticas e Dinâmicas 2 Tipificação 3 4 Linguagens Estáticas

Leia mais

Linguagens Formais e Autômatos P. Blauth Menezes

Linguagens Formais e Autômatos P. Blauth Menezes Linguagens Formais e Autômatos P. Blauth Menezes blauth@inf.ufrgs.br Departamento de Informática Teórica Instituto de Informática / UFRGS Matemática Discreta para Ciência da Computação - P. Blauth Menezes

Leia mais

Linguagens de Programação Conceitos e Técnicas. Amarrações

Linguagens de Programação Conceitos e Técnicas. Amarrações Linguagens de Programação Conceitos e Técnicas Amarrações Conceituação Amarração (ou binding) é uma associação entre entidades de programação, tais como entre uma variável e seu valor ou entre um identificador

Leia mais

AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK)

AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK) AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK) Ø LP Java. Estrutura de um programa em Java. Ø Conjunto de caracteres utilizado. Ø Identificadores. Ø Variáveis e constantes. Ø Tipos

Leia mais

Capítulo 6: Linguagens de Programação

Capítulo 6: Linguagens de Programação Capítulo 6: Linguagens de Programação Ciência da Computação: Uma Visão Abrangente 11a Edição by J. Glenn Brookshear Copyright 2012 Pearson Education, Inc. Capítulo 6: Linguagens de programação 6.1 Perspectiva

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação CP41F Aula 2 Prof. Daniel Cavalcanti Jeronymo Conceito de algoritmo. Raciocínio lógico na construção de algoritmos. Estrutura de algoritmos. Universidade Tecnológica Federal

Leia mais

Programação Introdução

Programação Introdução PROGRAMAÇÃO Programação Introdução Prof. Dr. Adriano Mauro Cansian 1 Introdução Para armazenar um algoritmo na memória de um computador e para que ele possa, em seguida, comandar as operações a serem executadas,

Leia mais

Nelma Moreira. Departamento de Ciência de Computadores da FCUP. Aula 12

Nelma Moreira. Departamento de Ciência de Computadores da FCUP. Aula 12 Fundamentos de Linguagens de Programação Nelma Moreira Departamento de Ciência de Computadores da FCUP Fundamentos de Linguagens de Programação Aula 12 Nelma Moreira (DCC-FC) Fundamentos de Linguagens

Leia mais

Linguagens de Programação

Linguagens de Programação Universidade Federal do Rio Grande do Norte Centro de Tecnologia Departamento de Computação e Automação Linguagens de Programação Professor Responsável: Luiz Affonso Henderson Guedes de Oliveira Prof.

Leia mais

Revisão: linguagens de programação

Revisão: linguagens de programação Revisão: linguagens de programação Definição, histórico, paradigmas e semântica Prof. Thiago A. S. Pardo taspardo@icmc.usp.br Definição Uma linguagem de programação é uma linguagem destinada a ser usada

Leia mais

Sistemas de Tipos. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe

Sistemas de Tipos. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe Linguagens de Programação Departamento de Computação Universidade Federal de Sergipe Tipos permitem que dados sejam descritos de forma efetiva Previnem operações sem sentido (ex: 5 * true) Programas mais

Leia mais

Semântica Denotacional Adaptação de A Practical Introduction to Denotational Semantics Por Lloyd Allison Cambridge University Press, 1986

Semântica Denotacional Adaptação de A Practical Introduction to Denotational Semantics Por Lloyd Allison Cambridge University Press, 1986 1- Introdução Semântica Denotacional Adaptação de A Practical Introduction to Denotational Semantics Por Lloyd Allison Cambridge University Press, 1986 Semântica denotacional é um método formal para definir

Leia mais

Questõ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õ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 mais

Aula teórica 7. Preparado por eng.tatiana Kovalenko

Aula teórica 7. Preparado por eng.tatiana Kovalenko Aula teórica 7 Tema 7. Introdução a Programação Ø Linguagens de Programação Ø LP Java ØEstrutura de um programa em Java ØIdentificadores, variáveis e constantes. ØTipos de dados básicos Preparado por eng.tatiana

Leia mais

Intuição da sintaxe de L2 (35)

Intuição da sintaxe de L2 (35) 2.2 A Linguagem L2 2.2 A Linguagem L2 A linguagem L2 é uma extensão de L1 com funções recursivas, memória (acesso e atualização de variáveis), sequência de comandos ( ; ) e laço de repetição while. Primeiro,

Leia mais

Paradigmas de Linguagens

Paradigmas de Linguagens Paradigmas de Linguagens Paradigma Imperativo Professora Sheila Cáceres Paradigma Imperativo Um pouco de historia Paradigma fundamentado no conceito de máquina de Turing. A máquina de Turing é uma abstração

Leia mais

Prof. Adriano Maranhão COMPILADORES

Prof. Adriano Maranhão COMPILADORES Prof. Adriano Maranhão COMPILADORES LINGUAGENS: INTERPRETADAS X COMPILADAS Resumo: Linguagem compilada: Se o método utilizado traduz todo o texto do programa, para só depois executar o programa, então

Leia mais

Linguagem e Técnicas em Programação. Gilson de Souza Carvalho

Linguagem e Técnicas em Programação. Gilson de Souza Carvalho Gilson de Souza Carvalho gaucho.gilson@hotmail.com 3.1.3 Condições compostas Linguagem e Técnicas em Programação As condições que vimos até agora sempre foram únicas. Entretanto, conforme aumenta a complexidade

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Prof.: Edilberto M. Silva http://www.edilms.eti.br Aula 2 Linguagens de Programação Desenvolvimento e execução de programas Características de linguagens Execução de programas

Leia mais

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 04 Programa Recursivo e Máquinas Prof.ª Danielle Casillo Funções recursivas Alguma função é recursiva quando

Leia mais

Implementação de Linguagens

Implementação de Linguagens Implementação de Linguagens Pedro Vasconcelos DCC/FCUP 11 de Abril de 2016 Objectivos Introdução à implementação de linguagens de programação funcionais. Enfoce sobre técnicas de interpretação/compilação

Leia mais

Algoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza

Algoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza Algoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza givanaldo.rocha@ifrn.edu.br http://docente.ifrn.edu.br/givanaldorocha Conceitos Lógica de Programação técnica de encadear pensamentos

Leia mais

INE5622 INTRODUÇÃO A COMPILADORES

INE5622 INTRODUÇÃO A COMPILADORES INE5622 INTRODUÇÃO A COMPILADORES PLANO DE ENSINO Objetivo geral Conhecer o processo de especificação e implementação de linguagens de programação, a partir do estudo dos conceitos, modelos, técnicas e

Leia mais

Sumário. Computador. Processador. Computador Noção de algoritmo Linguagem de programação Léxico, sintaxe e semântica Gramáticas Fluxogramas

Sumário. Computador. Processador. Computador Noção de algoritmo Linguagem de programação Léxico, sintaxe e semântica Gramáticas Fluxogramas Sumário Computador Noção de algoritmo Linguagem de programação Léxico, sintaxe e semântica Gramáticas Fluxogramas 02-1 Computador Máquina Memória Armazena dados Dispositivos de entrada/saída Permite a

Leia mais

Trabalho Linguagem e Programação de Compiladores

Trabalho Linguagem e Programação de Compiladores Trabalho Linguagem e Programação de Compiladores Responda as questões. Os exercícios deverão ser desenvolvidos utilizando as estruturas apresentadas em aula e adequadas para cada problema. Forma de entrega:

Leia mais

Sistema Computacional

Sistema Computacional Algoritmos e Lógica de Programação Conceitos Básicos Abstração Reinaldo Gomes reinaldo@cefet-al.br O que é um? Integração de componentes atuando como uma entidade, com o propósito de processar dados, i.e.

Leia mais

Compiladores II. Fabio Mascarenhas

Compiladores II. Fabio Mascarenhas Compiladores II Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp2 Máquinas Virtuais Uma máquina virtual é uma técnica de implementação de linguagens de programação que é um meio termo entre

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Faculdade de Ciências e Tecnologia Departamento de Matemática e Computação Bacharelado em Ciência da Computação Conceitos de Linguagens de Programação Aula 03 (rogerio@fct.unesp.br) Aula 3 Variáveis: Nomes

Leia mais