Logo Passei Direto
Buscar
O processo de verificação de tipos torna-se mais importante quando consideramos que, em muitas linguagens de programação, existem tipos complexos e tipos compostos. No caso de tipos compostos como um array ou uma struct, caberá ao analisador semântico a análise dos tipos agregados. Há ainda de se considerar a possibilidade de criação de novos tipos, compostos ou complexos, de acordo com a necessidade do programador. Assim, caberá ao analisador semântico, analisar, por exemplo, um tipo struct criado para atender as necessidades específicas de um programa da mesma forma que ele avalia um tipo inteiro ou real. Com relação a verificação de tipos, qual das afirmativas a seguir é incorreta?
A A checagem estática de tipos é feita em tempo de compilação, como é o caso da linguagem C, quando compilada;
B A checagem de tipos dinâmica é feita em tempo de execução, como é o caso da linguagem PHP, quando interpretada;
C Linguagens de programação podem exigir a definição de tipo para cada variável ou estrutura de dados composta ou, podem determinar estes tipos em tempo de execução, dependendo de escolhas realizadas na definição da linguagem;
D A definição de tipos complexos, como listas e pilhas, independe da linguagem de programação e, como tal, estes tipos podem ser verificados por qualquer analisador semântico;
E Ainda que tipos complexos e compostos tornem o processo de análise semântica mais complexo e demorado, as funcionalidades que são agregadas as linguagens de programação por estes constructors torna sua utilização indispensável.
User badge image
Praticando Para Aprender

ano passado

Respostas

User badge image

Ed Verified user icon

há 3 meses

Vamos analisar cada uma das alternativas para identificar qual delas é incorreta: A) A checagem estática de tipos é feita em tempo de compilação, como é o caso da linguagem C, quando compilada; Correta. A checagem estática realmente ocorre em tempo de compilação. B) A checagem de tipos dinâmica é feita em tempo de execução, como é o caso da linguagem PHP, quando interpretada; Correta. A checagem dinâmica ocorre em tempo de execução, como em PHP. C) Linguagens de programação podem exigir a definição de tipo para cada variável ou estrutura de dados composta ou, podem determinar estes tipos em tempo de execução, dependendo de escolhas realizadas na definição da linguagem; Correta. Isso é verdade, pois algumas linguagens são estaticamente tipadas e outras dinamicamente tipadas. D) A definição de tipos complexos, como listas e pilhas, independe da linguagem de programação e, como tal, estes tipos podem ser verificados por qualquer analisador semântico; Incorreta. A definição e verificação de tipos complexos dependem da linguagem de programação, pois cada linguagem pode ter suas próprias regras e implementações para esses tipos. E) Ainda que tipos complexos e compostos tornem o processo de análise semântica mais complexo e demorado, as funcionalidades que são agregadas às linguagens de programação por estes constructors tornam sua utilização indispensável. Correta. Essa afirmação é verdadeira, pois os tipos complexos realmente agregam funcionalidades importantes. Portanto, a alternativa incorreta é: D.

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

User badge image

Ed Verified user icon

ano passado

Analisando as afirmativas apresentadas: A) A checagem estática de tipos é feita em tempo de compilação, como é o caso da linguagem C, quando compilada - Esta afirmativa está correta, pois na checagem estática de tipos, os tipos são verificados em tempo de compilação. B) A checagem de tipos dinâmica é feita em tempo de execução, como é o caso da linguagem PHP, quando interpretada - Esta afirmativa está correta, pois na checagem de tipos dinâmica, os tipos são verificados em tempo de execução. C) Linguagens de programação podem exigir a definição de tipo para cada variável ou estrutura de dados composta ou, podem determinar estes tipos em tempo de execução, dependendo de escolhas realizadas na definição da linguagem - Esta afirmativa está correta, pois as linguagens podem ter diferentes abordagens em relação à definição de tipos. D) A definição de tipos complexos, como listas e pilhas, independe da linguagem de programação e, como tal, estes tipos podem ser verificados por qualquer analisador semântico - Esta afirmativa está incorreta, pois a definição de tipos complexos pode variar de uma linguagem para outra, e nem todos os analisadores semânticos podem verificar todos os tipos de dados. E) Ainda que tipos complexos e compostos tornem o processo de análise semântica mais complexo e demorado, as funcionalidades que são agregadas as linguagens de programação por estes constructors torna sua utilização indispensável - Esta afirmativa está correta, destacando a importância dos tipos complexos e compostos nas linguagens de programação. Portanto, a afirmativa que é incorreta é a letra D) A definição de tipos complexos, como listas e pilhas, independe da linguagem de programação e, como tal, estes tipos podem ser verificados por qualquer analisador semântico.

Essa resposta te ajudou?

0
Dislike0

Ainda com dúvidas?

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

Mais perguntas desse material

Considerando as afirmativas a seguir, marque a alternativa errada.
Uma das deficiências da linguagem C está na definição do tipo array que não inclui uma regra de verificação de limites, passando para o programador a responsabilidade sobre a verificação destes limites mesmo quando estes arrays são argumentos de uma função;
Métodos de classes, em linguagens orientadas a objetos não precisam que o analisador semântico observe a consistência dos seus argumentos. A exceção a esta regra é o constructor;
A verificação de argumentos de funções, em todas as chamadas, deve incluir, obrigatoriamente, a verificação dos tipos destes argumentos;
No caso dos argumentos de funções, a verificação de tipos destes argumentos pelo analisador semântico pode produzir uma conversão automática de tipos ou um erro;
Além dos tipos, relativos aos argumentos, o analisador semântico deve se preocupar também com a ordem destes argumentos.
Uma das deficiências da linguagem C está na definição do tipo array que não inclui uma regra de verificação de limites, passando para o programador a responsabilidade sobre a verificação destes limites mesmo quando estes arrays são argumentos de uma função;
Métodos de classes, em linguagens orientadas a objetos não precisam que o analisador semântico observe a consistência dos seus argumentos. A exceção a esta regra é o constructor;
A verificação de argumentos de funções, em todas as chamadas, deve incluir, obrigatoriamente, a verificação dos tipos destes argumentos;
No caso dos argumentos de funções, a verificação de tipos destes argumentos pelo analisador semântico pode produzir uma conversão automática de tipos ou um erro;
Além dos tipos, relativos aos argumentos, o analisador semântico deve se preocupar também com a ordem destes argumentos.

O uso de memória e o consumo de energia. Neste processo, o código é representado em uma notação próxima da linguagem Assembly mas, ainda independente da máquina. Qual das afirmativas a seguir está correta com relação a esta fase do processo de compilação?
A É na fase de otimização independente de máquina que o compilador torna o código mais eficiente para uso na arquitetura x86.
B Na fase de otimização, independente de máquina, o código é otimizado removendo-se todos os laços do programa de forma que não exista nenhum branch.
C O uso do 3opCode é recomendado já que este código é bem próximo do Assembly e a conversão acaba sendo mais simples.
D Na fase de otimização o compilador busca encontrar os últimos erros de sintaxe que existem no código.
E A parte mais importante do processo de otimização independente é o reconhecimento das funções de endereçamento específicas da arquitetura visada que tornarão o código mais rápido.
A É na fase de otimização independente de máquina que o compilador torna o código mais eficiente para uso na arquitetura x86.
B Na fase de otimização, independente de máquina, o código é otimizado removendo-se todos os laços do programa de forma que não exista nenhum branch.
C O uso do 3opCode é recomendado já que este código é bem próximo do Assembly e a conversão acaba sendo mais simples.
D Na fase de otimização o compilador busca encontrar os últimos erros de sintaxe que existem no código.
E A parte mais importante do processo de otimização independente é o reconhecimento das funções de endereçamento específicas da arquitetura visada que tornarão o código mais rápido.

Mais conteúdos dessa disciplina