1 - INTRODUÇÃO
II.1 Conceitos Fundamentais
II.2 Gerações das Linguagens de Programação
II.3 Linguagem de Programação
II.4 Sistema Operacional
II.5 Tradutores
II.5.1 Estrutura de um tradutor
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.1 Conceitos Fundamentais
Atualmente uma série de tarefas das nas mais
diversas áreas são realizadas através de um
computador ou algum sistema controlado por um
computador.
Exemplifique algumas tarefas realizadas por
este sujeito
1 - INTRODUÇÃO
Exemplifique algumas tarefas realizadas por
este sujeito.
Uma delas é programar o =>
1 - INTRODUÇÃO
II.1 Conceitos Fundamentais
O que é um programa?
É um conjunto de instruções organizadas
logicamente.
Como se estabelece uma comunicação?
Oi! Como vai
você?
Vou bem! E
você?
É necessário a utilização de uma Linguagem para que
haja entendimento entre os interlocutores.
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.1 Conceitos Fundamentais
Hi! How are
you?
O que?
Poxa! Ninguém se entende! Por que?
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.1 Conceitos Fundamentais
Hi! How are
you?
E aíComo
Meu!vai
Olá!
Como
vai?
você?
Vou bem! E
você?
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.1 Conceitos Fundamentais
Olá! Como vai
Fine!
você?
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.1 Conceitos Fundamentais
Oi máquina
Natural
Linguagem de
programação:
Alto Nível
1 - INTRODUÇÃO
1101 0110 1111=D6F
Linguagem de
Máquina
Tradução:
Compiladores
Interpretadores
Baixo Nível
1 - INTRODUÇÃO
II.2 Gerações das Linguagens de Programação
1ª Geração Linguagem de máquina;
2ª Geração Assembler, linguagem montadora;
3ª Geração Linguagem de alto nível orientada
para os procedimentos, linguagem simbólica
de composição do raciocínio;
4ª Geração diversificação das linguagens de
programação. Linguagens de altíssimo nível,
orientadas para problemas.
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.3 Linguagem de Programação
Definição: é um conjunto de termos (vocábulos) e
regras (sintaxe) que permitem a formulação de
instruções (programas para serem executadas pelo
computador)
Tipos de linguagens:
• Linguagem de Máquina: é única entendida pelo
computador, sendo formada por instruções em
código binário.
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.3 Linguagem de Programação
• Linguagem de baixo nível: são aquelas cujo os
códigos são muito próximos aos usados pela
máquina. São utilizadas no desenvolvimento de
aplicações que interagem
diretamente com o hardware necessitando alta velocidade de execução.
A estas linguagens dá-se o
nome de Linguagem Montadora (Assembler – Assembly Language).
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.3 Linguagem de Programação
• Linguagem de alto nível: são aquelas cujo os códigos
são muito próximos aos utilizados pela linguagem
humana.
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.3 Linguagem de Programação
Proximidade entre a linguagem e a máquina.
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.3 Linguagem de Programação
Relação entre o usuário e o computador através da
linguagem.
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.4 Sistema Operacional
Definição: Conjunto de programas integrados, cuja
tarefa é colocar a máquina em operação e
proporcionar um ambiente para que o usuário
possa se comunicar com ela.
Histórico dos S.O´s
1° Nível (anos 50): Auxiliar programas nas operações
de entrada e saída de dados e na tradução de
programas-fontes.
2° Nível (anos 60): auxiliar na tradução de programas
mais evoluídos, programas de serviço para
transferência de informação entre periféricos.
3°Nível (anos 60): base para os tradutores de altíssimo
rendimento.
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.4 Sistema Operacional
Estrutura básica de um sistema operacional.
Os programas de um S.O. podem ser divididos em
grupos:
Programas de controle: Coordenam o funcionamento
de todos os elementos físicos (hardware) do
computador (CPU, processamento de I/O e
periféricos).
Gerenciamento de dados: Controlar e coordenar todas
as operações relativas à movimentação de dados.
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.4 Sistema Operacional
Gerenciamento de serviços/trabalhos: Controlar os
programas de usuários para execução e reexecução
e atribuição a periféricos.
Gerenciamento
de
sistemas:
Coordenar
e
supervisionar o funcionamento dos demais
programas tais como: proteção de memória,
identificação de erros na memória e de erros de
programa (quando a U.C (Unidade de Controle)
não reconhecer o comando).
Programas de processo: Usados para dar apoio e
fornecer programas para execução: tradutores,
utilitários.
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.5 Tradutores
Fonte
Tradução
Entrada
Objeto
Linkedição
Executável
Executável
Saída
Compilador
Fonte
Interpretação
Executável
Entrada
Saída
Interpretador
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.5 Tradutores
Fonte
Tradutor
Byte Code
Código
Intermediário
Entrada
Java
1 - INTRODUÇÃO
Máquina
Virtual
Saída
1 - INTRODUÇÃO
II.5 Tradutores
Finalizando: A tradução dos programas pode se feitas
de três formas:
Montadores (Assembler): Transformam os programas
escritos em linguagem de baixo nível (Assembly)
em programas-objetos.
Compiladores: Transforma programas escritos em
linguagem de alto nível (programa-fonte) em
programas-objetos, que após transformado pelo
Linker, poderá ser executado pelo computador
(arquivo tipo EXE).
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.5 Tradutores
Interpretadores: Tem as mesmas características dos
compiladores, só que não geram programasobjetos. A tradução é feita diretamente do
programa fonte. É mais demorado que o
compilador, uma vez que interpreta cada
comando ao executá-lo.
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.5 Tradutores
II.5.1 – Estrutura de um Tradutor
1 - INTRODUÇÃO
II.5 Tradutores
1 - INTRODUÇÃO
II.5.1 – Estrutura de um Tradutor
Fluxo de Caracteres
Analisador Léxico
Tabela de Símbolos
Fluxo de tokens
Analisador Sintático
Árvore Sintática
Analisador Semântico
1 - INTRODUÇÃO
Árvore Sintática
Processo de
Análise =
front-end
compiler
II.5.1 – Estrutura de um Tradutor
II.5 Tradutores
1 - INTRODUÇÃO
Árvore Sintática
Gerador de Código
Intermediário
Representação
Intermediária
Tabela de Símbolos
Otimização de Código
Depende da Máquina
Representação
Intermediária
Gerador de Código
Código da Máquina Alvo
Otimização de Código
independe da Máquina
Código da Máquina Alvo
1 - INTRODUÇÃO
Processo de
Sítese =
back-end
compiler
II.5.1 – Estrutura de um Tradutor
II.5 Tradutores
1 - INTRODUÇÃO
Tabela de Símbolos: É responsável pelo
armazenamento das informações de todo o
programa fonte e é utilizada por todas as fases do
compilador.
1 - INTRODUÇÃO
II.5.1.1 – Análise Léxica
II.5 Tradutores
1 - INTRODUÇÃO
Identifica uma sequência de caracteres: “token”.
• Palavra reservada;
• Delimitadores;
• Identificadores
Inicia a construção da tabela de símbolos e envia
mensagem de erros.
Exemplo:
While i<100 do i:=j+1;
[while,][id,7][<,][cte,13][do,][id,7][:=,][id,12][id,7][;, ]
1 - INTRODUÇÃO
II.5.1.2 – Análise Léxica
II.5 Tradutores
1 - INTRODUÇÃO
[while,][id,7][<,][cte,13][do,][id,7][:=,][id,12][id,7][;, ]
• palavras reservadas, operadores e delimitadores
são representados pelos próprios símbolos;
• Identificadores de variáveis e constantes
numéricas são representados pelo parn [classe
do símbolo, índice de tabela].
1 - INTRODUÇÃO
II.5 Tradutores
1 - INTRODUÇÃO
II.5.1.3 – Análise Sintática
Verifica se a estrutura gramatical (frase)
(expressões, comandos) estão de acordo com
as regras da linguagem.
• Processo de varredura (parsing)
• Produz a árvore de derivação resultante da
aplicação das regras gramaticais.
1 - INTRODUÇÃO
II.5 Tradutores
1 - INTRODUÇÃO
II.5.1.4 – Análise Semântica
Verifica se as estruturas do programa irão fazer
sentido durante a execução.
Exemplo:
While <expressão> do <comando>
1 - INTRODUÇÃO
II.5 Tradutores
1 - INTRODUÇÃO
II.5.1.4 – Geração de Código Intermediário
Utiliza a representação interna produzida pelo
analisador sintático e gera como saída uma
sequência de código. Esta sequência pode ser o
código final ou um código intermediário.
A geração do código intermediário possui algumas
vantagens:
• Otimização do código intermediário, obtendose um código final mais eficiente;
• Resolve, gradualmente, as dificuldades da
passagem do código fonte para o objeto.
1 - INTRODUÇÃO
II.5.1.5 – Geração de Código Intermediário
Exemplo:
While i<100 do i:=j+1
1 - INTRODUÇÃO
II.5 Tradutores
1 - INTRODUÇÃO
II.5 Tradutores
1 - INTRODUÇÃO
II.5.1.6 – Otimização de Código
Exemplo:
While i<100 do i:=j+1
Otimizado
1 - INTRODUÇÃO
Anterior
II.5 Tradutores
1 - INTRODUÇÃO
II.5.1.7 – Geração de Código Objeto
Exemplo:
while i<100 do i:=j+1
Otimizado
Código baseado na linguagem simbólica de um PC
8086
Objeto
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.5 Tradutores
II.5.1.8 – Gerencia de Tabelas
Algumas tabelas são fixas como de paAlavras
reservadas, delimitadores, etc..
É de grande importância a tabela montada
durante a análise do programa fonte:
• Declaração de variáveis;
• Declaração dos procedimentos ou sub-rotinas;
• Parâmetros de sub-rotinas; etc.
Dados coletados e armazenados na tabela
dependem da linguagem.
1 - INTRODUÇÃO
1 - INTRODUÇÃO
C o n c l u s õ e s.
Perguntas?
1 - INTRODUÇÃO
1 - INTRODUÇÃO
1 - INTRODUÇÃO
Download

1.Introducao