Você está na página 1de 10

Questão 1

Incorreta
Questão com problema?
A recursividade é uma técnica programação usada para tornar o código mais elegante,
organizado, o que pode facilitar a manutenção. Essa técnica, em muitos casos, pode ser
usada para substituir uma estrutura de repetição iterativa, por exemplo, uma que use o
comando for. Uma função recursiva pode substituir uma estrutura de repetição, porém
nem sempre é viável, visto os recursos computacionais necessários para a execução da
recursividade. Uma função recursiva funciona como um laço de repetição, o qual, será
interrompido somente quando o caso base for satisfeito.

Considerando o contexto, avalie o programa a seguir, observando as duas funções


criadas sobre a recursividade.

#include <stdio.h>
int fatNaoRecursivo(int n){
if(n<2) return 1;
int f=1;
int i;
for(i=2; i<=n; i++) f*=i;
return f;
}
int fatRecursivo(int n){
if(n<2) return 1;
return fatRecursivo(n-1)*n;
}
int main()
{ printf("%d\n",fatNaoRecursivo(6));
printf("%d\n",fatRecursivo(6));
return 0;
}
Analisando o programa proposto, assinale a alternativa correta.
Sua resposta
Incorreta
É mais vantagem utilizar a função sem recursividade para o cálculo do Fatorial, as
funções que utilizam recursividades são muito mais lentas dos que as funções normais.

Solução esperada

O programa demonstra o uso de duas funções, uma com recursividade e a outra não, as
duas funções funcionam, a diferença está na quantidade de linha entre as duas técnicas.
e não há erros de compilação.

Comentário

Alternativa incorreta, analise novamente as alternativas.


Questão 2
Incorreta
Questão com problema?
Leia o trecho de programa a seguir:

#include<stdio.h>
int x = 10;
int main(){
int x = -1; int b;
{
extern int x; b = x;
}
printf("\n Valor de x = %d",x);
printf("\n Valor de b (x global) = %d",b);
return 0;
}

De acordo com o trecho de programa, analise as asserções a seguir:

I - Na linguagem C, para acessar o valor de uma variável global dentro de uma função
que possui uma variável local com mesmo nome, deve-se usar a instrução externa.

PORQUE

II - Utilizar variáveis globais e locais com mesmo nome na linguagem C necessita criar
uma nova variável chamada “b”, com um bloco de instruções, que atribui à nova
variável o valor “externo” de x.

A respeito dessas asserções, assinale a alternativa correta:


Sua resposta
Incorreta
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.

Solução esperada

As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.

Comentário

As asserções I e II são proposições verdadeiras, mas a asserção II não é uma


justificativa da asserção I. I - VERDADEIRA - Na linguagem C, para acessar o valor
de uma variável global dentro de uma função que possui uma variável local com mesmo
nome, deve-se usar a instrução extern. II - VERDADEIRA - Utilizar variáveis globais
e locais com mesmo nome na linguagem C necessita criar uma nova variável chamada
“b”, com um bloco de instruções, que atribui à nova variável o valor “externo” de x.
Questão 3
Incorreta
Questão com problema?
Analise o trecho de programa a seguir:

#include<stdio.h>
#include<stdlib.h>
int* alocar(){
return malloc(200);
}
int main(){
int *memoria;
memoria = alocar();
if(memoria != NULL){
printf("Endereco de memoria alocada = %x",memoria);
}
else{
printf("Memoria nao alocada");
}
return 0;
}

Agora, avalie as seguintes asserções e a relação proposta entre elas.

I - Foi criado um ponteiro inteiro e, após a função ser chamada, seu resultado foi
armazenado no ponteiro chamado memoria.

PORQUE

II - Se o valor do ponteiro memoria é diferente de NULL, então sabe-se que a alocação


foi feita com sucesso e imprime o endereço da primeira posição, caso contrário, o
usuário é informado que a memória não foi alocada.

A respeito dessas asserções, assinale a alternativa correta:


Sua resposta
Incorreta
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.

Solução esperada

As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.

Comentário
As asserções I e II são proposições verdadeiras, mas a asserção II não é uma
justificativa da asserção I. I - VERDADEIRA - Foi criado um ponteiro inteiro e, após a
função ser chamada, seu resultado foi armazenado no ponteiro chamado memoria. II -
VERDADEIRA - Se o valor do ponteiro memoria é diferente de NULL, então sabe-se
que a alocação foi feita com sucesso e imprime o endereço da primeira posição, caso
contrário, o usuário é informado que a memória não foi alocada.

Questão 4
Incorreta
Questão com problema?
Segundo Manzano (2015) o escopo de uma variável é a relação de alcance que se tem
com o local onde certo recurso se encontra definido, de modo que possa ser visualizado
pelas várias partes do código de um programa.

A figura a seguir demonstra o escopo das variáveis de um programa:

Com base no contexto apresentado, avalie as seguintes asserções e a relação proposta


entre elas:

I. A utilização de variáveis globais permite otimizar a alocação de memória, pois em


vários casos o desenvolvedor não precisará criar variáveis locais. Por outro lado, essa
técnica de programação deve ser usada com cautela, pois variáveis locais são criadas e
destruídas ao fim da função, enquanto as globais permanecem na memória durante todo
o tempo de execução.

PORQUE

II. As variáveis locais são aquelas declaradas no início ou dentro de uma função. São
visíveis no programa inteiro, ou seja, podem ser utilizadas por todo o programa. Não há
diferenças efetivas no desempenho do programa entre usar variáveis globais e locais,
deste modo é aconselhável deixar sempre as variáveis como globais.

Analise atentamente as asserções e assinale a alternativa correta.


Sua resposta
Incorreta
As asserções I e II são proposições falsas.

Solução esperada

A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.

Comentário

Alternativa incorreta, tente novamente.

Questão 5
Incorreta
Questão com problema?
Um programa de computador pode acelerar o resultado de muitos problemas
matemáticos e este é o caso da sequência de Fibonacci. A sequência de Fibonacci é uma
sucessão de números que aparecem em muitos fenômenos da natureza. Descrita no final
do século 12 pelo italiano Leonardo Fibonacci, ela é infinita e começa com 0 e 1. Os
números seguintes são sempre a soma dos dois números anteriores. Portanto, depois de
0 e 1, vêm 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

Observe a função para o cálculo da sequência de Fibonacci e que usa o recurso de


recursividade.

int fibonacci (int n)


{ int s1, s2 ;
if (n == 0) return
1;
else if (n == 1) return
1;
else {
s1 = fibonacci(n-
1);
s2 = fibonacci(n-
2);
return s1 + s2;
}
}

Neste contexto,avalie as afirmativas a seguir:


I - A recursividade é indicada quando um problema é menor, pois desta forma o
programa ficará ainda mais veloz.

II - Devemos evitar o uso de recursividade quando um problema é muito repetitivo, o


ideal é chamar funções menores e que podem fazer o mesmo serviço.

III - A recursividade é indicada quando um problema é maior e pode ser dividido em


instâncias menores do mesmo problema, porém considerando a utilização dos recursos
computacionais que cada método empregará.

IV. - Um programa recursivo exige mais espaço de memória e é, na grande maioria dos
casos, mais lento do que uma função normal.
É correto o que se afirma em:
Sua resposta
Incorreta
II e III.

Solução esperada

III e IV.

Comentário

Análise novamente as afirmativas.

Questão 1
Incorreta
Questão com problema?

A estrutura de Fila é do tipo FIFO (First in, First out), ou seja, o primeiro elemento que
entra na fila é o primeiro elemento a ser removido, assim, todo primeiro elemento que
entra na fila por uma extremidade, saíra primeiro pela outra extremidade. Um aluno
afirmou que a estrutura de Fila é muito similar a uma fila de espera de um caixa
eletrônico em um banco ou até mesmo uma fila para passar as compras em um mercado.
Considerando o contexto apresentado, avalie as seguintes asserções e a relação proposta
entre elas.

I. Um função que podemos implementar na Fila, é a de verificação se a Fila está vazia


ou não. No trecho de remoção de um elemento da Fila, já realizamos a chamada a esta
função, e ela pode ser implementada com o trecho de código a seguir: int fila_vazia
(Fila* f) { return (f -> n == 0); }

PORQUE

II. É impossível remover um elemento de uma Fila vazia.

Agora assinale a alternativa correta.


Sua resposta
Incorreta
as asserções I e II são proposições falsas.

Solução esperada

as asserções I e II são proposições verdadeiras e a II é o motivo que justificativa da


implementação da I.

Comentário

Resposta incorreta! Uma situação que pode ocorrer é adicionar um elemento em uma
Fila cheia ou remover um elemento de uma Fila vazia. Em ambos os casos seria
impossível realizar as operações. Como solução, é importante sempre implementar as
funções para verificar se a Fila está cheia (fila_cheia(F)) e para verificar se a Fila está
vazia (fila_vazia(F)). Assim, as asserções I e II são proposições verdadeiras, e a II é o
motivo que justificativa da implementação da I.

Questão 2
Incorreta
Questão com problema?

Segundo Celes et al. (2004), para inserir um elemento na lista ligada, é necessário alocar
o espaço na memória, de forma dinâmica, para armazenar o elemento e ligá-lo à lista
existente. Inserir um novo elemento no início da lista é a forma mais simples de
inserção em uma lista ligada. É possível implementar a função para adicionar um novo
elemento em mais dois pontos da lista. A figura 1 a seguir, mostra uma possibilidade de
inserção de elemento: Figura 1 – Inserção de
elemento: Fonte:
elaborada pelo autor.

A inserção do elemento mostrado na imagem anterior se da


Sua resposta
Incorreta
no final da lista.

Solução esperada

no meio da lista.

Comentário

De acordo com as possibilidades de inserção de elementos, podendo ser no início, meio


ou final, a figura indica que a: Inserção de elemento está no meio da lista.
Questão 3
Incorreta
Questão com problema?
As listas ligadas são estruturas de dados conhecidas por serem flexíveis quanto às suas
operações e seu tamanho é dinâmico. Toda lista é composta por nós, e o nó é um
conjunto de informações que permitem apontar para o próximo elemento.
Considere a organização das pessoas na fila do banco, porém seu funcionamento
coerente depende do comportamento da lista ligada, então aplique o conceito de
inserção em listas ligadas para assinalar a alternativa correta:
Sua resposta
Incorreta
As listas só permitem inserção de elementos em seu fim.

Solução esperada

As listas permitem inserção de elementos em qualquer posição.

Comentário

As listas permitem inserção de elementos em qualquer posição, basta que os ponteiros


sejam atualizados para isto.
Questão 4
Incorreta
Questão com problema?

Uma situação eu pode ocorrer é adicionar um elemento em uma Fila cheia ou remover
um elemento de uma Fila vazia. Em ambos os casos seria impossível realizar as
operações. Como solução, é importante sempre implementar as funções para verificar se
a Fila está cheia (fila_cheia(F)) e para verificar se a Fila está vazia (fila_vazia(F)). Uma
Fila Circular utiliza menos instruções a serem executadas, podendo ser mais adequada e
eficiente na utilização de programação. Assim, com base em Filas Circulares, avalie as
seguintes asserções e a relação proposta entre elas:

I. Utiliza-se as Filas Circulares como solução para várias situações.

PORQUE

II. As Filas não apresentam uma solução completa, sendo que, mesmo chegando ao final
do vetor poderemos ter a Fila cheia mesmo não estando ocupada, uma vez que
elementos podem ter sido removidos.

A seguir assinale a alternativa correta.


Sua resposta
Incorreta
as asserções I e II são proposições falsas.

Solução esperada

as asserções I e II são proposições verdadeiras e a II é uma justificativa da I.

Comentário

Resposta incorreta! Segundo Silva (2007), as Filas não apresentam uma solução
completa, sendo que, mesmo chegando ao final do vetor poderemos ter a Fila cheia
mesmo não estando cheia, uma vez que elementos podem ter sido removidos e para
isso, podemos utilizar as Filas Circulares como solução para esta situação. Assim, a
resposta correta é: as asserções I e II são proposições verdadeiras, e a II é uma
justificativa da I.
Questão 5
Incorreta
Questão com problema?
Podemos remover um elemento da lista ligada, porém é necessário ter certos cuidados.
De acordo com Celes (2004), a função para remover um elemento é mais trabalhosa e
complexa, e precisa de informações como parâmetros para remoção, o valor do
elemento e a lista.

Tendo como referência a remoção de elementos de lista, avalie as seguintes asserções e


a relação proposta entre elas:

I. Caso o primeiro elemento da lista seja o elemento a ser retirado, devemos atualizar o
valor da lista com o ponteiro para o segundo elemento e assim, liberar o espaço alocado
do elemento retirado.

PORQUE

II. Se o elemento a ser retirado da lista pela função estiver no meio da lista, o elemento
anterior deve apontar para o elemento seguinte do qual será removido e, após isso,
liberarmos a alocação do elemento removido.
Agora assinale a alternativa correta.
Sua resposta
Incorreta
As afirmativas I e II são falsas.

Solução esperada

As afirmativas I e II são verdadeiras e a II é uma justificativa da I.

Comentário

Resolução: As duas afirmativas são verdadeiras e a segunda complementa a


primeira. O primeiro elemento da lista seja o elemento a ser retirado, deve atualizar o
valor da lista com o ponteiro para o segundo elemento e assim, liberar o espaço alocado
do elemento retirado. Se o elemento a ser retirado da lista pela função estiver no meio
da lista, o elemento anterior deve apontar para o elemento seguinte do qual será
removido, e após isso, liberarmos a alocação do elemento removido.

Você também pode gostar