Baixe o app para aproveitar ainda mais
Prévia do material em texto
PROGRAMAÇÃO DE SOLUÇÕES COMPUTACIONAIS ATIVIDADE A2 QUESTÃO 01 Um algoritmo básico de sequência simples pode ser estruturado em três etapas básicas: entrada, processamento e saída. Cada etapa apresenta suas particularidades e lógicas de estruturação. Sobre a estruturação de um algoritmo de sequência simples, assinale a alternativa correta. a) A saída de dados contempla a etapa de recepção de dados por parte do usuário e realização de cálculos complexos. b) Na entrada de dados, o computador deve exibir as informações digitadas pelo usuário. c) O processamento de dados pode realizar operações de matemática simples, porém, o resultado dessas operações não poderá ser exibido na etapa de saída de dados. d) O processamento de dados realiza operações matemáticas, contudo, não permite o armazenamento de dados. e) O processamento de dados pode realizar operações de soma, subtração, multiplicação e divisão, além de repetir diversas dessas operações em sequência. QUESTÃO 02 Observe o código abaixo, que representa um método de dano, compatível com o contexto de programação de jogos. public void SofrerDano(int dano){ vida -= dano; System.out.println(nome + " sofreu um dano de " + dano); } Considerando o código acima, avalie as asserções a seguir e a relação proposta entre elas. I. A variável dano, situada dentro dos parênteses do método SofrerDano, é denominada como parâmetro e está sendo utilizada como valor a ser subtraído da variável vida. PORQUE II. Um parâmetro deve ser utilizado exclusivamente para realizar operações aritméticas, dado que é um valor numérico. A respeito dessas asserções, assinale a opção correta. a) A asserção I é uma proposição verdadeira, e a II é uma proposição falsa. b) As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I. c) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira. d) As asserções I e II são proposições falsas. e) As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa correta da I. QUESTÃO 03 Em programação, relações entre as classes ocorrem de diferentes formas. Considere o código abaixo, que representa um veículo: class Veiculo{ private Motor motor; private Cabine cabine; } Considerando as relações entre as classes no paradigma de programação orientada a objetos, avalie as asserções a seguir e a relação proposta entre elas. I. O código acima representa uma composição, considerando Motor e Cabine. PORQUE II. A composição representa uma relação "tem-um", e o código expressa que o veículo tem um motor e uma cabine. A respeito dessas asserções, assinale a opção correta. a) A asserção I é uma proposição verdadeira, e a II é uma proposição falsa. b) As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I. c) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira. d) As asserções I e II são proposições falsas. e) As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa correta da I. QUESTÃO 04 Um componente altamente coeso é aquele que possui uma única razão de ser, um único propósito, uma única finalidade, que resolve somente um problema. Para construir um componente com essas características, é necessário utilizar boas práticas de programação orientada a objetos. Considerando o princípio da alta coesão, avalie as asserções a seguir e a relação proposta entre elas. I. O componente que apresenta uma razão única de ser e um único propósito tende a estar estruturado com boas práticas de encapsulamento. PORQUE II. Quando o componente tem uma função singular na solução, é natural que parte de suas informações tenham níveis de restrição mais elevados. A respeito dessas asserções, assinale a opção correta. a) A asserção I é uma proposição verdadeira, e a II é uma proposição falsa. b) As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I. c) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira. d) As asserções I e II são proposições falsas. e) As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa correta da I. QUESTÃO 05 Laços de repetição são comumente utilizados em algoritmos que estruturam diferentes tipos de soluções computacionais. Estes algoritmos apresentam variações, em geral, focados em controlar critérios e quantidades de repetições. A imagem a seguir representa uma aplicação hipotética das estruturas while e do-while. Na imagem, o personagem Papa-Léguas está correndo e parando na ponta do penhasco, com uma representação visual da instrução while (not edge) run();. A frente, passando do penhasco e suspenso no ar, o personagem Coiote apresenta a instrução do run() while (not edge);. Disponível em: https://www.reddit.com/. Acesso em: 3 de jul.de 2022. Sobre a utilização de estruturas de repetição, assinale a alternativa correta. a) A estrutura do-while não executará os comandos internos em seu escopo dependendo da condição de teste, assim como a estrutura while, ou seja, dependendo do teste realizado, o Coiote poderia não ter caído. b) Os comandos while e do-while funcionam da mesma forma, no caso da imagem o Coiote passou da ponta do penhasco por, logicamente, a sua instrução ter sido executada antes da instrução do Papa-Léguas. c) As estruturas de controle apresentam a possibilidade de criar laços de repetição, incluindo os comandos if, switch, for e while, portando a instrução do Papa-Léguas poderia ser através de um if. d) O while de Papa-Léguas verifica a condição e depois executa a instrução de corrida, já o Coiote executa antes a instrução de corrida e depois verifica a condição, através do do-while, por isso Coiote caiu e o Papa-Léguas não. e) While, do-while e for são instruções de repetição com o mesmo direcionamento de aplicação, ou seja, a única diferença entre os três comandos é a forma de escrita, o que torna as condições de Coiote e Papa-Léguas idêntica. QUESTÃO 06 Analise o algoritmo abaixo: Ordenação(vetor v, inteiro n) para j de 1 até n-1 x = v[j] i = j−1 enquanto i ≥ 0 e v[i] > x v[i+1] = v[i] i = i−1 v[i+1] = x Em relação a esse algoritmo de ordenação, marque a alternativa correta: a) O algoritmo apresentado é o de ordenação por dedução. b) O algoritmo apresentado é o de ordenação pelo método bolha. c) O algoritmo apresentado é o de ordenação por seleção. d) O algoritmo apresentado é o de ordenação por inserção. e) O algoritmo apresentado é o de ordenação por recursão. QUESTÃO 07 Através das estruturas de seleção, é possível permitir ou não a execução de determinados blocos de ações. O comando mais usual em linguagens de programação para tais estruturas é o se ou if. Os operadores racionais são comumente utilizados para realizar testes nas estruturas de seleção, podendo comparar valores e retornar se a comparação é verdadeira ou falsa. Com base no excerto apresentado, avalie as afirmações a seguir. I. O operador racional “>”, que representa maior que, pode ser utilizado para comparar duas variáveis, verificando se uma é maior que a outra. II. O operador racional “>”, que representa maior que, pode ser utilizado para comparar uma variável com um valor fixo, verificando se a variável é maior que o número de comparação. III. O operador “=”, que representa igual, compara dois valores e retorna verdadeiro caso sejam iguais. IV. O operador “!=”, que representa diferente, compara dois valores e retorna verdadeiro caso sejam diferentes. É correto o que se afirma em: a) I e IV, apenas. b) I, II e III, apenas. c) I, II e IV, apenas. d) I e II, apenas. e) II e III, apenas. QUESTÃO 08 Dentro os métodos fundamentais de ordenação, alguns algoritmos utilizam técnicas simples, como condições e laços. Outros exigem técnicas mais elaboradas. Dentre os três algoritmos elementares, são elencados: Ordenação por Inserção - Insertion Sort Ordenação por Seleção - Selection Sort Ordenação pelo Método da Bolha - Bubble Sort Considerando algoritmosde ordenação, avalie as asserções a seguir e a relação proposta entre elas. I. Algoritmos de ordenação podem ser implementados com técnicas simples, contudo, em alguns casos, os algoritmos elementares podem ser ineficientes. PORQUE II. Via de regra, algoritmos mais complexos necessitam de técnicas complexas de implementação, como recursão. A respeito dessas asserções, assinale a opção correta. a) A asserção I é uma proposição verdadeira, e a II é uma proposição falsa. b) As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I. c) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira. d) As asserções I e II são proposições falsas. e) As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa correta da I. QUESTÃO 09 Parte relevante das linguagens de programação mais utilizadas na atualidade possibilitam a utilização de mecanismos de tratamento de exceção. Um tratamento de exceção é responsável por tratar ocorrências que alteram o fluxo usual da execução de algoritmos em programas de computador. No que diz respeito ao tratamento de exceções, analise as asserções a seguir e a relação proposta entre elas. I. Mesmo contribuindo para os programas de computador se tornarem mais estáveis e evitando erros como estouro de memória, corrupção de dados ou saídas inválidas, é comum o uso de tratamento em exceção ser criticado. PORQUE II. O uso de tratamento de exceção pode encorajar o abuso de blocos try/catch mal projetados, podendo não deixar clara ocorrência de exceções nas rotinas que deveriam tratá-las. A seguir, assinale a alternativa correta. a) As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa correta da I. b) As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I. c) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira. d) As asserções I e II são proposições falsas. e) A asserção I é uma proposição verdadeira e a asserção II é uma proposição falsa. QUESTÃO 10 Um sistema computacional desenvolvido com uma linguagem de programação orientada a objetos é, como o nome do paradigma sugere, composto por objetos que interagem por meio da troca de mensagens (chamadas de métodos). Como sabemos, objetos são construídos a partir de classes e um dos primeiros passos na implementação de um sistema computacional desse tipo é identificar as classes de interesse e a forma como elas se relacionam. Em geral, há dois tipos de relacionamentos entre classes. Eles são chamados de TEM-UM (do inglês HAS-A) e É-UM (do inglês IS-A). Com base na programação orientada a objetos, avalie as afirmações a seguir. I. Se uma classe base, denominada pessoa, for herdada pelas classes padeiro e escritor, isso quer dizer que padeiro é uma pessoa e escritor é uma pessoa. II. Se uma classe pacote possuir variáveis de instância do tipo comida e bebida, terá uma relação de composição (tem-um). III. Caso uma classe chamada Navio tenha uma classe base chamada "ObjetoDoSistema", essa não é uma relação de “é-um”, pois a classe base do navio teria de ser “Veiculo”. IV. Em diversos casos a composição pode ser mais bem empregada que a herança, porém, ele possui um limite de 10 objetos. É correto o que se afirma em: a) I e IV, apenas. b) I, II e III, apenas. c) I, II e IV, apenas. d) I e II, apenas. e) II e III, apenas. QUESTÃO 11 Vetores (ou arrays) são usados para armazenar vários valores em uma única variável, ao invés de declarar variáveis separadas para cada valor. É a forma mais simples de organizar listas de dados na memória, pois são armazenados em sequência, um após o outro, o que permite que qualquer valor de qualquer posição seja acessado livremente. Considerando o conceito de arrays, avalie as asserções a seguir e a relação proposta entre elas. I. Após definir ou alocar um vetor (array), não é possível aumentar o seu tamanho. PORQUE II. Como as suas partes são divididas de forma sequencial na memória, não é possível aumentar a alocação, sendo que a sequência da memória pode ser ocupada por outras estruturas. A respeito dessas asserções, assinale a opção correta. a) A asserção I é uma proposição verdadeira, e a II é uma proposição falsa. b) As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I. c) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira. d) As asserções I e II são proposições falsas. e) As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa correta da I. QUESTÃO 12 Um tipo abstrato de dados (TAD) trata-se de um conjunto de dados estruturados e um conjunto de operações que podem ser executadas sobre esses dados. Alguns tipos são muito utilizados em computação: pilha e fila. Considerando os tipos abstratos de dados citados, avalie as asserções a seguir e a relação proposta entre elas. I. Nas estruturas de dados pilha e fila, a inserção e a retirada de elementos seguem regras bem definidas. A pilha segue LIFO (last in, first out): o último elemento a ser inserido é o primeiro disponível para remoção. PORQUE II. A pilha não segue o padrão da fila, FIFO (first in, first out), onde o primeiro elemento que é inserido deve ser o primeiro que é removido. A respeito dessas asserções, assinale a opção correta. a) A asserção I é uma proposição verdadeira, e a II é uma proposição falsa. b) As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I. c) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira. d) As asserções I e II são proposições falsas. e) As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I QUESTÃO 13 Se as estruturas de repetição não existissem na programação, as soluções seriam muito mais limitadas em relação ao que se pode criar hoje. Além de menor eficiência, a escrita dos códigos estaria comprometida em diversos aspectos, pois, sempre que uma instrução tivesse que ser repetida, teria que ser escrita diversas vezes. Com base nas estruturas de repetição, avalie as afirmações a seguir. I. No contexto de laços de repetição, uma variável acumuladora recebe um valor inicial e é incrementada nas iterações de um laço por uma expressão. II. As estruturas de repetição necessitam de variáveis acumuladoras, pois, sem elas, não seria possível determinar um critério de parada. III. As estruturas de repetição apresentam como padrão a realização de um teste antes da execução de suas instruções, não sendo possível realizar testes ao seu final. IV. Comandos de entrada de dados podem ser realizados internamente nas estruturas de repetição, não prejudicando sua execução, caso sejam implementados corretamente. É correto o que se afirma em: a) I e IV, apenas. b) I, II e III, apenas. c) I, II e IV, apenas. d) I e II, apenas. e) II e III, apenas. QUESTÃO 14 Quando inicializamos um objeto, dizemos que estamos construindo esse objeto da classe envolvida na instrução. Isso é feito por um bloco denominado construtor. Podemos utilizar um construtor padrão da classe, que o compilador nos entrega gratuitamente. Esse construtor zera todas as variáveis da classe. Considerando a aplicabilidade de construtores, avalie as asserções a seguir e a relação proposta entre elas. I. Um construtor padrão zera todas as variáveis da classe, independentemente do tipo dessas variáveis. Contudo, o construtor pode determinar características diferentes para os objetos instanciados. PORQUE II. Por meio da escrita de um construtor personalizado, podemos construir um objeto realizando a atribuição de valores às variáveis de instância. A respeito dessas asserções, assinale a opção correta. a) A asserção I é uma proposição verdadeira, e a II é uma proposição falsa. b) As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I. c) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira. d) As asserções I e II são proposições falsas. e) As asserçõesI e II são proposições verdadeiras, mas a II não é uma justificativa correta da I. QUESTÃO 15 Existem diferentes tipos de algoritmos de ordenação. Um algoritmo de ordenação é um algoritmo de manipulação de dados que coloca os elementos em uma dada sequência, efetuando sua ordenação completa ou parcial. Uma das razões para se ordenar uma sequência de dados é a possibilidade de acesso a eles de modo mais eficiente. Em relação a algoritmos de ordenação, marque a alternativa correta: a) O algoritmo Bubble Sort pode ser considerado um algoritmo complexo de ordenação, que utiliza recursão. b) O algoritmo Insertion Sort pode ser considerado um algoritmo complexo de ordenação, que utiliza recursão. c) O algoritmo Selection Sort pode ser considerado um algoritmo complexo de ordenação, que utiliza recursão. d) O algoritmo Array Sort pode ser considerado um algoritmo complexo de ordenação, que utiliza recursão. e) O algoritmo Quick Sort pode ser considerado um algoritmo complexo de ordenação, que utiliza recursão.
Compartilhar