9cm x 24cm
16,7cm x 24cm
C
Implementação de tipos de dados abstratos em C; algoritmos e estruturas de dados essenciais para escrever programas de média e elevada complexidade; novas secções sobre árvores, caminhos e circuitos.
M
Y
CM
MY
CY
CMY
K
Aprenda as regras e boas práticas na análise, conceção e desenvolvimento de aplicações orientadas pelos objetos, através de vários projetos de software e exercícios analisados e implementados em Java.
A geração de código-máquina é precedida de uma fase de análise do programa para garantir a correção do mesmo e construir uma estrutura que o represente. Num compilador, o processo de análise permite compreender muitas das limitações das linguagens de programação. Por outro lado, a geração de código permite compreender como os compiladores utilizam os processadores e a forma como a evolução dos processadores tem feito evoluir os compiladores. O livro aborda os diversos passos do desenvolvimento de um compilador, incluindo: A análise determinista linear com autómatos finitos para linguagens regulares e autómatos de pilha para uma análise ascendente e descendente; A realização de verificações semânticas e a construção da árvore sintática do programa analisado; A linearização das instruções para a geração de código direto para máquinas de pilha; A seleção e o escalonamento das instruções, bem como a reserva de registos, para máquinas de registos uniformes;
Com a leitura deste livro : Conheça o funcionamento interno de um compilador, quer ao nível da análise das linguagens a compilar, quer no que respeita à geração de código; Compreenda quais as razões de algumas limitações das linguagens compiladas; Acompanhe o desenvolvimento de um compilador simples, em C e em Java, com geração de código para bytecodes Java, MSIL .net, Pentium e arm; Domine os compiladores de compiladores lex, yacc, antlr e burg.
A otimização do código resultante, com base na análise do fluxo de controlo e de dados. Este livro reúne os aspetos mais importantes a ter em conta: como conceber uma boa experiência de jogo, o que caracteriza um jogo, a teoria de jogos, a indústria, como ser empreendedor, etc.
Uma obra que ajuda estudantes e profissionais a compreenderem os sistemas de gestão de bases de dados relacionais. Com apresentação dos conceitos fundamentais, inclui variados exemplos e exercícios.
Todo o processo de desenvolvimento é exemplificado, em C e Java, para uma linguagem de exemplo simples, com recurso às ferramentas lex, yacc, antlr e burg. Este livro é dirigido aos estudantes de nível universitário e profissional, produtores de software, programadores e utilizadores em geral que pretendam compreender de que forma o compilador converte programas descritos por linguagens de alto nível em código executável. Este livro disponibiliza ainda a correspondência dos principais termos técnicos para o Português do Brasil.
ISBN 978‐972‐722‐768‐6
9 789727 227686
Programas apresentados no livro disponíveis em www.fca.pt até este se esgotar ou ser publicada nova edição atualizada ou com alterações.
Compiladores
O compilador é uma ferramenta que converte, de uma forma eficiente, programas descritos por linguagens de alto nível em linguagem-máquina. O compilador é determinante no desempenho das aplicações, já que quase todo o código executado é compilado.
27mm
16,7cm x 24cm
9cm x 24cm
Pedro Reis Santos Professor Auxiliar do Departamento de Engenharia Informática do Instituto Superior Técnico (IST), onde é docente desde 1990. Lecionou as disciplinas de Complementos de Compiladores, Algoritmos e Estruturas de Dados, Programação por Objetos e Ambientes de Desenvolvimento. É regente da disciplina de Compiladores (IST/Taguspark).
Thibault Langlois Professor Auxiliar do Departamento de Informática da Faculdade de Ciências da Universidade de Lisboa (FCUL), onde é docente desde 2001. Lecionou e foi regente das disciplinas de Compiladores, Introdução à Programação (Java), Laboratórios de Programação (Java) e Programação I e II (em C). É regente das disciplinas de Linguagens Formais e Autómatos, Princípios de Programação (programação funcional, Haskell) e Desenvolvimento Centrado em Objetos (Java). Entre 1994 e 2001 foi docente do Departamento de Engenharia Eletrotécnica e Computadores do Instituto Superior Técnico, onde lecionou as disciplinas de Introdução à Programação, Algoritmos e Estruturas de Dados, Compiladores e Projeto de Compiladores.