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