Linguagens de Programação. Introdução: Motivação, Avaliação, Categorização e Implementação de Linguagens

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

Download "Linguagens de Programação. Introdução: Motivação, Avaliação, Categorização e Implementação de Linguagens"

Transcrição

1 v.2016 Linguagens de Programação Introdução: Motivação, Avaliação, Categorização e Implementação de Linguagens Prof. Ricardo Couto A. da Rocha rcarocha@ufg.br UFG Regional de Catalão Material adaptado de: Slides de aula do Prof. Bruno Silvestre (UFG/INF/Goiânia) Slides de referência do livro Concepts of Programming Languages, Robert Sebesta.

2 Roteiro Domínios de Programação Critérios de Avaliação de Linguagens Projeto de Linguagens Categorias Implementação Prof. Dr. Ricardo Couto Antunes da Rocha - Depto. de Ciência da Computação Regional de Catalão 2

3 Domínios de Programação 3

4 Domínios de Programação Aplicações científicas Computação com ponto flutuante; uso de arrays Fortran Aplicações comerciais Relatórios, números decimais e caracteres COBOL Inteligência artificial Manipulação de símbolos em vez de números; uso de listas LISP, Prolog 4

5 Domínios de Programação Programação de sistemas Eficiência na execução por causa do uso contínuo C Software para web Coleção eclética de linguagens: markup (e.g., HTML), scripting (e.g., PHP, Javascript), propósito geral (e.g., Java) 5

6 Roteiro Domínios de Programação Critérios de Avaliação de Linguagens Projeto de Linguagens Categorias Implementação Prof. Dr. Ricardo Couto Antunes da Rocha - Depto. de Ciência da Computação Regional de Catalão 6

7 Critérios de Avaliação da Linguagem Legibilidade: facilidade com que os programas podem ser lidos e entendidos Redigibilidade: facilidade de uso de uma linguagem para criar programas para um domínio de problema escolhido Confiabilidade: um programa é confiável se ele se comportar de acordo com suas especificações em todas as situações 7

8 Critérios de Avaliação da Linguagem Legibilidade Redigibilidade Confiabilidade Simplicidade/ortogonalidade x x x Estruturas de controle x x x Tipos de dados e estruturas x x x Projeto de sintaxe x x x Suporte a abstrações x x Expressividade x x Checagem de tipos Tratamento de Exceções Restricted aliasing x x x 8

9 Critérios de Avaliação: Legibilidade Ponto de vista: Máquina x Homem Simplicidade como um todo Um conjunto gerenciável de características e construções Multiplicidade de recursos reduzida Sobrecarga de operadores mínima 9

10 Baixa Legibilidade: Exemplo 1 Foco: Máquina X Homem int main() max(int a, int b) { int int tmp; cont = 0; if cont++; (a > b) cont tmp = += a; 1; else cont++; ++cont; tmp = b; return tmp; 0; } } max: pushl %ebp movl %esp, %ebp subl $16, %esp movl 8(%ebp), %eax cmpl 12(%ebp), %eax jle.l2 movl 8(%ebp), %eax movl %eax, 4(%ebp) jmp.l3.l2: movl 12(%ebp), %eax movl %eax, 4(%ebp).L3: movl 4(%ebp), %eax leave 10

11 Baixa Legibilidade: Exemplo 2 Muitas maneiras de fazer a mesma coisa int main() { int cont = 0; count = count + 1; cont += 1; cont++; ++cont; return 0; } 11

12 Baixa Legibilidade: Exemplo 3 Sobrecarga de operador class Point { public: int x, y; Point(); Point(int, int); Point operator +(Point); }; Point::Point() { x = y = 0; } Point::Point(int a, int b) { x = a; y = b; } Point Point::operator +(Point param) { Point temp; temp.x = x + param.x; temp.y = y + param.y; return temp; } int main () { Point a(3,1); Point b(1,2); Point c; c = a + b; cout << c.x<< "," << c.y << endl; return 0; } 12

13 Critérios de Avaliação: Legibilidade Tipos de dados Tipos de dados adequados e pré-definidos Ex: C não tem booleanos (ou tem?) Considerações de sintaxe Formas dos identificadores: deve ser flexível Palavras especiais e bloco de sentenças Forma e significado: construções autodescritivas, palavras-chave significativas (e.g., static) 13

14 Critérios de Avaliação: Legibilidade Ortogonalidade Um conjunto relativamente pequeno de construções primitivas pode ser combinado em um número relativamente pequeno de maneiras Toda combinação possível é aceita, gerando menos exceções às regras da linguagem Exemplo em C: Retorno de arrays e structs? Criação de variável void? 14

15 Critérios de Avaliação: Legibilidade Ortogonalidade Qual o significado dos códigos destacados? int main() { int vet[3] = {10,20,30}; int *ptr; ptr = &vet[0]; ptr = ptr + 1; void hello() { printf( Hello\n ); } int main() { void x; } // Imprime 20 printf( %d\n, *ptr); return 0; } hello(); return 0; ptr (ptr+1) (ptr+2) vet 15

16 Critérios de Avaliação: Redigibilidade Geralmente os problemas que afetam a legibilidade também afetam a redigibilidade Cuidado ao comparar linguagens com focos diferentes: Visual Basic vs C Simplicidade e ortogonalidade Um número menor de construções primitivas e um conjunto consistente de regras para combiná-las é melhor do que ter um número grande de primitivas 16

17 Critérios de Avaliação: Redigibilidade Suporte à abstração Capacidade de definir e usar estruturas ou operações complicadas de uma maneira que permita ignorar muitos dos detalhes Abstração de processo Abstração de dados Exemplo: Função de ordenação em relatórios Implementação de árvore usando vetor 17

18 Critérios de Avaliação: Redigibilidade Suporte à abstração: Java vs Lua public class Obj { private int x; public Obj(int v) {x = v;} public void inc() {x++;} } Obj obj1 = new Obj(0); Obj obj2 = new Obj(2); obj1.inc() obj2.inc() local class = { index={}} function class. index.inc(self) self.x = self.x + 1 end obj1 = setmetatable({x=0},class) obj2 = setmetatable({x=2},class) obj1:inc() obj2:inc() 18

19 Critérios de Avaliação: Redigibilidade Expressividade Operadores ou funções que realizam operações poderosas e/ou complexas Por exemplo: APL Um conjunto de maneiras convenientes de especificar as operações. Por exemplo: cont++ vs count = count + 1 for vs while Número de operadores e funções pré-definidos 19

20 Critérios de Avaliação: Redigibilidade public class Foo { public static void main(string[] args) { int[] vet = new int[]{1,2,3,4,5}; for (int i = 0; i < vet.length; i++) System.out.println(vet[i]); } } for (int v : vet) System.out.println(v); 20

21 Critério de Avaliação: Confiabilidade Verificação de tipos Testar se existem erros de tipo Manipulação de exceções Interceptar erros em tempo de execução e realizar medidas corretivas r = fread (buf, 1, size, fd); if (r!= size) { // Erro } C try { fd.read(buf, 0, size); } catch(ioexception e) { // Erro } Java 21

22 Critério de Avaliação: Confiabilidade Legibilidade e redigibilidade Uma linguagem que não suporta maneiras naturais de expressar algoritmos usará, necessariamente, métodos não-naturais, reduzindo a confiabilidade Programas fáceis de escrever têm maior chance de estarem corretos Programas fáceis de ler são mais fáceis de entender, escrever e modificar 22

23 Critério de Avaliação: Custo Treinamento de programadores para usar a linguagem Custo de escrever programas: domínio da aplicação Custo de compilação: tempo e memória Compiladores estão melhores Custo de execução: requisitos mínimos do sistema Influenciado pelo projeto da linguagem Custo do sistema de implementação da linguagem Disponibilidade de compiladores gratuitos Confiabilidade: baixa confiabilidade eleva os custos Manutenção de programas 23

24 Critérios de Avaliação: Outros Portabilidade Facilidade de mudar programas de uma plataforma para a outra Generalidade Uso da linguagem em uma ampla variedade de aplicações Boa definição A completude e precisão da documentação oficial da linguagem 24

25 Resumo Razões para estudar conceitos de linguagens de programação Domínios de programação Critérios de avaliação da linguagem Legibilidade (readability) Redigibilidade (writability) Confiabilidade (reliability) Custo Portabilidade, generalidade e boa definição 25

26 Balanço no Projeto de Linguagens Confiabilidade vs Custo de execução Em Java todas as referências aos elementos de arrays são verificadas quanto à indexação correta. Isso aumenta os custos de execução. Legibilidade vs Redigibilidade APL fornece operadores muito poderosos (e um grande número de símbolos novos), permitindo que computações complexas sejam escritas em um programa compacto. No entanto, o custo da baixa legibilidade é alto. 26

27 Balanço no Projeto de Linguagens Redigibilidade vs Confiabilidade Ponteiros do C++ são poderosos e muito flexíveis, mas não são confiáveis. Java não adotou ponteiros. Alguns conflitos são óbvios, outros são mais sutis. 27

28 Roteiro Domínios de Programação Critérios de Avaliação de Linguagens Projeto de Linguagens Categorias Implementação Prof. Dr. Ricardo Couto Antunes da Rocha - Depto. de Ciência da Computação Regional de Catalão 28

29 Influências sobre o Projeto da Linguagem Arquitetura do computador: linguagens são desenvolvidas em função da arquitetura mais atual (hoje von Neumann) 29

30 Influências sobre o Projeto da Linguagem Linguagens imperativas dominantes por causa da arquitetura Dados e programas mantidos na memória Memória separada da CPU Variáveis modelam células de memória Instruções e dados canalizados (piped) da memória para a CPU 30

31 Ciclo Fetch-Execute Iteração é eficiente Desencoraja o uso de recursão Impacto em linguagens funcionais initialize the program counter repeat forever fetch the instruction pointed by the counter increment the counter decode the instruction execute the instruction end repeat 31

32 Influências sobre o Projeto da Linguagem Metodologias de Programação: novas metodologias de desenvolvimento levam a novos paradigmas de programação e a extensões, ou mesmo novas linguagens de programação Orientação a objetos 32

33 Influências sobre o Projeto da Linguagem Anos 1950 e início dos anos 1960: aplicações simples; preocupação com a eficiência da máquina Fim dos anos 1960: eficiência das pessoas torna-se importante; legibilidade, melhores estruturas de controle Programação estruturada Projeto top-down e refinamento Fim dos anos 1970: orientação aos processos para orientação aos dados Abstração de dados Meados dos anos 1980: programação orientada a objetos Abstração de dados + herança + polimorfismo 33

34 Roteiro Domínios de Programação Critérios de Avaliação de Linguagens Projeto de Linguagens Categorias Implementação Prof. Dr. Ricardo Couto Antunes da Rocha - Depto. de Ciência da Computação Regional de Catalão 34

35 Categorias de Linguagem Imperativa Características centrais são variáveis, declarações de atribuição, iteração Inclui as linguagens que suportam orientação a objetos Inclui linguagens de script Inclui linguagens visuais Exemplos: C, Java, Perl, JavaScript, Visual BASIC.NET, C++ Funcional Realiza computações aplicando funções aos parâmetros fornecidos Exemplos: LISP, Scheme, Haskell, ML 35

36 Categorias de Linguagem Lógica Baseada em regras Regras são especificadas sem uma ordem particular Exemplo: Prolog Marcação/híbrida Linguagens de marcação (markup) estendidas para suportar programação Exemplos: JSTL, XSLT 36

37 JSTL <c:choose> <c:when test="${el_expr1}">... </c:when> <c:when test="${el_expr2}">... </c:when>... <c:otherwise>... </c:otherwise> </c:choose> <c:foreach var="x" items="${m}" > ${x.key}: ${x.value} </c:foreach> <c:out value="el EXPRESSION" /> <c:set var="x" value="el EXPRESSION" /> <c:if test="el EXPRESSION" >... </c:if> 37

38 Roteiro Domínios de Programação Critérios de Avaliação de Linguagens Projeto de Linguagens Categorias Implementação Prof. Dr. Ricardo Couto Antunes da Rocha - Depto. de Ciência da Computação Regional de Catalão 38

39 Visão em Níveis 39

40 Métodos de Implementação Compilação Programas são traduzidos para a linguagem de máquina Interpretação pura Programas são interpretados por outro programa conhecido por interpretador Implementação híbrida Meio-termo entre os compiladores e os interpretadores. 40

41 Método 1: Compilação Traduz programas de alto nível (código fonte) para o código de máquina (linguagem de máquina) Tradução lenta, execução rápida Processo de compilação tem várias fases 41

42 Compilação programa fonte Tabela de Símbolos Analisador Léxico Analisador Sintático Gerador de Código Intermediário (e analisador semântico Unidades léxicas Árvores de parsing Otimização Linguagem de máquina Gerador de código Computador Código intermediário Entrada Resultados 42

43 Compilação 43

44 Compilação Alguns compiladores C++ transformavam o código em C em vez de código intermediário Muitos compiladores são self-hosting, i. e., são escritos na própria linguagem que compilam Problema do ovo e a galinha? Técnica de bootstrapping 44

45 Método 2: Interpretação Pura Não há tradução Implementação mais fácil de programas Erros em tempo de execução podem ser facilmente e imediatamente mostrados (debug?) Execução mais lenta 10 a 100 vezes mais lenta que de programas compilados Requer mais espaço Atualmente pouco empregadas em linguagens de alto nível Uso com algumas linguagens de script para web Ex.: JavaScript e PHP 45

46 Método 3: Implementação Híbrida Meio-termo entre compiladores e interpretadores puros Um programa em uma linguagem de alto nível é traduzido para uma linguagem intermediária que permita a interpretação fácil Mais rápido que a interpretação pura Ex.: Programas em Perl são parcialmente compilados para detectar erros antes da interpretação Em Java, a forma intermediária (byte code) fornece portabilidade para qualquer máquina que tenha um interpretador e um sistema de execução Java Virtual Machine 46

47 Implementação Híbrida programa fonte Analisador Léxico Analisador Sintático Unidades léxicas Árvores de parsing Gerador de Código Intermediário Código intermediário Interpretador Entrada Resultados 47

48 JIT Just-in-Time Inicialmente traduz os programas para uma linguagem intermediária É feita a compilação dos subprogramas (estão na linguagem intermediária) para código de máquina quando são chamados A versão em código de máquina é mantida para chamadas subsequentes Java e.net oferecem compilador JIT Outras linguagens estão compilando para essas plataformas a fim de ter ganhos de portabilidade e desempenho 48

49 Pré-processadores Pré-processadores são normalmente usados para especificar que código de outro arquivo deve ser incluído Um pré-processador processa um programa imediatamente antes do programa ser compilado Exemplo conhecido: pré-processador C #include, #define, #if, etc. Macros do usuário Cuidado com efeito colateral! 49

50 Pré-processadores Quais são os códigos que serão gerados a partir dos seguintes pré-processamentos? #define dobro(x) (x + x) x = 2; y = dobro(++x); #define calc(x, y) (x + y * 2) z = calc(2, 1+5); #define inc(x, y) x++; y++; if (z > 10) inc(x, y) 50

51 Resumo Balanço no projeto de linguagens Combinar características conflitantes Influências sobre o projeto da linguagem Arquitetura e metodologia Categorias de linguagem Imperativa, funcional, lógica e marcação/híbrida Métodos de Implementação Compilação, interpretação e híbrido 51

52 Referências Sebesta, Robert W. Conceitos de linguagens de programação. Bookman Editora, Prof. Dr. Ricardo Couto Antunes da Rocha - Depto. de Ciência da Computação Regional de Catalão 52

Capítulo 1. Aspectos Preliminares

Capí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 mais

Linguagens Computacionais (Conceitos Básicos)

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

Paradigmas de Linguagem de Programação

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

Aspectos preliminares

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

Aula 1 Java Prof. Dr. Sylvio Barbon Junior

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

Linguagens de Programação. Introdução. Carlos Bazilio

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

Nomes, vinculações e escopos

Nomes, vinculações e escopos Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual

Leia mais

Aspectos preliminares

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

Linguagens de Programação

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

Aspectos preliminares

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

Paradigmas de Programação

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

Leia mais

Nomes, vinculações e escopos

Nomes, vinculações e escopos Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual

Leia mais

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

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

Linguagem de Programação e Compiladores

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

Leia mais

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

Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO QUESTÃO 1 : Enviada por: Francisco Carlos Moraes Junior Duvidas: Thaise Domínios de programação são áreas onde os computadores são usados.

Leia mais

Linguagens de Programação Funcional

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

Leia mais

PROGRAMAÇÃ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. 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 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

PLANO DE UNIDADE DIDÁTICA- PUD

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

Leia mais

Métodos de implementação de linguagens. Kellen Pinagé

Métodos de implementação de linguagens. Kellen Pinagé Métodos de implementação de linguagens Kellen Pinagé Sumário Métodos de implementação de linguagens Compilação Interpretação pura Híbrido Métodos de implementação de linguagens Principais componentes de

Leia mais

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

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação Aula 03 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação Linguagens de Programação A primeira linguagem de programação foi criada por Ada Lovelace. Amiga

Leia mais

Capítulo 5. Nomes, Vinculações e Escopos

Capí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 mais

Algoritmos e Programação

Algoritmos e Programação ESTADO DE MATO GROSSO SECRETARIA DE ESTADO DE CIÊNCIA E TECNOLOGIA UNIVERSIDADE DO ESTADO DE MATO GROSSO CAMPUS UNIVERSITÁRIO DE SINOP FACULDADE DE CIÊNCIAS EXATAS E TECNOLÓGICAS Algoritmos e Programação

Leia mais

1 Introdução à Programação O que é? Para que serve?... 1

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

Algoritmos e Programação

Algoritmos e Programação ESTADO DE MATO GROSSO SECRETARIA DE ESTADO DE CIÊNCIA E TECNOLOGIA UNIVERSIDADE DO ESTADO DE MATO GROSSO CAMPUS UNIVERSITÁRIO DE SINOP FACULDADE DE CIÊNCIAS EXATAS E TECNOLÓGICAS CURSO DE ENGENHARIA ELÉTRICA

Leia mais

CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO

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

As fases de um compilador

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

Compiladores. Eduardo Ferreira dos Santos. Fevereiro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 38

Compiladores. Eduardo Ferreira dos Santos. Fevereiro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 38 Compiladores Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Fevereiro, 2017 1 / 38 Sumário 1 Compiladores 2 Linguagens de programação 3 Ciência dos compiladores

Leia mais

Capítulo III - Linguagens de Programação

Capítulo III - Linguagens de Programação Capítulo III - Linguagens de Programação Porque Estudar Ling. de Programação? Quais são as formas de classificar Linguagens? Quais são os Conceitos Fundamentais de Linguagens de Programação? Como Avaliar/Projetar

Leia mais

Linguagens de Programação

Linguagens de Programação O estudante estuda muito. Regras: 7 9 12 14. . Regras: 2 4 . Regras: 1 Representar através de uma árvore de derivação. 77 O estudante estuda muito.

Leia mais

Fundamentos de Programação 1

Fundamentos de Programação 1 Fundamentos de Programação 1 Slides N. 2 E / Prof. SIMÃO Slides elaborados pelo Prof. Robson Linhares elaborados pelo Prof. Robson Linhares http://www.dainf.ct.utfpr.edu.br/~robson/ Jean Marcelo SIMÃO

Leia mais

Matéria Linguagens de Programação Prof Geraldo. 1) Estudo das Linguagens de Programação

Matéria Linguagens de Programação Prof Geraldo. 1) Estudo das Linguagens de Programação Matéria Linguagens de Programação Prof Geraldo. 1) Estudo das Linguagens de Programação É muito importante o estudo dos conceitos de linguagens de programação, especialmente a análise de seus paradigmas.

Leia mais

Projeto de Compiladores

Projeto de Compiladores Projeto de Compiladores FIR Faculdade Integrada do Recife João Ferreira 26 e 27 de fevereiro de 2007 Agenda da Aula Revisão Linguagem de Programação Tradutores Compilador As Fases de Um Compilador Linguagem

Leia mais

Autômatos e Linguagens

Autômatos e Linguagens Autômatos e Linguagens Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Agosto, 2016 1 / 41 Sumário 1 Compiladores 2 Linguagens de programação 3 Ciência dos compiladores

Leia mais

Histórico de Linguagens de Programação

Histó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 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

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

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

Leia mais

As fases de um compilador

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

Linguagens de Programação Aula 3

Linguagens de Programação Aula 3 Aula 3 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada... Classificação das LPs (nível, geração e paradigma) Paradigmas Imperativo, OO, funcional, lógico e concorrente 2/33 Na aula de hoje...

Leia mais

Linguagens de Programação. Marco A L Barbosa

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

Leia mais

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

Expressões e sentença de atribuição Expressões e sentença de atribuição Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual

Leia mais

Linguagens de Programação Classificação

Linguagens de Programação Classificação Classificação Classificação A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível): Linguagem de máquina (primeira geração) Linguagem assembly - de montagem (segunda

Leia mais

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. Linguagem de programação C 3.1. Conceitos

Leia mais

Programação de Computadores

Programação de Computadores Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Alguns Conceitos sobre Conceito de Algoritmo Pseudocódigo Tipos de

Leia mais

Construção de Compiladores. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2014.

Construção de Compiladores. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2014. Construção de Compiladores Capítulo 1 Introdução José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2014.2 1/22 1 Linguagens de programação 2 Compilação 2/22 Tópicos 1

Leia mais

Linguagens de Programação

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

Leia mais

Curso: Análise e Desenvolvimento de Sistemas. (Introdução a disciplina Algoritmos e Programação)

Curso: Análise e Desenvolvimento de Sistemas. (Introdução a disciplina Algoritmos e Programação) Curso: Análise e Desenvolvimento de Sistemas Disciplina Algoritmos e Programação (Introdução a disciplina Algoritmos e Programação) Prof. Wagner Santos C. de Jesus wsantoscj@gmail.com Conceito de Lógica

Leia mais

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

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

Paradigmas de Linguagem de Programação. Aspectos Básicos Paradigmas de Linguagem de Programação Aspectos Básicos Introdução Nesta segunda etapa de nossos estudos, veremos: aspectos básicos de programa e linguagem de programação; revisão de conceitos de compilador

Leia mais

Programação de Computadores

Programação de Computadores Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Alguns Conceitos sobre Linguagens Conceito de Algoritmo Pseudocódigo

Leia mais

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

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

Leia mais

Projeto de Linguagem. Linguagens de Programação

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

Paradigmas de Linguagens

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

Fundamentos de Programação. Linguagem C++ Introdução, identificadores, tipos de dados. Prof. Bruno E. G. Gomes IFRN

Fundamentos de Programação. Linguagem C++ Introdução, identificadores, tipos de dados. Prof. Bruno E. G. Gomes IFRN Fundamentos de Programação Linguagem C++ Introdução, identificadores, tipos de dados Prof. Bruno E. G. Gomes IFRN 1 Linguagem de Programação Constituída por símbolos e por regras para combinar esses símbolos

Leia mais

Noções de compilação

Noções de compilação Noções de compilação Compilador: o que é, para que serve e estrutura geral Parentes do compilador e programas correlatos Prof. Thiago A. S. Pardo 1 Exercício em duplas Para esquentar... 2 1 Compilação:

Leia mais

Linguagens de Programação

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

Leia mais

Estudos de Linguagens de Programação - Revisão

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

Programação I Apresentação

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

Leia mais

Prof. Rodrigo Rocha

Prof. Rodrigo Rocha : sobre : MATA56 - de Linguagens de Programação, UFBA, 2016.1 : sobre : Links interessantes sobre Comparação de sintaxe: http://merd.sourceforge.net/pixel/ language-study/syntax-across-languages/ Programa

Leia mais

Noções de compilação

Noções de compilação Noções de compilação Compilador: o que é, para que serve e estrutura geral Parentes do compilador e programas correlatos Prof. Thiago A. S. Pardo 1 Compilação: por que estudar? (parte 1) Compiladores:

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

Projeto de Compiladores

Projeto de Compiladores Projeto de Compiladores FIR Faculdade Integrada do Recife João Ferreira 12 e 13 de fevereiro de 2007 Questionário 1. Em quais linguagens de programação você já programou? 2. O que você sabe sobre compiladores?

Leia mais

Introdução e Conceitos

Introdução e Conceitos Introdução e Conceitos Aula 1 11/08/2017 diegoquirino@gmail.com 1 Agenda 1. Motivações: porque estudar linguagens de programação? 2. Breve Histórico sobre as Linguagens de Programação 3. Processos de Tradução

Leia mais

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

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 32. Instituto de C ompiladores Introdução Bruno Lopes Bruno Lopes ompiladores 1 / 32 Apresentação Em que período estão? O quanto sabem de programação? Quais linguagens? O quanto sabem de unix? O quanto sabem de Linguagens

Leia mais

Linguagem de Programação

Linguagem de Programação Linguagem de Programação aula 4 Engenharia Elétrica e Engenharia de Automação Introdução à Computação 1.o sem/2013 Profa Suely (e-mail: smaoki@yahoo.com) Programas Programas são seqüências de instruções

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Aula 1 Celso Olivete Júnior olivete@fct.unesp.br Metodologia Aulas expositivas teórico-práticas Exercícios práticos Projetos individuais e/ou em grupos Seminários sobre tópicos

Leia mais

Programação de Computadores:

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

Leia mais

LAPRO I. Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática - FACIN. Prof. Dr. Rafael Garibotti

LAPRO I. Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática - FACIN. Prof. Dr. Rafael Garibotti Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática - FACIN LAPRO I Prof. Dr. Rafael Garibotti v Baseado no material cedido pelos Profs. Dr. Marco Mangan e Dr. Matheus Trevisan

Leia mais

Linguagens de Programação

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

Leia mais

Programação de Computadores

Programação de Computadores Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Alguns Conceitos sobre Linguagens Paradigmas para linguagens de Programação

Leia mais

Introdução à Ciência da Computação. Prof. Dr. Rogério Vargas

Introdução à Ciência da Computação. Prof. Dr. Rogério Vargas Introdução à Ciência da Computação Prof. Dr. Rogério Vargas http://rogerio.in O que é dado? - Defino dado como uma sequência de símbolos quantificados ou quantificáveis. - Letras são símbolos quantificados.

Leia mais

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

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

Leia mais

MCTA028 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 MCTA028 Programação Estruturada Aula 01: - Introdução à linguagem C - Teste de avaliação Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 3Q-2017 1 Linguagens de programação 2 Linguagem de programação

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

Introdução a lógica e a Linguagem de Programação

Introdução a lógica e a Linguagem de Programação Faculdade de Engenharia da Computação Disciplina: Lógica de Programação Introdução a lógica e a Linguagem de Programação Site : http://www1.univap.br/~wagner/ec.html Prof. Responsáveis Wagner Santos C.

Leia mais

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

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 01 Introdução Edirlei Soares de Lima O que é uma Linguagem de Programação? Na programação de computadores, uma linguagem de programação

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

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

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

Leia mais

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

Slides trabalhados durante a quinta aula

Slides trabalhados durante a quinta aula Slides trabalhados durante a quinta aula prática Estruturas de Controle de Fluxo 3. Laços de repetição (continuação) Exercício: Construa um algoritmo, representando-o através de um pseudocódigo e de um

Leia mais

Informática I. Aula Aula 18-29/10/2007 1

Informática I. Aula Aula 18-29/10/2007 1 Informática I Aula 18 http://www.ic.uff.br/~bianca/informatica1/ Aula 18-29/10/2007 1 Ementa Noções Básicas de Computação (Hardware, Software e Internet) HTML e Páginas Web Internet e a Web Javascript

Leia mais

Linguagens e Compiladores

Linguagens e Compiladores Linguagens e Compiladores Aula 1: a) Critérios b) Noções de Compiladores e Interpretadores c) Usos da tecnologia de compilação d) Compiladores, filtros e pré-processadores e) Estruturação lógica de compiladores

Leia mais

Programação de Sistemas (Sistemas de Programação) Semana 10, Aula 17

Programação de Sistemas (Sistemas de Programação) Semana 10, Aula 17 PCS3616 Programação de Sistemas (Sistemas de Programação) Semana 10, Aula 17 Linguagens e Compiladores Programação em linguagem de alto nível Escola Politécnica da Universidade de São Paulo Roteiro 1.

Leia mais

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

Linguagens de Programação

Linguagens de Programação Linguagens de Programação 128 13 129 Linguagens de Programação Uma linguagem de programação é um vocabulário e um conjunto de regras gramaticais usadas para escrever programas de computador. Esses programas

Leia mais

Programação I A Linguagem C. Prof. Carlos Alberto

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

Capítulo 6: Linguagens de Programação

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

Leia mais

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

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

Leia mais

FERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS

FERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS FERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS Acadêmico: Roger Anderson Schmidt Orientador : Marcel Hugo Supervisor : Ricardo de Freitas Becker Empresa

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

Revisão: linguagens de programação

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

Leia mais

Introdução à Computação

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