Buscar

APOL 1 a 5 Estrutura de Dados Com respostas (Sep 2016)

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

APOL 1
Questão 1/10
Em programação nos deparamos constantemente com estruturas de controle de forma a organizar a execução, ou não, 
de tarefas e processos.
Para o caso da estruturas de seleção if, é correto afirmar que:
A Utilizamos quando queremos repetir um determinado processo para várias vezes.
B Utilizamos somente quando queremos escrever na tela do micro.
C Utilizamos todas as vezes que desejamos executar uma determinada tarefa mediante uma condição
lógica.
D Não é possível utilizar a expressão: if(1)
E É obrigatória a utilização do else
Questão 2/10
Sobre estruturas de seleção switch é correto afirmar:
Assinale a alternativa CORRETA
A Deve ser utilizada uma expressão lógica para a execução das tarefas.
B Está limitada a no máximo 5 comparações de valores.
C Temos que colocar o break ao final de cada linha de execução de tarefa para que na próxima execução do
switch este comando não seja executado.
D Somente pode ser utilizado para números.
E O switch pode ser substituído por vários if aninhados.
Questão 3/10
Você acertou!
Aula 01 / Slide 07

Você acertou!
Aula 01 / slides 8 e 14

Sobre o algoritmo de programação a seguir, é correto afirmar que após a execução da algoritmo, será escrito na tela:
   char op=’*’;
    int A=7, B=3, R=12;
 
    switch ( op )   {
       case “­”:    R=A­B;  
       case “*”:    R=A*B;
       case “+”:   R=A+B;  break;
       case “/”:    R=A/B;    break;
   }
   printf(“O Resultado é: %d”, R);
Assinale a Alternativa CORRETA
A O Resultado é: 10
B O Resultado é: 12
C O Resultado é: 21
D O Resultado é: 2,33
E O Resultado é: 22
Questão 4/10
Sobre estruturas de controle e repetição.
Assinale qual é a sentença Falsa (INCORRETA)
A As chaves {  } são utilizadas para delimitar blocos de programação.
Você acertou!
Aula 01 / Slide 14

B O comando else é opcional na estrutura if.
C As estruturas for e while são estruturas de repetição.
D Podemos simular uma estrutura switch com estruturas if.
E Em programação não podemos utilizar estruturas de seleção dentro de estruturas de repetição.
Questão 5/10
Sobre estruturas de repetição.
Assinale a Alternativa em que a afirmação é CORRETA:
A Utilizamos a estrutura for quando não sabemos a quantidade exata de vezes que queremos repetir uma rotina
de programação.
B As linhas de programação dentro de uma estrutura do­while são executadas pelo menos uma vez,
independente da condição de finalização do loop.
C Não podemos substituir uma estrutura de repetição for por uma estrutura de repetição while.
D Podemos em programação substituir uma estrutura while por uma estrutura if.
E A vantagem da estrutura while sobre as demais estruturas de repetição, é que em uma única linha temos a
inicialização da variável, o incremento desta variável e a condição de fim do loop.
Questão 6/10
Sobre a rotina de programação a seguir, qual linha de comando deve ser alterada para que ao final da execução do 
algoritmo o valor de “b” seja 75.
a = 0;    b = 1;     qtd = 0;
 
while ( qtd < 8 )
Você acertou!
Sim podemos, conforme exemplo na Aula 01 / Slide 20

Você acertou!
Aula 01 / Slides 15, 16 e 17

{             qtd++;
               a += 3;
               b = qtd * a;
}
Assinale a alternativa CORRETA
A while (qtd < 5)
B a = 1;
C qtd = 1;
D a += 2;
E a = a+2;
Questão 7/10
Sobre o algoritmo a seguir:
main()
{    float num1, num2;
     char op, continuar;
 
   do
   {    printf(“Informe o primeiro número, o operador e o segundo número:”);
        scanf(“%f %c %f”, &num1, &op, &num2);
 
        switch(op)         {
Você acertou!
Aula 01 / Slide 15

          case ‘+’:  printf(“Resultado: %f”, num1+num2); 
          case ‘­’:   printf(“Resultado: %f”, num1­num2);  
          case ‘*’:   printf(“Resultado: %f”, num1*num2); 
          case ‘/’:   printf(“Resultado: %f”, num1/num2);
        }
 
        printf(“Deseja realizar outra operação S/N ?”);
        getch(continuar);
      
   } while(continuar == ‘N’);
}
Assinale a única alternativa falsa (INCORRETA)
A Para finalizar o programa o usuário terá que informar pelo menos uma vez os valores solicitados.
B Se o usuário não digitar um dos 4 operadores ‘+ ­ * /’, não será realizado o cálculo.
C Independente do operador selecionado entre ‘+ ­ * /’, sempre aparecerá na tela o resultado da divisão entre os
números informados.
D O comando getch não deixa aparecer na tela a letra digitada pelo usuário.
E Independente de qual caracter for digitado como operador, sempre será realizada a soma dos
números fornecidos pelo usuário.
Questão 8/10
Sobre estruturas de repetição.
Você acertou!
Aula 01 / Slide 20

É correto afirmar (assinale a alternativa CORRETA):
A Não há diferenças entre as estruturas while e do­while, a utilização é apenas uma questão de opção.
B Sempre podemos utilizar qualquer uma das estruturas de repetição em nosso algoritmo, independente do que
se propõe o algoritmo a executar, sem nenhuma adaptação ou modificação
C A vantagem da estrutura for é que em uma única linha temos a inicialização da variável de controle, a
condição de finalização do loop e o incremento da variável de controle.
D Não é possível uma estrutura while ter a seguinte condição: while(1)
E Em estruturas de repetição, temos que ter sempre as chaves {  } para definir um bloco. Mesmo tendo apenas
uma linha a ser executada pelo loop.
Questão 9/10
Analisando o algoritmo a seguir 
main()
{ int x, y, flag=0;
               for(x=0; x<3; x++)
                               for(y=x+1; y<5; y++)
                                              flag += x*y;
 }
qual é o valor final da variável flag:
(Assinale a Alternativa CORRETA)
A 38
B 37
C 30
D 24
Você acertou!
Aula 01 / Slide 15, 16 e 17

E 23
Questão 10/10
Sobre o algoritmo a seguir:
main()
{   float peso, media=0, maior=0, menor=1000;
     int x;
 
   for(x=1; x<=30; x++)
   {          printf(“Informe peso %d:”, x);
               scanf(“%f ”, &peso);
 
               media = media + peso;
               if(peso > maior)
                               maior = peso;
 
               if(peso < menor)
                               menor = peso;
   }
   media = media / 30;
 
Você acertou!
Aula 01 / Slide 20 e 22

   printf(“A média é: %f”, media);
   printf(“O maior peso é: %f”, maior);
   printf(“O menor peso é: %f”, menor);
}
Assinale a alternativa que apresenta qual é a afirmação correta quanto ao código apresentado:
A O objetivo da variável maior é conter ao final do algoritmo a maior altura, por isso ela é inicializada com o
valor 0 (zero) para termos uma parâmetro inicial de comparação.
B O objetivo da variável menor ter sido inicializada com o valor 1000 (mil), é para termos uma parâmetro
inicial de comparação. Visto que procuramos o menor valor, inicialmente temos que comparar com um
valor o mais alto possível, considerando os valores esperados.
C A variável media não deveria estar recebendo ela mesma dividido por 30. Pois dentro da estrutura for ela está
assumindo o papel de somatória de todos os pesos.
D A linha if(peso < menor) poderia ser substituída pelo comando else para o if anterior. Pois antes desta linha há
o if que está verificando se o peso é maior que o maior, se não é, então ele é menor.
E Esta estrutura for poderia ser substituída pela estrutura while. Mas para isso teríamos que colocar a linha
while(x<=30), e antes desta linha temos que inicializar o x com 0 (zero). E dentro do bloco da estrutura
teríamos que colocar a linha de incremento de x.
Você acertou!
Aula 01 / slide 22

APOL 2
Questão 1/10
Sobre vetores, é correto afirmarque:
Considerando o conteúdo ministrado na aula 2, assinale a alternativa CORRETA
A O primeiro elemento do vetor está no índice 1 (um) do vetor.
B Somente podemos ter vetores com duas dimensões.
C Um mesmo vetor pode receber qualquer tipo de dado, seja inteiro ou string.
D O último índice de um vetor de 20 posições é o 19.
E Vetores multidimensionais são utilizados para armazenar tipos de variáveis diferentes.
Questão 2/10
A forma correta de declara uma matriz de 4 linhas com 4 colunas para armazenar números inteiros é:
Considerando o conteúdo ministrado na aula 2, assinale a alternativa CORRETA
A mat[4][4];
B int mat [4][4];
C int mat[16];
D int {4}{4}
E int(4)(4);
Questão 3/10
1. Com base na quantidade de bytes que cada tipo de variável ocupa na memória, se tivermos a declaração das 
variáveis a seguir, quantos bytes de memória estarão sendo ocupados?
Você acertou!
Aula 02 / Slide 04

Você acertou!
Aula 02 / slides 05

Main()
{             int a[4], f[3][2];
               float b[3], c[7];
               char d[10], e[5][10];
}
Considerando o conteúdo ministrado na aula 2, assinale a alternativa CORRETA
A 80
B 90
C 100
D 110
E 120
Questão 4/10
Sobre registros é falso afirmar:
Considerando o conteúdo ministrado na aula 2, assinale a alternativa CORRETA
A Registro é definido como um novo tipo de variável, pois este deve ser declarado de acordo com a
necessidade do programa.
B Um registro pode conter variáveis numéricas e caracteres
C Registros são variáveis isoladas que possuem campos distintos, deste modo não podemos ter
vetores de registros por não termos como acessar um determinado campo do registro em um
determinado vetor.
Você acertou!
Aula 02 / Slide 06

Você acertou!
Slides Aula 02 

D Um dos objetivos do registro, é que podemos agrupar dados distintos de uma mesma pessoa ou objeto, em
uma única variável.
E O tamanho de bytes que um registro ocupa na memória, é a somatória individual de todas as variáveis que
este registro possui.
Questão 5/10
Quando trabalhamos com registros, temos que primeiro declarar este novo “tipo”, para depois declararmos uma variável 
deste novo “tipo”. 
Deste modo, sobre as rotinas a seguir, qual está totalmente CORRETA:
A struct Dados {
          char nome[45];
          int idade;           
          float peso, altura;          
          struct Dados reg;          
};            
B struct Dados {
         char nome[45];
         int idade;           
         float peso, altura;          
} Dados reg;
C struct Dados {
         char nome[45];
         int idade;           
         float peso, altura;          
};
struct Dados vet[7];
Você acertou!
Aula 02 / Slides 13, 14 e 15

D struct {
          char nome[45];
          int idade;           
          float peso, altura;          
} Dados;            
Dados.idade = 20;
E struct Dados {
          char nome[45];
          int idade;           
          float peso, altura;          
} reg;            
struct Dados = reg[7];
Questão 6/10
Com base no algoritmo a seguir, indique a forma correta de armazenar o número 23 no campo idade do 3º elemento do 
vetor de registro.
                     struct Dados {
                                        char nome[45];
                                        int idade;           
                                        float peso, altura;          
                     };            
                     struct Dados reg[7];
Considerando o conteúdo ministrado na aula 2, assinale a alternativa CORRETA
A reg[2].idade = 23;
B reg[3].idade = 23;
C reg.idade[3] = 23;
Você acertou!
Aula 02 / Slide 4 e 15

D reg.idade[2] = 23;
E reg.[2].idade = 23;
Questão 7/10
Sobre os conceitos de vetores, matrizes e registros.
Considerando o conteúdo ministrado na aula 2, assinale a alternativa CORRETA
A As matrizes são variáveis multidimensionais e, na memória, quando declarada, seus elementos estão em
diversas posições aleatórias e não sequenciais.
B Tanto vetores quanto matrizes, podem ter seus tamanho alterados durante a execução do programa, não
havendo a necessidade de definir seu tamanho na declaração.
C Podemos armarzenar em um mesmo vetor informações de variados tipos de dados.
D Não podemos declarar matrizes com mais de duas dimensões.
E Quando declaramos uma matriz do tipo inteiro, ela somente pode receber números inteiros, mesmo
tendo várias dimensões.
Questão 8/10
Com base na matriz 3x3 apresentada, qual algoritmo vai executar o resultado esperado.
0 0 0
0 1 2
0 2 4
Considerando o conteúdo ministrado na aula 2, assinale a alternativa CORRETA
Você acertou!
Aula 02 / Slide 4, 5, 8, 9, 11

A int x,y,mat[3][3];
for(x=1; x<=3; x++)
             for(y=1; y<=3; y++)
                           mat[x][y] = x + y;
B int x,y,mat[3][3];
for(x=0; x<=3; x++)
             for(y=0; y<=3; y++)
                          mat[x][y] = x + y;
C int x,y,mat[3][3];
for(x=0; x<3; x++)
             for(y=0; y<3; y++)
                          mat[x][y] = x * y;
D int x,y,mat[3][3];
for(x=1; x<=3; x++)
             for(y=1; y<=3; y++)
                          mat[x][y] = x * y;
E int x,y,mat[3][3];
for(x=0; x<3; x++)
             for(y=0; y<3; y++)
                          mat[x][y] = x ­ y;
Questão 9/10
Tendo como base o algoritmo a seguir, ao final da execução, qual será o valor armazenado em ‘x’.
void main()
{             int x,y,mat[3][3];
               for(x=2; x>=0; x­­)
                             for(y=1; y<=3; y++)
                                           mat[x][y­1] = x + y;
Você acertou!
Aula 02 / Slide 12

 
               for(y=0; y<9; y++)
                               x += mat[0][y];
}
Considerando o conteúdo ministrado na aula 2, assinale a alternativa CORRETA
A 5
B 6
C 25
D 27
E 26
Questão 10/10
Quando utilizamos vetores, matrizes e registros em nossos programas temos que tomar vários cuidados com a 
inicialização de variáveis, armazenamentos, limites de memória e outras tantas coisas.
Considerando o conteúdo ministrado na aula 2, com relação aos cuidados com programação, assinale a alternativa 
CORRETA
A Quando vamos realizar sucessivas somas em uma estrutura de repetição, utilizando vetores, temos
que tomar o cuidado de zerar inicialmente a variável que vai conter a somatória, ou como primeiro
procedimento podemos armazenar inicialmente o conteúdo do primeiro elemento do vetor e depois
realizar a somatória dos demais na estrutura de repetição.
B O primeiro elemento de um vetor está no índice 1 (um) e o último está no índice ­1 (menos um) do tamanho
do vetor.
C Quando vamos realizar sucessivas multiplicações dos elementos de um vetor ou matriz, temos que iniciar a
variável que irá conter o resultado final com o número 0 (zero).
Você acertou!
Aula 02 / Slide 10, 11 e 12

Você acertou!
Slides 21 a 26 da aula 2

D Quando declaramos vetores de registros, todos os campos dos registros de todas as posições do vetor já
estão automaticamente zeradas.
E Quando procuramos fazer sucessivas comparações buscando o menor valor em um vetor, temos que iniciar a
variável de comparação com o menor valor possível que podemos encontrar no vetor. No caso se for um
vetor de idade, temos que inicializar com 0 (zero).
APOL 3
Questão 1/10
Com base nos conceitos, objetivos e declarações de funções, ministrados na aula 3
assinale a alternativa correta:
A Funções somente podem ser declaradas fora do bloco principal do programa main().
B O objetivo principal de utilizarmos funções em nossos programas, é de modularizar as rotinas de
programação.
C Funções podem retornar vários tipos de dados simultaneamente.
D Na passagem de parâmetrospor valor, enviamos o endereço da variável de origem.
E Quando chamamos uma função e passamos um determinado dado de uma variável por valor, se este for
alterado na função, altera o valor da variável de origem.
Questão 2/10
De acordo com características das funções em programação, ministrados na Aula 3
Assinale a alternativa que melhor descreve as características da passagem de parâmetros por referência em 
funções.
A Quando queremos que uma determinada função retorne informações com a utilização do comando ‘return()’,
obrigatoriamente temos que realizar a passagem de parâmetros por referência para esta função.
B Em passagem de parâmetros por valor, somente podemos enviar valores numéricos.
C Quando utilizamos passagem de parâmetros por referência, o local de memória da variável de origem é
diferente do local de memória da variável de destino.
D Quando passamos para uma determinada função os valores de uma variável por referência, se dentro
desta função a variável que recebeu este valor que foi passado for alterado, o valor da variável de
origem também será alterado.
Você acertou!
Aula 03 / Slides 5 a 11

Você acertou!
Aula 03 / slides 10 e 11

E A principal diferença entre passagem de parâmetros por referência e por valor, é o tipo de variável que pode
ser passada.
Questão 3/10
Qual a diferença entre a declaração de uma função e a chamada desta função para ser executada?
Assinale a Alternativa CORRETA
A Quando declaramos uma função, após escrever o nome da função colocamos o abre e fecha parênteses ‘( )’
e não colocamos ponto e vírgula. E na sequencia definimos o bloco da função com abre e fecha chaves ‘{ }’.
Já para chamar a função, após o nome da função que vai ser chamada colocamos o abre e fecha colchetes ‘[
]’ seguido de ponto e vírgula
B Quando declaramos uma função, após escrever o nome da função colocamos o abre e fecha parênteses ‘( )’
seguido de ponto e vírgula. E na sequencia definimos o bloco da função com abre e fecha chaves ‘{ }’. Já
para chamar a função, após o nome da função que vai ser chamada colocamos o abre e fecha parênteses ‘( )’
seguido de ponto e vírgula.
C Quando declaramos uma função, após escrever o nome da função colocamos o abre e fecha parênteses ‘( )’
e não colocamos ponto e vírgula. E na sequencia definimos o bloco da função com abre e fecha colchetes ‘[
]’. Já para chamar a função, após o nome da função que vai ser chamada colocamos o abre e fecha
parênteses ‘( )’ seguido de ponto e vírgula.
D Quando declaramos uma função, após escrever o nome da função colocamos o abre e fecha parênteses ‘( )’
e não colocamos ponto e vírgula. E na sequencia definimos o bloco da função com abre e fecha chaves ‘{ }’.
Já para chamar a função, após o nome da função que vai ser chamada colocamos o abre e fecha parênteses
‘( )’ seguido de ponto e vírgula e do bloco da função com abre e fecha chaves ‘{ }’.
E Quando declaramos uma função, após escrever o nome da função colocamos o abre e fecha
parênteses ‘( )’ e não colocamos ponto e vírgula. E na sequencia definimos o bloco da função com
abre e fecha chaves ‘{ }’. Já para chamar a função, após o nome da função que vai ser chamada
colocamos o abre e fecha parênteses ‘( )’ seguido de ponto e vírgula.
Questão 4/10
Qual a forma correta de realizar a passagem de parâmetros por valor para uma determinada função?
Assinale a Alternativa CORRETA
Você acertou!
Aula 03 / Slides 5, 6, 7

A Nome_funcao(num1, aux);
B Nome_funcao(num1 aux);
C Nome_funcao(&num1, &aux);
D Nome_funcao(*num1 *aux);
E Nome_funcao(int num1, int &aux);
Questão 5/10
Sobre recursividade,
qual a alternativa CORRETA?
A Uma função recursiva se caracteriza pela passagem de parâmetro por referência.
B Uma função é considerada recursiva, quando ela é chamada várias vezes de dentro de uma estrutura de
repetição.
C Em relação a uma determinada variável, declarada dentro de uma função recursiva, se esta função
recursiva for chamada 10 vezes, no momento da 10ª chamada, teremos 10 posições de memória
distintas para esta variável que foi declarada dentro da função. Cada uma podendo ter um conteúdo
diferente.
D O que caracteriza a função ser recursiva, é o fato que, entre as suas linhas de execução, existe uma
chamada a outra função, que depois volta.
E Funções recursivas possuem um mecanismo automático de proteção que não deixa o programa travar, não
precisamos nos preocupar com isso.
Questão 6/10
Sobre o programa a seguir:
main()
{             int teste(int y)
Você acertou!
Aula 03 / Slide 10

Você acertou!
Aula 03 / Slides 12 e 13

               {              if(y < 20)
                                              y = teste(y * y + 1);
                               return(y);
               }
 
int x;
               x = teste(1);
}
ao final da execução, qual o valor de ‘X’?
Assinale a Alternativa CORRETA
A 1
B 21
C 26
D 42
E 256
Questão 7/10
Antes de executar um determinado programa, o compilador faz uma análise linha a linha procurando inconsistências. 
Caso encontre o compilador para e acusa erro de programação.
Em qual das afirmações a baixo o compilador não vai acusar erro com relação a funções?
Assinale a Alternativa CORRETA
A Quando declaramos que a função vai receber 3 (três) valores como argumento e somente enviamos 2 (dois).
Você acertou!
Aula 03 / Slide 13

B Quando o compilador �ver encontrado uma chamada à execução de uma determinada função, sendo que esta função somente vai ser
declarada no final do programa, fora do bloco principal main(), e não existe o cabeçalho da função no topo do programa antes da
chamada.
C Quando fazemos a chamada a uma determinada função internamente a outra função, mas a função que
estamos chamando está sendo declarada dentro do bloco principal main().
D Quando realizamos a chamada à execução de uma função fora do bloco principal main() e fora de qualquer
outra função.
E Quando o compilador tiver encontrado uma chamada à execução de uma determinada função, sendo
que esta função somente vai ser declarada no final do programa, fora do bloco principal main(), e
existe o cabeçalho da função no topo do programa antes da chamada.
Questão 8/10
Sobre o programa a seguir:
int numero(int *y)
{             int x;
for(x=5; x>1; x­­)
               *y = *y + x;
}
 
int quadrado(int y)
{              return(y * y);
}
 
main()
{             int num=3;
Você acertou!
Aula 03 / Slides 5, 6 e 7

               num = quadrado(num);
num = quadrado(num);
numero(&num);
}
ao final da execução, qual o valor de ‘num’?
Assinale a Alternativa CORRETA
A 95
B 73
C 70
D 26
E 23
Questão 9/10
O algoritmo a seguir, imprime a série de Fibonacci até uma determinada posição definida pelo usuário. 
int Fib(int n1, int n2, int impr, int limite)
{             printf(“ %d ”, n2);
if (impr == limite)
               {              return(0);
               }
               else
               {              Fib(n2, (n1+n2),  ++impr, limite);
Você acertou!
Aula 03 / Slides 16 a 19

               }
}
main()
{  int num;
    printf(“Até qual posição da série de Fibonacci deseja que seja impresso? ");
   scanf("%d",&num);
    Fib(0, 1, 1, num);
}
Sobre este algoritmo, qual a afirmação (Alternativa) está correta?
A Caso o usuário digitar um valor maior que 1 (um) a função recursiva ‘Fib’ ficará em loop eterno.
B Se quisermos alterar a função ‘Fib’ para somente imprimir o elemento da série solicitada pelo usuário,
teríamos que: 1º retirar printf(“ %d ”, n2); da função ‘Fib’; 2º colocar a linha printf(“ %d ”, n2); dentro da função
main, mas depois da chamada da função Fib.
C Para economizarmos tempo, podemos colocar a leitura do número digitado pelo usuário dentro da função‘Fib’.
D A série de Fibonacci poderia ser impressa sem a necessidade de recursividade. Para tanto teríamos que
utilizar estruturas de decisão.
E Para corrigir a possibilidade de loop eterno pela função ‘Fib’, temos que criar uma condição de
somente chamar a função se o usuário digitar um valor positivo maior que 0 (zero).
Questão 10/10
Seguindo o conteúdo ministrado na AUla 3, Com base nas sentenças I, II e III, 
I – Quando realizamos a passagem de parâmetros por referência, estamos passando para a função o endereço da 
variável de origem. Deste modo se a variável que recebeu este endereço for alterada, vai ser alterado na verdade o 
conteúdo da variável de origem.
Você acertou!
Aula 03 / Slide 21

II – Quando declaramos uma função, colocamos na frente do nome da função o tipo de dado que a função pode retornar 
utilizando o comando “return”. Se não tiver nada escrito na frente do nome da função, por padrão ele pode retornar 
caracteres alfa numéricos.
III – O propósito de criarmos funções, é o de modularizar o programa de formar a ficar mais clara a compreensão do 
programa. Sendo que o ideal é que cada função execute uma única tarefa.
Assinale a Alternativa CORRETA
A As questões I e III estão corretas.
B As questões I e II estão corretas.
C As questões II e III estão corretas.
D Somente a questão I está correta.
E Somente a questão II está correta.
Você acertou!
Slides da Aula 3

APOL 4
Questão 1/10
Sobre pesquisa sequencial,
Considerando o conteúdo ministrado na aula 4, assinale a alternativa CORRETA
A Independentemente do tamanho do vetor, a pesquisa sequencial sempre será mais rápida que a pesquisa
binária.
B Em pesquisa sequencial o vetor deve estar obrigatoriamente ordenado
C Se o vetor for ordenado pelo método de seleção, não será possível realizar a pesquisa sequencial
D Se o vetor for ordenado pelo método de inserção, não será possível realizar a pesquisa sequencial
E Para realizar pesquisa sequencial o vetor não precisar estar ordenado
Questão 2/10
Leia e Analise:
I – Se o vetor já estiver pré ordenado, o método de ordenação por seleção é o mais rápido.
II – Se o vetor já estiver pré ordenado, o método de ordenação por inserção é o mais rápido.
III – Independente se o vetor já estiver pré ordenado ou não, tanto o método de ordenação por seleção quanto o método 
de ordenação por inserção demoram o mesmo tempo para a ordenação completa
Considerando o conteúdo ministrado na aula 4 e com base nas afirmações I, II e II, responda:
A Somente a I está correta
B Somente a II está correta
C Somente a III está correta.
Você acertou!
Aula 04 / Slide 12

Você acertou!
Aula 04 / slides 5 a 11

D Todas estão corretas
E As alternativa I e II estão corretas
Questão 3/10
Qual o principal motivo para a ordenação de vetores?
Considerando o conteúdo ministrado na aula 4, assinale a alternativa CORRETA
A Para auxiliar o programa na hora de excluir dados do vetor
B Para que cada dado fique armazenado no vetor na mesma ordem em que foi inserido neste vetor
C Para auxiliar o programa na hora de inclusão de novos dados no vetor
D Para que o retorno de uma pesquisa realizada no vetor seja mais rápida
E Para que as informações não fiquem trocadas
Questão 4/10
Com base nas afirmações I, II e II, sobre pesquisa sequencial, responda:
I – A pesquisa sequencial é mais rápida se for realizada do início para o final, independente da ordem das informações 
dentro do vetor.
II – A pesquisa sequencial é mais rápida em vetores ordenados, pois deste modo não há a necessidade de percorrer o 
vetor inteiro em busca de uma informação.
III – Tendo um vetor ordenado em ordem crescente e iniciando a pesquisa do início para o final do vetor, quanto maior o 
valor a ser pesquisado, maior o tempo de retorno da pesquisa se o valor não for encontrado.
Considerando o conteúdo ministrado na aula 4, assinale a alternativa CORRETA
A As respostas I e II estão corretas
B As respostas II e III estão corretas
Você acertou!
Aula 04 / Slide 12 a 15

Você acertou!
Aula 04 / Slide 12

C As respostas I e III estão corretas
D As respostas I, II e II estão corretas
E Nenhuma resposta está correta
Questão 5/10
Com base nas afirmações I, II e II, sobre pesquisa binária, responda:
I – A pesquisa binária sempre verifica o elemento central do conjunto de dados que está pesquisando.
II – A pesquisa binária funciona corretamente somente em vetores ordenados.
III – Em uma pesquisa binária, o número máximo de pesquisa que podem ser realizadas em um conjunto de dados, 
aumenta de 1 (uma) unidade cada vez que o conjunto de dados dobra de tamanho
Considerando o conteúdo ministrado na aula 4, assinale a alternativa CORRETA
A As respostas I e II estão corretas
B As respostas II e III estão corretas
C As respostas I e III estão corretas
D As respostas I, II e III estão corretas
E Nenhuma resposta está correta
Questão 6/10
Em pesquisa binária, qual a sequência exata de passos para realizar a pesquisa
Considerando o conteúdo ministrado na aula 4, assinale a alternativa CORRETA
A 1º ­ Dividir o conjunto de dados ao meio; 
2º Pesquisar o elemento central do conjunto; 
3º ­ Se não for o valor desejado verificar se está acima ou a baixo deste valor central. 
Se o valor desejado for maior, realizar a pesquisa sequencial na metade superior deste conjunto, se o valor
desejado for menor, realizar a pesquisa sequencial na metade inferior deste conjunto
Você acertou!
Aula 04 / Slides 13, 14 e 15

B 1º ­ Dividir o conjunto de dados ao meio; 
2º Pesquisar o elemento central do conjunto; 
3º ­ Se não for o valor desejado alterar a pesquisa para sequencial.
C 1º ­ Dividir o conjunto de dados ao meio; 
2º Pesquisar o elemento central do conjunto; 
3º ­ Se não for o valor desejado verificar se está acima ou a baixo deste valor central. 
Se o valor desejado for maior, repetir os passos anteriores na metade superior deste conjunto, se o
valor desejado for menor, repetir os passos anteriores na metade inferior deste conjunto
D 1º ­ Dividir o conjunto de dados ao meio; 
2º ­ pesquisar os elementos das extremidades; 
3º ­ Pesquisar o elemento central do conjunto;
4º ­ Se não for o valor desejado verificar se está acima ou a baixo deste valor central. 
Se o valor desejado for maior, repetir os passos anteriores na metade superior deste conjunto, se o valor
desejado for menor, repetir os passos anteriores na metade inferior deste conjunto
E 1º ­ Dividir o conjunto de dados ao meio; 
2º Pesquisar o elemento central do conjunto; 
3º ­ Se não for o valor desejado verificar se está acima ou a baixo deste valor central. 
Se o valor desejado for maior, repetir os passos anteriores na metade inferior deste conjunto, se o valor
desejado for menor, repetir os passos anteriores na metade superior deste conjunto
Questão 7/10
Tendo como base um vetor de 1024 posições, qual das afirmações a seguir está correta?
Considerando o conteúdo ministrado na aula 4, assinale a alternativa CORRETA
A Caso o vetor esteja desordenado, se utilizarmos a pesquisa sequencial, o número máximo de pesquisas que
podem ser realizadas neste vetor é de 1024. Mas se utilizarmos pesquisa binária, o número máximo de
pesquisas será 1024.
B Caso o vetor esteja ordenado, se utilizarmos a pesquisa sequencial, o número máximo de pesquisas que
podem ser realizadas neste vetor é de 1023. Mas se utilizarmos pesquisa binária, o número máximo de
pesquisas será 12
C Caso o vetor esteja desordenado, se utilizarmos a pesquisa sequencial, o número máximo de pesquisas que
podem ser realizadas neste vetor é de 1024. Mas se utilizarmos pesquisa binária, o número máximo de
pesquisas será 11.
Você acertou!
Aula 04 / Slide 13, 14 e 15

D Caso o vetor esteja ordenado, se utilizarmos a pesquisa sequencial, o númeromáximo de pesquisas que
podem ser realizadas neste vetor é de 1023. Mas se utilizarmos pesquisa binária, o número máximo de
pesquisas será 10.
E Caso o vetor esteja ordenado, se utilizarmos a pesquisa sequencial, o número máximo de pesquisas
que podem ser realizadas neste vetor é de 1024. Mas se utilizarmos pesquisa binária, o número
máximo de pesquisas será 11
Questão 8/10
Sobre o código a seguir, qual a afirmação correta.
main()
{   int vetor[10] = { 8, 16, 34, 13, 19, 7, 45, 3, 12, 9 };
     int x, y, aux;
      for(x=0; x<9; x++)
         for(y=x+1; y<10; y++)
              if(vetor[x] > vetor[y])
              {  aux = vetor[x];
                      vetor[x] = vetor[y];
                      vetor[y] = aux;
              }
}
Considerando o conteúdo ministrado na aula 4, assinale a alternativa CORRETA
A Se substituirmos a linha for(y=x+1; y<10; y++), pela linha for(y=1; y<10; y++), o programa vai funcionar com o
mesmo proposto
Você acertou!
Aula 04 / Slide 12 a 15

B Se substituirmos a linha for(y=x+1; y<10; y++), pela linha for(y=x; y<10; y++), o programa vai funcionar
com o mesmo proposto.
C Este programa vai realizar a ordenação por Seleção
D Este programa vai realizar a ordenação em ordem inversa
E Com este programa não podemos garantir que ao final da execução o vetor estará ordenado
Questão 9/10
1. Sobre o programa a seguir, quantas vezes a estrutura que está dentro do loop do­while será executada?
main()
{  int vetor[10] = { 3, 7, 8, 9, 12, 13, 16, 19, 34, 45 };
    int x, aux;
    char ch;
 
    do
    {  ch = ‘N’;
        for(x=0; x<9; x++)
           if(vetor[x] < vetor[x+1])
           {  aux = vetor[x];
                   vetor[x] = vetor[x+1];
                   vetor[x+1] = aux;
Você acertou!
Aula 04 / Slide 17

                   ch = ‘S’;
           }
    } while(ch == ‘N’);
}
Considerando o conteúdo ministrado na aula 4, assinale a alternativa CORRETA
A 1
B 2
C 5
D 9
E 10
Questão 10/10
Com base no algoritmo de ordenação a seguir, quantas trocas de posições de valores ocorrerão no vetor.
main()
{   int vetor[8] = { 8, 16, 34, 13, 7, 3, 12, 9 };
     int x, y, aux;
 
     for(x=0; x<8; x++)
         for(y=x+1; y<9; y++)
              if(vetor[x] < vetor[y])
              {  aux = vetor[x];
Você acertou!
Aula 04 / Slide 18

                      vetor[x] = vetor[y];
                      vetor[y] = aux;
              }
}
Considerando o conteúdo ministrado na aula 4, assinale a alternativa CORRETA
A 6
B 8
C 10
D 12
E 14
Aula 04 / Slide 8
APOL 5
Questão 1/10
Sobre alocação dinâmica de memória, responda de acordo com as afirmações a seguir:
I – Alocação dinâmica de memória é utilizada para alocar espaço de memória para armazenar conteúdos de variáveis;
II – A locação dinâmica de memória é utilizada para alocar espaço de memória para armazenar rotinas de programação;
III – Podemos alocar espações de memória para qualquer tipo de variável;
Considerando o conteúdo ministrado na aula 5, assinale a alternativa CORRETA
A As respostas I e II estão corretas
B As respostas I e III estão corretas;
C As respostas II e III estão corretas
D Somente a resposta I está correta
E Nenhuma resposta está correta
Questão 2/10
Sobre Filas, é correto afirmar:
Considerando o conteúdo ministrado na aula 5, assinale a alternativa CORRETA
A Os elementos na Fila podem ser inseridos no início ou no final da Fila
B O primeiro elemento que entrou na Fila, não pode ser retirado da Fila para não perdermos a referência de
onde a Fila termina
C O primeiro elemento que entrou na Fila, obrigatoriamente deve ser o primeiro a sair
Você acertou!
Aula 05 / Slide 4

Você acertou!
Aula 05 / Slide 8 e 9

D O último elemento que entrou na Fila, obrigatoriamente deve ser o primeiro a sair
E O último elemento que entrou na Fila, obrigatoriamente deve ser o primeiro a sair
Questão 3/10
Com relação aos conceitos de Pilhas e Filas, informe a questão correta com base nas afirmativas a seguir:
I – FIFO – First In Firt Out, é o conceito utilizado para Pilhas.
II – FIFO – First In Firt Out, é o conceito utilizado para Filas.
III – LIFO – Last In Firt Out, é o conceito utilizado para Pilhas.
IV – LIFO – Last In Firt Out, é o conceito utilizado para Filas.
Considerando o conteúdo ministrado na aula 5, assinale a alternativa CORRETA
A As questões II e III estão corretas
B As questões II e IV estão corretas
C As questões I e IV estão corretas
D As questões I e III estão corretas
E Nenhuma das questões estão corretas
Questão 4/10
Tendo como base a estrutura apresentada e das opções de alocação dinâmica de memória:
   struct Dados {
               char nome[30];
     struct Dados *ptr;
     };
     struct Dados *prim, *ulti;
Você acertou!
Aula 05 / Slide 6 e 8

  
I – prim = (struct Dados *) malloc( sizeof ( struct Dados ) );
II – prim = (struct Dados *) malloc( 34 );
III – prim = (struct Dados *) malloc( );
Considerando o conteúdo ministrado na aula 5, assinale a alternativa CORRETA
A Somente a questão I está correta
B As questões II e III estão corretas
C As questões I e III estão corretas
D As questões I e II estão corretas
E Nenhuma está correta
Questão 5/10
Sobre ponteiros, tendo como base o algoritmo a seguir, al final da execução deste algoritmo, qual será o valor de x e y:
main()
{    int x = 5, y = 7;
      int *px, *py;
      px = &x;
      py = &y;
      y++;
      x += *py;
      *py += 2;
      px++;
Você acertou!
Aula 05 / Slides 11

      *px++;
}
Considerando o conteúdo ministrado na aula 5, assinale a alternativa CORRETA
A 5 e 7
B 5 e 8
C 13 e 8
D 13 e 10
E 13 e 11
Questão 6/10
Lista é um conceito de trabalho, uma metodologia com regras, similar a Pilhas e Filas. Para a montagem das Listas 
utilizamos alocação dinâmica de memória, ponteiros e registros. Com base nisso e com as afirmações a seguir, responda:
I – Assim como Pilhas e Filas, em Listas somente podemos incluir no início ou no final de uma lista.
II – Diferente de Pilhas e Filas, em Listas podemos incluir no meio de uma Lista.
III – Em Listas podemos incluir de forma ordenada as informações. Deste modo, podemos em uma mesma Lista incluir no 
início, no final ou no meio (entre dois registros).
Considerando o conteúdo ministrado na aula 6, assinale a alternativa CORRETA
A Somente a questão I está correta
B Somente a questão II está correta
C Somente a questão III está correta
D Estão corretas as questões I e II
Você acertou!
Aula 05 / Slide 12 e 13

E Estão corretas as questões II e III
Questão 7/10
Sobre Listas, é correto afirmar:
I – Assim como em Filas, precisamos de variáveis de controle para armazenar os endereções dos registros de início e 
final da Lista.
II – Em Listas Circulares podemos ter uma única variável de controle que aponte para pelo menos um endereço de 
memória de um registro que esteja na Lista.
III – Em Listas precisamos de uma variável ponteiro auxiliar para podermos percorrer cada registro da Lista.
Considerando o conteúdo ministrado na aula 6, assinale a alternativa CORRETA
A As questões I e II estão corretas
B As questões I e III estão corretas
C As questões II e III estão corretas
D Todas as questões estão corretas
E Todas as questões estão incorretas
Questão 8/10
Sobre registros utilizados em Listas Duplamente Encadeadas, qual das questões está incorreta.
Considerando o conteúdo ministrado na aula 6, assinale a alternativa INCORRETA
A Os registros possuem duas variáveis ponteiros do mesmo tipo do registro, para armazenar o endereço do
registro anterior e do próximo da Lista
B Sea Lista for Circular, o último registro da Lista, em seu campo próximo, haverá o endereço do primeiro da
Lista
Você acertou!
Aula 06 / Slide 4, 5 e 6

Você acertou!
Aula 06 / Slide 11

C Se a Lista for Circular, o primeiro registro da Lista, em seu campo anterior, haverá o endereço do último da
Lista
D O campo responsável por armazenar o endereço do próximo registro do último da Lista, é armazenado com o
conteúdo NULL. Indicando que não há registros após este.
E Os registros possuem duas variáveis ponteiros do mesmo tipo do registro, para armazenar o
endereço do próprio registro e do próximo da Lista
Questão 9/10
Sobre realizar pesquisas em Listas Duplamente Encadeadas Circulares, qual afirmativa está incorreta:
Considerando o conteúdo ministrado na aula 6, assinale a alternativa INCORRETA
A Não fazemos pesquisas em Listas Duplamente Encadeadas Circulares, por não termos como saber
onde termina e onde começa a Lista
B O conceito de início e final de Listas Circulares é relativo, pois se a Lista está ordenada, podemos assumir
que o inicio da Lista é o início da ordenação. Mas se a Lista está desordenada, qualquer registro pode ser
considerado de início ou de final
C Em Listas Duplamente Encadeadas, a pesquisa não precisa ser iniciada sempre no primeiro registro, ela
pode ser iniciada no último registro pesquisado, pois podemos “caminhar” pesquisando em qualquer sentido
D O maior cuidado que temos que ter em realizar pesquisas em Listas Circulares, é não ficarmos em loop
eterno por não haver final de lista. Temos que criar em programação, mecanismo de controle de início e final
da pesquisa
E As pesquisas podem ser realizadas em Listas Duplamente Encadeadas Circulares, mesmo que os dados
estejam ordenados ou não. Para tanto o gerenciamento da pesquisa deve ser controlado pelo sistema
Questão 10/10
Sobre a rotina do Programa a seguir, qual afirmativa está incorreta.
struct Dados {
      char nome[30];
Você acertou!
Aula 06 / Slide 20

Você acertou!
Aula 06 / Slides 23

      struct Dados *ante, *prox;
} *prim, *ulti, *ptr;
 
teste()
{  
    while( prim != NULL)
    {  
        ptr = prim;
        prim = prim­>prox;
        free(ptr);
     }
     ulti = NULL;
}
Considerando o conteúdo ministrado na aula 6, assinale a alternativa INCORRETA
A Tomando como base que esta função esvazia a Lista completamente, a linha de comando “ulti = NULL” (que
contém o endereço do último registro da Lista) é desnecessária se na inclusão do primeiro registro na Lista
for verificado somente a variável que indica o endereço do primeiro elemento da Lista “prim”
B O objetivo principal desta função é retirar todos os elementos da Lista e liberar o espaço de memória por eles
ocupados
C A linha de comando “ptr = prim;” é desnecessária, pois podemos liberar espaço de memória
diretamente com a variável “prim”. Ficando deste modo o comando: “free(prim­>prox);”
D Esta função para esvaziar a Lista, não funciona em Listas Circulares, por que o campo “prox” em Listas
Circulares nunca será “NULL”
Você acertou!
Aula 06 / Slide 19 e 20

E Independente se a Lista for Simplesmente Encadeada ou Duplamente Encadeada, esta função pode ser
utilizada para esvaziar a Lista completamente

Outros materiais