Montadores e Compiladores



Documentos relacionados
Algoritmo e Lógica de Programação. Conceitos de Linguagens de Programação

Introdução. Software Básico Aula 3. Prof. Dr. Rogério Vargas.

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz

Linguagens de Programação:

Compiladores. Introdução à Compiladores

Arquitetura de Computadores

Universidade Federal da Paraíba Centro de Informática Departamento de Informática

Arquitetura de Computadores Moderna

Introdução a Programação Aula 01

O Sistema de Computação

3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C

Microcontroladores e Microprocessadores. Conversão de Bases Prof. Samuel Cavalcante

BANCO DE DADOS. Professor: André Dutton

Exame de Equivalência à Frequência do Ensino Secundário

Bacharelado em Ciência da Computação 2009

Linguagens e Paradigmas de Programação

Sistema Computacional

Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Aula 03

Requisitos de Software

Nº horas ESTRATÉGIAS RECURSOS AVALIAÇÃO

Informática Aplicada

Arquitetura de Computadores - Operação da Unidade de Controle. por Helcio Wagner da Silva

PROGRAMA ANALÍTICO DE DISCIPLINA

Linguagem de Programação I

Programação de Computadores I. Linguagem C Função

Banco de Dados. Banco de Dados. Conceitos Básicos. Banco de Dados SGBD SGBD. Fundamentos. Fernando Fonseca Ana Carolina.

Fundamentos de Programação 1

Histórico e Evolução da Computação

GUIA DE FUNCIONAMENTO DA UNIDADE CURRICULAR

O AMBIENTE DELPHI. Programação de Computadores.

Fundamentos de Arquitetura e Organização de Computadores

Geração e Otimização de Código (continuação)

Organização e Arquitetura de Computadores I

Arquitetura e Organização de Computadores. Profa. Débora Matos

Oganização e Arquitetura de Computadores

Sistemas Operacionais

Projeto de Compiladores

Fundamentos de Sistemas Operacionais

Arquitetura de Computadores

Sistemas Distribuídos Capítulo 4 - Aula 5

INFORMÁTICA. Introdução à Informática Hardware CONHECIMENTOS BÁSICOS EM INFORMÁTICA

Formação WEB com PHP. Subtítulo

Programação de Computadores

Programação em JAVA. Subtítulo

Linguagens de Programação

Programação de Computadores

Glossário Versão 1.0 Desenvolvimento do Sistema de Gestão de Documentos Doc Manager Histórico de Revisão

Engenharia de Software. Ciclos de Vida do Software. 1. Sistemas

Linguagem de Programação I

Informação-Prova de Equivalência à disciplina de: Aplicações Informáticas B. 1. Introdução. Ensino Secundário. Ano letivo de 2011/12

TECNOLOGIA EM MECATRÔNICA INDUSTRIAL CONTROLADORES LÓGICOS PROGRAMÁVEIS

Arquitetura e Organização de Computadores

Curso Profissional de Gestão e Programação de Sistemas Informáticos. Programação e Sistemas de Informação. Módulo 1. 1ª Parte Prof. Sandra Pais Soares

Conceitos básicos de programação

INE 5323 Banco de Dados I

Introdução à Computação

Um Tradutor Dirigido por Sintaxe

Introdução à Programação com Python

Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão

LINHAS MESTRAS; FASES; DISCIPLINAS; PRINCÍPIOS E MELHORES PRÁTICAS.

Computação Gráfica Aula 0. Alexandre de Barros Barreto - Ms

Aritmética Computacional. Prof. Leonardo Barreto Campos 1

Arquitetura de Computadores Sistemas Operacionais I

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

Construção de uma via de dados, abordagem monociclo, multiciclo e pipeline

Maratona de Programação - Dicas Para Iniciantes

Novas tecnologias ao serviço de uma pedagogia por competências. Ana Isabel Gonçalves Eliseu Alves Manuela Mendes Sónia Botelho

Nosso Site.

Figura 8: modelo de Von Neumann

Introdução à Algoritmos. Aula 11

Título : B1 INTRODUÇÃO. Conteúdo : INTRODUÇÃO

RESOLUÇÃO. Artigo 2º - O Curso, ora criado, será oferecido no turno noturno, com 10 semestres de duração e com 50 vagas iniciais.

EMENTA. Curso de Projetos Microcontrolados utilizando Linguagem C.

Plano de Ensino PROBABILIDADE E ESTATÍSTICA APLICADA À ENGENHARIA - CCE0292

Compiladores II. Fabio Mascarenhas

Plano de Trabalho Docente Ensino Técnico

Avaliação da Satisfação do Cliente de Informática

Caminho de Dados e Controle. Prof. Leonardo Barreto Campos 1

UMA ABORDAGEM SOBRE A EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO COM ÊNFASE EM ORIENTAÇÃO A OBJETO E ORIENTAÇÃO A ASPECTO

Introdução à Programação com Python

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula

INTERPRETADOR DE FÓRMULAS DO CÁLCULO PROPOSICIONAL

PROGRAMAÇÃO ORIENTADA A OBJETOS -PLANO DE ENSINO. Prof. Angelo Augusto Frozza, M.Sc.

PROGRAMAÇÃO ORIENTADA A OBJETO INTRODUÇÃO

Introdução a Funções

Transcrição:

Montadores e Compiladores Prof. Idevar Gonçalves de Souza Júnior Conteúdo Programático Resumido Revisão da Arquitetura de Computadores Introdução a Teoria das Linguagens Compilação e Interpretação Análise Léxica, Sintática e Semântica Autômatos Finitos Determinísticos Árvore Sintática Notação Pós-Fixa Geração e Otimização de Código Introdução à Linguagem Assembly Bibliografia Básica: AHO, A. V.; SETHI, R.; ULLMAN, J. D. Compiladores: Princípios, Técnicas e Ferramentas. LTC Editora, Rio de Janeiro, 1995. PRICE, A. M. A., TOSCANI, S. S. Implementação de Linguagens de Programação: Compiladores, 2ª edição. Sagra Luzzatto, Porto Alegre, 2001. Complementar: MENEZES, P. B. Linguagens Formais e Automatos, 4ª edição. Sagra luzzato, Porto Alegre, 2001. TANENBAUM, ANDREW S. Organização Estruturada de Computadores. LTC, Rio de Janeiro 2000. WEBER, R. F. Arquitetura de Computadores Pessoais, 2ª edição. Sagra Luzzatto, Porto Alegre, 2001. 1

2

3

Linguagens de Programação Linguagens de Programação Linguagem (língua ou idioma): Meio mais eficaz de comunicação. Usuário: Pensamento não estruturado Linguagem de Programação Ligação Máquina: Lógica e Precisa A linguagem de programação fica mais fácil de ser compreendida se incluirmos construções próximas à linguagem humana (linguagem de alto nível) Computadores entendem linguagem de máquina, uma combinação de 0s e 1s. Os diversos tipos de tradutores realizam a conversão entre essas duas linguagens ou mais. Segundo o grau de independência da máquina 4

Segundo a forma de suas instruções Segundo as gerações Cronologicamente classificadas em 5 gerações: 1. Linguagens de Máquina 2. Linguagens Simbólicas (Assembly) 3. Linguagens Orientadas ao Usuário 4. Linguagens Orientadas à Aplicação 5. Linguagens de Conhecimento 1 e 2 Baixo Nível. As demais, alto nível. 1ª Geração de Linguagem Linguagem de máquina 1ºs computadores = programados em Linguagem Binária (0s e 1s) Programação complexa, cansativa e fortemente sujeita a erros. Comunicação direta com o computador em termos de bits. Cada instrução, em geral, era formada por uma operação e um ou dois endereços de registradores ou de memória. 5

2ª Geração de Linguagem Linguagens simbólicas ou de montagem Nesta linguagem, a maioria das instruções são representações simbólicas de instrução de máquina. Projetada para minimizar a dificuldade na programação em notação binária. O processo de um programa em linguagem simbólica requer tradução para a linguagem binária. Linguagem Assembly. IBM/360.30 - Cérebro Eletrônico Década de 70 Tamanho 32Kb de memória (16Kb Sistema Operacional) Linguagem Assembly Cartão Perfurado 3ª Geração Linguagem orientada ao usuário Procedimentais (procedurais ou imperativas): Baseada em procedimentos, uma seqüência de passos a serem seguidos para solucionar o problema. (BASIC, Visual Basic, PASCAL, ALGOL, ADA, C, C#, etc) Declarativas Funcionais: Baseada em funções recursivas A programação funcional envolve, essencialmente, a definição e a chamada de funções. (LISP) Lógicas: Baseada em Lógica Matemática São declarados fatos e cláusulas lógicas que permitem deduzir novas verdades a partir dos fatos conhecidos. O programador não detalha passos a serem seguidos. (PROLOG) 6

Procedimentais e declarativas Procedimental Lê a, b, c Calcula Delta=b^2-4ac Calcula X1=(-b+sqrt(Delta))/2a Calcula X2=(-b-sqrt(Delta))/2a Mostra X1,X2 Declarativa Função 1 Declaração Função 2 Declaração Função Delta (a,b,c) Declaração... Delta (1,2,3) 4ª Geração Orientada à aplicação As linguagens de 3ª geração foram projetadas para profissionais de processamento de dados. Sua depuração é mais demorada e a modificação de sistemas complexa para um usuário final. As linguagens de 4ª geração foram projetadas em resposta a esses problemas e com o objetivo de: 1. Facilitar a programação para os usuários finais. 2. Melhorar o processo de desenvolvimento de aplicações (maior desenvolvimento em menor tempo). 3. Facilitar a manutenção de aplicações. 4. Minimizar problemas de depuração. 5. Gerar códigos sem erros a partir de expressões de alto nível. 4ª Geração de Linguagem Introdução de mecanismos como: interação por vídeo (menus), preenchimento de formulário, construção de gráficos, estruturas de diálogo, mecanismos de verificação, dentre várias facilidades oferecidas. (LOTUS 1-2-3, Excel, SQL, etc. 7

5ª Geração de Linguagem As linguagens de 5ª geração são usadas principalmente na área de Inteligência Artificial. Essas linguagens facilitam a representação do conhecimento, que é essencial para a simulação de comportamentos inteligentes. Tradutores de Linguagens de Programação Tradutor, no contexto de linguagens de programação, é um sistema que aceita como entrada um programa escrito em uma linguagem de programação (L1) e produz um programa equivalente em outra linguagem de programação (L2). Programa Fonte Tradutor Programa Objeto Tradutores de Linguagens de Programação Podem ser classificados em: 1. Montadores (Assemblers) 2. Macro-Assemblers 3. Compiladores 4. Pré-Compiladores, Pré-Processadores ou Filtros 5. Interpretadores 8

Montadores (Assemblers) São aqueles tradutores que mapeiam instrução em linguagem simbólica (assembly) para instruções de linguagem de máquina. Geralmente mapeiam numa relação de 1 para 1 (uma instrução de linguagem simbólica para uma instrução em linguagem de máquina). Macro-Assemblers São Tradutores que mapeiam instruções em linguagem simbólica para linguagem de máquina Geralmente mapeiam numa relação de 1 para várias Compiladores São Tradutores que mapeiam programas escritos em linguagem de alto nível para programas equivalentes em linguagem simbólica ou de máquina. Programa Fonte Compilador Programa Objeto Tempo de Compilação Dados de Entrada Programa Objeto Resultados Tempo de Execução 9

Pré-Compiladores, Pré-Processadores ou Filtros São tradutores que efetuam conversão entre duas linguagens de alto nível. FORTRAN IV Nível G IBM Filtro FORTRAN IV Padrão ANSI Interpretadores Processadores que aceitam como entrada o código intermediário de um programa anteriormente traduzido e produzem o efeito de execução do algoritmo original, sem mapeá-lo em linguagem de máquina no disco. Programa Fonte Tradutor Programa Intermediário Interpretador Resultados Dados OBS: Alguns interpretadores trabalham diretamente sobre o código fonte Interpretadores Os interpretadores são geralmente menores que os compiladores e facilitam a implementação de construções complexas de linguagens de programação. No entanto, o tempo de execução de um programa interpretado é maior que o tempo necessário para executar um programa objeto (compilado) equivalente. 10

Exercícios Qual é a geração de linguagens mais utilizada atualmente pelos programadores? Classifique Montador, Compilador e Interpretador em ordem de vantagens (do mais vantajoso para o menos vantajoso), pelos seguintes parâmetros: - Velocidade - Tamanho - Portabilidade - Debugging (Depuração) - Facilidade de Programar Respostas 3ª geração. Velocidade: Montador > Compilador > Interpretador Tamanho: Montador > Compilador > Interpretador Portabilidade: Interpretador > Compilador > Montador Debugging: Interpretador > Compilador > Montador Facilidade de Programar: Interpretador = Compilador > Montador 11