Paradigmas de Programação

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

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

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

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

INE5416 Paradigmas de Programação. Ricardo Azambuja Silveira INE CTC UFSC E Mail: URL:

Introdução à Programação

Programação I Apresentação

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

Como construir um compilador utilizando ferramentas Java

Projeto de Compiladores

Revisão: linguagens de programação

Linguagens de Programação Aula 3

Paradigmas de Linguagem de Programação. Aspectos Básicos

PLANO DE UNIDADE DIDÁTICA- PUD

Linguagens de Programação

Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO

Linguagem de Programação e Compiladores

Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores

Linguagens de Programação

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

Compiladores. Introdução

Desenvolvimento de Aplicações Desktop

CAP. VI ANÁLISE SEMÂNTICA

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

Linguagens Formais e Autômatos P. Blauth Menezes

Linguagem Pascal. Prof. Sérgio Rodrigues. É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa;

Python e sua sintaxe LNCC UFRJ

Linguagem de Programação I Prof. Tiago Eugenio de Melo.

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

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

Programação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR

Compiladores - Gramáticas

INE5421 LINGUAGENS FORMAIS E COMPILADORES

TÉCNICO EM MANUTENÇÃO E SUPORTE EM INFORMÁTICA FORMA SUBSEQUENTE. Professora: Isabela C. Damke

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO

Paradigmas de Linguagem de Programação. Paradigma Imperativo

Compiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador

Paradigmas de Linguagens

Conceitos de Linguagens de Programação

Gramáticas Livres de Contexto Parte 1

Linguagens de Programação

Fundamentos de Programação

Conceitos de Linguagem de Programação - 2

Compiladores. Fabio Mascarenhas

Compiladores. Análise Semântica

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores

Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros. Prof. Thiago A. S.

Programação de Computadores:

Tratamento dos Erros de Sintaxe. Adriano Maranhão

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

Algoritmos Computacionais

3. Linguagem de Programação C

DESENVOLVIMENTO DO COMPILADOR PARA A LINGUAGEM SIMPLE

Fundamentos de Algoritmos (5175/31)

Conceitos de Linguagens de Programação

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

Análise semântica. Função, interação com o compilador Tabela de símbolos Análise semântica. Prof. Thiago A. S. Pardo

COMPILAÇÃO. Ricardo José Cabeça de Souza

Fluxogramas e variáveis

CONCEITOS DE ALGORITMOS

ao paradigma imperativo

Ambiente de desenvolvimento

Comandos de desvio de fluxo. Expressões lógicas.

Aula 3: Algoritmos: Formalização e Construção

Linguagens de Programação Classificação

Grupo de Usuários Java do Noroeste Paulista. Tópicos Avançados em Java

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

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi

Transcriçã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 de suas expressões, declarações e unidades de programa. Também pode ser definida como o conjunto de regras que determinam que construções estão corretas e quais não estão. Algumas aplicações são melhor acomodadas pela sintaxe de uma linguagem do que outras. Por exemplo, a sintaxe de FORTRAN foi projetada para expressar programas matemáticos, enquanto que a de BASIC é uma boa opção para tornar o programa compreensível para não-programadores. As linguagens mais modernas como C, C++ e Java possuem uma sintaxe que permite mais facilmente a expressão de estruturas de controle.

Duas Abordagens para Descrição de Linguagens de Programação Descrições Informais Utiliza linguagem natural É imprecisa: permite a ocorrência de erros de interpretação Descrições Formais Utiliza uma linguagem matemática Possui significado bem definido: Evita erros de interpretação Possibilita a utilização de metodologias de apoio a projetos

Vantagens da Utilização de Métodos Formais Interface entre projetistas, implementadores e usuários Projetista: Define precisamente a linguagem desejada Permite a identificação precoce de erros Implementador: Possibilita a utilização de geradores (semi-)automáticos Dificulta o aparecimento de erros Usuários: Produção de bons manuais da linguagem

Sintaxe Define a forma e estrutura de uma linguagem Símbolos, palavras, frases e sentenças (estruturas) Principal formalismo: Gramáticas Livres de Contexto e Expressões Regulares Notação mais utilizada: BNF (Backus-Naur Form)

Gramáticas Livres de Contexto Estrutura principal: Comando <-- [[ if Expressão then Comando else Comando ]] Significado: Um Comando da linguagem definida pode ser formado pela palavra chave if seguida de uma Expressão da linguagem, da palavra chave then, de um Comando da linguagem, da palavra chave else, e de um outro Comando da linguagem.

Sintaxe Concreta x Sintaxe Abstrata Sintaxe concreta: Descreve a estrutura da linguagem com todos os detalhes. Considera elementos estéticos como comentários, palavras reservadas, precedência de operadores, e outros açucares sintáticos. Utilizado para construir reconhecedores para programas. Sintaxe abstrata: Descreve apenas os elementos relevantes da linguagem de programação. Ignora comentários e outros elementos que não contribuem para a semântica do programa Utilizada para representar programas internamente no compilador

Mais Detalhes... Esse formalismo será estudado mais detalhadamente na disciplina de Teoria e Implementação de Linguagens de Computacionais

Semântica Objetivo: Descrever o significados das estruturas do programa expressos na sua sintaxe Tipos de semântica Semântica estática: Descreve as características de uma programa válido Semântica dinâmica: Descreve os resultados da execução do programa

Formalismos Utilizados Ao contrário da sintaxe, não existe ainda um formalismo aceito globalmente para descrever a semântica da linguagem Exemplos de formalismos: Semântica Operacional Estrutural, Máquinas de Estado Abstratas, Semântica Denotacional, Semântica de Ações, Montages, etc.

Semântica De Ações Formalismo para definição de linguagens de programação. Define um mapeamento da sintaxe do programa para o seu significado. Significado de programa é dado através da notação de ações.

Notação de Ações Biblioteca que descreve os principais conceitos encontrados em linguagens de programação que serão estudados nesse curso (valores, bindings, memória, etc.) Durante esse curso veremos para cada conceito estudado os operadores que descrevem as propriedades fundamentais de cada conceito

Definição de Ações Uma ação é uma entidade que pode ser executada. Quando uma ação é executada ela pode: Terminar com sucesso Terminar com um erro Gerar uma exceção (escape) Não-terminar (executar para sempre) Durante a execução de uma ação ela produz e consome vários tipos de informação: (transientes, bindings, memória, etc.)

Semântica de Ações Faceta Básica A faceta básica define operadores que não manipulam nenhum tipo de informação apenas controlam o fluxo do programa Principais Operadores complete -- Executa com sucesso sem produzir nenhuma informação. fail -- Produz uma falha na execução da ação a and then b -- Executa as ações a e b sequêncialmente a or b -- Executa uma das ações e se esta falhar a outra ação será executada.

Exemplos de Ações: complete and then complete complete and then fail

Exemplo de Descrições Comandos vazio Sintaxe: Comando --> [[ ; ]] Semântica: execute _ :: Comando --> action. execute [[ ; ]] = complete.

Exemplo de Descrições Sequência de Comandos: Sintaxe: Comando --> [[ Comando Comando ]] Semântica: execute _ :: Comando --> action. execute [[ c 1 c 2 ]] = execute c 1 and then execute c 2.

Semântica de Ações -Faceta Funcional A faceta funcional define ações que manipulam valores temporários (transitórios) produzidos pela execução de um programa. Utilização principal: Descrição da manipulação de valores e como expressões são avaliadas em um programa. Principais Operadores give e -- produz o valor resultante da avaliação da expressão e. x then y -- Executa as ações x e y seqüencialmente, os valores transitórios produzidos por x serão repassados para a ação y. the given t # n -- Expressão (produtor) que recupera o n- ésimo valor passado para essa ação e verifica se este é do tipo t.

Exemplos de Ações give 10 give 20 then give sum(2,the given integer#1) give 1 and then give 2 then give product(the given integer#1, the given integer # 2)

EXP1 Linguagens de Expressões Aritméticas Demostra a utilização de valores em LP Estrutuas: Constantes numéricas: 1,2,3, etc. Operações fundamentais: 1 + 2 4-3 5 * 2 Etc.

Descrição de EXP1 Constantes Numéricas. Sintaxe: Expressão <-- [[ Integer ]]. Semântica: avalie _ :: Expressão --> action. avalie [[ x : Integer ]] = give x.

Descrição de EXP1 Soma de Expressões. Sintaxe: Expressão <-- [[ Expressão + Expressão ]]. Semântica: avalie _ :: Expressão --> action. avalie [[ x + y ]] = avalie x and then avalie y then give sum(the given integer#1, the given integer#2).