Prévia do material em texto
07/04/2024, 15:11 Colaborar - Av2 - Algoritmos e Programação Estruturada
07/04/2024, 15:11 Colaborar - Av2 - Algoritmos e Programação Estruturada
Colaborar - Av2 - Algoritmos e Programação Estruturada
(/notific Algoritmos e Programação Estruturada (/alu…
Av2 - Algoritmos e Programação Estruturada
Sua avaliação foi confirmada com sucesso
×
Informações Adicionais
Período:
26
/02/2024 00:00 à
08/04/2024 23:59
Situação:
Cadastrado
Tentativas:
1
/
3
Pontuação:
1000
Protocolo:
Avaliar Material
1)
É 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:
a)
b)
c)
d)
e)
2)
#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
Analise a figura a seguir.
a)
b)
c)
d)
e)
3)
Fonte: elaborada pela autora.
Para compreender o mecanismo apresentado na imagem anterior, organize as operações em sequência correta:
1
- Chamada a função funcaoRecursiva(), que por sua vez, possui em seu corpo um comando que invoca a si
mesma.
2
- Na terceira instância, uma determinada condição de parada é satisfeita.
3
- Um novo espaço é alocado, com variáveis e comandos. Como a função é recursiva, novamente ela chama a si
mesma, criando então a terceira instância da função.
4
- Cada instância da função passa a retornar seus resultados para a instância anterior.
5
- Nesse momento é criada a segunda instância dessa função na memória de trabalho.
Assinale a alternativa que contém a sequência correta:
Alternativas:
1-3-5-2-4.
4-5-3-2-1.
1-5-3-2-4.
Alternativa assinalada
1-5-2-4-3.
2-5-1-3-4.
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 extern.
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 “interno” de x.
a)
b)
c)
d)
e)
4)
a)
b)
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.
Alternativa assinalada
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 declaração da estrutura inicial para criação de uma pilha pode ser implementada por:
struct Pilha {
int topo;
int capacidade;
float * proxElem;
}
;
struct Pilha minhaPilha;
Segundo Celes, Cerqueira e Rangel (2004), com a estrutura declarada é possível criar a função para criar uma pilha.
Esta função aloca dinamicamente na memória o espaço para utilização da pilha. O trecho de código para criação da
pilha pode ser implementado por:
void cria_pilha(struct Pilha *p, int c ){
p -> proxElem = (float*) malloc (c * sizeof(float));
p -> topo = -1;
p -> capacidade = c;
}
Com a função para criar a pilha realizada, ela estará vazia, ou seja, não terá nenhum elemento na pilha em sua
criação. Assim, é possível criar a função que vai permitir ser inserido um novo elemento na pilha.
Considerando os códigos apresentados, o correto formato para inserir um novo elemento na pilha usando o
nome
push( ) é
Alternativas:
void push-pilha(struct Pilha *p, float **v){
p -> topo++;
p -> proxElem [p -> topo] = v;
}
void push_pilha(struct Pilha *p, float v){
p -> topo-+;
p -> proxElem [p -> topo] = v;
c)
d)
e)
5)
a)
b)
c)
d)
e)
}
void push_pilha(struct Pilha *p, float v){
p -> topo++;
p -> proxElem [p -> topo] = v;
}
Alternativa assinalada
void push-pilha(struct Pilha /p, float v){
p -> topo+-;
p -> proxElem [p -> topo] = v;
}
void push_pilha(struct Pilha /p, float v){
p -> topo++;
p -> proxElem [p -> topo] = v;
}
Considere
uma
lista
simplesmente
ligada
que,
além
das
suas
funções
básicas,
possui
a
função
"posicao_menor(li)", a qual retorna a posição menor elemento da lista “li”. Com base nisto, analise o código da
função "main()" a seguir:
int main() {
structLista* minha_lista = criar();
inserir(minha_lista,0,3);
inserir(minha_lista,0,5);
inserir(minha_lista,2,4);
inserir(minha_lista,1,1);
r
emo
ver(minha_lista,0);
printf("%d", posicao_menor(minha_lista));
r
eturn0;
}
Assinale a alternativa correta corresponde à saída impressa na tela do programa anterior.
Alternativas:
0
Alternativa assinalada
1
2
3
4
https://www.colaboraread.com.br/aluno/avaliacao/index/3838755701?atividadeDisciplinaId=16120833 1/5
https://www.colaboraread.com.br/aluno/avaliacao/index/3838755701?atividadeDisciplinaId=16120833 1/5