Buscar

Prova de Paradigmas UNIVALI

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 22 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 22 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 22 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

Questão 1 - (Enade, 2017) ) - 0,67 ponto(s)
O encapsulamento é um mecanismo da programação orientada a objetos no qual os membros de uma classe (atributos e métodos) constituem uma caixa preta. O nível de visibilidade dos membros pode ser definido pelos modificadores de visibilidade "privado", 'público" e "protegido".
Com relação ao comportamento gerado pelos modificadores de visibilidade, assinale a opção correta.
A) 
Um atributo privado pode ser acessado pelos métodos privados da própria classe e pelos métodos protegidos das suas classes descendentes.
B) 
Um membro público é visível na classe à qual ele pertence, mas não é visível nas suas classes descendentes.
C) 
Um método protegido não pode acessar os atributos privados e declarados na própria classe.
D) 
Um atributo privado pode ser acessado pelos métodos públicos da própria classe e pelos métodos públicos das suas classes descendentes.
E) 
Um membro protegido é visível na classe à qual pertence e em suas classes descendentes.
Questão 2) - 0,67 ponto(s)
Considere: A classe Pedido contém um método chamado obter Produtos() que retorna uma lista de produtos pertencentes a um determinado pedido. O código que usa essa classe desconhece completamente como esta lista de produtos é montada. Tudo que interessa é a lista de produtos que o método retorna.
Essa consideração explica um dos fundamentos das linguagens OO, que é
A) 
dependência.
B) 
herança múltipla.
C) 
polimorfismo.
D) 
estereotipagem.
E) 
encapsulamento.
Questão 3) - 0,67 ponto(s)
As variáveis são utilizadas com a finalidade de armazenar dados durante a execução de um programa. Na linguagem Python, para realizar esse armazenamento, existem diversos recursos para declarar variáveis, além de definir tipos de dados e seus respectivos escopos, que variam de acordo com o local e a forma como são tratados nos programas. Por meio desses recursos, o Python permite implementar programas robustos e organizados, de fácil manutenção. A linguagem Python possui poucos tipos de dados, que representam os conjuntos dos números inteiros e reais, verdadeiro ou falso, números complexos, cadeia de caracteres e coleções. Vale ressaltar ainda que o Python utiliza declarações implícitas para definir o tipo de dado das variáveis, o que quer dizer que o tipo é definido no momento de sua criação, quando determinado valor é atribuído ou quando ela é modificada.
 
Disponível em: https://www.w3schools.com/python/python_numbers.asp. Acesso em: 11 mar. 2020.
  
Analise a seguir um trecho de código onde algumas variáveis são declaradas e posteriormente os tipos delas são impressos. 
 
Com base nas informações apresentadas e no código onde algumas variáveis são criadas, avalie as informações sobre os  tipos de dados da linguagem Python.
 
I. Na linha 14 é criada uma variável do tipo float, que armazena números de ponto flutuante.
 
II. Na linha 12 é criada uma variável do tipo varchar, que armazena uma sequência de caracteres.
 
III. Na linha 15 é criada uma variável do tipo complex, que armazena números complexos, sendo estes reais e imaginários.
 
IV. Na linha 13 é criada uma variável do tipo int, que armazena números inteiros, sem limite predefinido para o tamanho do número que será armazenado.
 
V. Nas linhas 10 e 11 são criadas variáveis do tipo int para posterior comparação através de uma variável do tipo bool, que armazena dados do tipo verdadeiro e falso, que significam, respectivamente, True e False, podendo ser visualizada entre as linhas 17 e 20.
 
É correto apenas que se afirma em
A) 
II e IV.
B) 
I, III, IV e V.
C) 
I, III e V.
D) 
II, III, IV.
E) 
I e II.
Questão 4) - 0,67 ponto(s)
Um analista desenvolveu métodos de impressão de dados com a mesma assinatura para três classes de impressoras (jato de tinta, laser e matricial) derivadas de uma mesma superclasse impressora. Tal prática
A) 
constitui-se em ferimento à regra de herança.
B) 
aplica o conceito de polimorfismo.
C) 
aplica o conceito de herança múltipla.
D) 
não é recomendada para orientação a objetos.
E) 
visa ao aumento da coesão entre os atributos da superclasse.
Questão 5) - 0,67 ponto(s)
Um dos grandes diferenciais da programação orientada a objetos em relação a outros paradigmas de programação, que também permitem a definição de estruturas e de operações sobre essas estruturas, está no conceito de herança, mecanismo através do qual definições existentes podem ser facilmente estendidas. Juntamente com a herança, deve ser enfatizada a importância do polimorfismo, que permite selecionar funcionalidades que um programa irá utilizar de forma dinâmica, durante sua execução. Objetos são instâncias de classes que determinam qual informação um objeto contém e como ele pode manipulá-la.
 
RICARTE, Ivan Luiz Marques. Fundamentos da programação orientada a objetos. Programação Orientada a Objetos: uma abordagem com Java. Universidade Estadual de Campinas, Campinas, SP, Brasil, 2001 (adaptado).
 
Face ao exposto, analise as seguintes asserções e a relação proposta entre elas.
 
I. Em um projeto real, deve-se utilizar o encapsulamento para definir critérios de segurança a uma classe.
 
PORQUE
 
II. Sem o encapsulamento, os atributos das classes poderiam ser modificados diretamente por qualquer método, ainda que externo.
 
A respeito das asserções, assinale a alternativa correta.
A) 
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
B) 
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
C) 
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
D) 
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
E) 
As asserções I e II são proposições falsas.
Questão 6) - 0,67 ponto(s)
No âmbito dos princípios de concepção e programação orientada a objeto, é correto afirmar que "um objeto da subclasse é um objeto da superclasse, ou seja, os objetos da subclasse podem ser tratados como objetos da superclasse". Esta afirmação é possível quando se refere ao contexto de
A) 
polimorfismo.
B) 
encapsulamento.
C) 
herança.
D) 
abstração.
E) 
reutilização.
Questão 7) - 0,67 ponto(s)
O C#, também escrito como C sharp, é uma linguagem do tipo forte, que suporta vários paradigmas, sendo funcional, imperativa, genérica, declarativa, orientada a objetos (fundamentada em classes) e também orientada a componentes. A linguagem do C# foi criada durante o desenvolvimento do .NET Framework, no ano 2000, pela Microsoft e, posteriormente, foi aprovada, sendo um padrão ECMA (ECMA) e, também, padrão ISO. Essa linguagem de programação é considerada, entre outras, uma das linguagens preparadas para a Common LanguageInfrastructure (CLI) da Microsoft.
 
LEDUR, C. L. Desenvolvimento de sistemas com C#. Porto Alegre: SAGAH, 2018 (adaptado).
 
Considere que Paulo é um profissional de TI e está criando um software para controle de colaboradores para a empresa. Durante a implementação, ele criou a classe denominada Colaborador, criou os atributos nome, telefone e endereço e atribuiu o modificador de acesso private para todos eles. Posteriormente, Paulo criou os métodos get e set para permitir a leitura e a escrita desses atributos protegidos.
 
 
Diante do exposto, assinale a alternativa em que os métodos get  e set (getters e setters) foram implementados corretamente.
A) 
 class Colaborador
    { privateString nome;
     privateString telefone;
     privateStringendereco;
 
     publicString Nome { get => nome; set => nome != value; }
     publicString Telefone { get => telefone; set => telefone != value; }
     publicStringEndereco{ get =>endereco; set =>endereco != value; }
    }
B) 
class Colaborador
    { privateString nome;
     privateString telefone;
     privateStringendereco;
 
     publicString Nome { get&& nome; set && nome = value; }
     publicString Telefone { get&& telefone; set && telefone = value; }
     publicStringEndereco{ get&&endereco; set &&endereco = value; }
    }
C) 
class Colaborador{ privateString nome;
     privateString telefone;
     privateStringendereco;
 
     publicString Nome { get<=> nome; set <=> nome = value; }
     publicString Telefone { get<=> telefone; set <=> telefone = value; }
     publicStringEndereco{ get<=>endereco; set <=>endereco = value; }
    }
D) 
class Colaborador
    { privateString nome;
     privateString telefone;
     privateStringendereco;
 
     publicString Nome { get => nome; set => nome == value; }
     publicString Telefone { get => telefone; set => telefone == value; }
     publicStringEndereco{ get =>endereco; set =>endereco == value; }
    }
E) 
class Colaborador
    { privateString nome;
     privateString telefone;
     privateStringendereco;
 
     publicString Nome { get => nome; set => nome = value; }
     publicString Telefone { get => telefone; set => telefone = value; }
     publicStringEndereco{ get =>endereco; set =>endereco = value; }
    }
Questão 8) - 0,67 ponto(s)
Sobre o procedimento de recursividade, assinale a alternativa CORRETA.
 
 
A) 
Os algoritmos I e II são recursivos.
B) 
Os algoritmos I e II não são recursivos.
C) 
Somente o algoritmo II é recursivo.
D) 
Somente o algoritmo I é recursivo.
E) 
O algoritmo I é recursivo e o II é semirrecursivo.
Questão 9) - 0,67 ponto(s)
Embora não haja essa regra sintática, uma classe bem projetada deve definir apenas uma entidade lógica. Por exemplo, normalmente, uma classe que armazena nomes e números de telefone não armazena também informações sobre o mercado de ações, a média pluviométrica, os ciclos das manchas solares ou outros dados não relacionados. Ou seja, uma classe bem projetada deve agrupar informações logicamente conectadas. A inserção de informações não relacionadas na mesma classe desestruturará rapidamente seu código.
SCHILDT, Herbert. Java para iniciantes. 6. ed. Porto Alegre: Bookman, 2015.
 
Analise o trecho de código abaixo.
 
 
Com base no texto supracitado e na imagem acima, pode-se afirmar que
 
I. automovel é uma classe.
II. passageiros, litros e kmpl são métodos.
III. passageiros, litros e kmpl são variáveis de instância.
IV. para declarar um objeto para esta classe, é necessário o tipo automovel.
 
É correto o que se afirma em
A) 
I, III  e IV, apenas.
B) 
I, II e IV, apenas.
C) 
I e II, apenas.
D) 
I, II, III e IV.
E) 
II e III, apenas.
Questão 10) - 0,67 ponto(s)
Paradigmas funcionais para elaboração e desenvolvimento de sistemas computacionais foram alguns dos primeiros métodos estabelecidos para o desenvolvimento de algoritmos. Técnicas e recursos destes paradigmas são aplicados no desenvolvimento de aplicações objetivando o aumento do desempenho e da eficiência de execução, bem como estabelecendo uma maior legibilidade para os códigos desenvolvidos. O paradigma funcional caracteriza-se pelo uso de funções ao longo da estrutura do código, atribuindo ao algoritmo uma abordagem concisa e direta, conforme o trecho de algoritmo apresentado a seguir, elaborado em linguagem Python, no qual se utiliza uma função lambda para manipulação dos dados presentes na lista “lista1”.
 
lista1 [1, 4, 9, 16, 25]
map(lambda x: 4*x+2, lista1)
 
Considerando que o retorno será [6, 18, 38, 66, 102], a respeito das características do paradigma funcional presentes no código ilustrado, avalie as afirmações a seguir.
 
I. A função lambda utilizada é um exemplo de função de primeira classe, pois é utilizada como argumento para a função map.
 
II. Caso os dados armazenados na lista “lista1” sejam modificados, será preciso alterar a expressão lambda, a fim de receber os novos argumentos.
 
III. A função map utilizada é um exemplo de função embutida e é executada de forma recursiva sobre os elementos da “lista1”.
 
É correto o que se afirma em
A) 
I e III, apenas.
B) 
II, apenas.
C) 
II e III, apenas.
 
D) 
I, II e III.
E) 
I, apenas.
Questão 11 - (Enade, 2017) ) - 0,67 ponto(s)
Um dos conceitos básicos de orientação a objetos é o conceito de herança. Durante a implementação de um sistema, o mecanismo de herança suporta a definição de uma nova classe A a partir de outra B, preexistente (por exemplo, em Java, pode-se definir a classe A herdeira da classe B como "class A extends B"). Além disso, tal mecanismo pode implementar polimorfismo de tipos de objetos.
DEITEL, P.; DEITEL, H. Java - como programar. 8. ed. São Paulo: Prentice Hall, 2010 (adaptado).
 
A respeito de herança e sua relação com orientação a objetos, avalie as afirmações a seguir.
 
I. Herança é um mecanismo que pode ser usado para implementar polimorfismo.
II. Herança permite o reaproveitamento de código comum entre algumas classes.
III. Métodos herdados equivalem a métodos polimórficos.
 
É correto o que se afirma em
A) 
I e II, apenas.
B) 
I, apenas.
C) 
III, apenas.
D) 
II e III, apenas.
E) 
I, II e III.
Questão 12) - 0,67 ponto(s)
Em uma linguagem de programação que exibe polimorfismo, os objetos de classes pertencentes à mesma árvore hierárquica (herdados de uma classe base comum) podem possuir funções com o mesmo nome, mas cada uma com comportamentos diferentes. Com efeito, o polimorfismo reduz o trabalho do desenvolvedor, porque ele pode criar um tipo de classe geral com todos os atributos e comportamentos necessários. Quando chega a hora do desenvolvedor criar subclasses mais específicas com determinados atributos e comportamentos exclusivos, o desenvolvedor pode simplesmente alterar o código nas partes específicas em que os comportamentos diferem. Todas as outras partes do código podem ser deixadas como inalteradas.
 
LUCKOW, Décio Heinzelmann; DE MELO, Alexandre Altair. Programação Java para a WEB. Novatec Editora, 2010.
 
 
Sobre as características do polimorfismo, é correto afirmar que
A) 
independente da forma que possua um objeto, aplicando a “área-método-plus” para ele, retornará aos resultados corretos.
B) 
está baseado na linguagem interpretada livre PHP, usada originalmente apenas para o desenvolvimento de aplicações presentes e atuantes no lado do servidor.
C) 
é usado para definir estilos para suas páginas da web, baseado no design, layout e variações de exibição para diferentes dispositivos e tamanhos de tela.
D) 
o polimorfismo refere-se à capacidade de uma linguagem de programação de processar objetos de maneira diferente, dependendo de seu tipo ou classe de dados.
E) 
sabe-se que polimorfismo permite que o programador defina diferentes blocos de área para qualquer número de classes derivadas, como círculos, retângulos e triângulos.
Questão 13) - 0,67 ponto(s)
O melhor framework para visualização de dados provavelmente será aquele que o usuário tiver maior domínio para realizar suas atividades com maior desenvoltura, atingindo, então, mais eficiência nas entregas. Todavia, em determinados cenários de projeto, talvez seja preciso seguir com algum framework específico que a equipe ou a organização já esteja trabalhando, portanto, isso exige que as visualizações sejam desenvolvidas dentro desse mesmo ambiente padrão. Sendo assim, é importante estar familiarizado com alguns frameworks que são mais amplamente utilizados. É possível encontrar inúmeras ferramentas no mercado, que podem ser utilizadas para o desenvolvimento de visualizações, desde soluções de planilha, como MS Excel e Google Sheets, até ferramentas com maior foco em visualização de dados, como o Tableau. Elas têm sido amplamente utilizadas por profissionais que não necessariamente exercem oficialmente a função de analista de dados ou cientista de dados, pois, além de oferecerem muitas opções de técnicas de visualização de dados, não requerem conhecimento de linguagens de programação. Entretanto, elas ainda requerem algum nível de capacitação inicial para serem entendidas e utilizadas. Dentro do contexto de visualização de dados ainda é possível citar linguagens como Python, R e JavaScript, que são soluções abertas, ou seja, sem custo de aquisição de software e que devem atender grande parte das demandas
 
MILANI, A. M. P. Frameworks de visualização dedados. Porto Alegre: SAGAH, 2020 (adaptado).
 
Diante do exposto, considere a situação a seguir.
 
Durante o atendimento feito por um analista da empresa PKX Tecnologia, Pedro, o filho de um cliente, que por sua vez é estudante de Engenharia da Computação, resolveu aproveitar para tirar algumas dúvidas sobre linguagens de programação para visualização de dados com analista. Ele queria entender um pouco mais sobre as principais características da linguagem Python.
 
Tendo em vista o que o analista pode ter respondido para Pedro, avalie as asserções a seguir e a relação entre elas.
 
I. O analista disse a Pedro que Python é uma linguagem de programação orientada a objetos clara e poderosa, comparável a Perl, Ruby, Scheme ou Java, que utiliza uma sintaxe elegante, facilitando a leitura dos programas que são escritos.
 
PORQUE
II. É uma linguagem fácil de ser utilizada, que facilita o funcionamento do programa e, portanto, ideal para o desenvolvimento de protótipos e outras tarefas de programação ad-hoc, sem comprometer a manutenção.
 
A respeito dessas asserções, assinale a opção correta
A) 
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
B) 
As asserções I e II são proposições falsas.
C) 
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
D) 
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
E) 
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
Questão 14) - 0,67 ponto(s)
A respeito das características dos paradigmas e das linguagens de programação, assinale a opção CORRETA.
A) 
As linguagens procedimentais que dominaram o mercado antes da programação estruturada, tal como o COBOL, caracterizaram-se por utilizar amplamente os tipos abstratos de dados.
B) 
As linguagens do paradigma de programação funcional, como o Prolog, não apresentam grandes restrições ao uso de estruturas de controle (goto), o que pode reduzir a legibilidade dos programas construídos sem limitações.
C) 
As linguagens imperativas, como o Pascal, são voltadas para a especificação da solução do problema, por meio do detalhamento do algoritmo e da especificação da ordem das instruções.
D) 
No paradigma lógico, que é suportado por linguagens de programação não imperativas, como o Lisp, os programas gerados são embasados em funções matemáticas.
E) 
O paradigma de programação orientado a objetos reúne linguagens, como o C++, que são declarativas, isto é, o foco está na especificação dos resultados desejados, ao invés dos procedimentos para produzi-los.
Questão 15 - (Enade, 2008) ) - 0,67 ponto(s)
Os números de Fibonacci constituem uma seqüência de números na qual os dois primeiros elementos são 0 e 1 e os demais, a soma dos dois elementos imediatamente anteriores na seqüência. Como exemplo, a seqüência formada pelos 10 primeiros números de Fibonacci é: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34. Mais precisamente, é possível definir os números de Fibonacci pela seguinte relação de recorrência:
 
fib (n) = 0, se n = 0
fib (n) = 1, se n = 1
fib (n) = fib (n - 1) + fib (n - 2), se n > 1
 
Abaixo, apresenta-se uma implementação em linguagem funcional para essa relação de recorrência:
 
  
Considerando que o programa acima não reutilize resultados previamente computados, quantas chamadas são feitas à função fib para computar fib 5?
A) 
24
B) 
15
C) 
11
D) 
12
E) 
25

Continue navegando