Construção de um compilador para a linguagem Panda

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

Download "Construção de um compilador para a linguagem Panda"

Transcrição

1 Construção de Compiladores I UFOP DECOM Atividades Práticas Construção de um compilador para a linguagem Panda Etapa 1 Sumário José Romildo Malaquias Resumo Nesta série de atividades vamos implementar várias construções da linguagem Panda no compilador. Ao submeter uma atividade, deve ser incluído um documento explicando como as tarefas foram realizadas. Em relação à análise semântica, as regras implementadas devem ser explicadas de forma clara. 1 Mensagens de erro 1 2 Representação de tipos 2 3 Símbolos 2 4 Tabelas de símbolos 2 5 Os analisadores léxico, sintático e semântico 3 6 Comentários 4 7 Identificadores 4 8 Literais booleanos 4 9 Literais inteiros 5 10 Literais reais 6 11 Literais string 7 1 Mensagens de erro O projeto contém algumas classes para reportar erros encontrados durante a compilação. Estas classes fazem parte do pacote ErrorMsg e serão comentadas a seguir. Em todo compilador é desejável que os erros encontrados sejam reportados com uma indicação da localização do erro, acompanhada por uma mensagem explicativa do problema ocorrido. Para tanto tornase necessário manter a informação da localização em que cada frase do programa (cada nó da árvore abstrata construída para representar o programa) foi encontrada. Neste projeto as localizações no código fonte são dados em função do número de caracteres desde o começo do arquivo fonte até a posição desejada. Para que seja possível informar a posição usando número de linhas e colunas nas mensagens de erro, precisamos manter uma lista com informações da localização do começo de cada linha do arquivo fonte. Uma instância da classe ErrorMsg.Source possui basicamente três informações sobre o programa fonte sendo compilado: o nome do arquivo fonte, uma lista contendo a posição do início de cada linha já lida do arquivo fonte, e a contagem de linhas do arquivo fonte O analisador léxico deverá usar o método newline desta classe toda vez que for encontrada uma nova linha no arquivo fonte. A classe ErrorMsg.Loc é usada para representar uma localização no arquivo fonte. Uma localização é caracterizada por: 1

2 uma indicação do arquivo fonte (uma instância de Error.Source ), uma posição inicial (equerda), e uma posição final (direita) Assim através da localização de uma frase conhece-se o arquivo fonte onde a frase foi encontrada, a posição em que ela começou e a posição em que ela terminou. A classe ErrorMsg.ErrorMsg deve ser usada para emissão de mensagens de erro através do método error, que recebe como argumentos a localização do erro e a mensagem de diagnóstico. Esta classe possui também um atributo anyerror usado para sinalizar se houve algum erro durante a compilação. 2 Representação de tipos O pacote Types contém classes para a representação dos tipos da linguagem no compilador. A classe Types.Type é uma classe abstrata. Ele deve ser uma superclasse de todas as outras classes que representam tipos da linguagem sendo compilada. O método actual é usado para determinar o tipo realmente representado na presença de definições de tipos e recursividade, e será explicado oportunamaente. O método coerceto permite verificar se um tipo é compatível com outro tipo, dado como argumento para o método. A inteface Types.Types declara algumas contantes para representar os tipos mais comuns da linguagem sendo compilada, com o objetivo de facilitar a programação do restante do compilador. 3 Símbolos Linguagens de programação usam identificadores para nomear entidades da linguagem, como variáveis, funções, classes, módulos, etc. Símbolos léxicos que são identificadores tem um valor semântico que é o nome do identificador, e que a princípio pode ser representado por uma String. Porém o tipo String tem algumas incoveniências para o compilador: Geralmente o mesmo identificador pode ocorrer várias vezes em um programa. Se cada ocorrência for representada por string (ou seja, por uma sequência de caracteres), o uso de memória poderá ser grande. Normalmente existem dois tipos de ocorrência de identificadores em um programa: uma declaração do identificador, e um uso do identificador já declarado. Durante a compilação cada ocorrência de uso de um identificador deve ser associada com um ocorrência de declaração. Para tanto os identificadores devem ser comparados para determinar se são iguais (isto é, tem o mesmo nome). O uso de strings pode ser ineficiente, por pode ser necessário comparar todos os caracteres da string para determinar se elas são iguais ou não. Por estas razões o compilador utiliza um outro tipo ( Symbol.Symbol ) para representar os nomes dos identificadores. Basicamente mantém-se uma tabela com todas os identificadores já encontrados, e todas as vezes que o analisador léxico encontrar um identificador, deve-se verificar se o seu nome já está na tabela. Em caso afirmativo, usa-se o símbolo encontrado na tabela. Caso contrário cria-se um novo símbolo, que é adicionado à tabela, e usado pelo analisador léxico. A comparação de igualdade de símbolos se resumo a uma comparação de referências, já que o mesmo identificador estará sempre sendo representado pelo mesmo símbolo (mesmo objeto na memória). O método Symbol.Symbol.symbol cria um símbolo a partir de uma string. Observação: Não confunda o tipo Symbol.Symbol (o tipo dos símbolos que representam identificadores) com o tipo java_cup.runtime.symbol (o tipo dos símbolos gramaticais terminais e não-terminais). 4 Tabelas de símbolos Em Panda identificadores são usados para nomear entidades como tipos, variáveis e funções. Quando um identificador é usado, é necessário que ele tenha sido previamente definido, e informações sobre como ele foi definido devem ser recuperadas para compilar a frase em que o identificador é usado. Por exemplo, quando compilamos uma expressão que é uma variável simples, é necessário saber o tipo da variável. 2

3 uma expressão que é uma chamada de função, é necessário saber o número de argumentos e o tipo de cada argumento que a função espera, bem como o tipo do resultado da função. As informações disponíveis no momento em que um identificador é declarado são guardados em uma estrutura de dados chamada tabela de símbolos, que mapeia o nome (símbolo) à informação relevante a ele. Posteriormente estas tabelas podem ser usadas para recuperar estas informações. A classe Symbol.Symbol contém código para manipular tabelas de símbolo (também chamadas de ambiente). As tabelas de símbolo usadas pelo compilador de Panda e definidas como atributos na classe Env.Env são: Env.Env.venv é a tabela de variáveis e funções, e Env.Env.tenv é a tabela de tipos. As entradas na tabela de variáveis e funções são do tipo Env.Entry, que possui duas subclasses: Env.VarEntry, usada para definições de variáveis, contendo o atributo ty que representa o tipo da variável Env.FunEntry, usada para definições de funções, contendo os atributos formals representando os tipos dos parâmetros formais da função, e result representando o tipo do resultado da função 5 Os analisadores léxico, sintático e semântico O pactye Abs contém as classes que representam as árvores abstratas para as construções da linguagem. O pacote Parse contém as classes que implementam os analisadores léxico e sintático do compilador. O analisador léxico (classe Parse.Lexer ) é gerado automaticamente pela ferramenta jflex. A especificação léxica é feita no arquivo panda.jflex usando expressões regulares. O analisador sintático (classe Parse.Parser ) é gerado automaticamente pela ferramenta JavaCUP. A especificação sintática é feita no arquivo panda.cup usando uma gramática livre de contexto. O JavaCUP gera também uma classe Parse.sym contendo definições de constantes para representar os diversos símbolos terminais da gramática. Esta classe é usada pelos analisadores léxico e sintático. A classe Parse.Tokens contém o método dumptoken que obtém a descrição de um símbolo léxico (token) na forma de uma string, e é útil quando precisarmos exibir um token. A análise semântica é feita por meio de métodos definidos nas classes que representam as árvores abstratas das construões da linguagem. Ao acrescentar uma nova construção na implementação da linguagem: defina as classes necessárias para representar a árvore abstrata para a construção no pacote Absyn ; uma classe que representa uma árvore abstrata deverá ser uma subclasse de Absyn.Absyn ; lembrese de: definir os campos necessários para as sub-árvores da árvore abstrata, definir o construtor que inicializa estes campos com valores passados como argumentos, definir o método tostring que permite converter para string, definir o método totree que permite converter para uma árvore de string, útil para visualização gráfica a árvore abstrata, definir o método adequado para análise semântica declare novos símbolos terminais e não-terminais na gramática livre de contexto da linguagem, necessários para as especificações léxica e sintática da construção, acrescente as regras de produção para a construção na gramática livre de contexto da linguagem, tomando o cuidado de escrever ações semânticas adequadas para a construção da árvore abstrata correspondente, se necessário acrescente regras léxicas que permitam reconhecer os novos símbolos terminais na especificação léxica da linguagem, e 3

4 se necessário modifique o método dumptoken (que converte um símbolo léxico para String ) da classe Parse.Tokens para considerar os novos símbolos terminais. 6 Comentários Um comentário de linha em Panda começa com a sequência de caracteres // e termina no final da linha. Um comentário de bloco em Panda é delimitado por /* e por */. Comentários de bloco podem ser aninhados. Tarefa 1: Comentários Análise léxica Acrescentar regras léxicas para reconhecer (e descartar) comentários de linha e de bloco em Panda. Se um comentário de bloco não terminar deve ser reportado um erro. Tarefa 2: Comentários Testes // isto é um comentário de linha /* isto é um comentário de bloco */ /* isto é um comentário de bloco /* aninhado */ percebeu */ /* Este comentário de bloco não terminou /* Este comentário de bloco /* com aninhamento */ não terminou 7 Identificadores Os identificadores de Panda são formados por uma sequência não vazia de letras (maiúsuclas ou minúsculas), dígitos decimais e sublinhado ( _ ), começando com uma letra. Letras maiúsculas e minúsculas são consideradas diferentes. Tarefa 3: Identificadores Análise léxica 1. Modifique a gramática de Panda acrescentando um símbolo terminal ID para os tokens dos identificadores. Use um valor semântico do tipo Symbol.Symbol para estes tokens. classe Parse.Tokens para considerar o novo símbolo terminal ID. 3. Acrescente regras léxicas para o símbolo terminal ID. 8 Literais booleanos Implementar no projeto de compilador da linguagem Panda o tratamento de literais booleanos. Os literais booleanos são #t (verdadeiro) e #f (falso). 4

5 Tarefa 4: Literais booleanos Árvore abstrata Definir a classe Absyn.BoolExp para representar a árvore abstrata de uma constante booleana. 1. Defina as variáveis de instância necessárias para representar a estrutura da expressão. 2. Defina o construtor para a classe. 3. Redefina o método totree para converter um objeto desta classe para Tree<String>. Tarefa 5: Literais booleanos Análise léxica 1. Modifique a gramática de Panda acrescentando um símbolo terminal BOOLLIT para os tokens dos literais booleanos. Use um valor semântico do tipo Boolean para estes tokens. classe Parse.Tokens para considerar o novo símbolo terminal BOOLLIT. 3. Acrescente regras léxicas para o símbolo terminal BOOLLIT. Tarefa 6: Literais booleanos Análise sintática Acrescente na gramática de Panda uma regra de produção para a expressão literal booleano. Tarefa 7: Literais booleanos Análise semântica 1. Defina a classe Types.BOOL para representar o tipo dos valores booleanos. 2. Acrescte uma constante BOOL na classe Types.Types cujo valor é uma instância da classe Types.BOOL. 3. Redefina o método typecheck na classe Absyn.BoolExp que calcula o tipo de uma expressão literal booleano. 4. Adicione na tabela de símbolos de tipos do compilador o símbolo bool. 5. Adicione na tabela de símbolos de variávaeis e funções do compilador as funções da biblioteca padrão que manipulam booleanos. As assinaturas das funções são: function print_bool(x: bool): unit function not(b: bool): bool Tarefa 8: Literais booleanos Testes #t #f #F // erro léxico 9 Literais inteiros Implementar no projeto de compilador da linguagem Panda o tratamento de literais inteiros. Um literal inteiro é uma sequência não vazia de dígitos decimais. O literal só poderá começar com o dígito 0 se ele for o próprio literal 0. 5

6 Tarefa 9: Literais inteiros Árvore abstrata Definir a classe Absyn.IntExp para representar a árvore abstrata de uma constante inteira. 1. Defina as variáveis de instância necessárias para representar a estrutura da expressão. 2. Defina o construtor para a classe. 3. Redefina o método totree para converter um objeto desta classe para Tree<String>. Tarefa 10: Literais inteiros Análise léxica 1. Modifique a gramática de Panda acrescentando um símbolo terminal INTLIT para os tokens dos literais inteiros. Use um valor semântico do tipo Long para estes tokens. classe Parse.Tokens para considerar o novo símbolo terminal INTLIT. 3. Acrescente regras léxicas para o símbolo terminal INTLIT. Tarefa 11: Literais inteiros Análise sintática Acrescente na gramática de Panda uma regra de produção para a expressão literal inteiro. Tarefa 12: Literais inteiros Análise semântica 1. Defina a classe Types.INT para representar o tipo dos valores inteiros. 2. Acrescte uma constante INT na classe Types.Types cujo valor é uma instância da classe Types.INT. 3. Redefina o método typecheck na classe Absyn.IntExp que calcula o tipo de uma expressão literal inteiro. 4. Adicione na tabela de símbolos de tipos do compilador o símbolo int. 5. Adicione na tabela de símbolos de variáveis e funções do compilador as funções da biblioteca padrão que manipulam inteiros. As assinaturas das funções são: function print_int(x: int): unit Tarefa 13: Literais inteiros Testes Literais reais Implementar no projeto de compilador da linguagem Panda o tratamento de números reais (representados como números em ponto flutante). Um literal real é formado por uma sequência de dígitos decimais seguida de um ponto seguido de outra sequência de dígitos decimais. Uma e somente uma das sequências de dígitos decimais pode ser vazia. 6

7 Tarefa 14: Literais reais Árvore abstrata Definir a classe Absyn.RealExp para representar a árvore abstrata de uma constante real. 1. Defina as variáveis de instância necessárias para representar a estrutura da expressão. 2. Defina o construtor para a classe. 3. Redefina o método totree para converter um objeto desta classe para Tree<String>. Tarefa 15: Literais reais Análise léxica 1. Modifique a gramática de Panda acrescentando um símbolo terminal REALLIT para os tokens dos literais reais. Use um valor semântico do tipo Double para estes tokens. classe Parse.Tokens para considerar o novo símbolo terminal REALLIT. 3. Acrescente regras léxicas para o símbolo terminal REALLIT. Tarefa 16: Literais reais Análise sintática Acrescente na gramática de Panda uma regra de produção para a expressão literal real. Tarefa 17: Literais reais Análise semântica 1. Defina a classe Types.REAL para representar o tipo dos valores reais. 2. Acrescte uma constante REAL na classe Types.Types cujo valor é uma instância da classe Types.REAL. 3. Redefina o método typecheck na classe Absyn.RealExp que calcula o tipo de uma expressão literal real. 4. Adicione na tabela de símbolos de tipos do compilador o símbolo real. 5. Adicione na tabela de símbolos de variáveis e funções do compilador as funções da biblioteca padrão que manipulam reais. As assinaturas das funções são: function print_real(x: real): unit function round(f: real): int function ceil(f: real): int function floor(f: real): int function real(i: int): real Tarefa 18: Literais reais Testes Literais string Implementar no projeto de compilador da linguagem Panda o tratamento de strings. Considere que os literais strings são escritos como uma sequência de caracteres delimitada por aspas duplas ("). O caracter \ é especial e inicia uma sequência de escape. As seguintes sequências de escape são válidas: 7

8 \\ o caracter \ \" o caracter " \n o caracter de mudança de linha \t o caracter de tabulação horizontal \ddd o caracter de código decimal ddd (ddd é uma sequência de dígitos decimais) Tarefa 19: Literais strings Árvore abstrata Definir a classe Absyn.StringExp para representar a árvore abstrata de uma constante string. 1. Defina as variáveis de instância necessárias para representar a estrutura da expressão. 2. Defina o construtor para a classe. 3. Redefina o método totree para converter um objeto desta classe para Tree<String>. Tarefa 20: Literais strings Análise léxica 1. Modifique a gramática de Panda acrescentando um símbolo terminal STRINGLIT para os tokens dos literais strings. Use um valor semântico do tipo String para estes tokens. classe Parse.Tokens para considerar o novo símbolo terminal STRINGLIT. 3. Acrescente regras léxicas para o símbolo terminal STRINGLIT. Tarefa 21: Literais strings Análise sintática Acrescente na gramática de Panda uma regra de produção para a expressão literal string. Tarefa 22: Literais strings Análise semântica 1. Defina a classe Types.STRING para representar o tipo dos valores strings. 2. Acrescte uma constante STRING na classe Types.Types cujo valor é uma instância da classe Types.STRING. 3. Redefina o método typecheck na classe Absyn.StringExp que calcula o tipo de uma expressão literal string. 4. Adicione na tabela de símbolos de tipos do compilador o símbolo string. 5. Adicione na tabela de símbolos de variáveis e funções do compilador as funções da biblioteca padrão que manipulam strings. As assinaturas das funções são: function print(x: string): unit function length(s: string): int function substring(s: string, start: int, length: int): string Tarefa 23: Literais strings Testes "Bom dia, Brasil!" "" "abc\tdef\nghi\\jkl\"mno\065ok" // invalid escape sequence in string literal "abc\kdef" // unclosed string literal "abc 8

Compilação da linguagem Panda

Compilação da linguagem Panda Construção de Compiladores I [BCC328] Atividades Práticas Compilação da linguagem Panda Departamento de Computação Universidade Federal de Ouro Preto Prof. José Romildo Malaquias 22 de abril de 2015 Resumo

Leia mais

Identificadores Nome de variáveis, constantes, métodos, etc...

Identificadores Nome de variáveis, constantes, métodos, etc... IV.2 Aspectos Léxicos Convencionais Classes de símbolos Genéricos Token genérico / Lei de formação bem definida Podem possuir limitações de tamanho e/ou valor Possuem valor semântico o token deve ser acompanhado

Leia mais

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA) Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA) Análise Léxica A primeira fase da compilação Recebe os caracteres de entrada do programa e os converte em um fluxo de

Leia mais

IV.2 Aspectos Léxicos Convencionais

IV.2 Aspectos Léxicos Convencionais IV.2 Aspectos Léxicos Convencionais Classes de símbolos Genéricos - Token genérico / Lei de formação bem definida - Limitações de tamanho e/ou valor - Possuem valor semântico o token deve ser acompanhado

Leia mais

Programas Interativos

Programas Interativos Programação Funcional DECOM UFOP 2012-1 Aula prática Capítulo 8 Prof. José Romildo Malaquias Programas Interativos Resumo Nesta aula pretende-se explorar construção de programas interativos usando ações

Leia mais

Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação

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

Compiladores Análise Semântica

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

Simulação de Caixa Automático

Simulação de Caixa Automático Programação Funcional UFOP DECOM 2014.1 Trabalho 1 Simulação de Caixa Automático Sumário Resumo Com esta atividade pretende-se explorar a construção de programas interativos usando ações de entrada e saída

Leia mais

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

Compiladores. Conceitos Básicos

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

Compiladores - Especificando Sintaxe

Compiladores - Especificando Sintaxe Compiladores - Especificando Sintaxe Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Sintática A análise sintática agrupa os tokens em uma árvore sintática de acordo com a estrutura

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

Análise Sintática Introdução

Análise Sintática Introdução Análise Sintática Introdução Renato Ferreira Linguagens e Automatas Linguagens formais são importantes em Computação Especialmente em linguagens de programação Linguagens regulares A linguagem formal mais

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

Compiladores 04 Analise léxica Jflex. Prof José Rui

Compiladores 04 Analise léxica Jflex. Prof José Rui Compiladores 04 Analise léxica Jflex Prof José Rui Sumário Análise Léxica Definição: Lexema, tokens Tabela símbolos Expressões regulares, automatos JFlex Análise léxica Exemplo Soma = a + b * 40;

Leia mais

Compiladores Análise Semântica

Compiladores Análise Semântica Compiladores Análise Semântica Fabio Mascarenhas - 2013.1 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 mais

Ambiente de desenvolvimento

Ambiente de desenvolvimento Linguagem C Ambiente de desenvolvimento Um programa em C passa por seis fases até a execução: 1) Edição 2) Pré-processamento 3) Compilação 4) Linking 5) Carregamento 6) Execução Etapa 1: Criação do programa

Leia mais

Compiladores. Análise Léxica

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

Compiladores 02 Analise léxica

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

Compiladores - JFlex. Fabio Mascarenhas

Compiladores - JFlex. Fabio Mascarenhas Compiladores - JFlex Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp JFlex Um gerador de analisadores léxicos que gera analisadores escritos em Java A sintaxe das especificações é inspirada

Leia mais

Compiladores - JFlex. Fabio Mascarenhas Monday, April 15, 13

Compiladores - JFlex. Fabio Mascarenhas Monday, April 15, 13 Compiladores - JFlex Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp JFlex Um gerador de analisadores léxicos que gera analisadores escritos em Java A sintaxe das especificações é inspirada

Leia mais

Aná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. 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 mais

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; Tudo no mundo real pode ser representado por meio do conceito de "objeto": uma planta, uma mesa, uma pessoa, um sentimento,

Leia mais

Compiladores I Prof. Ricardo Santos (cap 1)

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

Aná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. 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 mais

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

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

Classes e Objetos. Sintaxe de classe em Java

Classes e Objetos. Sintaxe de classe em Java Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados

Leia mais

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

Tokens, Padroes e Lexemas

Tokens, Padroes e Lexemas O Papel do Analisador Lexico A analise lexica e a primeira fase de um compilador e tem por objetivo fazer a leitura do programa fonte, caracter a caracter, e traduzi-lo para uma sequencia de símbolos lexicos

Leia mais

Aula 4: Introdução à Linguagem C++

Aula 4: Introdução à Linguagem C++ CI208 - Programação de Computadores Aula 4: Introdução à Linguagem C++ Prof. MSc. Diego Roberto Antunes diegor@inf.ufpr.br www.inf.ufpr.br/diegor Universidade Federal do Paraná Setor de Ciências Exatas

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

Introdução parte II. Compiladores. Mariella Berger

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

Linguagens de Domínio Específico

Linguagens de Domínio Específico Linguagens de Domínio Específico Fabio Mascarenhas 2016.1 http://www.dcc.ufrj.br/~fabiom/dsl Processamento de uma DSL PEGs As gramáticas de expressões de parsing, ou PEGs (parsing expression grammars)

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-2 Introdução à Programação Orientada a Objetos Prof. Esbel Tomás Valero Orellana Modelos Modelos são representações simplificadas de objetos, pessoas, itens, tarefas,

Leia mais

Estrutura de Dados Básica

Estrutura de Dados Básica Estrutura de Dados Básica Professor: Osvaldo Kotaro Takai. Aula 5: Registros O objetivo desta aula é apresentar os tipos de dados definidos pelo programador, bem como exibir usos comuns desses tipos de

Leia mais

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica. Computação L2 Linguagem C++ ovsj@cin.ufpe.br Observação: Material Baseado na Disciplina Computação Eletrônica. Alfabeto São os símbolos ( caracteres ) permitidos na linguagem: Letras (maiúsculas e minúsculas);

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/3 Como construir um compilador utilizando ferramentas Java Aula 11 Tabela de Símbolos Prof. Márcio Delamaro delamaro@icmc.usp.br Como construir

Leia mais

Analisador Léxico parte II

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

Aula de hoje. Tipos de Dados e Variáveis. Constantes literais. Dados. Variáveis. Tipagem dinâmica. SCC Introdução à Programação para Engenharias

Aula de hoje. Tipos de Dados e Variáveis. Constantes literais. Dados. Variáveis. Tipagem dinâmica. SCC Introdução à Programação para Engenharias SCC 12 - Introdução à Programação para Engenharias Tipos de Dados e Variáveis Professor: André C. P. L. F. de Carvalho, ICMC-USP Pos-doutorando: Isvani Frias-Blanco Monitor: Henrique Bonini de Britto Menezes

Leia mais

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 31. Instituto de C

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 31. Instituto de C ompiladores Análise Léxica Bruno Lopes Bruno Lopes ompiladores 1 / 31 Front-end Lida com a linguagem de entrada Teste de pertinência: código fonte linguagem fonte? Programa está bem formado? Sintaticamente?

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

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

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

Pró-Reitoria Acadêmica Diretoria Acadêmica Assessoria Pedagógica da Diretoria Acadêmica

Pró-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 mais

CP Compiladores I Prof. Msc.. Carlos de Salles

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

Linguagens de Domínio Específico

Linguagens de Domínio Específico Linguagens de Domínio Específico Fabio Mascarenhas 2016.1 http://www.dcc.ufrj.br/~fabiom/dsl Processamento de uma DSL Padrão Visitor A outra técnica para implementar um percurso consiste em usar o padrão

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-4 Construtores e Sobrecarga Prof. Esbel Tomás Valero Orellana Até Aqui Modelos e POO Classes e sua implementação em Java Encapsulamento Tipos de dados nativos em Java

Leia mais

Folha 3 - Análise léxica

Folha 3 - Análise léxica Folha 3 Análise léxica 1. Escrever um programa em FLEX que permite contar o número de ocorrências de uma cadeia de caracteres contida num ficheiro de texto. 2. Escrever um programa em FLEX que permite

Leia mais

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

Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros. Prof. Thiago A. S. Análise léxica Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros Prof. Thiago A. S. Pardo 1 Estrutura geral de um compilador programa-fonte analisador

Leia mais

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação Introdução Além de utilizar as classes presentes na biblioteca padrão, programadores podem definir suas próprias

Leia mais

Lição 4 Fundamentos da programação

Lição 4 Fundamentos da programação Lição 4 Fundamentos da programação Introdução à Programação I 1 Objetivos Ao final desta lição, o estudante será capaz de: Identificar as partes básicas de um programa em Java Reconhecer as diferenças

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

Linguagem Técnica I. Prof. Jonatas Bastos

Linguagem Técnica I. Prof. Jonatas Bastos Linguagem Técnica I Prof. Jonatas Bastos Email: jonatasfbastos@gmail.com 1 Objetivo da Disciplina p Entender os conceitos da programação orientada a objetos; p Aplicar conceitos básicos relativos a objetos

Leia mais

Tratamento dos Erros de Sintaxe. Adriano Maranhão

Tratamento dos Erros de Sintaxe. Adriano Maranhão Tratamento dos Erros de Sintaxe Adriano Maranhão Introdução Se um compilador tivesse que processar somente programas corretos, seu projeto e sua implementação seriam grandemente simplificados. Mas os programadores

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

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

COMPILAÇÃO. Ricardo José Cabeça de Souza COMPILAÇÃO Ricardo José Cabeça de Souza www.ricardojcsouza.com.br Programas Código-fonte escrito em linguagem de programação de alto nível, ou seja, com um nível de abstração muito grande, mais próximo

Leia mais

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

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi Algoritmos Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi Conceitos Linhas de Código de um Algoritmo ou Programa escrita do programa linha a linha, ou seja, a sintaxe do programa, podendo-se

Leia mais

Conceitos de Linguagens de Programação

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

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; } Lista 05 Herança 1. Analisando a classe Java abaixo podemos observar que a mesma possui apenas um atributo, um construtor e dois métodos. Perceba que dentro do método main estão sendo invocados métodos

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-7 Reutilização de Classes Prof. Esbel Tomás Valero Orellana Até Aqui Introdução a POO e sua implementação em Java Atributos, métodos e encapsulamento dos mesmos Trabalhando

Leia mais

Tipos Algébricos. Programação Funcional. Capítulo 11. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto

Tipos Algébricos. Programação Funcional. Capítulo 11. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto Programação Funcional Capítulo 11 Tipos Algébricos José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.1 1/33 1 Tipos Algébricos 2/33 Tópicos 1 Tipos Algébricos 3/33

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

Estrutura geral de um compilador programa-fonte

Estrutura geral de um compilador programa-fonte Análise léxica Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros Prof. Thiago A. S. Pardo 1 Estrutura geral de um compilador programa-fonte analisador

Leia mais

PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA

PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA SUMÁRIO Introdução Conceitos básicos Formato básico Tipos primitivos Variáveis Constantes Operadores Operações

Leia mais

Programação para Games II. Professor Ariel da Silva Dias Orientação a Objetos

Programação para Games II. Professor Ariel da Silva Dias Orientação a Objetos Programação para Games II Professor Ariel da Silva Dias Orientação a Objetos Pacotes Pacotes são um modo de organizar classes e interfaces Um programa pode ser formado por centenas de classes individiduais;

Leia mais

Fundamentos de Programação. Linguagem C++ aula II - Variáveis e constantes. Prof.: Bruno Gomes

Fundamentos de Programação. Linguagem C++ aula II - Variáveis e constantes. Prof.: Bruno Gomes Fundamentos de Programação Linguagem C++ aula II - Variáveis e constantes Prof.: Bruno Gomes 1 Variáveis Representa uma porção da memória que pode ser utilizada pelo programa para armazenar informações

Leia mais

Compiladores Aula 3. Celso Olivete Júnior.

Compiladores Aula 3. Celso Olivete Júnior. Aula 3 Celso Olivete Júnior olivete@fct.unesp.br Na aula de hoje... Analisador léxico: tratamento de erros 2 Arquitetura básica de um compilador Análise Análise Léxica Análise Sintática Análise Semântica

Leia mais

Linguagem Java. Introdução. Rosemary Silveira Filgueiras Melo

Linguagem Java. Introdução. Rosemary Silveira Filgueiras Melo Linguagem Java Introdução Rosemary Silveira Filgueiras Melo rosesfmelo@hotmail.com 1 Tópicos abordados Histórico da Linguagem Caracterização da Linguagem Criação de Programa Java inicial Entrada e Saída

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

Working 03 : Conceitos Básicos I

Working 03 : Conceitos Básicos I Working 03 : Conceitos Básicos I Objetivos: Dominar os conceitos básicos da linguagem de programação C; Aprender a utilizar o compilador, identificando os erros de sintaxe do código fonte; Prazo de Envio:

Leia mais

Familiarização com a ferramenta JavaCC

Familiarização com a ferramenta JavaCC Ficha nº 2 Familiarização com a ferramenta JavaCC Estrutura do ficheiro JavaCC O JavaCC utiliza um ficheiro com a extensão.jj, onde são descritos, pelo utilizador, o léxico e a sintaxe da linguagem e gera

Leia mais

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Programação em C Variáveis e Expressões DCA0800 Algoritmos e Lógica de Programação Heitor Medeiros Florencio

Leia mais

Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO

Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO Dados em Algoritmos Quando escrevemos nossos programas, trabalhamos com: Dados que nós fornecemos ao programa Dados

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

Linguagens de Domínio Específico

Linguagens de Domínio Específico Linguagens de Domínio Específico Fabio Mascarenhas 2016.1 http://www.dcc.ufrj.br/~fabiom/dsl Processamento de uma DSL Gramáticas Vamos usar uma notação parecida com a de expressões regulares para definir

Leia mais

Compiladores. Análise Léxica

Compiladores. Análise Léxica Compiladores Análise Léxica Cristiano Lehrer, M.Sc. Introdução (1/3) Análise léxica é a primeira fase do compilador. A função do analisador léxico, também denominado scanner, é: Fazer a leitura do programa

Leia mais

3. Linguagem de Programação C

3. 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.2. Estrutura de Programas e Representação

Leia mais

Compiladores - Análise Léxica

Compiladores - Análise Léxica Compiladores - Análise Léxica Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp Introdução Primeiro passo do front-end: reconhecer tokens Tokens são as palavras do programa O analisador léxico

Leia mais

Linguagens de Domínio Específico

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

Compiladores - Análise Léxica

Compiladores - Análise Léxica Compiladores - Análise Léxica Fabio Mascarenhas 2017.2 http://www.dcc.ufrj.br/~fabiom/comp Introdução Primeiro passo do front-end: reconhecer tokens Tokens são as palavras do programa O analisador léxico

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

3. Tipos de dados e variáveis

3. Tipos de dados e variáveis 3. Tipos de dados e variáveis DIM0320 2015.1 DIM0320 3. Tipos de dados e variáveis 2015.1 1 / 26 Conteúdo 1 Tipos de dados 2 Tipos básicos Portugol 3 Variáveis 4 Exercícios DIM0320 3. Tipos de dados e

Leia mais

Compiladores. Parser LL 10/13/2008

Compiladores. Parser LL 10/13/2008 Compiladores Fabiano Baldo Usa uma pilha explícita ao invés de chamadas recursivas para realizar a análise sintática. LL(k) parsing significa que ktokensà frente são utilizados. O primeiro L significa

Leia mais

Compiladores. Lex e Yacc / Flex e Bison. Ferramentas Flex/Bison

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

Compiladores - Gramáticas

Compiladores - Gramáticas Compiladores - Gramáticas Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Sintática A análise sintática agrupa os tokens em uma árvore sintática de acordo com a estrutura do programa

Leia mais

Algoritmos e Estrutura de Dados I Conceitos de Algoritmos. Prof. Elyssandro Piffer

Algoritmos e Estrutura de Dados I Conceitos de Algoritmos. Prof. Elyssandro Piffer Algoritmos e Estrutura de Dados I Conceitos de Algoritmos Prof. Elyssandro Piffer CONCEITO DE ALGORITMO O computador pode auxiliar em muitas tarefas, contudo ele não possui independência, não é inteligente,

Leia mais

Noçõ linguagem Java. Profs. Marcel Hugo e Jomi Fred Hübner. Departamento de Sistemas e Computação Universidade Regional de Blumenau - FURB

Noçõ linguagem Java. Profs. Marcel Hugo e Jomi Fred Hübner. Departamento de Sistemas e Computação Universidade Regional de Blumenau - FURB Noçõ ções básicas b da linguagem Java Profs. Marcel Hugo e Jomi Fred Hübner Departamento de Sistemas e Computação Universidade Regional de Blumenau - FURB Introduçã ção Origem Funcionamento Vantagens Linguagem

Leia mais

Algoritmos e Técnicas de Programação

Algoritmos e Técnicas de Programação Algoritmos e Técnicas de Programação Estrutura, Visualg e Variáveis filipe.raulino@ifrn.edu.br Programação Estruturada A programação estruturada (Top-Down) estabelece uma disciplina de desenvolvimento

Leia mais

TCC 00308: Programação de Computadores I Organização de programas em Python

TCC 00308: Programação de Computadores I Organização de programas em Python TCC 00308: Programação de Computadores I 2017.1 Organização de programas em Python Vamos programar em Python! Como um programa é organizado? Quais são os tipos de dados disponíveis? Como variáveis podem

Leia mais

Aula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz

Aula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz Aula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz Sumário de Aula } Conceito de Memória } Variáveis e Tipos de Dados } Constantes 2 Conceito de Memória } A memória de um computador é

Leia mais

Puca Huachi Vaz Penna

Puca Huachi Vaz Penna Aula 3 C++: variáveis e expressões aritméticas 2017/1 BCC201 Introdução à Computação Turmas 61, 62, 63, 64, 65 e 66, 32 e 33 Puca Huachi Vaz Penna Departamento de Computação Universidade Federal de Ouro

Leia mais