Logo Passei Direto
Buscar

Algoritmos

Colegio Teresina
Qual tipo de software tradutor deve ser utilizado para programas em geral, quando a velocidade de execução é uma exigência de alta prioridade? a. Macroprocessadores. b. Interpretadores de macroinstruções. c. Interpretadores. d. Compiladores. e. Tradutores híbridos.
User badge image
David Samuel

ano passado

Respostas

User badge image

Ed Verified user icon

ano passado

Para responder à sua pergunta, vamos analisar as opções disponíveis em relação à velocidade de execução dos programas. a) Macroprocessadores - São usados para expandir macroinstruções, mas não são focados em velocidade de execução. b) Interpretadores de macroinstruções - Interpretadores, em geral, traduzem e executam o código linha por linha, o que pode ser mais lento. c) Interpretadores - Também traduzem o código linha por linha, o que geralmente resulta em uma execução mais lenta em comparação com compiladores. d) Compiladores - Traduzem o código-fonte inteiro para código de máquina antes da execução, o que geralmente resulta em uma execução mais rápida, pois o código já está preparado para ser executado diretamente pelo processador. e) Tradutores híbridos - Podem combinar características de compiladores e interpretadores, mas a velocidade pode variar dependendo da implementação. Dado que a pergunta enfatiza a "velocidade de execução" como uma alta prioridade, a opção correta é: d) Compiladores.

Essa resposta te ajudou?

0
Dislike0
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar essa resposta. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Ainda com dúvidas?

Envie uma pergunta e tenha sua dúvida de estudo respondida!

Essa pergunta também está no material:

Mais perguntas desse material

A respeito do processo em que se define uma linguagem de programação, é importante lembrar que o trabalho realizado por um compilador consistirá, entre outras tarefas, no reconhecimento das sentenças válidas naquela linguagem.
qual das seguintes afirmativas pode ser considerada incorreta?
a. Qualquer autômato finito tem um equivalente, autômato finito determinístico mínimo, que é único.
b. Toda gramática livre de contexto gera linguagens reconhecíveis por autômatos de pilha.
c. Em 1950, a tentativa de projetar uma linguagem universal, a UNCOL, não obteve sucesso, pois havia uma dificuldade em representar todas as linguagens, arquiteturas e conjuntos de instruções dentro de um mesmo projeto.
d. As linguagens livres de contexto são reconhecidas por autômatos de pilha.
e. As linguagens irregulares são reconhecidas por autômatos finitos.

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:
A) Linkedição.
B) Interpretação.
C) Tradução.
D) Compliação.
E) Edição.

Na implementação de compiladores, a fase de parser do programa baseia-se, em parte, no resultado de um analisador léxico.
Assinale a opção que descreve o papel de um analisador léxico.
a. Representar as regras da gramática da linguagem.
b. Verificar a conformidade do código fonte com as regras da gramática da linguagem.
c. Definir a notação em que as regras da gramática são expressas.
d. Identificar os tokens gramaticais no código fonte.
e. Exprimir a semântica das construções da linguagem.

No modelo de Análise e Síntese o processo é dividido em duas grandes etapas. Na primeira, são realizadas todas as tarefas pertinentes a análise e compreensão do código fonte, enquanto na segunda, as atividades de otimização e a geração do código propriamente dito.
Analise as alternativas a seguir e assinale aquela cuja atividade não corresponde a nenhuma das subfases deste modelo.
a. Durante a análise léxica o compilador varre o código fonte em busca dos lexemas da linguagem (isto é, caracteres que, expressos de modo simples ou combinados, apresentam relevância na linguagem), compondo estas sequência de caracteres em blocos chamados tokens.
b. Na análise sintática são verificadas as estruturas gramaticais do código, como por exemplo, a sintaxe dos comandos e o emprego correto dos operadores. Os tokens que compõem o código fonte são verificados quanto a sequência em que aparecem e se todos os elementos esperados para aquela construção sintática estão corretos e presentes.
c. A verificação semântica das construções do código analisa aspectos que estão além da sintaxe, como por exemplo, a compatibilidade entre tipos e a declaração prévia de variáveis.
d. Embora não obrigatório pelo modelo, a etapa de síntese pode ser decomposta em três subfases. a geração de código intermediário, em que se produz uma versão do algoritmo utilizando instruções de três endereços; a otimização, em que se procurar eliminar redundâncias e melhorar o produto anterior; e por fim, a geração de código final, em que o algoritmo é efetivamente escrito em linguagem alvo.
e. A fase de link edição, ou ligação, é responsável por criar o arquivo executável combinando todos os arquivos objetos em um único módulo de carga.

Uma das tarefas primordiais ao processo de compilação é que durante a verificação da sintática do programa o compilador reporte ao programador todos os erros detectados para que ele os corrija. Neste contexto, a adoção de uma estratégia que permita o tratamento e eventual recuperação diante de erros é parte das decisões que envolvem a construção dos analisadores.
Assinale a alternativa que não descreve de maneira apropriada essas estratégias.
a. O Modo Pânico é aquele em que o compilador exibe as mensagens de erro e interrompe qualquer outra atividade do sistema operacional, evitando problemas de gravação dos dados no disco e a corrupção dos dados armazenados.
b. A estratégia chamada Recuperação de Frases consiste em rentar recuperar-se do erro detectado corrigindo localmente o restante da sentença por algum elemento que permita que a análise prossiga, por exemplo, eliminando os tokens da construção inválida até que se encontre um ponto e vírgula (que sinalizaria o fim daquele comando).
c. O uso das chamadas Produções de Erros consiste na inclusão de novas regras de produção na gramática da linguagem de modo a acomodando as situações de erro mais comuns e, com isso, permitir que se conduza ao tratamento mais adequado para erros daquela natureza.
d. A chamada Correção Global tem por objetivo escolher ações que permitam corrigir o código globalmente, escolhendo dentre a situações possível a solução que apresente a menor sequência de alterações ao programa.
e. O uso de métodos muito complexos pode não se justificar por consumirem muito tempo em relação ao resultado que oferecem. Vale lembrar que cabe ao programador corrigir o código e não ao compilador. Além disto, em grande parte dos casos, os vários erros envolvem um único token como, por exemplo, na falta de declaração de uma variável que torna todas as suas ocorrências dentro do código desconhecidas.

Para o desenvolvimento de um compilador é possível que se adote um dos diferentes modelos de construção. Um destes é o que chamamos de modelo de múltiplas passagens, em que as atividades relacionadas a tradução e a escrita do código alvo são realizadas em etapas encadeadas.
Acerca deste modelo analise as seguintes considerações.
- Trata-se de um modelo bastante didático, pois a modularização do processo permite o desenvolvimento gradativo do compilador enquanto se estuda com mais detalhes as atividades pertinentes a cada etapa.
- Por outro lado, uma desvantagem inerente ao modelo é que por exemplo um erro semântico localizado nas primeiras linhas do código fonte somente seria detectado após a conclusão das análises léxica e sintática de todas as linhas do programa.
a. Ambas as assertivas são verdadeiras, sendo a segunda a justificativa da primeira.
b. Ambas as assertivas são verdadeiras e não apresentam relação de causa e consequência entre elas.
c. Apenas a primeira assertiva é verdadeira, pois sendo um modelo didático deveria apresentar boa eficiência no processamento.
d. Apenas a segunda assertiva é verdadeira, pois este modelo é o mais utilizado no desenvolvimento de compiladores comerciais dada a sua flexibilidade de reuso dos módulos.
e. Ambas as assertivas são falsas, pois o modelo não pode ser considerado didático tampouco o exemplo dado na segunda asserção representaria uma debilidade.

Durante o processo de verificação da estrutura sintática de um programa, o analisador simula o processo de construção da árvore de derivação para o programa que está sendo compilado.
A respeito destas estratégias assinale a alternativa correta.
a. Os métodos descendentes são usualmente mais convenientes em casos de implementação manual, enquanto os métodos ascendentes (botton-up) são considerados mais favoráveis para construtores automáticos de analisadores.
b. Dada uma gramática G qualquer, sempre é possível obter tanto um analisador ascendente quanto descendente para ela. Assim, a escolha de qual abordagem será empregada no projeto é meramente uma questão de escolha ou preferência.
c. O tempo de compilação de um programa independe do método utilizado em seu analisador. Isso se justifica pelo fato de que, se considerarmos o mesmo código, os aspectos sintáticos do programa em ambas abordagens são iguais (mesma árvore de derivação) e, portanto, serão verificados através das mesmas operações.

Supondo a gramática a seguir e a sentença (a,(a),(a,a)), quais seriam os movimentos realizados por um reconhecedor ascendente para esta cadeia?

Supondo a gramática a seguir e a sentença (a,(a),(a,a)), quais seriam os movimentos realizados por um reconhecedor ascendente para esta cadeia? G = ({L,S}, {“(“, ”)”, ”a”, ”,”}, L, P ) P. L → (S) S → I,S | I I → a | L
a. (a,(a),(a,a)) ⇒ (I,(a),(a,a)) ⇒ (I,(I),(a,a)) ⇒ (I,(S),(a,a)) ⇒ (I,L,(a,a)) ⇒ (I,I,(a,a)) ⇒ (I,I,(I,a)) ⇒(I,I,(I,I)) ⇒ (I,I,(I,S)) ⇒ (I,I,(S)) ⇒ (I,I,L) ⇒ (I,I,I) ⇒ (I,I,S) ⇒ (I,S) ⇒ (S) ⇒ L.
b. (a,(a),(a,a)) ⇒ (I,(a),(a,a)) ⇒ (I,(I),(a,a)) ⇒ (I,(S),(a,a)) ⇒ (I,L,(a,a)) ⇒ (I,I,(a,a)) ⇒ (I,I,(I,a)) ⇒(I,I,(S,a)) ⇒ Erro, cadeia inválida.
c. (a,(a),(a,a)) ⇒ (a,(a),(a,I)) ⇒ (a,(a),(I,I)) ⇒ (a,(a),(S)) ⇒ (a,(a),(S)) ⇒ (a,(a),L) ⇒ (a,(a),I) ⇒ (a,(a),S) ⇒ (a,(I),S) ⇒ (a,(S),S) ⇒ (a,L,S) ⇒ (a,I,S) ⇒ (a,S) ⇒ (I,S) ⇒ (S) ⇒ L.
d. L ⇒ (S) ⇒ (I,S) ⇒ (a,S) ⇒ (a,I,S) ⇒ (a,L,S) ⇒ (a,(S),S) ⇒ (a,(I),S) ⇒ (a,(a),S) ⇒ (a,(a),I) ⇒ (a,(a),L) ⇒(a,(a),(S)) ⇒ (a,(a),(I,S)) ⇒ (a,(a),(a,S)) ⇒ (a,(a),(a,I)) ⇒ (a,(a),(a,a)).
e. L ⇒ (S) ⇒ (I,S) ⇒ (a,S) ⇒ (a,I,S) ⇒ (a,L,S) ⇒ (a,(S),S) ⇒ (a,(I),S) ⇒ (a,(a),S) ⇒ (a,(a),I) ⇒ (a,(a),L) ⇒(a,(a),(S)) ⇒ (a,(a),(I)) ⇒ (a,(a),(a)) ⇒ Erro, cadeia inválida.

Mais conteúdos dessa disciplina