Nomes, Vinculações, Verificação de Tipos e Escopos. George Darmiton da Cunha Cavalcanti
|
|
- Benedicto Arthur Figueira Lameira
- 7 Há anos
- Visualizações:
Transcrição
1 Nomes, Vinculações, Verificação de Tipos e Escopos George Darmiton da Cunha Cavalcanti (gdcc@cin.ufpe.br)
2 Tópicos Introdução Nomes Variáveis O conceito de vinculação (binding) Verificação de tipos Tipificação forte Compatibilidade de tipos Escopo e tempo de vida Ambientes de referenciamento Inicialização de variáveis
3 Introdução Linguagens Imperativas são abstrações da arquitetura do computador de von Neumann Memória Processador Variáveis são caracterizadas por atributos Tipo Projetos de tipo escopo, tempo de vida, checagem de tipo, inicialização e compatibilidade de tipos
4 Nomes Questões de projeto para nomes: Tamanho máximo? Caracteres de conexão são permitidos? Os nomes fazem distinção entre maiúsculas e minúsculas? As palavras especiais são palavras reservadas ou palavras-chave?
5 Nomes Tamanho Se muito pequeno, não são conotativos Exemplos de linguagens: FORTRAN I: máximo de 6 COBOL: máximo de 30 FORTRAN 90 e ANSI C: máximo de 31 Ada e Java: sem limite C++: sem limite, mas implementadores geralmente impõem limites
6 Nomes Caracteres de conexão Pascal, Modula-2 e FORTRAN 77 não permitem Outras linguagens permitem
7 Nomes Distinção entre maiúsculas e minúsculas Desvantagem: Legibilidade (nomes semelhantes são diferentes) Pior em C++ e em Java, pois nomes possuem maiúsculas e minúsculas exemplo: IndexOutOfBoundsException Nomes em C, em C++ e em Java fazem distinção entre maiúsculo e minúsculo Os nomes em outras linguagens não fazem
8 Nomes Palavras especiais Usadas para tornar os programas mais legíveis ao dar nome a ações que devem ser executadas Usadas para delimitar ou separar as entidades sintáticas Uma palavra-chave é uma palavra que é especial em certos contextos, por exemplo em Fortran Real VarName (Real é um tipo de dado seguido por um nome, assim Real é uma palavra-chave) Real = 3.4 (Real é uma variável) Uma palavra reservada é uma palavra especial que não pode ser usada como nome
9 Variáveis Uma variável é uma abstração de um célula de memória Variáveis podem ser caracterizadas por uma sêxtupla de atributos: Nome Endereço Valor Tipo Tempo de vida Escopo
10 Atributos das variáveis Nome nem todas as variáveis possuem nome Endereço o endereço de memória com o qual ela é associada Uma variável pode ter diferentes endereços em diferentes tempos no programa Uma variável pode ter diferentes endereços em diferentes lugares no programa Se dois nomes são usados para acessar a mesma posição de memória, eles são chamados de apelidos (aliases) Apelidos (aliases) são criados através de ponteiros, de variáveis de referência e de uniões em C e em C++ Apelidos são um problema para a legibilidade
11 Atributos das variáveis Tipo determina a faixa de valores das variáveis e o conjunto de operações definidas para os valores do tipo no caso de ponto flutuante, o tipo também determina a precisão Valor o conteúdo da célula de memória associada à variável Abstração da célula de memória A célula física ou o conjunto de células associadas a variável
12 O Conceito de Vinculação O valor-l de uma variável é seu endereço O valor-r de uma variável é seu valor Uma vinculação (binding) é uma associação, como, por exemplo, um atributo e uma entidade ou entre uma operação e um símbolo O momento em que uma vinculação se desenvolve é chamado de tempo de vinculação
13 Possíveis tempos de vinculações Tempo de projeto da linguagem Vinculação de símbolos de operação a operação, ex. * Tempo de implementação da linguagem Vinculação de um tipo (float) a um conjunto de valores possíveis Tempo de compilação Vinculação de uma variável a um tipo de dado em particular Tempo de carregamento Vinculação de uma variável à célula de memória Tempo de execução Vinculação de uma variável local não-estática a uma célula de memória
14 Vinculação Estática e Dinâmica Uma vinculação é estática se ocorrer antes do tempo de execução e permanecer inalterada ao longo da execução de um programa. Uma vinculação é dinâmica se ocorrer durante a execução ou puder ser modificada no decorrer da execução de um programa
15 Vinculação de tipos Como o tipo é especificado? Quando a vinculação acontece? Tipos podem ser especificados estaticamente por meio de alguma forma de declaração explícita ou implícita
16 Declaração de variáveis: explícita e implícita Uma declaração explícita é uma instrução em um programa que lista nomes de variáveis e especifica que elas são de um tipo particular Uma declaração implícita é um meio de associar variáveis a tipos por convenções em vez de instruções FORTRAN, PL/I, BASIC e Perl dispõem de declarações implícitas Vantagem: capacidade de escrita Desvantagem: legibilidade
17 Vinculação dinâmica de tipos Vinculação dinâmica de tipos (JavaScript e PHP) A variável é vinculada ao tipo quando lhe é atribuído algum valor, por exemplo JavaScript list = [2, 4.33, 6, 8]; list = 17.3; Vantagem: Flexibilidade Desvantagens: Alto custo Difícil detecção de erros
18 Inferência de tipos Inferência de tipos (ML, Miranda e Haskell) Ao invés de uma instrução de atribuição, tipos são determinados pelo contexto Em ML, fun circumf(r) = * r * r; fun vezes10(x) = 10*x; ML rejeita a função fun quadrado(x) = x * x; Opções fun quadrado(x:int) = x * x; fun quadrado(x) = (x:int) * x; fun quadrado(x) = x * (x:int);
19 Vinculação de Armazenamento e Tempo de Vida Alocação Marcar\tomar uma célula de memória de um conjunto de memória disponível Desalocação Devolver a célula ao conjunto de memória disponível O tempo de vida de uma variável se inicia quando ela é vinculada a uma célula específica e encerra-se quando ela é desvinculada
20 Categorias de variáveis baseado no tempo de vida Variáveis Estáticas Variáveis Dinâmicas na Pilha Variáveis Dinâmicas no Monte Explícitas Variáveis Dinâmicas no Monte Implícitas
21 Variáveis Estáticas Vinculadas a células de memória antes que a execução do programa se inicie. Exemplo: todas as variáveis do FORTRAN 77 e as variáveis static do C Vantagens: eficiência (endereçamento direto) suporta subprogramas sensíveis à história Desvantagem: pouca flexibilidade (não permitem recursão)
22 Variáveis Dinâmicas na Pilha São aquelas cujas vinculações de armazenamento criam-se a partir da elaboração de suas instruções de declaração, mas cujos tipos são estaticamente vinculados (Elaboração: processo de alocação e de vinculação de armazenamento) Ocorre em tempo de execução Exemplo Variáveis locais em subprogramas C e métodos em Java Vantagem: permite recursão; compartilhamento de espaço de memória Desvantagens: Sobretaxa de alocação e de desalocação em tempo de execução Subprogramas não podem ser sensíveis à história
23 Variáveis Dinâmicas no Monte Explícitas As variáveis dinâmicas no monte explícitas são células de memória sem nome (abstratas) alocadas e desalocadas por instruções explícitas em tempo de execução, especificadas pelo programador. Essas variáveis alocadas no monte e desalocadas para o monte só podem ser referenciadas por meio de variáveis de ponteiro ou de referência. O monte é um conjunto de células de armazenamento altamente desorganizado, devido à imprevisibilidade de seu uso.
24 Variáveis Dinâmicas no Monte Explícitas Exemplo: Objetos dinâmicos em C++ (via new e delete) Todos os objetos em Java Vantagem: Convenientes para estruturas dinâmicas: listas encadeadas e árvores Desvantagens: Dificuldade de usar ponteiros e referência corretamente Custo das referências para as alocações e para as desalocações
25 Variáveis Dinâmicas no Monte Implícitas Alocação e desalocação causadas por instruções de atribuição Todas as variáveis em APL Todas as strings e vetores em Perl e em JavaScript Vantagem Flexibilidade Desvantagens Ineficiente, pois todos os atributos são dinâmicos Perda de grande parte da capacidade de detectar erros
26 Verificação de Tipos Verificação de tipos é a atividade de assegurar que os operandos de um operador sejam de tipos compatíveis. Um tipo compatível é aquele válido para o operador ou com permissão, nas regras da linguagem, para ser convertido pelo compilador para um tipo válido Essa conversão automática é chamada de coerção Um erro de tipo é a aplicação de um operador a um operando de tipo impróprio
27 Tipificação Forte Uma linguagem de programação é fortemente tipificada se erros de tipos são sempre detectados Vantagens Permite a detecção de todos os usos equivocados de variáveis que resultem em erros de tipo Exemplos de linguagens Pascal não é: variant records (registros variante) C e C++ não são: permitem funções cujos parâmetros não são verificados quanto ao tipo Ada é quase fortemente tipificada (Java é similar)
28 Tipificação Forte Regras de Coerção Podem enfraquecer a tipificação forte (C++ versus Ada) Ada possui poucas regras de coerção Embora Java possua metade das regras de coerção do C++, logo sua detecção de erros é melhor do que a do C++, sua tipificação forte é bastante inferior a da Ada
29 Compatibilidade de Tipos Existem dois métodos diferentes de compatibilidade de tipos Compatibilidade de Nome Compatibilidade de Estrutura
30 Compatibilidade de Tipo de Nome Significa que duas variáveis possuem tipos compatíveis se elas estiverem na mesma declaração ou em declaração que usam o mesmo nome de tipo A compatibilidade de tipo de nome é fácil de implementar mais muito restritiva Uma variável subfaixa dos números dos inteiros não seria compatível com uma variável do tipo inteiro type indextype = ; {um tipo subfaixa} var cont: integer; indice: indextype As variáveis cont e indice não são compatíveis. cont não seria atribuída a indice e vice-versa.
31 Compatibilidade de Tipo de Estrutura Significa que duas variáveis têm tipos compatíveis se os seus tipos tiverem estruturas idênticas Mais flexível, porém mais difícil de implementar
32 Compatibilidade de Tipos Considere os problemas de tipo entre duas estruturas: Dois registros são compatíveis no tipo se eles possuem a mesma estrutura mas usam diferentes nomes para os campos? Dois vetores são compatíveis se eles são os mesmos exceto pela faixa de indexação? Exemplo: [1..10] e [0..9] Usando compatibilidade de tipo de estrutura não é possível diferenciar entre tipos que tenham a mesma estrutura Exemplo: Diferentes unidade de velocidade, ambas ponto flutuante Celsius e Fahrenheit, ambos ponto flutuante
33 Escopo O escopo de uma variável é a faixa de instruções na qual a variável é visível Uma variável é visível em uma instrução se puder ser referenciada nessa instrução As variáveis não-locais de uma unidade ou de um bloco de programa são as visíveis dentro deste, mas não são declaradas lá
34 Escopo Estático Método para vincular nomes a variáveis não-locais Para conectar uma referência a uma variável, o compilador precisa encontrar a declaração Processo de busca: Caso a declaração não for encontrada localmente, passa-se a buscar em escopos mais amplos O pai-estático (static parent) é o subprograma no qual encontra-se a declaração Os ancestrais estáticos são todos os subprogramas até se chegar a declaração
35 Escopo Estático procedure big; var x: integer; procedure sub1; begin { sub1 }...x... end; { sub1 } A variável x em sub1 é declarada no procedimento big procedure sub2; var x: integer; begin { sub2 }... end; begin { big }... end; { big }
36 Escopo Estático Variáveis podem ser escondidas de uma unidade quando a mesma possui uma variável com o mesmo nome program main; var x: integer; procedure sub1; var x: integer; begin { sub1 }...x... end; { sub1 } begin { main }... end; { main } C++ e Ada permitem acesso a essas variáveis escondidas Em Ada: unit.name Em C++: class_name::name
37 Blocos Um método para criar novos escopos estáticos no meio do código executável introduzido no ALGOL 60 Permite que uma seção de código tenha suas próprias variáveis locais cujo escopo é minimizado Essas variáveis são tipicamente dinâmicas na pilha Alocada quando a seção é iniciada e desalocada quando ela é finalizada Exemplo em Ada... declare TEMP: integer; begin TEMP := First First := Second Second := TEMP end...
38 Avaliação do Escopo Estático Assuma que MAIN chama A e B A chama C e D B chama A e E
39 Avaliação do Escopo Estático Um grafo com chamadas potenciais a procedimento, no sistema. Um grafo com as chamadas desejáveis do programa exemplo.
40 Avaliação do Escopo Estático Suponha que a especificação é alterada e E deve acessar algum variável em D Soluções: Colocar E em D (porém, E não poderá acessar o escopo de B) Mover as variáveis de D, que são necessárias em E, para MAIN (isso permite o acesso por todos os os procedimentos De maneira geral: escopo estático encoraja o uso de variáveis globais
41 Escopo Dinâmico Baseia-se na seqüência de chamada de subprogramas, não em suas relações espaciais (temporal versus espacial) Desta forma o escopo pode ser determinado apenas em tempo de execução Quando a procura por declarações locais falha, as declarações do pai-dinâmico (procedimento de chamada) são pesquisadas, e assim sucessivamente Caso nenhuma declaração for encontrada em qualquer ancestral dinâmico, haverá um erro em tempo de execução
42 Escopo dinâmico: exemplo procedure big; var x: integer; procedure sub1; begin { sub1 }...x... end; { sub1 } procedure sub2; var x: integer; begin { sub2 }... end; BIG chama SUB2 SUB2 chama SUB1 SUB1 usa x Nesse caso, SUB1 usa o x declarado em SUB2 begin { big }... end; { big }
43 Avaliação do Escopo Dinâmico Vantagem Conveniência Desvantagem Pouca legibilidade Linguagens que usam escopo dinâmico APL, SNOBOL4 e nas primeiras versões do LISP Perl também permite que as variáveis sejam declaradas com escopo dinâmico
44 Escopo e Tempo de Vida Escopo e Tempo de Vida, algumas vezes, parecem estar relacionados, mas são conceitos diferentes void printheader(){... } /* fim de printheader */ void compute() { int sum;... printheader(); } /* fim de compute */ O escopo da variável sum é completamente contido pela função compute Porém, o tempo de vida de sum estende-se ao longo do tempo durante o qual printheader é executado
45 Ambientes de Referenciamento O ambiente de referenciamento de uma instrução é o conjunto de todos os nome visíveis na instrução Em uma linguagem com escopo O ambiente de referenciamento é formado pelas variáveis locais mais todas as variáveis de seus escopos ancestrais visíveis Um subprograma é ativo se sua execução tiver começado, mas ainda não tiver terminado Em um linguagem com escopo dinâmico O ambiente de referenciamento é formado pelas variáveis locais, mais as variáveis de todos os subprogramas ativos
46 Constantes Nomeadas Uma constante nomeada é uma variável vinculada a um valor somente no momento em que ela é vinculada a um armazenamento Seu valor não pode ser mudado por uma instrução de atribuição Exemplo uso da constante pi ao invés do valor 3,14159 Vantagem Legibilidade Confiabilidade
47 Inicialização de Variáveis Inicializações são geralmente feitas através de instruções de declaração Exemplo: em Java int sum = 0; Nem Pascal, nem Modula-2 oferecem uma maneira de inicializar variáveis, exceto durante a execução através de instruções de atribuição
48 Resumo Nomes Tamanho; caracteres de conexão; distinção entre maiúsculas e minúsculas; palavras especiais Variáveis nome, endereço, valor, tipo, tempo de vida, escopo Vinculação é a associação de atributos a entidades do programa Variáveis escalares são categorizadas como static stack dynamic explicit heap dynamic implicit heap dynamic Tipificação forte é conceito de exigir que todos os erros de tipo sejam detectado
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 maisNomes, vinculações e escopos
Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Leia maisParadigmas de Linguagens de Programação. Nomes, Vinculações, Verificação de Tipos e Escopos
Nomes, Vinculações, Verificação de Tipos e Escopos Cristiano Lehrer Nomes (1/6) Um nome é uma string de caracteres usada para identificar alguma entidade de um programa. O termo identificador é utilizado
Leia maisCapítulo 5. Nomes, Vinculações e Escopos
Capítulo 5 Nomes, Vinculações e Escopos Tópicos do Capítulo 5 Introdução Nomes Variáveis O conceito de vinculação Escopo Escopo e tempo de vida Ambientes de referenciamento Constantes nomeadas Introdução
Leia maisParadigmas de Programação
Paradigmas de Programação Aula 6 Nomes, Vinculações, Verificação de Tipos e Escopos Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Introdução As linguagens de
Leia maisConceitos 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 mais02. [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 maisNomes, Amarração, Verificação de Tipos, e Escopo
5 Nomes, Amarração, Verificação de Tipos, e Escopo Concepts of Programming Languages, 5/e Robert W. Sebesta Agenda Objetivo desta aula: Introduzir os principais aspectos semânticos de variáveis Palavras-chave
Leia maisLinguagens de Programação Nomes, Amarrações e Escopo
Linguagens de Programação Nomes, Amarrações e Escopo Andrei Rimsa Álvares Sumário Nomes Amarrações Escopo NOMES Linguagens de Programação Nomes Conceito mais amplo que variáveis Podem representar Variáveis
Leia maisNomes, vinculações e escopos
Nomes, vinculações e escopos 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 maisEstudos de Linguagens de Programação - Revisão
Estudos de Linguagens de Programação - Revisão (marinho.mlm@gmail.com) O que é uma Linguagem de Programação? Linguagem usada por uma pessoa para expressar um processo através do qual um computador pode
Leia maisAula 6.
Aula 6 Celso Olivete Júnior olivete@fct.unesp.br Nomes, vinculações e escopos Cap. 5 -Sebesta 2 Introdução LP s imperativas são abstrações da arquitetura de Von Neumann Memória: armazena instruções e dados
Leia maisCompiladores. 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 maisVerificação de Tipo. Unions. Verificação de tipo estática. Verificação de tipo dinâmica
Verificação de Tipo Atividade que certifica que os operandos de um operador são de tipos compatíveis. São considerados operadores e operandos: operadores usuais (aritméticos, relacionais, etc) subprogramas
Leia maisUniversidade Federal Rural de Pernambuco Departamento de Estatística e Informática Subprogramas
Universidade Federal Rural de Pernambuco Departamento de Estatística e Informática Subprogramas Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com Paradigmas de Linguagem de Programação Características
Leia maisParadigmas de Linguagens de Programação. Subprogramas
Cristiano Lehrer Características Gerais dos Cada subprograma tem um único ponto de entrada Toda unidade de programa chamadora é suspensa durante a execução do programa chamado, o que implica na existência
Leia maisTipos de Dados. George Darmiton da Cunha Cavalcanti
Tipos de Dados George Darmiton da Cunha Cavalcanti (gdcc@cin.ufpe.br) Tópicos Introdução Tipos de Dados Primitivos Tipos Cadeia de Caracteres Tipos Definidos pelo Usuário Tipos Matriz Matrizes Associativas
Leia maisCapítulo 9. Subprogramas
Capítulo 9 Subprogramas Introdução Dois recursos fundamentais de abstração Abstração de processos Desde o início da história das linguagens de programação Abstração de dados Desde o início dos anos 1980
Leia maisParadigmas de Linguagens de Programação. Tipos de Dados
Tipos de Dados Cristiano Lehrer Introdução (1/2) 1956: FORTRAN I 1983: ADA INTEGER, REAL, arrays. Usuário pode criar um único tipo para cada categoria de variáveis no espaço de problemas e deixar o sistema
Leia maisVariáveis. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe
Variáveis alberto@ufs.br de Programação Departamento de Computação Universidade Federal de Sergipe Variáveis Uma vez que o programador tenha entendido o uso de variáveis, ele entendeu a essência da programação.
Leia maisO que é uma variável?
Escopo, Ligação e Ambiente de Execução mleal@inf.puc-rio.br 1 O que é uma variável? Uma variável pode ser definida como uma tupla r nome é um string usado para
Leia maisImplementando subprogramas
Implementando subprogramas 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 maisImplementação de subprogramas
Implementação de subprogramas 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 maisLinguagens de Programação. Tipos. Carlos Bazilio
Linguagens de Programação Tipos Carlos Bazilio bazilio@ic.uff.br http://www.ic.uff.br/~bazilio/cursos/lp Definições Tipos de dados primitivos: tipos de dados que não são definidos em termos de outros tipos
Leia maisLinguagens 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 maisConceitos 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 07 (rogerio@prudente.unesp.br) Aula 7 Implementação
Leia maisIntrodução. Paradigmas de Linguagens. Introdução. Tipos de Dados Primitivos. Prof. Ms. Luiz Alberto Contato:
Paradigmas de Linguagens Prof. Ms. Luiz Alberto Contato: lasf.bel@gmail.com Baseada no material do prof. Celso Olivete Júnior Introdução Um tipo de dado define uma coleção de dados e um conjunto de operações
Leia maisParadigmas 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 mais02. [Sebesta, 2000] Quais são as vantagens e as desvantagens dos tipos de dados decimais?
01. [Sebesta, 2000] O que é um descritor? 02. [Sebesta, 2000] Quais são as vantagens e as desvantagens dos tipos de dados decimais? 03. [Sebesta, 2000] Quais são as questões de projeto relativas aos tipos
Leia maisConceitos 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 06 (rogerio@fct.unesp.br) Aula 6 Subprogramas
Leia maisCapí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 maisFACULDADE 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 maisExpressõ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 maisAspectos preliminares
Aspectos preliminares 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 maisErros de Tipo em Pascal Simplifificado
Checagem de Tipos Erros de Tipos em Pascal Simplificado não capturados pela gramática Tarefas de um Type Checker e Conversões de Tipos Sistema de Tipos Checagem Estática X Dinâmica Linguagens Fortemente
Leia maisLinguagens de Programação Aula 12
Linguagens de Programação Aula 12 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Implementando subprogramas 2 Na aula de hoje Suporte para a programação orientada a objetos 3 Roteiro Introdução
Leia maisLinguagens de Programação Aula 11
Linguagens de Programação Aula 11 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Uma definição de subprograma descreve as ações representadas pelo subprograma Subprogramas podem ser funções
Leia maisCapítulo 6. Tipos de Dados
Capítulo 6 Tipos de Dados 1. Introdução Tipo de Dados: define uma coleção de valores de dados e um conjunto de operações pré-definidas sobre eles Um descritor é a coleção de atributos de uma variável Um
Leia maisCompiladores. Gerência de Memória
Compiladores Gerência de Memória Cristiano Lehrer, M.Sc. Atividades do Compilador Arquivo de origem Arquivo de destino Análise Otimização Geração de Código Intermediário Geração de Código Final Síntese
Leia maisTipo. Tipo de uma variável: especificação de
Checagem de Tipos O que é tipo? Erros de Tipos em FRANKIE não capturados pela gramática Tarefas de um Type Checker e Conversões de Tipos Sistema de Tipos Checagem Estática X Dinâmica Linguagens Fortemente
Leia maisLinguagens de Programação. Introdução. Carlos Bazilio
Linguagens de Programação Introdução Carlos Bazilio carlosbazilio@id.uff.br http://www.ic.uff.br/~bazilio/cursos/lp ??? Pascal aux := 0 for i:=1 to 10 do aux := aux + i 10: i = 1 20: if i > 10 goto 60
Leia maisSistemas 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 maisParadigmas de Linguagens de Programação. Tipos de Dados Abstratos
Tipos de Dados Abstratos Cristiano Lehrer Conceito de Abstração O conceito de abstração é fundamental em programação. Quase todas as linguagens suportam abstração de processos, através de subprogramas:
Leia maisCapítulo 1. Aspectos Preliminares
Capítulo 1 Aspectos Preliminares Tópicos do Capítulo 1 Razões para estudar conceitos de linguagens de programação Domínios de programação Critérios de avaliação de linguagens Influências no projeto de
Leia maisLinguagens 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 maisLinguagens de Programação. Nomes, Escopos e Vinculações (Bindings) Carlos Bazilio
Linguagens de Programação Nomes, Escopos e Vinculações (Bindings) Carlos Bazilio carlosbazilio@id.uff.br http://www.ic.uff.br/~bazilio/cursos/lp Nomes Forma mais simples de abstração Um nome é um caracter
Leia maisExpressõ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 maisLinguagens de Programação Conceitos e Técnicas. Amarrações Prof. Tiago Alves de Oliveira
Linguagens de Programação Conceitos e Técnicas Amarrações Prof. Tiago Alves de Oliveira Conceituação Amarração (ou binding) é uma associação entre entidades de programação, tais como entre uma variável
Leia maisLinguagens de Programação Aula 8
Linguagens de Programação Aula 8 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Os tipos de dados de uma linguagem são uma grande parte do que determina o estilo e a utilidade de uma linguagem
Leia maisSintaxe 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 maisCAP. VI ANÁLISE SEMÂNTICA
CAP. VI ANÁLISE SEMÂNTICA VI.1 Introdução Semântica SIGNIFICADO, SENTIDO LÓGICO, COERÊNCIA,... Diferença entre SINTAXE e SEMÂNTICA Sintaxe : descreve as estruturas de uma linguagem; Semântica : descreve
Leia maisConceitos 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 04 (rogerio@fct.unesp.br) Aula 4 2 Evolução dos
Leia maisCompiladores Ambiente de Execução
Compiladores Ambiente de Execução Fabio Mascarenhas 2015.1 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica
Leia mais- Mapa de memória de um processo - Ponteiros
1 MCTA028 Programação Estruturada - Mapa de memória de um processo - Ponteiros Material preparado a partir de slides dos profs. Jesús Mena-Chalco e Fabrício Olivetti Luiz Rozante 3Q-2018 2 Alocação de
Leia maisNotas de Aula Guilherme Sipahi Arquitetura de Computadores
Notas de Aula Guilherme Sipahi Arquitetura de Computadores Endereçamento O Campo de endereço em uma instrução é pequeno. Para referenciar uma faixa de endereços maior na memória principal, ou em alguns
Leia maisLinguagens de Programação Conceitos e Técnicas. Variáveis e Constantes
Linguagens de Programação Conceitos e Técnicas Variáveis e Constantes Variáveis Uma vez que o programador tenha entendido o uso de variáveis, ele entendeu a essência da programação. [Dijkstra] Abstração
Leia maisLinguagens Computacionais (Conceitos Básicos)
Linguagens Computacionais (Conceitos Básicos) George Darmiton da Cunha Cavalcanti (gdcc@cin.ufpe.br) Tópicos Razões para estudar os conceitos de linguagens de programação Domínios de programação Critérios
Leia maisEstrutura de Dados. Aula 07 Alocação Dinâmica
Estrutura de Dados Aula 07 Alocação Dinâmica 2 ALOCAÇÃO DINÂMICA Existem três modos de reservar espaço de memória para o armazenamento de informações: 1ª - através do uso de variáveis globais (e estáticas).
Leia maisTipos. O Conceito de Tipo
Tipos mleal@inf.puc-rio.br 1 O Conceito de Tipo LPs geralmente permitem a organização de dados em diferentes categorias através do conceito de tipo. Um tipo é definido a partir de um conjunto de valores
Leia maisComo 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 maisProgramação Orientada a Objetos. Manipulação de Exceções
Programação Orientada a Objetos Manipulação de Exceções Cristiano Lehrer, M.Sc. Introdução à Manipulação de Exceções (1/2) Em uma linguagem sem manipulação de exceção: Quando ocorre uma exceção, o controle
Leia mais15/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 maisProf. Franklin Ramalho
PLP - Armazenamento (Parte I) Prof. Franklin Ramalho Universidade Federal de Campina Grande - UFCG Agenda - Variáveis Primitivas - Variáveis Compostas - Modelo de Armazenamento - Ciclo de vida de variáveis
Leia maisLinguagens de Programação 2 Amarrações
Linguagens de Programação 2 Amarrações Vítor E. Silva Souza (vitor.souza@ufes.br) http://www.inf.ufes.br/~vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do Espírito Santo
Leia maisAnálise Semântica. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 40
Análise Semântica Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Outubro, 2016 1 / 40 Sumário 1 Conceitos 2 A linguagem Cool 3 Análise semântica Símbolos Tipos
Leia maisClasses 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 maisAspectos preliminares
Aspectos preliminares 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 maisEstruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.
1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras
Leia maisAspectos preliminares
Aspectos preliminares 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 maisFundamentos de Programação
Fundamentos de Programação ET42G Aula 21 Prof. Daniel Cavalcanti Jeronymo Conversão de tipos. Alocação dinâmica de memória. Recursão. Criação de bibliotecas, arquivos de cabeçalhos e variáveis globais.
Leia maisRevisã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 maisLinguagens de Programação Subprogramas
Linguagens de Programação Subprogramas Andrei Rimsa Álvares Sumário Abstrações Subprogramas Parâmetros Passagem de parâmetros Direção da passagem Mecanismos de passagem Momento da passagem ABSTRAÇÕES Linguagens
Leia maisParadigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto
Suporte para Programação Orientada a Objeto Cristiano Lehrer Categoria das Linguagens que Suportam POO Suporte a POO acrescentado a uma linguagem já existente: C++ (também suporta programação procedural
Leia maisPersistência. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe
Persistência alberto@ufs.br de Programação Departamento de Computação Universidade Federal de Sergipe Retrospectiva Quanto ao Tempo de Vida Variáveis Estáticas Variáveis Stack-Dinâmicas Variáveis Heap-Dinâmicas
Leia maisUniversidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores
Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores 2013-2 Compilador para a Linguagem Cafezinho Especificação dos trabalhos: T2 (Geração da Representação Intermediária e Análise
Leia maisEstruturas de Controle: Nível de Unidades de Programação
Paradigmas de Linguagens I 1 1.5... Estruturas de Controle: Nível de Unidades de Programação As estruturas de controle no nível de unidades de programação são mecanismos de linguagens utilizados para especificar
Leia maisIntrodução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação
Aula 03 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação Linguagens de Programação A primeira linguagem de programação foi criada por Ada Lovelace. Amiga
Leia maisLinguagens de Programação
Linguagens de Programação Prof a Jerusa Marchi Departamento de Informática e Estatística Universidade Federal de Santa Catarina e-mail: jerusa@inf.ufsc.br Linguagens de Programação p. 1/5 Linguagens de
Leia maisFundamentos de Programação
Fundamentos de Programação CP41F Aula 12 Prof. Daniel Cavalcanti Jeronymo Layout de memória. Ponteiros: conceito, operadores de referência e dereferência, operações, aritmética e indireção múltipla Universidade
Leia maisComputação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa
Computação Eletrônica Tipos de dados, constantes, variáveis, operadores e expressões Prof: Luciano Barbosa Site da disciplina: www.cin.ufpe.br/~if165/ Recapitulando num cubo = n * n * n cubo Algoritmo
Leia maisao 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 maisValores e Tipos de Dados Prof. Hudson Costa
Valores e Tipos de Dados Prof. Hudson Costa Valor 3 2.5 'a' Paulo 0x1F 026 Tipo {true, 25, 'b', azul não corresponde a um tipo { true, false corresponde a um tipo Linguagens de Programação Valores e Tipos
Leia maisEspaço de Tipos. Amarração Tipo. Amarração Valor. Amarração Localização. Amarração Nome. Objeto de Dado
1.5.3.1. Objetos de Dados Como já comentado, cada variável possui uma área de armazenamento amarrada a si durante a execução do programa, e o seu o tempo de vida é o período de tempo no qual a amarração
Leia maisLinguagem 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 maisLinguagens 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 maisConceitos de Linguagens de Programação - Características. Paavo Soeiro
Conceitos de Linguagens de Programação - Características Paavo Soeiro Motivação Para que possa escolher uma linguagem apropriada ao problema. Melhorar o entendimento da linguagem utilizada. Facilitar o
Leia maisLinguagens de Programação
Linguagens de Programação Expressões e Variáveis Bruno Lopes Bruno Lopes Linguagens de Programação 1 / 34 Propriedades desejáveis Legibilidade: A leitura do programa é facilmente compreendida? Redigibilidade:
Leia maisUniversidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação
Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação Análise Semântica Disciplina: Compiladores Equipe: Luiz Carlos dos Anjos Filho José Ferreira Júnior Compiladores Um compilador
Leia maisLinguagens de Programação Conceitos e Técnicas. Expressões e Comandos Prof. Tiago Alves de Oliveira
Linguagens de Programação Conceitos e Técnicas Expressões e Comandos Prof. Tiago Alves de Oliveira Expressões Uma expressão é uma frase do programa que necessita ser avaliada e produz como resultado um
Leia maisSuporte a programação orientada a objetos
Suporte a programação orientada a objetos 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
Leia maisLinguagens de Programação Conceitos e Técnicas. Valores e Tipos de Dados Prof. Tiago Alves de Oliveira
Linguagens de Programação Conceitos e Técnicas Valores e Tipos de Dados Prof. Tiago Alves de Oliveira Conceituação Valor 3 2.5 'a' Paulo 0x1F 026 Tipo {true, 25, 'b', azul } não corresponde a um tipo {
Leia maisC com introdução a OO
... Centro Integrado de Tecnologia da Informação C com introdução a OO ... Centro Integrado de Tecnologia da Informação Aula 9 Ronald Dener - Instrutor Matheus Soares - Monitor 17 / outubro 17 / outubro
Leia maisLinguagem C. André Tavares da Silva.
Linguagem C André Tavares da Silva dcc2ats@joinville.udesc.br Variáveis Posição nomeada de memória que é usada para guardar um valor que pode ser modificado pelo programa. Todas as variáveis devem ser
Leia maisLinguagens de Programação
Linguagens de Programação Paradigma Imperativo Matheus Hafner Tiago Xavier CET 087 - Conceitos de Linguagens de Programação (CLP) 10 de novembro de 2011 Sumário 1 Introdução 2 Paradigma imperativo Modelo
Leia maisEstruturas de Dados I
Estruturas de Dados I Rodrigo Porfírio da Silva Sacchi rodrigosacchi@ufgd.edu.br 3410-2075 Aula 6: Listas Encadeadas e Alocação Dinâmica Listas Encadeadas e Alocação Dinâmica Alocação Seqüencial versus
Leia maisCONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO
CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO ROTEIRO 1. INTRODUÇÃO 2. LINGUAGENS IMPERATIVAS 1. CONCEITO 2. PARADIGMA IMPERATIVO 3. ORIGENS 4. MODELO COMPUTACIONAL 1. ARQUITETURA DE VON NEUMANN 2. CARACTERISTICAS
Leia maisLinguagens de Programação Conceitos e Técnicas. Expressões e Comandos
Linguagens de Programação Conceitos e Técnicas Expressões e Comandos Expressões Uma expressão é uma frase do programa que necessita ser avaliada e produz como resultado um valor Elementos Operadores Operandos
Leia maisMétodos Computacionais
Métodos Computacionais Objetivos da Disciplina e Introdução a Linguagem C Construções Básicas Objetivos da Disciplina Objetivo Geral Discutir técnicas de programação e estruturação de dados para o desenvolvimento
Leia mais