Prévia do material em texto
ENSINEME: ANÁLISE LÉXICA 1. Ref.: 7807544 Expressões regulares são utilizadas para especificar padrões. Qual das seguintes alternativas descreve um exemplo de uso de uma expressão regular? para gerar uma lista de nomes aleatórios. para validar um endereço de e-mail. para definir a cor de uma página web. para criar uma lista ordenada. para calcular o fatorial de um número. ENSINEME: ANÁLISE SEMÂNTICA 2. Ref.: 7808675 (FCC/2019) Um compilador está verificando se uma variável foi declarada somente uma vez, se foi declarada antes do seu primeiro uso, se foi declarada e nunca foi usada e se os tipos de dados em uma expressão aritmética são compatíveis. Essas verificações são realizadas na fase de: análise sintática. geração do código. análise semântica. otimização do código. análise léxica. 3. Ref.: 7808676 (ABIN/2018 - Adaptada) Com relação a linguagens de programação e compiladores, avalie as assertivas a seguir: I. A análise semântica, por ser a primeira etapa do processo de compilação, não verifica a sintaxe do código-fonte. II. A análise semântica é responsável apenas por identificar erros de lógica no código- fonte. A falta de indentação em um código é verificada nessa etapa. III. A etapa de análise semântica de um compilador tem como objetivo verificar os inter- relacionamentos de um programa, validando tipologias, fluxos de controle e unicidade na declaração de variáveis. Marque a alternativa correta. III, apenas. javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%207807544.'); javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%207808675.'); javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%207808676.'); II, apenas. I e II, apenas. I, apenas. I, II e III. ENSINEME: ANÁLISE SINTÁTICA 4. Ref.: 7807516 (IBADE/2018) Algumas linguagens exigem que o código fonte seja previamente traduzido para linguagem de máquina antes de ser executado. Chama-se esta fase de: Linkedição. Tradução. Edição. Interpretação. Compilação. 5. Ref.: 7807517 (FCC/2016) A compilação é o processo de tradução de um programa escrito em uma linguagem fonte em um programa equivalente em linguagem de máquina. Nesse processo, o programa fonte normalmente passa pelas fases: I. Identificação de sequências de caracteres de entrada e produção de uma sequência de elementos de saída, os tokens. Nesta fase, verifica-se se cada caractere do programa fonte pertence ao alfabeto da linguagem, identificando os tokens e desprezando comentários e espaços em branco. Os tokens constituem classes de símbolos, tais como palavras reservadas, delimitadores, identificadores etc. II. Identificação de sequências de símbolos que constituem estruturas como expressões e comandos, através de uma varredura, ou parsing, da representação interna do programa fonte, produzindo uma estrutura em árvore, chamada árvore de derivação. III. Verificação das estruturas quanto ao sentido, ou seja, se o programa não possui erros de significado. Por exemplo, verifica se um identificador declarado como variável é utilizado como tal, se existe compatibilidade entre operandos e operadores em expressões etc. Os itens I, II e III referem-se, correta e respectivamente, às fases: Análise Léxica - Análise Sintática - Análise Semântica. Classificação - Análise Léxica - Montagem. Identificação Inicial - Análise Estrutural - Geração de Código. Interpretação - Análise Sintática - Montagem. Busca Binária - Montagem Léxica - Análise Semântica. javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%207807516.'); javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%207807517.'); ENSINEME: GERAÇÃO DE CÓDIGO 6. Ref.: 7815534 (Exército/2011) No espaço de memória de um sistema computacional, qual área é reservada pelo sistema operacional para a alocação dinâmica de memória? Stack. Cache. Pilha. DMA. Heap. 7. Ref.: 3993114 A montagem e a ligação são as últimas etapas na criação de um programa executável. A partir deste instante o programa fica disponível para ser executado e quando o usuário solicitar que ele rode o Carregador irá alocá-lo na memória. Várias técnicas foram desenvolvidas para realizar tanto a ligação como o carregamento. Dentro deste contexto analise as afirmativas abaixo: I Na montagem e carregamento combinados não é criado o módulo objeto II Carregamento e Ligação Dinâmicos sempre ocorrem em tempo de execução III Carregador de ligação direta usam relocação de código É verdadeiro o que se afirma em: I e II I, II e III I e III Somente II Somente I 8. Ref.: 3993004 javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%207815534.'); javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%203993114.'); javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%203993004.'); A alocação adequada de memória para a execução do programa é fundamental para que ele tenha um bom desempenho. A memória utilizada pelo programa é dividida em várias parte sendo cada uma delas mais adequada para um determinado uso. As áreas em que um programa é normalmente divido são I Área de Código Objeto II Área de Dados Estática III Heap IV Pilha Dentre estas a alocação estática é utilizada nas áreas: II e IV III e IV II e III I e III I e II ENSINEME: O COMPILADOR 9. Ref.: 3990550 O componente do processo de tradução que a partir dos programas objetos gera o módulo de carga é o: Compilador Ligador Carregador Montador Interpretador 10. Ref.: 3990553 Os compiladores, de um modo geral, são compostos de funções padronizadas, as quais compreendem a análise do programa fonte e então a síntese para a derivação do código objeto. O processo de compilação é comumente estruturado em passos que, eles são: javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%203990550.'); javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%203990553.'); análise léxica, análise sintática, análise semântica, síntese do programa fonte e reutilização de tokens. simplificação do programa fonte, aplicação de algoritmo de escalonamento, análise contextual, geração e otimização de código. análise léxica, análise sintática, análise semântica, geração de código intermediário, otimização de código e geração de código. reconhecimento dos tokens iniciais e finais, análise contextual, aplicação de algoritmo de escalonamento, geração de código intermediário e geração de código objeto. análise da gramática, busca binária, geração de código intermediário, geração de objeto final.