Estudos de Linguagens de Programação - Revisão
|
|
- Paula Borja Rocha
- 7 Há anos
- Visualizações:
Transcrição
1 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 resolver um problema. 1
2 Por que estudar Conceitos de Linguagens de Programação? Aumento da capacidade de expressar idéias. Melhor uso de uma LP. Melhor escolha de uma LP. Maior facilidade em aprender novas LPs. Maior habilidade em projetar novas LPs. Possibilitar o avanço global da computação. Entender a importância da implementação. Domínios de Programação Aplicações Científicas Assembly, FORTRAN, Algol 60 Aplicações Comerciais Inteligência Artificial LISP (McCarthy, 1959), Linguagem funcional. Prolog (Clocksin e Mellish, 1970), Linguagem Lógica. Programação de Sistemas Construção de Scripts (Scripting Languages) 2
3 Classificação das LPs As LPs podem ser classificadas de diversas formas, algumas são quanto ao: Nível de Utilização; Propósito; Paradigma; Classificação das LPs Quanto ao nível de utilização classificam-se em: Linguagens de Máquina; Linguagens de Baixo Nível; Linguagens de Alto Nível; FORTRAN, Algol, COBOL, Pascal, Python, C++. 3
4 Classificação das LPs Quanto ao propósito (domínio de aplicação): Aplicações Comerciais Cobol, Clipper, Mumps, Natural; Desenvolvimento de Software Básico C, C++, Pascal; Desenvolvimento de Sistemas Especialistas Lisp, Prolog; Educacionais: Logo, Basic; Aplicações Científicas: Fortran, Algol; Propósito Específico Simula, HTML, VRML, Java, LEX, YACC. Métodos de Implementação Compilação Interpretação Pura Sistemas de Implementação Híbridos 4
5 Compilação Interpretação Pura 5
6 Sistemas Híbridos Comparativo Compilação Eficiência - Execução rápida dos programas, pois são executados diretamente em linguagem de máquina. Problemas com Portabilidade. Interpretação Pura Flexibilidade e Portabilidade do código-fonte. Problemas de eficiência, normalmente 10 a 100 vezes menor comparada ao compilado e Maior Consumo de Memória. Raramente Usada. Híbrido Une Vantagens dos Outros Métodos. 6
7 Critérios de Avaliação das Linguagens de Programação Princípais Critérios de Avaliação das Linguagens de Programação Legibilidade Capacidade de Escrita Confiabilidade 7
8 Legibilidade Facilidade de leitura e entendimento de programas escritos em uma determinada linguagem. Quanto maior a legibilidade de programas, mais fácil é a manipulação dos mesmos para correção, extensão e melhoramento (manutenção) Legibilidade Características que contribuem para legibilidade: Simplicidade Ortogonalidade Instruções de Controle Tipos e Estruturas de Dados 8
9 Legibilidade - Simplicidade Linguagem com grande número de componentes básicos é mais difícil de ser aprendida do que uma com poucos desses componentes. Programadores acabam ignorando componentes de linguagens complexas. Legibilidade é afetada quando programadores se defrontam com programas que usam componentes que foram ignorados. Legibilidade - Simplicidade Multiplicidade de formas com um mesmo significado Em C: count = count + 1; count += 1; count++; ++count; Sobrecarga de operadores: único símbolo tem mais de um significado Em C: + Para somar números inteiros como para ponto-flutuante. * para multiplicação de números quanto para operações de manipulação de ponteiros 9
10 Legibilidade - Ortogonalidade Um conjunto relativamente pequeno de construções primitivas pode ser combinado em um número relativamente pequeno de maneiras para construir as estruturas de controle e de dados da linguagem. Qualquer possível combinação de primitivas é legal e tem significado. Exemplo: Suponha uma linguagem com quatro tipos de dados (int, float, double, char) e dois operadores de tipos (ponteiros e arrays). Ponteiros devem ser capazes de apontar para qualquer tipo de variável ou estrutura de dados. Legibilidade - Instruções de Controle Uso de comandos goto Um programa que pode ser lido de cima para baixo é mais fácil de entender do que um programa que obriga o leitor a dar saltos para seguir o fluxo da execução. 10
11 Legibilidade - Instruções de Controle Em algumas linguagens, goto é necessário: Legibilidade - Tipos de Dados Tipos de dados facilitam a identificação do uso de variáveis e dos domínios de valores que podem representar. Por exemplo, em C não existem tipos booleanos, ao contrário do Pascal: Em C: Em Pascal: ocorreu_erro_de_leitura = 1; ocorreu_erro_de_leitura := true; 11
12 Legibilidade - Estruturas Estruturas fornecem métodos para representar valores relacionados de uma forma mais legível, do que por exemplo usando coleções de arrays separados. Capacidade de Escrita Medida da facilidade para criar programas destinado a um domínio de problema escolhido. A maioria das características que afetam legibilidade também afetam a capacidade de escrita Escrever um programa exige uma releitura freqüente do que já foi escrito. Domínio dos problemas influência no julgamento da capacidade de escrita de uma linguagem COBOL para produção de relatórios comerciais. 12
13 Confiabilidade Considera-se um programa confiável quando executa o que foi atribuído de modo esperado, sobre quaisquer condições. Características que contribuem para a confiabilidade: Verificação de Tipos Tratamento de Exceções Aliasing Legibilidade e Capacidade de Escrita Nomes, Vinculações, Verificação de Tipos e Escopos 13
14 Introdução Uma variável de programa é uma abstração de uma célula de memória ou de um conjunto de células de memória do computador. Introdução Atributos de uma variável: Nome; Endereço; Tipo; Valor; Tempo de Vida; Escopo; 14
15 Nomes Seqüência de caracteres usada para identificar alguma entidade de um programa Variáveis, rótulos, subprogramas, parâmetros formais,... Nome Identificador A mudança das linguagens de máquina para Assembly foi uma substituição dos endereços de memória numéricos por nome Aumenta a legibilidade, capacidade de escrita e modificabilidade Nomes - Palavras Especiais São utilizadas em LPs para tornar os programas mais legíveis ao dar nome para ações a serem executadas e separar entidades sintáticas; Palavra especial pode ser: Palavra-chave Palavra Reservada Palavra Pré-definida 15
16 Nomes - Palavras Especiais Palavra-chave pode ser usada como nome Em FORTRAN: REAL APPLE REAL é palavra-chave que indica instrução declarativa REAL = 3.4 REAL indica nome de variável Compiladores FORTRAN e leitores de seus programas devem reconhecer a diferença entre nomes e palavras-chave pelo contexto INTEGER REAL REAL INTEGER Problemas de Legibilidade Nomes - Palavras Especiais Palavra Reservada é especial e não pode ser usada como nome Em C e Java: do, while, for, if,... Palavra Pré-definida está entre palavra reservada e nome definido pelo usuário Tem significado pré-definido, mas pode ser redefinido pelo usuário Em C: printf, scanf definidas em stdio.h 16
17 Endereço de uma Variável É o endereço da posição de memória associada com a variável É chamado de seu valor-l, que é o exigido quando a variável aparece no lado esquerdo (left side) de uma instrução de atribuição Exemplo: float num = 3.14; Endereço de uma Variável - Aliases Quando mais de um nome de variável pode ser utilizado para acessar uma única localização de memória, os nomes são chamados de aliases C/C++: Uniões, Ponteiros. Ada e Pascal: Registros Variantes e Ponteiros. Comprometem a legibilidade Variável pode ter seu valor modificado por uma atribuição a uma variável diferente 17
18 Endereço de uma Variável - Aliases Exemplo C/C++: Tipo de uma Variável Determina a faixa de valores que uma determinada variável pode assumir e o conjunto de operações definidas para os valores daquele tipo; Exemplo: INTEGER de FORTRAN Valores entre a Operações de adição, subtração, multiplicação, divisão e exponenciação. 18
19 Valor de uma Variável O valor de uma variável é chamado de valor-r, que é o exigido quando a variável é usada no lado direito (right side) de uma instrução de atribuição Exemplo: maior = num; Valor-l deve ser determinado primeiro Vinculação Uma vinculação é uma associação, como por exemplo, entre um atributo e uma entidade ou entre uma operação e um símbolo O momento em que uma vinculação desenvolve-se é chamado tempo de vinculação 19
20 Vinculação Vinculação Estática Ocorre antes do tempo de execução, e; Permanece inalterada ao longo da execução do programa. Vinculação Dinâmica Ocorre durante a execução do programa, ou; Pode ser modificada no decorrer da execução. Vinculação Vinculação de Atributos a Variáveis Vinculação de Tipo Vinculação de Armazenamento Vinculação de Valor 20
21 Vinculações de Tipos a Variáveis Antes que uma variável possa ser referenciada em um programa, ela deve ser vinculada a um tipo de dados É importante saber quando e como esta vinculação ocorre Vinculação Estática de Tipos Vinculação Dinâmica de Tipos Vinculação Estática de Tipos Quando? Em tempo de compilação Como? Declaração de Variáveis Associação estática de uma variável a um tipo de dados Pode ser: Declaração explícita; Declaração implícita. 21
22 Vinculação Estática de Tipos Declaração Explícita É uma instrução em um programa que lista nomes de variáveis e especifica que elas são de um determinado tipo Pascal, C, C++, Java Exemplo: Pascal e C (sempre no início de um bloco) Vinculação Estática de Tipos Declaração Implícita É um meio de associar variáveis a tipos de dados através de convenções padrão sem utilizar instruções de declaração. A primeira ocorrência de um nome de variável em um programa constitui sua declaração implícita. ML, Perl, FORTRAN, Basic, PL/I 22
23 Vinculação Estática de Tipos Declaração Implícita (cont) FORTRAN Demais letras REAL I,J,K,L,M ou N INTEGER Perl (qualquer posição do bloco) Nome iniciado com $ Tipo escalar $num = 7 Nome iniciado Tipo = ( maria, joão, ana, pedro ) Vinculação Estática de Tipos Declaração Implícita (cont) Vantagem Conveniência para o programador Desvantagem Problemas de legibilidade Dificulta as checagens do compilador 23
24 Vinculação Dinâmica de Tipos Com vinculação dinâmica de tipos, o tipo de uma variável não é especificado por nenhuma instrução de declaração. A variável é vinculada a um tipo de dados quando lhe é atribuído um valor em uma instrução de atribuição Tipo pode ser o tipo do valor, da variável ou da expressão no lado direito da atribuição PHP, APL, SNOBOL4, LISP, SMALLTALK Vinculação Dinâmica de Tipos Exemplos 24
25 Vinculação Dinâmica de Tipos Vantagem Flexibilidade criação de programas genéricos Desvantagens Diminua a capacidade do compilador na detecção de erros Alto custo de implementação Checagem de tipos em tempo de execução Descritor de tipo Memória de tamanho variável Vinculações de Armazenamento Alocação Processo de vinculação de uma variável de programa a uma célula de memória de um pool de memória disponível. Desalocação Processo de devolução de uma célula de memória desvinculada de uma variável ao pool de memória disponível. 25
26 Tempo de Vida Tempo de vida (lifetime) de uma variável é o tempo durante o qual ela está vinculada a uma localização de memória específica; Tempo de vida de um variável é o intervalo de tempo decorrente entre a sua criação (alocação) e a sua deleção (desalocação). Tempo de Vida Classificação das Variáveis Variáveis Estáticas Variáveis Stack-Dinâmicas Variáveis Heap-Dinâmicas Explícitas Variáveis Heap-Dinâmicas Implícitas 26
27 Variáveis Estáticas São aquelas vinculadas a células de memória antes que a execução inicie-se e assim permanece até que a execução encerre-se. O tempo de vida de uma variável estática é o tempo de execução do programa todo, mesmo que tenham sido declaradas dentro de um bloco interno. Variáveis Estáticas Exemplos: Variáveis globais C e FORTRAN I, II e IV; C, C++, Java e PHP: variáveis locais declaradas como static Retêm o seu conteúdo entre sucessivas ativações do bloco no qual ela foi declarada. 27
28 Variáveis Estáticas Exemplo em C/C++ Variáveis Estáticas Exemplo - PHP 28
29 Variáveis Stack-Dinâmicas São vinculadas ao armazenamento no instante da elaboração de suas instruções de declaração. A elaboração de uma instrução de declaração ocorre quando a execução do programa atinge o código da declaração. Possuem vinculação estática de tipos Exemplo: Variáveis Locais Variáveis Stack-Dinâmicas O tempo de vida de uma variável local corresponde exatamente ao tempo de ativação do bloco no qual ela foi declarada. Tempo de ativação de um bloco é o intervalo de tempo durante o qual o bloco está sendo executado. Uma variável local terá vários tempos de vida se o bloco no qual ela tiver sido declarada for ativado várias vezes. 29
30 Gráfico de Tempo de Vida Exemplo em C/C++ Gráfico de Tempo de Vida Exemplo em C/C++ 30
31 Variáveis Heap-Dinâmicas Explícitas São células de memória sem nome alocadas e desalocadas por instruções explícitas em tempo de execução, especificadas pelo programador. Uma variável anônima e, por isso, só pode ser acessada através de um ponteiro ou de uma variável de referência. São usadas freqüentemente para estruturas dinâmicas que precisam crescer e encolher durante a execução. Variáveis Heap-Dinâmicas Explícitas A criação (alocação) de uma variável heapdinâmica explícita é feita por uma função chamada alocadora ou por um operador que retornam o endereço da variável heap alocada. Heap é um conjunto de células de armazenamento disponíveis Desvantagens: Dificuldade de usar corretamente variáveis de ponteiro ou referência. Custo para alocação e desalocação. 31
32 Variáveis Heap-Dinâmicas Explícitas Exemplo: Operador new de C++ Variáveis Heap-Dinâmicas Explícitas A destruição (desalocação) de uma variável heap-dinâmica explícita pode ocorrer de duas maneiras: Função ou operador de desalocação; Garbage collection (coleta de lixo) 32
33 Variáveis Heap-Dinâmicas Explícitas Operador Desalocador Desalocação realizada explicitamente pelo programador Exemplo: Operador delete do C++ Variáveis Heap-Dinâmicas Explícitas Observação: A função ou operador de desalocação força a deleção de uma variável heap. Perigo! Se ainda houver algum ponteiro para a região de memória desalocada, este ponteiro torna-se uma referência perdida (dangling reference). 33
34 Variáveis Heap-Dinâmicas Explícitas Exemplo C++: Variáveis Heap-Dinâmicas Explícitas Observações: Uma variável heap-dinâmica explícita permanece acessível enquanto houver uma variável do tipo ponteiro que aponte para ela. Uma variável heap-dinâmica explícita perdida é uma variável heap-dinâmica explícita alocada mas não mais acessível ao programa usuário (lixo de memória) Vazamento de memória (memory leakage) 34
35 Variáveis Heap-Dinâmicas Explícitas O Tempo de vida de uma variável heapdinâmica explícita vai desde o momento de sua criação até o momento em que ela é desalocada ou se torna inacessível. Variáveis Heap-Dinâmicas Explícitas Exemplo C++: 35
36 Variáveis Heap-Dinâmicas Implícitas São vinculadas ao armazenamento do heap somente quando lhe são atribuídos valores. Todos os seus atributos vinculam-se todas as vezes que são atribuídos. Exemplo JavaScript: Variáveis Heap-Dinâmicas Implícitas O tempo de vida de uma variável heapdinâmica implícita vai desde o momento de sua criação até o momento em que ela se torna inacessível. Variáveis heap-dinâmicas implícitas são desalocadas pelo processo de garbage collection 36
37 Bloco Um bloco é uma seção de código que contém suas próprias declarações. Variáveis Locais Uma variável é local em um bloco de programa se for declarada dentro dele. Variáveis Não-Locais As variáveis não-locais de um bloco são visíveis dentro dele, mas foram declaradas fora dele. Escopo O escopo de uma variável é a faixa de instruções na qual a variável é visível, ou seja, pode ser referenciada. O bloco delimita o escopo de suas declarações. 37
38 Exemplo de Bloco C++ Exemplo de Bloco - Pascal 38
39 Escopo e Visibilidade Em um programa que contém mais de um bloco, é possível que o mesmo identificador I seja declarado em diferentes blocos. Em geral, o identificador I denotará uma entidade diferente em cada bloco. O programador, ao declarar e usar um identificador dentro de um bloco, não precisa se preocupar se ele foi declarado e está sendo utilizado em um outro bloco. Escopo e Visibilidade Exemplo - Pascal: 39
40 Escopo e Visibilidade Exemplo Pascal: Escopo e Visibilidade Casos Interessantes: Existem linguagens onde o escopo de uma variável local começa no ponto onde ela foi declarada e termina no final do bloco onde a declaração foi feita. Exemplo: C++, Java 40
41 Escopo Estático Quando um identificador de variável é encontrado, a associação entre o identificador e a entidade que ele representa é feita localizandose a instrução de declaração do identificador. Ocorre em tempo de compilação (static scoping) Escopo Estático 41
42 Escopo Estático Pergunta: Dado o programa abaixo, qual o resultado de teste(h) nos pontos A e B? Escopo Estático Resposta - Com escopo estático, teste(h): Nos pontos A e B, sempre vai retornar o dobro do valor de h. Pascal, Fortran, Ada, C, C++, Java. 42
43 Escopo Dinâmico Quando um identificador de variável é encontrado, a associação entre o identificador e a entidade que ele representa é feita localizando-se a instrução de declaração do identificador Ocorre em tempo de execução(dynamic scoping) Escopo Dinâmico Pergunta: Dado o programa abaixo, qual o resultado de teste(h) nos pontos A e B? 43
44 Escopo Dinâmico Resposta - Com escopo dinâmico, teste(h): No ponto A, vai retornar o dobro do valor de h; No ponto B, vai retornar o triplo do valor de h. Lisp, Smalltalk, APL, SNOBOL4. Tipos de Dados 44
45 Introdução Tipos de Dados Primitivos Compostos Ponteiros Strings Tipos Primitivos Tipos de dados não definidos em termos de outros tipos. Costumam ser definidos na implementação da LP Sofrem influência direta do hardware. São utilizados por quase todas as linguagens de programação 45
46 Tipos Primitivos Subdividem-se em: Tipos Embutidos ou Pré-Definidos Tipos Numéricos Inteiro, Ponto-Flutuante e Decimal Tipo Booleano Tipo Caractere Tipos Ordinais Definidos pelos Usuários Tipo Enumeração Tipo Intervalo (Subfaixa) Tipos Compostos São tipos cujos valores são compostos ou estruturados por valores mais simples Registros, vetores, listas, arquivos,... Construtores: Produto Cartesiano União Disjunta Conjunto de Potências Mapeamento Recursão 46
47 Produto Cartesiano Tipo Registro O tipo de dados registro utiliza o conceito de produto cartesiano Uma variável do tipo registro é um par ordenado de valores de tipos possivelmente diferentes Cada elemento individual é identificado por seu nome Produto Cartesiano São produtos cartesiano os registros de PASCAL, MODULA 2, ADA e COBOL e as estruturas de C Exemplos: Record (Pascal) Struct (C) Class (Java) 47
48 Produto Cartesiano Exemplo -Struct do C: data = int x {jan,,dez} x int Produto Cartesiano Exemplo - Record do Pascal: data = {1,,31} x {jan,,dez} x 1901,,2100} 48
49 Produto Cartesiano Exemplo - Class do Java: Pessoa = String x int x float União Disjunta O tipo de dados união utiliza o conceito de união disjunta Uma variável do tipo união pode armazenar valores de tipos diferentes em diferentes momentos de um programa Exemplos: Variant Record (Pascal, Object Pascal, Modula 2 e ADA) REDEFINES (COBOL) EQUIVALENCE (FORTRAN) Union (Algol 68, C, C++) 49
50 União Disjunta Exemplo Union de C: Numero = Integer + Real Conjuntos de Potências Exemplo - tipo set do Pascal: 50
51 Tipos Recursivos Tipos recursivos podem ser definidos a partir de ponteiros ou diretamente Ponteiros Ponteiro é um conceito de baixo nível relacionado com a arquitetura dos computadores 51
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 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 maisNomes, Vinculações, Verificação de Tipos e Escopos. George Darmiton da Cunha Cavalcanti
Nomes, Vinculações, Verificação de Tipos e Escopos George Darmiton da Cunha Cavalcanti (gdcc@cin.ufpe.br) Tópicos Introdução Nomes Variáveis O conceito de vinculação (binding) Verificação de tipos Tipificação
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 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 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 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 - 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 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 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 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 maisAula 1 Java Prof. Dr. Sylvio Barbon Junior
5COP101 Linguagens de Programação Aula 1 Java Prof. Dr. Sylvio Barbon Junior Sylvio Barbon Jr barbon@uel.br 1 Sumário 1) Razões para Estudar Conceitos de LP; 2) Domínios das Linguagens de Programação 3)
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 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 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 maisParadigmas. Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I
Paradigmas Paradigmas Tradicional Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I Paradigmas Tradicional Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I OO Simula-67, Smalltalk, C++, Eiffel, Object Pascal,
Leia 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 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 maisHistórico de Linguagens de Programação
Bacharelado em Ciência da Computação PARADIGMAS DE PROGRAMAÇÃO Histórico de Linguagens de Programação Prof. Claudinei Dias email: prof.claudinei.dias@gmail.com Objetivos Geral: Estudar as características
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 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 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 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 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 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 maisEderson Luiz da Silva Ciência da Computação. Algoritmos e Programação
Ederson Luiz da Silva Ciência da Computação Algoritmos e Programação Linguagem de programação Linguagem de Programação Linguagem de máquina http://www.assemblyprogressivo.net/p/curso.html Linguagem de
Leia 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 maisProjeto de Linguagem. Linguagens de Programação
Projeto de Linguagem Renato Ferreira Linguagens de Programação Linguagens são adotadas para preencher uma demada Facilitar uma aplicação outrora difícil/impossível Independente da qualidade da linguagem
Leia 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 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 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 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 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 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 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 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 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 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 mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3. Linguagem de programação C 3.1. Conceitos
Leia 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 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 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 maisAmbiente de tempo de Execução Cap. 7
Ambiente de tempo de Execução Cap. 7 Introdução Subdivisão da memória usada pelo programa em tempo de execução Segmento de Código Segmento Estático (segmento de dados) Pilha Área de memória livre Heap
Leia maisPython - Variáveis e expressões
Python - e expressões Prof. Paulo H R Gabriel (com base no material do Prof. André Backes) Linguagem de Máquina Computador entende apenas pulsos elétricos Presença ou não de pulso 1 ou 0 Tudo no computador
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 mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.2. Estrutura de Programas e Representação
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 Linguagem de Programação. Paradigma Imperativo
Paradigmas de Linguagem de Programação Paradigma Imperativo Paradigma Imperativo Imperare Comandar É o mais antigo de todos; Baseado no modo de funcionamento do computador; São também chamadas de procedurais;
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 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 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 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 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 maisLINGUAGEM C: VARIÁVEIS E EXPRESSÕES
LINGUAGEM C: VARIÁVEIS E EXPRESSÕES Prof. André Backes LINGUAGENS DE PROGRAMAÇÃO Linguagem de Máquina Computador entende apenas pulsos elétricos Presença ou não de pulso 1 ou 0 Tudo no computador deve
Leia maisPROGRAMAÇÃO ORIENTADA A OBJETOS I -CONCEITOS PRELIMINARES. Prof. Angelo Augusto Frozza, M.Sc.
PROGRAMAÇÃO ORIENTADA A OBJETOS I -CONCEITOS PRELIMINARES Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza ROTEIRO O que é programação Linguagens de Programação Paradigmas de Programação História
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 maisParadigmas de Linguagem de Programação
Paradigmas de Linguagem de Programação Aula 1 - Introdução Prof. Filipo Mór 2016/II - www.filipomor.com Apresentação do Professor B.Sc. SI FDBPOA 2012 M.Sc. em CC PUCRS/DALHOUSIE 2015 Atuação na área de
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 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 maisAs fases de um compilador
As fases de um compilador Compilando um programa simples estrutura de um compilador formas de organização de um compilador processo de execução de uma linguagem de alto-nível Compilando um programa simples
Leia maisTrabalho Linguagem e Programação de Compiladores
Trabalho Linguagem e Programação de Compiladores Responda as questões. Os exercícios deverão ser desenvolvidos utilizando as estruturas apresentadas em aula e adequadas para cada problema. Forma de entrega:
Leia 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 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 mais1 Introdução à Programação O que é? Para que serve?... 1
Nesta aula... Conteúdo 1 Introdução à Programação 1 1.1 O que é?................................. 1 1.2 Para que serve?............................. 1 2 Linguagens de programação 2 2.1 Programação estruturada........................
Leia maisProgramação I A Linguagem C. Prof. Carlos Alberto
Programação I A Linguagem C Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br 2 Origem A linguagem C foi desenvolvida em 1972, nos Laboratórios Bell, por Dennis Ritchie. Implementada
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 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 maisMotivação. Estrutura de Dados. Motivação. Motivação. Por que estudar os tipos de dados? Duas são as principais preocupações em um projeto de software
Estrutura de Dados Aula 01 -Tipos Abstratos de de Dados Prof. Ms. Luiz Alberto Contato: lasf.bel@gmail.com Motivação Por que estudar os tipos de dados? Duas são as principais preocupações em um projeto
Leia maisPLANO DE UNIDADE DIDÁTICA- PUD
Professor: Marcus Vinícius Midena Ramos Coordenação: Ricardo Argenton Ramos Data: 03/08/2010 Página: 1 de 5 EMENTA: Conceitos básicos de linguagens. Histórico, classificação e principais aplicações de
Leia maisClassificação das linguagens de programação
Introdução Linguagem É um meio de comunicação entre pessoas. Faculdade de expressão audível e articulada do homem. Conjunto de sinais falados, escritos ou gesticulados de que se serve o homem para demonstrar
Leia maisCapítulo 8. Estruturas de Controle no Nível de Sentença
Capítulo 8 Estruturas de Controle no Nível de Sentença Níveis de fluxo de controle Computações são realizadas por meio da avaliação de expressões e da atribuição dos valores a variáveis Para tornar a computação
Leia 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 maisParadigmas de Linguagens
Paradigmas de Linguagens Aula 2: Tipos de dados Professora Sheila Cáceres Tipos de dados Dados são a matéria prima da computação junto com os programas. LPs precisam manipular dados. LPS utilizam os conceitos
Leia maisAs fases de um compilador
As fases de um compilador Paradigmas de LP Métodos de Implementação de LP Compilando um programa simples estrutura de um compilador formas de organização de um compilador processo de execução de uma linguagem
Leia maisProgramação de Computadores II
Programação de Computadores II 1. Programação Básica 2019.1 Slides adaptados do material de Karina Mochetti Problema, Algoritmo, Programa Um programa de computador é a implementação de um algoritmo para
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 maisProgramaçã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 maisConceitos Básicos de Programação
BCC 201 - Introdução à Programação Conceitos Básicos de Programação Guillermo Cámara-Chávez UFOP 1/53 Conceitos básicos I Variável 2/53 Conceitos básicos II Posição de memoria, identificada através de
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 mais1.1 o que é um algoritmo... 6
sumário introdução 1 1 fundamentos 5 1.1 o que é um algoritmo... 6 1.1.1 algoritmos executados por um computador...7 1.1.2 comandos básicos executados por um computador...11 1.1.3 da necessidade do desenvolvimento
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 maisQuestões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO
Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO QUESTÃO 1 : Enviada por: Francisco Carlos Moraes Junior Duvidas: Thaise Domínios de programação são áreas onde os computadores são usados.
Leia mais#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C
#include Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C ANTES DO C ERA A LINGUAGEM B B foi essencialmente uma simplificação da linguagem BCPL. B só tinha um tipo de dado, que
Leia maisParadigmas de Linguagens
Paradigmas de Linguagens Aula 1: Introdução e Conceitos Básicos Professora Sheila Cáceres O que é um paradigma??? Paradigmas de Linguagens - Sheila Cáceres 2 O que é um paradigma??? Paradigmas de Linguagens
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 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 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 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 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 maisFundamentos de Programação em Python
Fundamentos de Programação em Python Diego Silveira Costa Nascimento Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte diego.nascimento@ifrn.edu.br 23 de junho de 2017 Ementa do
Leia maisMCTA028 Programação Estruturada Aula 01: - Introdução à linguagem C - Teste de avaliação
MCTA028 Programação Estruturada Aula 01: - Introdução à linguagem C - Teste de avaliação Prof. João Henrique Kleinschmidt Material elaborado pelo Prof. Jesús P. Mena-Chalco 3Q-2018 Linguagens de programação
Leia maisProgramaçã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 maisIntrodução à Computação
Introdução à Computação Jordana Sarmenghi Salamon jssalamon@inf.ufes.br jordanasalamon@gmail.com http://inf.ufes.br/~jssalamon Departamento de Informática Universidade Federal do Espírito Santo Agenda
Leia maisWorking 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