Buscar

AO2 (DP_ADAP Março)_ Paradigmas de Linguagens de Programação

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

AO2 (DP/ADAP Março)
Entrega 23 mar em 23:59 Pontos 6 Perguntas 10
Disponível até 23 mar em 23:59 Limite de tempo Nenhum
Instruções
Este teste foi travado 23 mar em 23:59.
Histórico de tentativas
Tentativa Tempo Pontuação
MAIS RECENTE Tentativa 1 5 minutos 4,2 de 6
Pontuação deste teste: 4,2 de 6
Enviado 17 mar em 10:53
Esta tentativa levou 5 minutos.
Importante:
Caso você esteja realizando a atividade através do aplicativo "Canvas Student", é necessário que
você clique em "FAZER O QUESTIONÁRIO", no final da página.
0,6 / 0,6 ptsPergunta 1
Leia o texto a seguir:
“A World Wide Web é mantida por uma eclética coleção de linguagens,
que vão desde linguagens de marcação, como HTML, que não é de
programação, até linguagens de programação de propósito geral,
como Java. Dada a necessidade universal de conteúdo dinâmico na
Web, alguma capacidade de computação geralmente é incluída na
tecnologia de apresentação de conteúdo. Essa funcionalidade pode
ser fornecida por código de programação embarcado em um
documento HTML. Tal código é normalmente escrito com uma
linguagem de scripting, como JavaScript ou PHP (Tatroe, 2013).”
Fonte: SEBESTA, R. W. Conceitos de linguagens de programação. 11.
ed. Porto Alegre: Bookman, 2018.
A+
A
A-
https://famonline.instructure.com/courses/27783/quizzes/132356/history?version=1
Considerando as informações apresentadas, assinale a opção correta:
 Java é uma linguagem de scripting. 
 HTML não é usada para escrever algoritmos. Correto!Correto!
 
HTML é dispensável na Web, podendo ser substituída por JavaScript
ou PHP.
 HTML garante o dinamismo do conteúdo Web. 
 HTML é uma linguagem de scripting. 
Alternativa correta, pois o HTML não é uma linguagem de
programação propriamente dita, mas uma linguagem de
marcação. Ou seja, ela é utilizada para criar a estrutura de
documentos. Portanto, ela não pode ser utilizada para escrever
algoritmos. Sem a possibilidade de escrever algoritmos, ela não
é capaz de garantir sozinha um dinamismo.
0,6 / 0,6 ptsPergunta 2
Leia o texto a seguir:
“A simplicidade em linguagens pode, é claro, ser levada ao extremo.
Por exemplo, a forma e o significado da maioria das sentenças de uma
linguagem assembly são modelos de simplicidade, como você pode
ver quando considera as sentenças que aparecem na próxima seção.
Essa simplicidade extrema, entretanto, torna menos legíveis os
programas escritos em linguagem assembly. Devido à falta de
sentenças de controle mais complexas, a estrutura de um programa é
menos óbvia; como as sentenças são simples, mais delas são
necessárias do que em programas equivalentes escritos em uma
linguagem de alto nível.”
Fonte: SEBESTA, R. W. Conceitos de linguagens de programação. 11.
ed. Porto Alegre: Bookman, 2018.
A+
A
A-
Considerando o trecho acima, avalie as seguintes asserções e a
relação proposta entre elas:
I. As linguagens assembly possuem excelente desempenho
computacional.
PORQUE
II. As linguagens assembly são mais difíceis de compreender do que
as linguagens consideradas de alto nível.
Assinale a alternativa com a relação correta entre as asserções I e II:
 A asserção I é verdadeira e a asserção II é falsa. 
 
As asserções I e II são verdadeiras, mas a II não é uma justificativa
correta da I.
Correto!Correto!
 As asserções I e II são falsas. 
 A asserção II é verdadeira e a asserção I é falsa. 
 
As asserções I e II são verdadeiras, e a II é uma justificativa correta da
I.
A+
A
A-
Alternativa correta, pois as asserções I e II são verdadeiras,
mas a II não é uma justificativa correta da I. Ao invés disso
ambas possuem uma justificativa em comum: a linguagem
assembly é uma linguagem bastante próxima da máquina, e
suas instruções correspondem diretamente a instruções nativas
do hardware. Essa proximidade com o hardware permite a
escrita de programas com um desempenho computacional
inatingível por linguagens ditas de “alto nível”, dado o nível de
controle que o programador terá do que exatamente a máquina
fará. Por outro lado, essa proximidade também significa que
não existem estruturas de controle e estruturas de dados para
auxiliar no desenvolvimento dos programas ou automatizar
parte da tarefa de programação, além de exigir do programador
um conhecimento muito grande da arquitetura do hardware.
0,6 / 0,6 ptsPergunta 3
Leia o texto a seguir:
“McCarthy desenvolveu de maneira bem-sucedida uma função
universal que poderia avaliar qualquer outra função. Ela foi chamada
EVAL e tinha a forma de uma expressão. Dois pesquisadores do
Projeto IA que estavam desenvolvendo Lisp, Stephen B. Russell e
Daniel J. Edwards, deram-se conta de que uma implementação de
EVAL poderia servir como um interpretador Lisp e prontamente
construíram tal implementação.”
Fonte: SEBESTA, R. W. Conceitos de linguagens de programação. 11.
ed. Porto Alegre: Bookman, 2018.
Assinale a alternativa correta sobre o provável funcionamento da
implementação de EVAL:
 
Ela traduz o código Lisp para binário nativo em tempo de execução.
Essa tradução é executada novamente toda vez que o programa é
executado.
Correto!Correto!
A+
A
A-
 
Ela utiliza inteligência artificial (IA) para gerar automaticamente
programas em Lisp.
 
Ela gera programas em uma linguagem intermediária, como um
bytecode, e em seguida executa esse programa.
 
Ela compila o código Lisp, gerando um código binário nativo ao final
que pode ser executado múltiplas vezes.
 
Ela gera programas em uma linguagem intermediária, e na hora da
primeira execução ela compila essa linguagem intermediária para
binário nativo.
Alternativa correta, pois a implementação de EVAL funciona
como um interpretador Lisp. No processo de interpretação, o
programa escrito em uma linguagem de alto nível é interpretado
por outro programa, que irá executar instruções nativas da
máquina. O resultado da interpretação não é salvo, e toda a
“tradução” da linguagem de alto nível para linguagem nativa é
refeito a cada execução.
Esse procedimento é o oposto da compilação, onde o
compilador traduz o programa original para binário nativo uma
única vez.
0 / 0,6 ptsPergunta 4
Leia o texto a seguir:
“As primeiras implementações de Java eram todas híbridas. Seu
formato intermediário, chamado de bytecode, fornece portabilidade
para qualquer máquina que tenha um interpretador de bytecodes e um
sistema de tempo de execução associado. Juntos, eles são chamados
de Máquina Virtual Java. Existem agora sistemas que traduzem
A+
A
A-
bytecodes Java em código de máquina, de forma a possibilitar uma
execução mais rápida.”
Fonte: SEBESTA, R. W. Conceitos de linguagens de programação. 11.
ed. Porto Alegre: Bookman, 2018.
Considerando o trecho acima, avalie as afirmações abaixo:
I. O código Java é interpretado pela Máquina Virtual, gerando
como resultado o bytecode.
II. O bytecode é interpretado pela Máquina Virtual, sendo
traduzido para instruções nativas.
III. O código Java é compilado pelo JIT, gerando bytecode para
ser interpretado pela Máquina Virtual.
IV. O bytecode é compilado pelo JIT, gerando código de máquina
nativo.
É correto o que se afirma em:
 III e IV, apenas. 
 II e III, apenas. 
 I e II, apenas. 
 I e IV, apenas. ocê respondeuocê respondeu
 II e IV, apenas. esposta corretaesposta correta
A+
A
A-
Alternativa incorreta, pois apenas as afirmativas II e IV estão
corretas.
A afirmativa I é falsa, pois o código Java é traduzido uma vez
para bytecode, um código binário “fictício”. Esse processo
corresponde a uma compilação, porém, tendo como alvo a
Máquina Virtual, e não o binário nativo. 
A afirmativa II é verdadeira, pois uma das formas de lidar com o
bytecode é interpretando-o, um processo realizado pela
Máquina Virtual Java. Esse processo é menos eficiente e deve
ser repetido todas as vezes que o programa for executado.
A afirmativa III é falsa, pois o código Java é compilado para
bytecode, o qual pode ser interpretado pela Máquina Virtual.
Alternativamente, o bytecode (e não o código Java original)
atualmente é compilado pelo compiladorJIT (Just In Time) em
sua primeira execução em uma máquina, gerando um código
binário nativo.
A afirmativa IV é verdadeira, pois, alternativamente, o programa
pode passar por uma segunda compilação, onde o bytecode é
traduzido permanentemente para código nativo de máquina.
Isso é realizado pelo compilador JIT (Just-In-Time), que
executará na primeira execução do programa e irá gerar código
nativo e otimizado especificamente para a plataforma onde ele
está executando.
0 / 0,6 ptsPergunta 5
Observe a tabela a seguir:
 
Critérios de avaliação de linguagens e as características que os afetam
 
 Critérios
A+
A
A-
Característica Legibilidade
Facilidade de
escrita
Confiabilidade
Simplicidade • • •
Ortogonalidade • • •
Tipos de dados • • •
Projeto de
sintaxe
• • •
Suporte para
abstração
 • •
Expressividade • •
Verificação de
tipos
 •
Tratamento de
exceções
 •
Apelidos
restritos
 •
 
Fonte: SEBESTA, R. W. Conceitos de linguagens de programação. 11.
ed. Porto Alegre: Bookman, 2018.
Considerando as afirmações sobre critérios de avaliação de
linguagens, avalie as afirmações abaixo:
I. Linguagens simples não são confiáveis, pois são as estruturas que
garantem o funcionamento adequado do programa que adicionam
complexidade à linguagem.
II. Linguagens com alta legibilidade permitem que uma pessoa não
familiarizada com um projeto de software consiga compreender
facilmente o que seu código faz.
III. Linguagens com facilidade de escrita ajudam a reduzir o custo do
projeto, devido à economia de horas de trabalho e prevenção de erros.
A+
A
A-
É correto o que se afirma em:
 I e II, apenas. 
 II e III, apenas. esposta corretaesposta correta
 III, apenas. 
 I, apenas. ocê respondeuocê respondeu
 I e III, apenas. 
Alternativa incorreta.
A afirmativa I é falsa, pois a legibilidade diz respeito a quão fácil
é compreender o funcionamento de um código através de sua
leitura. Portanto, linguagens com boa legibilidade são
desejáveis porque uma primeira leitura do código já trará
bastante informação sobre seu funcionamento.
 
A afirmativa II é verdadeira, pois a facilidade de escrita diz
respeito a quão fácil é escrever códigos novos na linguagem.
Essa característica permite um desenvolvimento mais rápido de
novos programas, bem como ajuda a evitar erros por parte dos
programadores, já que eles sabem exatamente o que estão
escrevendo.
 
A afirmativa III é verdadeira, pois a confiabilidade é influencia
uma série de características diferentes. A simplicidade de uma
linguagem, que é uma das principais características tanto em
linguagens com boa legibilidade quanto em linguagens com
facilidade de escrita, também é importante para a
confiabilidade: linguagens muito complexas se tornam difíceis
de ler e escrever, aumentando a chance do programador
cometer erros.
A+
A
A-
0,6 / 0,6 ptsPergunta 6
Leia o texto a seguir:
“Algumas vezes, um implementador pode fornecer tanto
implementações compiladas quanto interpretadas para uma
linguagem. Nesses casos, o interpretador é usado para desenvolver e
depurar programas. Então, após um estado (relativamente) livre de
erros ser alcançado, os programas são compilados para aumentar sua
velocidade de execução.”
Fonte: SEBESTA, R. W. Conceitos de linguagens de programação. 11.
ed. Porto Alegre: Bookman, 2018.
Considerando o trecho acima, avalie as asserções abaixo e a relação
proposta entre elas.
I. É mais rápido testar programas em fase de desenvolvimento se
eles forem compilados.
PORQUE
II. Programas compilados passam por uma série de otimizações
e executam em binário nativo.
Assinale a alternativa com a relação correta entre as asserções I e II:
 A asserção I é falsa e a asserção II é verdadeira. Correto!Correto!
 
As asserções I e II são verdadeiras, e a II é uma justificativa correta da
I.
 
As asserções I e II são verdadeiras, mas a II não é uma justificativa
correta da I.
 A asserção I é verdadeira e a asserção II é falsa. 
 As asserções I e II são falsas. 
A+
A
A-
Alternativa correta, pois a asserção I é uma proposição falsa, e
a asserção II é uma proposição verdadeira.
A asserção I é falsa, pois os durante a etapa de
desenvolvimento, frequentemente precisamos validar
modificações pontuais. Em linguagens compiladas, ao realizar
uma modificação pontual é necessário recompilar o programa
inteiro, ou ao menos um módulo. Isso faz com que o processo
de desenvolvimento se torne bastante lento, visto que o
processo de compilação consome tempo. Por isso algumas
linguagens oferecem o recurso descrito no texto: o programador
pode realizar diversos testes pontuais sem precisar recompilar
o programa, e uma vez que esteja satisfeito com o resultado,
pode compila-lo uma única vez, gerando um binário otimizado
para ser disponibilizado para os usuários.
A asserção II é verdadeira, pois os programas compilados, de
fato, passam por otimizações (em vários níveis diferentes) que
melhoram seu desempenho. Além disso, executar diretamente
em linguagem nativa de máquina tende a tornar os programas
mais rápidos do que processos de interpretação.
0,6 / 0,6 ptsPergunta 7
Leia o texto a seguir:
“Um ambiente de programação é a coleção de ferramentas usadas no
desenvolvimento de software. Essa coleção pode consistir em apenas
um sistema de arquivos, um editor de textos, um ligador e um
compilador. Ou pode incluir uma grande coleção de ferramentas
integradas, cada uma acessada por meio de uma interface de usuário
uniforme. Neste último caso, o desenvolvimento e a manutenção de
software são enormemente melhorados. Logo, as características de
uma linguagem de programação não são a única medida da
capacidade de desenvolvimento de um sistema.”
Fonte: SEBESTA, R. W. Conceitos de linguagens de programação. 11.
ed. Porto Alegre: Bookman, 2018.
Considerando o trecho acima, avalie as afirmações abaixo:
I. A geração automática de códigos é um recurso que pode ser
A+
A
A-
oferecido pelo ambiente de programação.
II. Cada ambiente de programação é exclusivo para uma única
linguagem de programação.
III. É possível desenvolver em múltiplas linguagens utilizando o mesmo
ambiente.
IV. Cada linguagem possui um ambiente nativo que deverá ser
obrigatoriamente utilizado em seu desenvolvimento.
É correto o que se afirma em:
 I, III e IV, apenas. 
 I, II e IV, apenas. 
 I e IV, apenas. 
 I e III, apenas. Correto!Correto!
 II e IV, apenas. 
A+
A
A-
Alternativa correta.
A afirmativa I é verdadeira, pois algumas IDEs possuem
recursos de geração automática de código. Isso inclui a criação
automática da estrutura principal de um programa ao criarmos
um novo arquivo em branco, a geração automática de funções
ou métodos padrão, como getters e setters para atributos de
classes, e até mesmo a geração do código para criar uma
interface gráfica montada através de cliques do mouse.
 
A afirmativa III é verdadeira, pois um mesmo ambiente pode
atender a múltiplas linguagens, e em diferentes níveis: um
pacote de compiladores pode oferecer uma forma unificada de
compilar diferentes linguagens, uma mesma IDE pode oferecer
recursos de edição para diferentes linguagens, um ambiente
pode suportar toda uma família de linguagens que
compartilhem uma plataforma (como a família .NET), entre
outros – sendo assim, ambientes de programação não são
necessariamente exclusivos para uma mesma linguagem.
As afirmativas II e IV são falsas, pois, geralmente, o
desenvolvedor tem um ambiente completo fornecido por um
fabricante, mas não é obrigado a utilizar e tem a opção de optar
por diferentes IDEs, compiladores, entre outros.
0,6 / 0,6 ptsPergunta 8
Leia o texto a seguir:
“Uma classe C++ pode conter tanto entidades ocultas quanto visíveis
(ocultas dos clientes ou visíveis para os clientes da classe). Entidades
ocultas são colocadas em uma cláusula private e entidades visíveis, ou
públicas, aparecem em uma cláusula public. Logo, a cláusula public
descreve a interface para instâncias da classe.”
Fonte: SEBESTA, R. W. Conceitos de linguagens de programação.11.
ed. Porto Alegre: Bookman, 2018.
Avalie as seguintes asserções e a relação proposta entre elas:
A+
A
A-
I. As cláusulas private e public são úteis para implementar,
respectivamente, os princípios do encapsulamento e abstração.
PORQUE
II. Idealmente, atributos devem ser privados e métodos devem
ser públicos.
Assinale a alternativa com a relação correta entre as asserções I e II:
 A asserção I é verdadeira e a asserção II é falsa. 
 Ambas as asserções são falsas. 
 
As asserções I e II são verdadeiras, mas a II não é uma justificativa
correta da I.
 
As asserções I e II são verdadeiras, e a II é uma justificativa correta da
I.
Correto!Correto!
 A asserção I é falsa e a asserção II é verdadeira. 
A+
A
A-
Alternativa correta. A asserção I é verdadeira, pois o princípio
do encapsulamento diz que os atributos de uma classe devem
ser acessíveis apenas pela própria classe. Dessa maneira, a
cláusula “private” em C++ pode ser utilizada para ocultar os
atributos de uma classe, reforçando este princípio. O princípio
da abstração defende que a complexidade de uma classe deve
ficar “oculta” dentro de seus métodos, que por sua vez devem
constituir uma interface simples de ser utilizada. Como o próprio
texto diz, a cláusula “public” pode ser utilizada para descrever a
interface da classe. Podemos utilizá-la para tornar os métodos
públicos, criando a interface defendida pelo princípio da
abstração. A asserção II é verdadeira porque descreve um dos
padrões mais comuns para assegurar o respeito aos princípios
do encapsulamento e abstração. A asserção I é verdadeira e é
justificada pela II porque ela descreve uma forma de usar as
cláusulas para implementar os padrões descritos.
0,6 / 0,6 ptsPergunta 9
Leia o texto a seguir:
“Uma das características fundamentais dos programas escritos em
linguagens imperativas é o fato de terem estado, o qual muda ao longo
do processo de execução. Esse estado é representado pelas variáveis
do programa. O autor e todos os leitores do programa devem entender
os usos de suas variáveis e compreender como o estado do programa
muda durante a execução. Para um programa grande, é uma tarefa
intimidante.”
Fonte: SEBESTA, R. W. Conceitos de linguagens de programação. 11.
ed. Porto Alegre: Bookman, 2018.
Assinale a alternativa correspondente ao paradigma que não possui
estado:
 Paradigma funcional. Correto!Correto!
 Paradigma procedural. 
A+
A
A-
 Programação orientada a objeto. 
 Programação orientada a eventos. 
 Programação concorrente. 
Alternativa correta, pois o paradigma funcional é caracterizado
pela ausência de estado. Os programas correspondem a
coleções de definições matematicamente rigorosas de funções,
garantindo um alto grau de determinismo.
0 / 0,6 ptsPergunta 10
Leia o texto a seguir:
“Um programa grande normalmente é escrito por muitos
desenvolvedores, que trabalham de maneira independente, talvez até
em localizações geográficas diferentes. Isso requer que as unidades
lógicas do programa sejam independentes, mas que ainda seja
possível trabalhar em conjunto. Além disso, cria um problema de
nomeação: como desenvolvedores que trabalham independentemente
criam nomes para suas variáveis, métodos e classes sem
acidentalmente usar nomes já utilizados por outro programador em
uma parte diferente do mesmo sistema de software?”
Fonte: SEBESTA, R. W. Conceitos de linguagens de programação. 11.
ed. Porto Alegre: Bookman, 2018.
Considerando as informações apresentadas, assinale a opção correta:
 
A compilação independente de cada módulo resolve o problema
descrito.
 
A programação modular exige atenção ao escopo de classes, variáveis
e funções.
esposta corretaesposta correta
A+
A
A-
 
Para evitar o problema descrito, programadores não devem trabalhar
paralelamente em módulos distintos.
 
O problema descrito pode ser resolvido pela adoção da programação
modular.
ocê respondeuocê respondeu
Alternativa incorreta, pois o problema descrito ocorre justamente 
por causa da adoção da programação modular. A alternativa 
correta é aquela que diz que a programação modular exige 
atenção ao escopo de classes, variáveis e funções. Por exemplo, 
uma variável criada dentro de uma função geralmente não é 
acessível fora dela. Portanto, variáveis com o mesmo nome 
dentro de diferentes funções não terão interferência entre si. 
Porém, dentro da mesma função haveria problema. O escopo em 
nível de módulo: com o programa subdividido em vários módulos 
sendo desenvolvidos por programadores independentes, existe o 
risco de surgirem funções ou classes diferentes com o mesmo 
nome, todas com a mesma visibilidade no programa.
 
O problema descrito é exclusivo da programação orientada a objeto. 
Pontuação do teste: 4,2 de 6
A+
A
A-

Continue navegando