Aula 23: Noções de Compilação, Montagem, Link-edição, e Interpretação
|
|
- Ronaldo Minho Bennert
- 7 Há anos
- Visualizações:
Transcrição
1 Aula 23: Noções de Compilação, Montagem, Link-edição, e Interpretação Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 1 / 30
2 Revisão Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 2 / 30
3 Nas Aulas Anteriores Falamos sobre linguagens de montagem Linguagens de baixo nível Forte correspondência com as instruções do processador Facilitam tarefa de desenvolver programas Não é preciso escovar bits Definimos uma linguagem de montagem para o nosso processador E vimos como usá-la para escrever programas simples Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 3 / 30
4 Na Aula de Hoje Vamos falar sobre o processo de tradução de um código-fonte em linguagem de alto nível para as instruções executadas pelo processador Vamos discutir as várias etapas deste processo Compilação Montagem Link-edição Carregamento Discussão apenas introdutória Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 4 / 30
5 Motivação e Visão Geral Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 5 / 30
6 Por Que Linguagens de Alto Nível? O advento das linguagens de montagem simplificou a tarefa de programação Programador não era mais forçado a lidar diretamente com os bits das instruções Complicadores, como endereços de saltos, eram tratados automaticamente Através de labels com nomes intuitivos Houve algum ganho em portabilidade também Se o conjunto de instruções e a linguagem de montagem fossem compatíveis, código podia ser aproveitado Mas isso é suficiente? Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 6 / 30
7 Por Que Linguagens de Alto Nível? (II) Programar no nível de instruções de máquina ainda é árduo Instruções muito elementares Tarefas complexas requerem longas sequências de instruções Trechos de código podem facilmente gerar efeitos colaterais Nem sempre desejados ou esperados Depuração e manutenção do código também são problemáticas Códigos longos e com baixa legibilidade Código não é facilmente mapeável para os algoritmos implementados Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 7 / 30
8 Por Que Linguagens de Alto Nível? (III) Idealmente, gostaríamos de um linguagem que: Fosse mais compacta: código-fonte menor Fosse mais legível: representação mais direta dos algoritmos Possuísse macro-comandos: tarefas comuns descritas em uma linha Permitisse abstrações: utilização de conceitos/estruturas mais abstratas, distantes do hardware real Permitisse fácil portabilidade: mesmo código-fonte, diferentes processadores Estas necessidades deram origem às Linguagens de Alto Nível Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 8 / 30
9 Linguagens de Alto Nível: Exemplos int factorial(int n) { if (n == 0) return 1; else return n * factorial (n - 1); } (defun factorial (n) (if (= n 0) 1 (* n (factorial (- n 1))) ) ) function fact(n: integer): longint; begin if (n = 0) then fact := 1 else fact := n * fact(n - 1); end; Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 9 / 30
10 Linguagens de Alto Nível: Código-Fonte vs Código Executável Os comandos de uma linguagem de alto nível são muito complexos para os processadores É preciso quebrá-los em instruções mais básicas A tarefa de transformar um código-fonte em linguagem de alto nível para um código executável é automatizada Feita por outros programas já prontos Normalmente, atribuímos esta tarefa a um programa chamado de compilador Mas esta afirmação não é correta É uma simplificação de um processo mais complexo Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 10 / 30
11 Processo de Geração do Executável Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 11 / 30
12 Detalhando as Etapas Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 12 / 30
13 Processo de Geração do Executável: Compilação Primeira fase do processo Consiste da tradução da linguagem de alto nível para a linguagem de montagem do processador Mas os bits das instruções ainda não são gerados A compilação, por sua vez, é dividida em etapas: Análise léxica Análise sintática Análise de escopo e tipos Geração de código Otimização Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 13 / 30
14 Processo de Geração do Executável: Compilação (II) As fases de análise (léxica, sintática, escopo e tipos) verificam se o código-fonte é válido Nesta fase, são acusados erros como: Caracteres inválidos (erro léxico) Falta de ponto-e-vírgula (erro sintático) Variável não declarada (erro de escopo) Incompatibilidade de tipos (erro de tipo) eg, tentar atribuir um valor real a uma variável do tipo string Em caso de erros, o compilador não é capaz de entender o programa Tradução é impossível Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 14 / 30
15 Processo de Geração do Executável: Compilação (III) A geração de código é onde a tradução em si ocorre A semântica do código-fonte é analisada pelo compilador Sequências de instruções na linguagem de montagem são geradas, correspondendo à mesma semântica Código em linguagem de montagem deve necessariamente ter a mesma semântica do código em alto nível Fazer tudo o que o código-fonte original descreve E apenas o que ele descreve Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 15 / 30
16 Processo de Geração do Executável: Compilação (IV) A última etapa da compilação é a otimização Compilador verifica se código em linguagem de montagem pode ser melhorado Sem alterar sua semântica Exemplos de técnicas de otimização de código: Expandir repetições Alterar ordem de instruções para evitar flushes do pipeline Detectar (e excluir) código morto Alterar ordem de acesso à memória para melhorar acerto da cache Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 16 / 30
17 Processo de Geração do Executável: Montagem Uma vez gerado traduzido da linguagem de alto nível para a linguagem de montagem, código precisa ser montado Isto é, algum programa precisa traduzi-lo da representação textual para os bits das instruções Este programa é chamado de montador Ou assembler, em inglês Mas a saída do montador ainda não é o código executável final É o chamado código-objeto Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 17 / 30
18 Processo de Geração do Executável: Montagem (II) Dentre as tarefas do montador, podemos citar: Substituir mnemônicos e outros identificadores textuais por correspondentes numéricos (eg, opcodes) Substituir labels por endereços de memória numéricos Reservar espaço de memória para instruções e dados Converter constantes numéricas para representações binárias Examinar correção das instruções eg, se constantes numéricas não são grandes demais eg, se identificadores dos registradores são válidos Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 18 / 30
19 Processo de Geração do Executável: Link-Edição Programas em linguagens de alto nível raramente são auto-contidos Isto é, nem todas as instruções a serem executadas se encontram descritas no código-fonte É comum usarmos bibliotecas Conjuntos de funções externas Disponíveis para facilitar a escrita dos programas eg, funções para impressão de mensagens em tela Em algum ponto da geração do código executável, alguém precisa substituir estas referências pelas instruções correspondentes Papel do ligador ou linkeditor Ou ainda linker, em inglês Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 19 / 30
20 Processo de Geração do Executável: Link-Edição (II) Linkeditor recebe como entrada conjunto de arquivos de código-objeto Embora individualmente cada arquivo não seja auto-contido, em conjunto eles precisam ser Isto é, todas as referências precisam ser resolvidas para sequências de instruções presentes no conjunto Linkeditor pega os trechos relevantes de cada arquivo e monta um único arquivo O Arquivo Executável Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 20 / 30
21 O Loader Após a link-edição, o programa executável é armazenado na forma de uma arquivo Este arquivo normalmente é armazenado em alguma memória não-volátil HD, pendrive, cartão de memória Antes de executarmos o programa, precisamos carregar as instruções do arquivo para a MP Tarefa realizada por um programa especial, chamado loader Cada SO possui seu próprio loader Tecnicamente, esta etapa não faz parte do processo de geração do executável Mas ela pode auxiliar em um caso particular Chamado de ligação dinâmica Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 21 / 30
22 Ligação Dinâmica vs Estática Quando o link-editor inclui o código de uma função externa no executável gerado, dizemos que houve uma ligação estática Nem sempre ele faz isso Algumas vezes, é interessante não fazer esta inclusão Ao invés disso, usamos a chamada ligação dinâmica O executável gerado possui apenas uma referência à função externa necessária O loader, ao carregar o executável, carrega também o código da biblioteca que implementa a função externa Processo ocorre apenas quando o programa é executado E precisa ser refeito a cada nova execução Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 22 / 30
23 Ligação Dinâmica vs Estática (II) Mas por que quereríamos usar ligação dinâmica? Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 23 / 30
24 Ligação Dinâmica vs Estática (II) Mas por que quereríamos usar ligação dinâmica? Uma das principais vantagens é a redução do tamanho do arquivo executável Se adicionarmos o código de todas as funções externas, o executável aumenta Algumas funções/bibliotecas são comuns a vários programas em um mesmo computador eg, quantos programas em Pascal não usam a função println()? Ao invés de replicar o código destas funções em todos os programas, guardamos este código na forma de uma Biblioteca Compartilhada Arquivos dll no windows e so no Linux Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 23 / 30
25 Interpretação Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 24 / 30
26 Interpretação Programas em linguagens como C e Pascal precisam ser traduzidos para formatos executáveis Mas nem toda linguagem funciona assim Em algumas linguagens, usamos o conceito de interpretador Chamadas de Linguagens Interpretadas Estas linguagens não são previamente traduzidas Ao contrário, um programa especial, chamado interpretador, lê o código-fonte e o executa diretamente Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 25 / 30
27 Interpretação (II) Embora seja um processo diferente, o interpretador guarda semelhanças com um compilador Fases de análise léxica, sintática e de escopo e tipo são também executadas Mas o interpretador faz isso linha a linha (ou bloco a bloco) durante a execução Há várias linguagens interpretadas bastante utilizadas Exemplos: Python Perl TCL Bash, sh, e similares Matlab Javascript PHP Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 26 / 30
28 Linguagens Interpretadas vs Compiladas Programas em linguagens interpretadas apresentam vantagens: São normalmente bastante portáveis Se o interpretador existe, o programa irá rodar Podem ser pequenos, comparados com correspondentes compilados Muito da complexidade recai sobre o interpretador Mas há desvantagens? Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 27 / 30
29 Linguagens Interpretadas vs Compiladas Programas em linguagens interpretadas apresentam vantagens: São normalmente bastante portáveis Se o interpretador existe, o programa irá rodar Podem ser pequenos, comparados com correspondentes compilados Muito da complexidade recai sobre o interpretador Mas há desvantagens? Execução é mais lenta, por ocorrer concomitantemente com a interpretação Requer mais memória, por depender do carregamento do interpretador Alguns erros facilmente detectáveis via compilação podem demorar a se manifestar na execução Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 27 / 30
30 Usar Assembly ou Linguagem de Alto Nível? Como um programador, em que linguagem você deve programar? Em uma linguagem de alto nível? Ou diretamente na linguagem de montagem (assembly)? Na enorme maioria das vezes, a resposta é fácil Linguagens de alto nível apresentam muitas vantagens: Maior legibilidade Maior portabilidade Maior modularidade Código-fonte menor Melhores abstrações Então para que estudamos linguagem de montagem? Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 28 / 30
31 Usar Assembly ou Linguagem de Alto Nível? (II) Em certos nichos específicos de programação, a linguagem de montagem ainda é uma escolha comum Alguns possíveis motivos: Programas compilados ainda precisam ser traduzidos para instruções Logo, precisamos de compiladores e de quem os escreva Em algumas plataformas, é a única linguagem disponível Já foi mais comum, mas ainda acontece Permite controle sobre exatamente quais instruções serão executadas Importante em certos códigos particulares Ocorre, por exemplo, em certas partes do código de um SO Implementação diretamente em linguagem de montagem pode ser mais eficiente eg, código menor, programa mais rápido Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 29 / 30
32 Assembly e Desempenho É preciso cuidado ao fazer afirmações sobre a eficiência de programas em assembly vs linguagens de alto nível Assembly certamente permite mais controle sobre o código executável final Mas isso pode ser bom ou ruim Um programador experiente em assembly pode ser capaz de gerar um código mais eficiente para uma tarefa particular Por outro lado, métodos de otimização de código em compiladores se tornam cada vez mais eficazes É comum que código gerado por um compilador seja mais eficiente que aquele escrito em assembly por um programador médio Diego Passos (UFF) Compilação, Montagem, Link-edição, Interpretação FAC 30 / 30
PROGRAMAÇÃO I. Introdução
PROGRAMAÇÃO I Introdução Introdução 2 Princípios da Solução de Problemas Problema 1 Fase de Resolução do Problema Solução na forma de Algoritmo Solução como um programa de computador 2 Fase de Implementação
Leia maisLinguagens 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 maisConversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação
Conversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação Para executar uma tarefa qualquer, um computador precisa receber instruções precisas sobre o que fazer. Uma seqüência adequada
Leia maisCompiladores. 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 maisFerramentas Programação. UDESC - Prof. Juliano Maia 1
Ferramentas Programação UDESC - Prof. Juliano Maia 1 Índice Seção 1 Linguagens de Programação Seção 2 Interpretador Seção 3 Compilador / Linkeditor Seção 4 Ambientes de Desenvolvimento UDESC - Prof. Juliano
Leia maisSâmia Rodrigues Gorayeb. Arquitetura de Computadores Linguagem de Máquina
Sâmia Rodrigues Gorayeb Arquitetura de Computadores Linguagem de Máquina Arquitetura de Computadores Agenda: Linguagem de máquina 1. Introdução 2. Característica 3. Programas Compilados 4. Programas Interpretados
Leia maisIntrodução à Computação: Máquinas Multiníveis
Introdução à Computação: Máquinas Multiníveis Beatriz F. M. Souza (bfmartins@inf.ufes.br) http://inf.ufes.br/~bfmartins/ Computer Science Department Federal University of Espírito Santo (Ufes), Vitória,
Leia maisOFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO
OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO Prof. Msc. Carlos José Giudice dos Santos carlos@oficinadapesquisa.com.br www.oficinadapesquisa.com.br Compiladores e Interpretadores Compiladores
Leia maisProjeto 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 maisCompiladores. 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 maisAula 2 - Programação de Computadores - CI208 1/21
Aula 2 - Programação de Computadores - CI208 Professor: Leonardo Gomes leonardog@inf.ufpr.br Universidade Federal do Paraná Brazil 2016 - Segundo semestre Aula 2 - Programação de Computadores - CI208 1/21
Leia maisMé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 maisProgramaçã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 maisUniversidade Católica de Pelotas Bacharelado em Ciência da Computação Linguagens Formais e Autômatos TEXTO 6 Introdução à Compilação
Universidade Católica de Pelotas Bacharelado em Ciência da Computação 364018 Linguagens Formais e Autômatos TEXTO 6 Introdução à Compilação Prof. Luiz A M Palazzo Maio de 2011 Um COMPILADOR é um programa
Leia maisAlgoritmos e Programação
Universidade Federal do Vale do São Francisco Curso de Engenharia da Produção / Elétrica Parte 04 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti www.twitter.com/jorgecav
Leia maisUniversidade 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 maisOlá pessoal, Hoje vamos entender os conceitos sobre linguagem de programação. Definição, tipos de linguagens e as linguagens mais utilizadas
Olá pessoal, Hoje vamos entender os conceitos sobre linguagem de programação. Definição, tipos de linguagens e as linguagens mais utilizadas atualmente. Uma linguagem de programação é um conjunto padronizado
Leia maisProgramaçã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 maisSistemas Operacionais
Sistemas Operacionais CAP 2: Conceitos de Hardware e Software Prof. MSc. Diego R. Moraes diegorm@anhanguera.com Download de todo conteúdo da disciplina https://sites.google.com/site/diegorafaelmoraes/downloads
Leia maisPuca Huachi Vaz Penna
BCC201 Introdução à Computação Turmas 31, 32 e 33 Puca Huachi Vaz Penna Departamento de Computação Universidade Federal de Ouro Preto http://www.decom.ufop.br/puca puca@iceb.ufop.br Aula 2 Introdução:
Leia maisInfraestrutura de Hardware. Funcionamento de um Computador
Infraestrutura de Hardware Funcionamento de um Computador Computador: Hardware + Software Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de alto nível é
Leia maisProjeto 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 maisIntrodução a Ciência da Computação
Ministério da Educação Universidade Tecnológica Federal do Paraná Câmpus Santa Helena Introdução a Ciência da Computação Bacharelado em Ciência da Computação Professor : Agnaldo da Costa 1 Camadas do Usuário
Leia maisProgramaçã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 maisProgramação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR
Programação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR Introdução Compiladores e interpretadores são formas de tradução de um código geralmente de alto nível (escrito em uma linguagem de
Leia maisProgramaçã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 maisCOMPILAÇÃ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 maisDesenvolvimento de Aplicações Desktop
Desenvolvimento de Aplicações Desktop Conceitos Básicos de Programação Professor: Charles Leite O Desenvolvimento de Programas A programação consiste em indicar como o computador (hardware) deve trabalhar
Leia maisIntrodução à Programação
Introdução à Programação Aula 02 Algoritmos e Ciclo de Desenvolvimento Edirlei Soares de Lima Modelo de um Computador Linguagem de Máquina Um processador executa instruções de máquina.
Leia maisCompiladores Ambiente de Execução
Compiladores Ambiente de Execução Fabio Mascarenhas 2015.1 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica
Leia maisLinguagens de Programação
Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Linguagens de Programação DCA0800 - Algoritmos e Lógica de Programação Heitor Medeiros 1 Tópicos da aula
Leia maisCompiladores Geração de Código
Compiladores Geração de Código Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica
Leia maisINF 1005 Programação I
INF 1005 Programação I Aula 02 Algoritmos e Ciclo de Desenvolvimento Edirlei Soares de Lima Modelo de um Computador Linguagem de Máquina Um processador executa instruções de máquina
Leia maisExistem três categorias principais de linguagem de programação: linguagem de máquina, linguagens assembly e linguagens de alto nível.
Aula 3 SOFTWARE (programas) Um programa (software) consiste em uma sequência de instruções escritas numa linguagem precisa chamada linguagem de programação. Estas instruções são traduzidas em um compilador,
Leia maisSistema Computacional
Algoritmos e Lógica de Programação Conceitos Básicos Abstração Reinaldo Gomes reinaldo@cefet-al.br O que é um? Integração de componentes atuando como uma entidade, com o propósito de processar dados, i.e.
Leia maisAlgoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza
Algoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza givanaldo.rocha@ifrn.edu.br http://docente.ifrn.edu.br/givanaldorocha Conceitos Lógica de Programação técnica de encadear pensamentos
Leia maisProgramaçã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 maisAlgoritmos. Prof. Jonatas Bastos Site:
Algoritmos Prof. Jonatas Bastos Email: jonatasfbastos@gmail.com Site: http://jonatasfbastos.wordpress.com/ 1 Dúvidas! p p p Como os computadores entendem os algoritmo? Os computadores não entendem os passos
Leia maisCOMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto
COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES Adão de Melo Neto 1 INTRODUÇÃO Desde 1950, houveram poucas inovações significativas nas áreas de arquitetura e organização de computadores. As principais
Leia maisArquiteturas RISC e CISC. Adão de Melo Neto
Arquiteturas RISC e CISC Adão de Melo Neto 1 Arquitetura RISC Arquitetura RISC. É um das inovações mais importantes e interessantes. RISC significa uma arquitetura com um conjunto reduzido de instruções
Leia maisMemória. Arquitetura de Von Neumann. Universidade do Vale do Rio dos Sinos Laboratório I Prof.ª Vera Alves 1 CPU. Unidade de controle ULA
Universidade do Vale do Rio dos Sinos Laboratório I Prof.ª Vera Alves 1 Arquitetura de Von Neumann CPU Unidade de controle Unidade de entrada Unidade de saída ULA Von Neumann era um gênio. Falava muitos
Leia maisCompiladores. Fabio Mascarenhas
Compiladores Fabio Mascarenhas 2017.1 http://www.dcc.ufrj.br/~fabiom/comp Introdução Compiladores x Interpretadores Offline x Online Um compilador transforma um programa executável de uma linguagem fonte
Leia maisIntrodução ao Python. Programa Computacional
Programa Computacional É um algoritmo escrito em uma linguagem computacional (C, Fortran, Pascal, MATLAB, Python, etc.). É a tradução do algoritmo para uma linguagem que será interpretada pelo computador.
Leia mais16. Compilação no Linux
16. Compilação no Linux 16.1 Compilador X Interpretador Um código fonte pode ser compilado ou interpretado. Compiladores e interpretadores tratam o código de maneira diferente. Interpretador: Lê o código
Leia maisProf. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior
Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior Meio pelo qual se pode indicar os passos que devem ser realizados pelo computador para resolver problemas; Através da linguagem,
Leia maisNomes, 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 maisProf. Adriano Maranhão COMPILADORES
Prof. Adriano Maranhão COMPILADORES LINGUAGENS: INTERPRETADAS X COMPILADAS Resumo: Linguagem compilada: Se o método utilizado traduz todo o texto do programa, para só depois executar o programa, então
Leia maisIntroduçã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 maisProcedimentos. Sistemas de Computação
Procedimentos Chamada de Procedimentos Utilização de procedimentos: Facilitar entendimento do programa Reutilização de código Passos necessários para execução de um procedimento: Os parâmetros a serem
Leia maisConceitos 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 maisNoçõ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 maisNoçõ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 maisTecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)
Tecnólogo em Análise e Desenvolvimento de Sistemas Sistemas Operacionais (SOP A2) Conceitos de Hardware e Software Referências: Arquitetura de Sistemas Operacionais. F. B. Machado, L. P. Maia. Editora
Leia maisConceitos 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 maisPROGRAMAÇÃ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 maisAula 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 maisProgramaçã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 maisNomes, 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 maisArquitetura e Organização de computadores
Arquitetura e Organização de computadores Aula 1: Organização e evolução de computador, parte 1 Prof. MSc. Pedro Brandão Neto pedroobn@gmail.com Sistemas de Informação - UNDB Introdução Computador Digital
Leia maisINE5421 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 maisAula 1: Apresentação do Curso
Aula 1: Apresentação do Curso Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Apresentação do Curso FAC 1 / 30 Estrutura da Disciplina Diego
Leia maisCompiladores I Prof. Ricardo Santos (cap 1)
Compiladores I Prof. Ricardo Santos (cap 1) Compiladores Linguagens de programação são notações que permitem descrever como programas devem executar em uma máquina Mas, antes do programa executar, deve
Leia maisConstruçã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 maisCompiladores. Introdução à Compiladores
Compiladores Introdução à Compiladores Cristiano Lehrer, M.Sc. Introdução (1/2) O meio mais eficaz de comunicação entre pessoas é a linguagem (língua ou idioma). Na programação de computadores, uma linguagem
Leia maisAULA 03: FUNCIONAMENTO DE UM COMPUTADOR
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 03: FUNCIONAMENTO DE UM COMPUTADOR Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação O QUE É UM COMPUTADOR?
Leia mais3. 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 maisAula 1: Apresentação do Curso
Aula 1: Apresentação do Curso Fernanda Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Fernanda Passos (UFF) Apresentação do Curso FAC 1 / 30 Estrutura da Disciplina
Leia maisConceitos básicos sobre computadores (continuação)
SSC0101 - ICC1 Teórica Introdução à Ciência da Computação I Conceitos básicos sobre computadores (continuação) Prof. Vanderlei Bonato Prof. Cláudio Fabiano Motta Toledo Sumário O que é um computador e
Leia maisLinguagens de Programação Aula 11
Linguagens de Programação Aula 11 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Uma definição de subprograma descreve as ações representadas pelo subprograma Subprogramas podem ser funções
Leia maisCompiladores Ambiente de Execução
Compiladores Ambiente de Execução Fabio Mascarenhas 2015.2 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica
Leia maisEA876 - Introdução a Software de Sistema
A876 - Introdução a Software de Sistema Software de Sistema: conjunto de programas utilizados para tornar o hardware transparente para o desenvolvedor ou usuário. Preenche um gap de abstração. algoritmos
Leia maisLAPRO 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 maisINTRODUÇÃO À LINGUAGEM C
INTRODUÇÃO À LINGUAGEM C Prof. Bruno Feijó, Dept. de Informática, PUC-Rio (2018) C foi criado no início da década de 70, quando os programas mais eficientes eram escritos em linguagem Assembly, bem próxima
Leia maisIntrodução à programação em PASCAL. Aula de 22/10/2001. Nota: Conjunto de slides baseados nas transparências utilizadas em PEDA em anos anteriores
Introdução à programação em PASCAL Aula de 22/10/2001 Nota: Conjunto de slides baseados nas transparências utilizadas em PEDA em anos anteriores Conteúdo Conceito de linguagem de programação O processo
Leia maisLinguagens 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 maisLinguagens de Programação
Universidade Federal do Rio Grande do Norte Centro de Tecnologia Departamento de Computação e Automação Linguagens de Programação Professor Responsável: Luiz Affonso Henderson Guedes de Oliveira Prof.
Leia maisInformática I. Aula 14. Aula 14-10/10/2007 1
Informática I Aula 14 http://www.ic.uff.br/~bianca/informatica1/ Aula 14-10/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 maisProgramação Estruturada Aula - Introdução a Linguagem C
Programação Estruturada Aula - Introdução a Linguagem C Prof. Flávio Barros flavioifma@gmail.com www.flaviobarros.com.br 2 HISTÓRICO DA LINGUAGEM C HISTÓRICO DA LINGUAGEM C Como tudo iniciou... C iniciou
Leia maisParadigmas 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 maisLinguagem C Princípios Básicos (parte 1)
Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos
Leia maisLinguagens 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 maisIntrodução a Programação de Jogos
Introdução a Programação de Jogos Aula 02 Algoritmos e Ciclo de Desenvolvimento Edirlei Soares de Lima Modelo de um Computador Linguagem de Máquina Um processador executa instruções
Leia maisFundamentos 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 maisLinguagens 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 maisComo construir um compilador utilizando ferramentas Java
Como construir um compilador utilizando ferramentas Java p. 1/2 Como construir um compilador utilizando ferramentas Java Aula 1 - Introdução Prof. Márcio Delamaro delamaro@icmc.usp.br Como construir um
Leia maisORGANIZAÇÃO DE COMPUTADORES
ORGANIZAÇÃO DE COMPUTADORES AULA 03 PROFº RITIELLE SOUZA DISTRIBUIÇÃO LÓGICA DISTRIBUIÇÃO LÓGICA Arquitetura de Von Neumann Uma unidade central de processamento recebe informações através de uma unidade
Leia maisTÉCNICO EM MANUTENÇÃO E SUPORTE EM INFORMÁTICA FORMA SUBSEQUENTE. Professora: Isabela C. Damke
TÉCNICO EM MANUTENÇÃO E SUPORTE EM INFORMÁTICA FORMA SUBSEQUENTE Professora: Isabela C. Damke isabeladamke@hotmail.com Linguagem de Programação Uma linguagem de programação é um conjunto de símbolos (
Leia maisPROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95
PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95 Exercícios de revisão Lista 01: a) Monte um mapa conceitual indicando as relações entre os seguintes conceitos, no contexto do assunto visto em aula:
Leia maisAmbiente de desenvolvimento
Linguagem C Ambiente de desenvolvimento Um programa em C passa por seis fases até a execução: 1) Edição 2) Pré-processamento 3) Compilação 4) Linking 5) Carregamento 6) Execução Etapa 1: Criação do programa
Leia maisLaboratório de Programação 1 Algoritmos e a Lógica de Programação
Laboratório de Programação 1 Algoritmos e a Lógica de Programação Mário Hozano professor@hozano.com Ciência da Computação UFAL - Arapiraca Relembrando a aula anterior... O que é um algoritmo? Como é o
Leia maisIntroduçã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 maisINTRODUÇÃO À LINGUAGEM C
INTRODUÇÃO À LINGUAGEM C Prof. Bruno Feijó, Dept. de Informática, PUC-Rio (2017) C foi criado no início da década de 70, quando os programas mais eficientes eram escritos em linguagem Assembly, bem próxima
Leia maisSistemas Operacionais
Visão geral de montadores, ligadores e carregadores 2 a edição Revisão: Fev/2003 Sistemas Operacionais Montadores, ligadores e carregadores Anexo A Como um programa é construído até ser executado? Montadores
Leia maisIntrodução. (Aula 2) Organização Estruturada de Computadores
Introdução (Aula 2) Organização Estruturada de Computadores Introdução Arquitetura de Hardware 01- Monitor 02- Placa-Mãe 03- Processador 04- Memória RAM 05- Placas de Rede, Som, Vídeo, Fax... 06- Fonte
Leia maisWorking 03 : Conceitos Básicos I
Working 03 : Conceitos Básicos I Objetivos: Dominar os conceitos básicos da linguagem de programação C; Aprender a utilizar o compilador, identificando os erros de sintaxe do código fonte; Prazo de Envio:
Leia maisMC-102 Aula 01. Instituto de Computação Unicamp
MC-102 Aula 01 Introdução à Programação de Computadores Instituto de Computação Unicamp 2016 Roteiro 1 Por que aprender a programar? 2 Hardware e Software 3 Organização de um ambiente computacional 4 Algoritmos
Leia mais