IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Inf. Desenvolvimento de Sistemas Aula 00: Montadores, compiladores, ligadores e interpretadores Aula 00 IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Informática Desenvolvimento de Sistemas Montadores, compiladores, ligadores e interpretadores Professor: Rogerão Araújo www.pontodosconcursos.com.br | Prof. Rogerão Araújo 1 IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Inf. Desenvolvimento de Sistemas Aula 00: Montadores, compiladores, ligadores e interpretadores Aula 00: Montadores, compiladores, ligadores e interpretadores Aula 00 01 02 03 04 05 06 07 08 09 Conteúdo Programático Programação de computadores: Montadores, compiladores, ligadores e interpretadores. Programação de computadores: Noções de linguagens procedurais e Estruturas de controle de fluxo de execução. Programação de computadores: Noções de linguagens orientadas a objetos. Programação de computadores: Estruturas de dados e Estruturas de listas, filas, pilhas e árvores. Programação de computadores: Métodos de acesso, busca, inserção e ordenação e Complexidade de algoritmos. Programação de computadores: Desenvolvimento seguro de aplicações. Sistemas de Bancos de dados: Arquiteturas, modelos lógicos e representação física e Mecanismos de banco de dados relacionais. Sistemas de Bancos de dados: Linguagem de consulta estruturada (SQL). Sistemas de Bancos de dados: Arquitetura, Log de transação, Backup e restore e Segurança e auditoria. Engenharia reversa: Técnicas de descompilação de programas, Técnicas de compactação de código executável, Análise de código malicioso e Ofuscação de código. www.pontodosconcursos.com.br | Prof. Rogerão Araújo Data 14/03 23/03 05/04 13/04 22/04 28/04 09/05 20/05 27/05 10/06 2 IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Inf. Desenvolvimento de Sistemas Aula 00: Montadores, compiladores, ligadores e interpretadores Sumário Apresentações ...................................................................................................................................................... 4 O professor ................................................................................................................................................................... 4 O curso .......................................................................................................................................................................... 4 Informações de apoio .............................................................................................................................................. 5 1. Compilação, interpretação e execução de programas ................................................................ 7 1.1. Teoria .................................................................................................................................................................... 7 1.2. Memorex ............................................................................................................................................................ 11 1.3. Referências ....................................................................................................................................................... 12 1.4. Questões de concursos................................................................................................................................. 12 2. Lista de questões na aula .........................................................................................................................19 2.1. Compilação, interpretação e execução de programas ..................................................................... 19 3. Gabarito ............................................................................................................................................................21 3.1. Compilação, interpretação e execução de programas ..................................................................... 21 www.pontodosconcursos.com.br | Prof. Rogerão Araújo 3 IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Inf. Desenvolvimento de Sistemas Aula 00: Montadores, compiladores, ligadores e interpretadores Apresentações O professor Sou o professor Rogerão Araújo. Trabalho na Secretaria do Tesouro Nacional, em Brasília/DF, exercendo o cargo de Analista de Finanças e Controle. Formei-me Bacharel em Ciência da Computação pela UESPI (Universidade Estadual do Piauí) e especialista em Governança em TI pela Unieuro e em Desenvolvimento de Sistemas Baseados em Software Livre pela UNAMA (Universidade da Amazônia). Atualmente exerço o cargo de Analista de Finanças e Controle no Tesouro Nacional. Possui as certificações COBIT 4.1 Foundation Certified e SCJA (Sun Certified Associate for J2SE). Sou autor de artigos no site do professor Walter Cunha (www.waltercunha.com) e no canal ITnerante (www.itnerante.com.br). Mantenho também o meu próprio blog (rogerioaraujo.wordpress.com). Fui aprovado em alguns concursos, tais como: STN 2013, TST 2012, TSE 2012, TRE/PE 2011, TRT 19ª Região 2011, MPU 2010, STM 2010, SERPRO 2008, TRT 18ª Região 2008, MPU 2006, BACEN 2005, TRE/MA 2005, TRT 16ª Região 2005, TCE/PI 2005 e MPU 2004. O curso Sejam bem vindos ao Curso de Exercícios na área de Desenvolvimento de Sistemas para concurso do PCDF, para o cargo de Perito Criminal Ciência da Computação/Informática. O foco deste curso é voltado principalmente para a banca IADES, podendo haver questões de outras bancas semelhantes para complementar os assuntos sugeridos em nosso cronograma. Este é um curso de questões comentadas, desta forma, é necessário ter um conhecimento prévio para que possamos acompanhar a resolução das questões de forma mais proveitosa. A ideia é que através da resolução das questões teremos a capacidade de traçar um direcionamento sobre os principais pontos que precisam ser estudados com mais afinco. Lembrem-se sempre que o material de questões comentadas é baseado no conteúdo histórico cobrado pelas bancas, com os pontos que costumam cair com mais frequência, porém apesar da probabilidade do tópico cair novamente de forma semelhante ser muito grande, isto não é garantido, para isto www.pontodosconcursos.com.br | Prof. Rogerão Araújo 4 IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Inf. Desenvolvimento de Sistemas Aula 00: Montadores, compiladores, ligadores e interpretadores precisamos estudar também a parte teórica para entendermos os conceitos necessários. Informações de apoio Para uma melhor revisão dos textos deste material, os itens importantes serão destacados em cores. Por exemplo: “O compilador traduz um programa escrito em uma linguagem de alto nível em um programa-objeto não executável (módulo-objeto). Apesar desse módulo-objeto ser em linguagem de máquina, ele não é executável ainda”. Para nos ajudar no entendimento das explicações, trago quadros explicativos dos tipos: Quadros de observações (quadros de cor amarela): para observações gerais, mas que fogem do contexto da teoria; Quadros de memorex (quadros de cor laranja): para itens mais importantes para revisão; Quadros de notas importantes (quadros de cor verde): para notas importantes da teoria que precisam de um destaque melhor; e Quadros de exemplos (quadros de cor azul): para exemplos que colocarão em prática a teoria explicada. Exemplos dos quadros de observações: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque consequat placerat nibh, eu pulvinar lacus lacinia ut. Donec ultricies eleifend luctus. Mauris luctus bibendum sapien. Observação x.x: blá blá blá. Exemplos dos quadros de memorex: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque consequat placerat nibh, eu pulvinar lacus lacinia ut. Donec ultricies eleifend luctus. Mauris luctus bibendum sapien. www.pontodosconcursos.com.br | Prof. Rogerão Araújo 5 IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Inf. Desenvolvimento de Sistemas Aula 00: Montadores, compiladores, ligadores e interpretadores Exemplos dos quadros de notas importantes: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque consequat placerat nibh, eu pulvinar lacus lacinia ut. Donec ultricies eleifend luctus. Mauris luctus bibendum sapien. Nota x.x: blá blá blá. Exemplos dos quadros de exemplos: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque consequat placerat nibh, eu pulvinar lacus lacinia ut. Donec ultricies eleifend luctus. Mauris luctus bibendum sapien. Exemplo x.x: blá blá blá. www.pontodosconcursos.com.br | Prof. Rogerão Araújo 6 IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Inf. Desenvolvimento de Sistemas Aula 00: Montadores, compiladores, ligadores e interpretadores 1. Compilação, interpretação e execução de programas 1.1. Teoria No nosso dia a dia, utilizamos programas de computadores para os mais diversos fins, seja para nos auxiliar em nosso trabalho, seja para usos pessoais. Um programa de computador é um conjunto de instruções que: Possui um determinado fim; o Por exemplo, o Photoshop para edição de imagens; e É executado por um processador. Mas para haja essa execução pelo processador, o programa precisa estar em uma linguagem que o processador possa entender: a linguagem de máquina. Ela é a linguagem que um processador é capaz de compreender e é composta de apenas de números 0 e 1. O conjunto de instruções que forma um programa é escrito em linguagem de máquina. Dessa forma, o processador reconhecerá o programa e irá executá-lo. Nota 1.1.1: conjunto de instruções em linguagem de máquina. - Pow, Rogerão, mas como vamos programar escrevendo apenas 0 e 1? Tu é doido, macho? Calma, pequeno gafanhoto! Não precisamos ter conhecimento de linguagem de máquina para escrever nossos programas. Para nosso trabalho como desenvolvedores de software, utilizamos linguagens de alto nível, como, por exemplo, a própria linguagem Java. Programar já não é uma tarefa tão fácil e programar escovando bits, é extremamente complexo e trabalhoso, o que elevaria muito o custo de desenvolvimento e da manutenção de softwares. Aproveitando, temos que ter em mente que (figura 1.1.1): Quanto mais semelhante uma linguagem for da de máquina: o Mais baixo é o nível dessa linguagem; e o Menos legível é para o ser humano; Quanto mais “distante” uma linguagem for da de máquina: o Mais alto é o nível dessa linguagem; e o Mais legível é para o ser humano. www.pontodosconcursos.com.br | Prof. Rogerão Araújo 7 IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Inf. Desenvolvimento de Sistemas Aula 00: Montadores, compiladores, ligadores e interpretadores Figura 1.1.1: distância de uma linguagem em relação à linguagem de máquina. As linguagens de alto nível são linguagens mais semelhantes à linguagem humana. Ela deixa o trabalho de desenvolvimento de softwares muito mais fácil do que se programássemos em uma linguagem de baixo nível ou linguagem de máquina. Porém, para que o processador possa entender os programas feitos em linguagem de alto nível, é necessária sua tradução (ou compilação) para linguagem que o processador possa entender, ou seja, linguagem de máquina. Nota 1.1.2: linguagem de alto nível. O compilador traduz: Um programa escrito em uma linguagem de alto nível; Em um programa-objeto não executável; o Também chamado de módulo-objeto. Apesar do módulo-objeto ser em linguagem de máquina, ele não é executável ainda. Nota 1.1.3: módulo-objeto não é executável. O editor de ligação (também chamado de linker ou de ligador) gera um programa executável a partir de um ou mais módulos-objetos. Apenas visualizando o que eu falei (figura 1.1.2): Um programa-fonte em linguagem de alto nível é compilado e então gerado um programa-objeto em linguagem de máquina, porém ainda não executável; O linker por sua vez recebe esse programa-objeto e gera um programa em linguagem de máquina executável para uma plataforma específica; www.pontodosconcursos.com.br | Prof. Rogerão Araújo 8 IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Inf. Desenvolvimento de Sistemas Aula 00: Montadores, compiladores, ligadores e interpretadores Como uma linguagem de máquina de uma plataforma às vezes difere de outra, precisaremos de um compilador e de um linker específicos para que um programa-fonte possa ser traduzido em na linguagem de máquina própria de uma plataforma. Figura 1.1.2: compilação, ligação e execução de um programa. Também temos outro sujeito: interpretador. Ele é uma instância de hardware ou software que lê e executa diretamente as instruções apresentadas. Durante uma execução, o interpretador lê cada instrução a partir de um programa-fonte escrito em linguagem de alto nível e executa-a imediatamente. São exemplos de linguagens interpretadas: BASIC, Perl, PHP, Python, JavaScript, Lisp, Ruby, etc. Iremos fazer uma comparação entre a compilação e interpretação nos seguintes tópicos: Tempo de execução; Consumo de memória; Repetição de interpretação; e Desenvolvimento de programas e depuração de erros. www.pontodosconcursos.com.br | Prof. Rogerão Araújo 9 IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Inf. Desenvolvimento de Sistemas Aula 00: Montadores, compiladores, ligadores e interpretadores Tempo de execução: Na interpretação, cada vez que um programa for executado, haverá leitura e execução de cada instrução apresentada do programa; Na compilação, o tempo de execução do programa é reduzido, porque todos os passos preliminares (compilação e ligação) foram previamente feitos. Consumo de memória: Na interpretação, o interpretador é um programa geralmente grande e que precisa permanecer na memória durante todo o tempo que durar a execução do programa, pois um programa necessita do interpretador para ter traduzidos cada um dos seus comandos, um a um, até o término de sua execução; o O interpretador somente é descarregado depois do término da execução do programa; Na compilação: o O compilador é carregado e fica na memória apenas durante o tempo de compilação, depois é descarregado; o O ligador é carregado e fica na memória apenas durante o tempo de ligação, depois é descarregado; o Essas são funções realizadas pelo programador e executadas apenas durante o desenvolvimento do programa; o Quando o usuário for executar o programa, apenas o módulo de carga (código executável) é carregado e fica na memória durante a execução; Desta forma, vemos que o método de interpretação acarreta um consumo de memória muito mais elevado durante a execução do programa. Repetição de interpretação: Na interpretação, em programas contendo alguma estrutura de repetição, as partes do código que pertencem a uma estrutura de repetição serão várias vezes repetidas e terão que ser interpretadas tantas vezes quantas a estrutura tiver que ser percorrida; Na compilação, a tradução do código de uma estrutura de repetição se faz uma única vez, em tempo de compilação e ligação; Estas características levam a um maior consumo de tempo na interpretação, que é, portanto, mais lento. www.pontodosconcursos.com.br | Prof. Rogerão Araújo 10 IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Inf. Desenvolvimento de Sistemas Aula 00: Montadores, compiladores, ligadores e interpretadores Desenvolvimento de programas e depuração de erros: Na compilação, a identificação de erros durante a fase de execução fica sempre difícil, pois não há mais relação entre comandos do código fonte e instruções do executável; Na interpretação: o Cada comando é interpretado e executado individualmente, a relação entre código fonte e executável é mais direta e o efeito da execução (certa ou errada) é direta e imediatamente sentido; o Quando a execução de um comando acarreta erro, quase sempre o erro pode ser encontrado no comando que acabou de ser executado; Assim, o interpretador pode informar o erro, indicando o comando ou variável causador do problema. Resumo da comparação entre a compilação e interpretação: Menor tempo de execução: compilação; Menor consumo de memória: compilação; Maior tempo na execução de loop’s: interpretação; e Menor dificuldade de identificação de erros: interpretação. Nota 1.1.4: diferenças entre compilação e interpretação. 1.2. Memorex Um programa de computador é um conjunto de instruções que: Possui um determinado fim; o Por exemplo, o Photoshop para edição de imagens; e É executado por um processador. As linguagens de alto nível sãolinguagens mais semelhantes à linguagem humana. Ela deixa o trabalho de desenvolvimento de softwares muito mais fácil do que se programássemos em uma linguagem de baixo nível ou linguagem de máquina. Porém, para que o processador possa entender os programas feitos em linguagem de alto nível, é necessária sua tradução (ou compilação) para linguagem que o processador possa entender, ou seja, linguagem de máquina. O compiladortraduz: Um programa escrito em uma linguagem de alto nível; Em um programa-objeto não executável; www.pontodosconcursos.com.br | Prof. Rogerão Araújo 11 IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Inf. Desenvolvimento de Sistemas Aula 00: Montadores, compiladores, ligadores e interpretadores o Também chamado de módulo-objeto. O editor de ligação(também chamado de linker ou de ligador) gera um programa executável a partir de um ou mais módulos-objetos. O interpretador é uma instância de hardware ou software que lê e executa diretamente as instruções apresentadas. Resumo da comparação entre a compilação e interpretação: Menor tempo de execução: compilação; Menor consumo de memória: compilação; Maior tempo na execução de loop’s: interpretação; e Menor dificuldade de identificação de erros: interpretação. 1.3. Referências [1] Arquitetura e organização de computadores: Ligação, relocação e carga de programas: www.professordiovani.com.br/arquitetura/aula16_arquitetura.ppt; [2] Interpretação e Compilação de Linguagens de Programação: http://moodle.fct.unl.pt/pluginfile.php/213715/mod_label/intro/01overview.pdf; [3] MACHADO, Francis Berenger e MAIA, Luiz Paulo. Arquitetura de Sistemas Operacionais. 4ª Edição. Editora LTC, 2007. 1.4. Questões de concursos [FCC 2012 TJ/PE – Técnico Judiciário – Suporte Técnico – Questão 40] No contexto do módulo executável de um programa de computador, menor tempo de execução, menor consumo de memória, maior tempo na execução de loop’s, e menor dificuldade de identificação de erros estão associados, respectivamente, aos métodos [A] compilação, interpretação, compilação, interpretação. [B] interpretação, interpretação, interpretação, compilação. [C] interpretação, interpretação, compilação, compilação. [D] interpretação, compilação, interpretação, compilação. [E] compilação, compilação, interpretação, interpretação. www.pontodosconcursos.com.br | Prof. Rogerão Araújo 12 IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Inf. Desenvolvimento de Sistemas Aula 00: Montadores, compiladores, ligadores e interpretadores Comentário: Como vimos no resumo da comparação entre a compilação interpretação: Menor tempo de execução: compilação; Menor consumo de memória: compilação; Maior tempo na execução de loop’s: interpretação; e Menor dificuldade de identificação de erros: interpretação. e Gabarito: letra E. [FCC 2011 TRT 4ª Região – Técnico Judiciário – Tecnologia da Informação – Questão 31] Em relação à organização e arquitetura de computadores, é correto afirmar: [A] A linguagem de máquina é um conjunto ilimitado de instruções que um circuito de um computador pode reconhecer e executá-las diretamente. [B] A linguagem de máquina é a forma mais primitiva de linguagem para se comunicar com o computador. [C] A arquitetura define os componentes do computador e a maneira como eles estão interligados. [D] A organização não define os componentes do computador, mas apenas o seu comportamento e a maneira como eles estãointerligados. [E] O Interpretador é um programa de nível 1 (L1) que substitui cada instrução de nível 2 (L2) por um conjunto equivalente de L1. Comentário: Letra A: “a linguagem de máquina é um conjunto ilimitado de instruções que um circuito de um computador pode reconhecer e executá-las diretamente”. Letra incorreta. A linguagem de máquina [1] é constituída pelo conjunto básico de instruções que são reconhecidaspelo hardware e, para a qual todo programa precisa ser convertido para que possa ser executado. Corrigindo a letra: “a linguagem de máquina é um conjunto ilimitado de instruções que um circuito de um computador pode reconhecer e executá-las diretamente”. www.pontodosconcursos.com.br | Prof. Rogerão Araújo 13 IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Inf. Desenvolvimento de Sistemas Aula 00: Montadores, compiladores, ligadores e interpretadores Letra B: “a linguagem de máquina é a forma mais primitiva de linguagem para se comunicar com o computador”. Letra correta. A explicação da letra A também ajuda nesta letra. Letra C: “a arquitetura define os componentes do computador e a maneira como eles estão interligados”. Letra incorreta. Há uma diferença entre a arquitetura e a organização de computadores. A arquitetura de um computador [2] corresponde aos aspectos visíveis a um programador em linguagem de máquina, tais como: Repertório de instruções; Número de bits utilizado para representar vários tipos de dados; Mecanismo de E/S; e Modos de endereçamento. Por sua vez, a organização de computadores [2] diz respeito às unidades operacionais (UCP, unidade de memória, barramentos, sinais de controle, etc) necessárias para implementar as especificações de uma arquitetura. A organização programador. de computadores é em geral transparente ao Nota 1.4.1: organização de computadores. Considere por exemplo a arquitetônico do computador em computador provê uma instrução organizacional tem a ver como essa operação de multiplicação. O aspecto relação a essa operação é saber se o para esta operação; enquanto o aspecto operação é implementada” (meu grifo). Corrigindo a letra: “a organização não define os componentes do computador e a maneira como eles estão interligados”. Letra D: “a organização não define os componentes do computador, mas apenas o seu comportamento e a maneira como eles estãointerligados”. www.pontodosconcursos.com.br | Prof. Rogerão Araújo 14 IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Inf. Desenvolvimento de Sistemas Aula 00: Montadores, compiladores, ligadores e interpretadores Letra incorreta. Leiam o comentário da letra C. A correção da letra é igual à correção da letra C. Letra E: “o interpretador é um programa de nível 1 (L1) que substitui cada instrução de nível 2 (L2) por um conjunto equivalente de L1”. Letra incorreta. Em uma arquitetura em camada [3] ou modelo multi-nível [1], temos as seguintes camadas ou níveis: Nível 5: nível das linguagens orientadas para solução de problemas (compilador); Nível 4: nível da linguagem do montador (montador); Nível 3: nível do sistema operacional (sistema operacional) Nível 2: nível da arquitetura do conjunto de instruções (microprograma ou execução direta); Nível 1: nível da micro-arquitetura (executados diretamente pelo hardware); e Nível 0: nível da lógica digital. Em [3], temos que a compilação ou tradução“... consiste em substituir todas as instruções do programa escrito em L2 por umasequência de instruções em L1. O programa resultante é formado somente por instruções L1 eé executado pelo computador. L2 não é mais necessário”. Ainda em [3], na interpretação, o interpretador “... pegacada instrução de L2 e transforma em um conjunto de instruções em L1 executandodiretamente sem a geração de um programa em L1”. Corrigindo a letra: “o interpretador compilador é um programa de nível 1 (L1) que substitui cada instrução de nível 2 (L2) por um conjunto equivalente de L1”. Referências: [1] Organização de Computadores: http://equipe.nce.ufrj.br/thome/grad/so/mataux/Arquitetura_apst.pdf; [2] EA-869 - Dúvidas Frequentes: http://www.dca.fee.unicamp.br/~ting/Courses/ea869/faq2.html#item1; e [3] https://leticiasuemi.files.wordpress.com/2011/08/resumo-livro1.pdf. Gabarito: letra B. www.pontodosconcursos.com.br | Prof. Rogerão Araújo 15 IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Inf. Desenvolvimento de Sistemas Aula 00: Montadores, compiladores, ligadores e interpretadores [FCC 2010 TRF 4ª Região – Analista Judiciário – Informática – Questão 34] Sobre as linguagens de programação, é correto afirmar: [A] Linguagens de alto nível cumprem tarefas mais substanciais com um número menor de comandos, mas exigem programas tradutores denominados compiladores para converter programas em linguagem de alto nível para linguagem de máquina. [B] Um computador pode entender qualquer linguagem de máquina, pois a linguagem de máquina não é definida pelo projeto de hardware do computador. [C] Programadores podem escrever instruções em várias linguagens de programação e todas são entendidas diretamente pelos computadores sem a necessidade de tradução. [D] Softwares escritos em linguagens de máquina são portáveis. [E] Interpretadores são programas que convertem códigos escritos em linguagem de alto nível para programa sem linguagem de máquina. Comentário: Letra A: “linguagens de alto nível cumprem tarefas mais substanciais com um número menor de comandos,mas exigem programas tradutores denominados compiladores para converter programas em linguagem de alto nível para linguagem de máquina”. Letra correta. Como estudamos, as linguagens de alto nível são linguagens mais semelhantes à linguagem humana. Ela deixa o trabalho de desenvolvimento de softwares muito mais fácil do que se programássemos em uma linguagem de baixo nível ou linguagem de máquina. Porém, para que o processador possa entender os programas feitos em linguagem de alto nível, é necessária sua tradução (ou compilação) para linguagem que o processador possa entender, ou seja, linguagem de máquina. Letra B: “um computador pode entender qualquer linguagem de máquina, pois a linguagem de máquina não é definida pelo projeto de hardware do computador”. Letra incorreta. Em [1], temos que qualquer computador pode entender diretamente apenas sua própria linguagem de máquina. Essa é a linguagem natural do computador, definida pelo projeto de hardware, ou seja, uma linguagem de máquina é específica e só pode ser utilizada em um tipo de computador. www.pontodosconcursos.com.br | Prof. Rogerão Araújo 16 IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Inf. Desenvolvimento de Sistemas Aula 00: Montadores, compiladores, ligadores e interpretadores Corrigindo a letra: “um computador pode entender apenas suaprópria linguagem de máquina, pois a linguagem de máquina é definida pelo projeto de hardware do computador”. Letra C: “programadores podem escrever instruções em várias linguagens de programação e todas são entendidas diretamente pelos computadores sem a necessidade de tradução”. Letra incorreta. Os processadores programas em linguagem de máquina. podem apenas entender Letra D: “softwares escritos em linguagens de máquina são portáveis”. Letra incorreta. Como estudado na letra B, um software, se compilado para uma linguagem de máquina e uma linguagem de máquina é específica, então esse software só pode ser utilizado em um tipo de computador. Letra E: “interpretadores são programas que convertem códigos escritos em linguagem de alto nível para programas em linguagem de máquina”. Letra incorreta. Quem faz essa tradução são os compiladores. Para revisarmos novamente: O compilador traduz: Um programa escrito em uma linguagem de alto nível; Em um programa-objeto não executável; o Também chamado de módulo-objeto. Apesar do módulo-objeto ser em linguagem de máquina, ele não é executável ainda. Há também o editor de ligação (também chamado de linker ou de ligador), que gera um programa executável a partir de um ou mais módulos-objetos. Já interpretador. Ele é uma instância de hardware ou software que lê e executa diretamente as instruções apresentadas. Ele não produz módulo-objeto. Apenas executa as instruções contidas no programa-fonte, não necessariamente em linguagem de alto nível. Durante uma execução, o interpretador lê cada instrução a partir de um programa-fonte e executa-a imediatamente. www.pontodosconcursos.com.br | Prof. Rogerão Araújo 17 IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Inf. Desenvolvimento de Sistemas Aula 00: Montadores, compiladores, ligadores e interpretadores Referência: [1] Construção de Compiladores - Capítulo 1: http://www.decom.ufop.br/romildo/2012-2/bcc328/slides/01-introducao.pdf. Gabarito: letra A. www.pontodosconcursos.com.br | Prof. Rogerão Araújo 18 IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Inf. Desenvolvimento de Sistemas Aula 00: Montadores, compiladores, ligadores e interpretadores 2. Lista de questões na aula 2.1. Compilação, interpretação e execução de programas [FCC 2012 TJ/PE – Técnico Judiciário – Suporte Técnico – Questão 40] No contexto do módulo executável de um programa de computador, menor tempo de execução, menor consumo de memória, maior tempo na execução de loop’s, e menor dificuldade de identificação de erros estão associados, respectivamente, aos métodos [A] compilação, interpretação, compilação, interpretação. [B] interpretação, interpretação, interpretação, compilação. [C] interpretação, interpretação, compilação, compilação. [D] interpretação, compilação, interpretação, compilação. [E] compilação, compilação, interpretação, interpretação. [FCC 2011 TRT 4ª Região – Técnico Judiciário – Tecnologia da Informação – Questão 31] Em relação à organização e arquitetura de computadores, é correto afirmar: [A] A linguagem de máquina é um conjunto ilimitado de instruções que um circuito de um computador pode reconhecer e executá-las diretamente. [B] A linguagem de máquina é a forma mais primitiva de linguagem para se comunicar com o computador. [C] A arquitetura define os componentes do computador e a maneira como eles estão interligados. [D] A organização não define os componentes do computador, mas apenas o seu comportamento e a maneira como eles estãointerligados. [E] O Interpretador é um programa de nível 1 (L1) que substitui cada instrução de nível 2 (L2) por um conjunto equivalente de L1. [FCC 2010 TRF 4ª Região – Analista Judiciário – Informática – Questão 34] Sobre as linguagens de programação, é correto afirmar: [A] Linguagens de alto nível cumprem tarefas mais substanciais com um número menor de comandos, mas exigem programas tradutores denominados compiladores para converter programas em linguagem de alto nível para linguagem de máquina. [B] Um computador pode entender qualquer linguagem de máquina, pois a linguagem de máquina não é definida pelo projeto de hardware do computador. www.pontodosconcursos.com.br | Prof. Rogerão Araújo 19 IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Inf. Desenvolvimento de Sistemas Aula 00: Montadores, compiladores, ligadores e interpretadores [C] Programadores podem escrever instruções em várias linguagens de programação e todas são entendidas diretamente pelos computadores sem a necessidade de tradução. [D] Softwares escritos em linguagens de máquina são portáveis. [E] Interpretadores são programas que convertem códigos escritos em linguagem de alto nível para programa sem linguagem de máquina. www.pontodosconcursos.com.br | Prof. Rogerão Araújo 20 IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Inf. Desenvolvimento de Sistemas Aula 00: Montadores, compiladores, ligadores e interpretadores 3. Gabarito 3.1. Compilação, interpretação e execução de programas [FCC 2012 TJ/PE – Técnico Judiciário – Suporte Técnico – Questão 40] Gabarito: letra E. [FCC 2011 TRT 4ª Região – Técnico Judiciário – Tecnologia da Informação – Questão 31] Gabarito: letra B. [FCC 2010 TRF 4ª Região – Analista Judiciário – Informática – Questão 34] Gabarito: letra A. www.pontodosconcursos.com.br | Prof. Rogerão Araújo 21 IADES 2016 PCDF - Perito Criminal - Ciência da Computação/Inf. Desenvolvimento de Sistemas Aula 00: Montadores, compiladores, ligadores e interpretadores www.pontodosconcursos.com.br | Prof. Rogerão Araújo 22