Quiz de Algoritmos e Programação II


1. Utilizando o algoritmo de ordenação por inserção, como ficaria ordenado o vetor a seguir logo após a primeira passada?

int[] valores = {5, 3, 7, 6, 2};

Resposta Correta: {3, 5, 7, 6, 2}


2. Como é conhecido o erro causado em uma função recursiva quando ela foi mal projetada e sua execução não alcança um critério de parada?

Resposta Correta: Loop infinito.


3. Aponte o valor no índice (2,1) da seguinte matriz:

int[,] valores = {{5, 3, 7, 6}, {8, 9, 0, 1}, {4, 2, 3, 9}};

Resposta Correta: 2


4. Considere a função a seguir como uma solução recursiva para calcular o resto de uma divisão. Qual deve ser o retorno dentro do bloco else?

public static int restoRecursivo (int a, int b)
{
    if (critério de parada)
    {
        return caso base;
    }
    else
    {
        return código;
    }
}

Resposta Correta: return restoRecursivo(a - b, b)


5. Como são conhecidos os métodos auxiliares, não recursivos, do MergeSort e do QuickSort, respectivamente?

Resposta Correta: Intercalar e Particionar.


6. Qual um termo que seja sinônimo para escrita de arquivos?

Resposta Correta: Salvamento.


7. Qual o índice, no vetor a seguir, do primeiro elemento utilizado para divisão do vetor, utilizando o MergeSort para ordenação dos elementos?

Vetor = {8, 10, 22, 5, 7, 11}

Resposta Correta: 2


8. Suponha que exista o vetor valores com tamanho 5. Na primeira posição ele possui o valor 1. Qual o valor armazenado no índice 2 após a execução do código abaixo?

for(int i = 1; i < valores.Length; i++)
{
    valores[i] = valores[i-1] + 2;
}

Resposta Correta: 5


9. Quantos passos são executados pela busca linear e pela busca binária, respectivamente, até encontrar o valor 98 no vetor abaixo?

Vetor = {5, 10, 12, 38, 45, 61, 65, 69, 81, 89, 98, 100}

Resposta Correta: 11 e 3.


10. Suponha que exista a matriz valores com tamanho 3x3. Em cada posição, ela armazena o valor correspondente à soma de seus índices naquela posição. Qual o valor armazenado na última coluna da primeira linha da matriz após a execução do código abaixo?

for (int l = 0; l < valores.GetLength(0); l++)
{
    for (int c = 0; c < valores.GetLength(1); c++)
    {
        valores[l,c] = valores[l,c] + valores[c,l];
    }
}

Resposta Correta: 4


11. Observe o seguinte vetor:

int[] valores = {5, 3, 0, 7, 2, 0};

É necessário, a cada dois valores, somá-los e inserir o resultado dessa soma na posição seguinte, onde consta o valor zero. Quais seriam as instruções que resolveriam esse problema?

Resposta Correta:

valores[2] = valores[1] + valores[0];
valores[5] = valores[4] + valores[3];

12. Qual o nome do paradigma de programação que permite modularizar o código em classes, que possuem atributos e métodos, permitindo a criação de instâncias dessas classes, que possuem valores e são utilizadas pelo programa?

Resposta Correta: Orientação a Objetos.


13. Qual a função que representa a complexidade da busca binária?

Resposta Correta: Logarítmica.


14. Aponte o valor no índice 3 do seguinte vetor:

int[] valores = {5, 3, 7, 6, 2};

Resposta Correta: 6


15. A classe Pessoa possui quatro atributos: int idade;, String nome;, String estado; e double altura;. O construtor foi definido conforme a seguir. Qual a forma correta de se criar um objeto do tipo Pessoa?

public Pessoa(String n, int i, double a, String e)
{
    this.nome = n;
    this.idade = i;
    this.altura = a;
    this.estado = e;
}

Resposta Correta:

Pessoa joao = new Pessoa("João", 20, 1.75, "São Paulo");

16. Conforme novas chamadas recursivas são executadas, cada uma dessas instâncias é inserida em uma estrutura que controla e mantém a ordem de execução de cada chamada. Essa estrutura é conhecida por:

Resposta Correta: Pilha de execução.


17. Observe o código abaixo:

double[] notas = {5.0, 6.0, 8.0};
double[] notas_com_bonus = bonus(notas);

E a função:

double[] bonus(double[] vetor)
{
    for(int i = 0; i < vetor.Length; i++)
    {
        vetor[i] = vetor[i] * 1.2;
    }
    return vetor;
}

Após a execução do código, qual o valor dos elementos armazenados nos vetores notas e notas_com_bonus?

Resposta Correta:

notas = {6.0, 7.2, 9.6}
notas_com_bonus = {6.0, 7.2, 9.6}


18. Considerando um vetor já ordenado, qual dos algoritmos de ordenação, conforme implementação abordada em aula, executaria mais rápido?

Resposta Correta: Método bolha.


19. Qual o tipo de dado utilizado para iniciar a escrita de um arquivo e o método utilizado para escrever em cada linha do arquivo?

Resposta Correta: StreamWriter e WriteLine.


20. Observe a seguinte matriz:

int[,] valores = {{0, 3, 5}, {6, 0, 4}, {7, 8, 0}};

É necessário somar os valores de uma linha, onde não sejam zero, e armazenar o resultado na posição dessa linha onde esteja o valor zero (preenchendo assim a diagonal principal). Quais seriam as instruções que resolveriam esse problema?

Resposta Correta:

valores[0,0] = valores[0,1] + valores[0,2];
valores[1,1] = valores[1,0] + valores[1,2];
valores[2,2] = valores[2,0] + valores[2,1];

21. Qual o tipo de dado utilizado para iniciar a leitura de um arquivo e o método utilizado para ler cada linha do arquivo?

Resposta Correta: StreamReader e ReadLine.


22. Quantas chamadas recursivas são realizadas em cada instância do MergeSort e QuickSort?

Resposta Correta: 2.

23. Considere a função a seguir como uma solução recursiva para calcular o resto de uma divisão. Qual deve ser o critério de parada, e o retorno desse caso base?

public static int restoRecursivo (int a, int b)
{
    if (critério de parada)
    {
        return caso base;
    }
    else
    {
        return código;
    }
}

Resposta Correta: b > a ; return a


24. Utilizando o algoritmo de ordenação pelo método bolha, como ficaria ordenado o vetor a seguir logo após a primeira passada?

int[] valores = {5, 3, 7, 6, 2};

Resposta Correta: {3, 5, 6, 2, 7}


25. Utilizando o algoritmo de ordenação por seleção, como ficaria ordenado o vetor a seguir logo após a primeira passada?

int[] valores = {5, 3, 7, 6, 2};

Resposta Correta: {2, 3, 7, 6, 5}


26. Observe o código abaixo. O que será impresso pela sua execução?

int[,] valores = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

for (int l = 0; l < 3; l++)
{
    for (int c = 0; c < 3; c++)
    {
        if (l >= c)
        {
            Console.Write(valores[l,c] + " ");
        }
    }
}

Resposta Correta: 1 4 5 7 8 9


27. Em qual dos vetores abaixo a execução da busca binária encontraria o elemento 26 no quarto passo?

Resposta Correta: {3, 8, 15, 26, 31, 38, 42, 61, 65, 70}