Baixe o app para aproveitar ainda mais
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).
Compartilhar