Baixe o app para aproveitar ainda mais
Prévia do material em texto
1) 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 falsas. c) C)A asserção I é uma proposição verdadeira e a asserção II é uma proposição falsa. d) D)As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I. 2) 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) As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I. 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 correta da I. d) A asserção I é uma proposição verdadeira, e a II é uma proposição falsa. e) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira. 3) 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 afirmar em: a) II e III, apenas. b) I e II, apenas. c) I e IV, apenas. d) I, II e IV, apenas. e) I, II e III, apenas. 4) 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) As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I b) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira. c) A asserção I é uma proposição verdadeira, e a II é uma proposição falsa. d) As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I. e) As asserções I e II são proposições falsas. 5) 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 represente 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) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira. c) As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I. 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. 6) 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 Array Sort pode ser considerado um algoritmo complexo de ordenação, que utiliza recursão. b) O algoritmo Bubble Sort pode ser considerado um algoritmo complexo de ordenação, que utiliza recursão. c) O algoritmo Insertion Sort pode ser considerado um algoritmo complexo de ordenação, que utiliza recursão. d) O algoritmo Selection 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. 7) Observe o código abaixo, escrito em linguagem de programação Java. public class HelloWorldMetodos { static void olaMetodos (){ System.out.println ('Sou um novo método!'); } public static void main(String[] args) { System.out.println ('Começando a execução do programa.'); olaMetodos(); System.out.println ('Terminando a execução do programa.'); } } Com base na estrutura apresentada, avalie as afirmações a seguir. I. Apesar de estar elencado no código fonte, a saída 'Sou um novo método!' não será exibida na execução do programa. II. O método olaMetodos() depende de uma estrutura de repetição para ser executado. III. A solução executa um total de 3 comandos de saída de dados, 2 no main e 1 no olaMetodos(). IV. Um método pode ser criado e não ser executado. No caso do presente código, se o método não fosse chamado no main, o programa não apresentaria um erro. É correto o que se afirmar em: a) I e IV, apenas. b) III e IV, apenas. c) II e III, apenas. d) I, II e III, apenas. e) I, II e IV, apenas. 8) Quando inicializamos um objeto, dizemos que estamos construindo esse objeto da classe envolvida nainstruçã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) As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I. b) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira. c) As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa correta da I. d) As asserções I e II são proposições falsas. e) A asserção I é uma proposição verdadeira, e a II é uma proposição falsa. 9) 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 colocar 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) 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 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. 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 afirmar em: a) I, II e III, apenas. b) I, II e IV, apenas. c) I e IV, apenas. d) II e III, apenas. e) I e II, apenas. 11) 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 por seleção. c) O algoritmo apresentado é o de ordenação pelo método bolha. d) O algoritmo apresentado é o de ordenação por inserção. e) O algoritmo apresentado é o de ordenação por recursão. 12) 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) 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. b) 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. c) O processamento de dados realiza operações matemáticas, contudo, não permite o armazenamento de dados. d) 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. e) Na entrada de dados, o computador deve exibir as informações digitadas pelo usuário. 13) A compreensão da lógica proposicional é importante para que, ao construir algoritmos e escrever programas de computador, um programador seja capaz de estruturar soluções simples e objetivas, que sejam ágeis e de fácil compreensão. Para isso, compreender alguns conceitos de lógica é essencial. Com base no excerto apresentado, avalie as afirmações a seguir. I. A tautologia pode ser definida como uma proposição composta cuja última coluna da tabela verdade possui somente valor verdadeiro, independentemente dos valores das proposições simples componentes. II. A Contradição pode ser definida como uma proposição composta cuja última coluna da tabela verdade possui somente valor falso, independente dos valores verdade das proposições simples componentes. III. É comum que seja possível encontrar expressões mais simples que outras que representam uma condição em um programa de computador, em vista da possibilidade de existência de equivalência lógica. IV. A equivalência lógica utiliza de expressões irregulares da matemática para simplificar a execução de algoritmos de computador, diminuindo os testes de expressão, mas tornando as soluções mais onerosas para serem executadas. É correto o que se afirmar em: a) I e III, apenas. b) II e III, apenas. c) I e IV, apenas. d) I, II e III, apenas. e) I, II e IV, apenas. 14) 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) As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa correta da I. b) A asserção I é uma proposição verdadeira, e a II é uma proposição falsa. c) As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I. 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. 15) 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 utilizadospara 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 afirmar em: a) I, II e III, apenas. b) II e III, apenas. c) I, II e IV, apenas. d) I e II, apenas. e) I e IV, apenas.
Compartilhar