Buscar

Colaborar - Av2 - Algoritmos e Programação Estruturada

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 3 páginas

Prévia do material em texto

 Algoritmos e Programação Estruturada (/alu…
Av2 - Algoritmos e Programação Estruturada
Sua avaliação foi confirmada com sucesso
  
(/notific
×
Informações Adicionais
Período: 06/02/2023 00:00 à 29/05/2023 23:59
Situação: Cadastrado
Tentativas: 1 / 3
Pontuação: 1000
Protocolo: 839236656
Avaliar Material
1)
a)
b)
c)
d)
e)
 É comum utilizarmos ponteiros com funções. Um caso importante de ponteiros com funções é na alocação de memória dinâmica. A função malloc (
)  pertencente a biblioteca  <stdlib.h>  é usada para alocar memória dinamicamente. Entender o tipo de retorno dessa função é muito importante,
principalmente para seu avanço, quando você começar a estudar estruturas de dados.
 
Observe atentamente o programa que demonstra o uso de funções:
 
#include<stdio.h>
#include<stdlib.h>
int* alocar(){
return malloc(200);
}
int main(){
int *memoria;
memoria = alocar();
if(memoria != NULL){
printf("Endereço de memória alocada = %x",memoria);
}
else{
printf("Memória não alocada");
}
return 0;
}
 Conforme demonstrado no programa apresentado a função malloc ( ) irá reservar um espaço de memória dinamicamente, a função malloc ( ) pode
retornar dois valores e são eles:
Alternativas:
 null ou um ponteiro genérico (ponteiro genérico é do tipo void) Alternativa assinalada
 int ou um ponteiro genérico (ponteiro genérico é do tipo void)
 float ou um ponteiro genérico (ponteiro genérico é do tipo void)
 char ou numérico (int ou float)
 string ou null
https://colaboraread.com.br/aluno/timeline/index/3514148801?ofertaDisciplinaId=1975360
https://colaboraread.com.br/notificacao/index
javascript:void(0);
2)
a)
b)
c)
d)
e)
3)
a)
b)
c)
d)
e)
4)
“Muitos problemas têm a seguinte propriedade: cada instância do problema contém uma instância menor do mesmo problema. Diz-se que esses
problemas têm estrutura recursiva. Para resolver tal problema, pode-se aplicar o seguinte método: se a instância em questão for pequena, resolva-a
diretamente; senão, reduza-a a uma instância menor do mesmo problema, aplique o método à instância menor, volte à instância original. A aplicação desse
método produz um algoritmo recursivo.” (FEOFILOFF, 2017, p. 1). Baseado nesse conceito, avalie as asserções a seguir:
 
I - Recursividade significa indicar quando um problema maior pode ser dividido em instâncias menores do mesmo problema.
PORQUE
II - A técnica de recursividade pode substituir o uso de estruturas de repetição tornando o código mais elegante.
A respeito dessas asserções, assinale a alternativa correta:
Alternativas:
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I. Alternativa assinalada
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
As asserções I e II são proposições falsas.
Recursividade é uma técnica sofisticada em programação, na qual uma função chama a si mesma criando várias instâncias (chamadas recursivas). Embora
seja uma técnica que proporciona um código mais limpo e facilita a manutenção, seu uso deve levar em consideração a quantidade de memória necessária
para a execução do programa. Nesse contexto, avalie as asserções a seguir:
 
I. A cada chamada recursiva é alocado recursos na memória para a função, se a função for muito grande poderá ocorrer um acúmulo de memória.
PORQUE
II. É preciso avaliar o custo-benefício em se ter um código mais sofisticado em detrimento de uma estrutura de repetição, pois a segunda opção gasta
menos memória.
A respeito dessas asserções, assinale a alternativa correta:
Alternativas:
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira. Alternativa assinalada
As asserções I e II são proposições falsas.
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
 
a)
b)
c)
d)
e)
5)
a)
b)
c)
d)
e)
II. É impossível remover um elemento de uma Fila vazia.
Agora assinale a alternativa correta.
Alternativas:
as asserções I e II são proposições verdadeiras e a II é o motivo que justificativa da implementação da I. Alternativa assinalada
as asserções I e II são proposições verdadeiras, mas a II não é o motivo que justificativa da implementação da I.
a asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
a asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
as asserções I e II são proposições falsas.
A seguir é apresentado o código da função "clonar(p)", capaz de criar e retornar uma nova pilha idêntica a uma pilha "p" já existente.
 
struct Pilha* clonar(struct Pilha* p) {
assert(p != NULL);
struct Pilha* clone = criar();
struct Pilha* aux = criar();
 
while(vazia(p) == false) {
empilhar(aux, desempilhar(p));
}
 
while(vazia(aux) == false) {
int elemento =____________;
____________;
empilhar(p, elemento);
}
 
____________
return clone;
}
Assinale a alternativa que preenche corretamente as lacuna do código da função "clonar":
Alternativas:
topo(aux) / empilhar(clone, elemento) / liberar(aux).
desempilhar(aux) / empilhar(clone, elemento) / free(aux).
desempilhar(aux) / empilhar(clone, elemento) / liberar(aux). Alternativa assinalada
desempilhar(aux) / empilhar(clone, desempilhar(aux)) / liberar(aux).
topo(aux) / empilhar(clone, desempilhar(aux)) / free(aux).

Outros materiais