Buscar

Prova Presencial - 1 Chamada - ALGORITMO 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 12 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 12 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 12 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

ALGORITMO E PROGRAMAÇÃO ESTRUTURADA 
 
Gabarito 
× 
Questão 1 
Uma função pode receber parâmetros por valor ou por referência. No primeiro caso, 
são criadas cópias das variáveis na memória e, nesse caso, o valor original não é 
alterado. Para trabalhar com passagem por referência é preciso recorrer ao uso de 
ponteiros, pois são variáveis especiais que armazenam endereços de memória. 
Análise o código a seguir e escolha a opção que contém o que será impresso na linha 
11. 
1. #include 
 
2. int pensar (int* a, int* b) { 
3. a = 10; 
4. b = 20; 
5. return 0; 
6. } 
7. int main () { 
8. int a = -30; 
9. int b = -40; 
10. pensar (&a,&b); 
11. printf("\n a = %d e b = %d",a,b); 
12. return 0; 
13. } 
A) 
 
a = -30 e b = -40. 
B) 
 
a = 10 e b = 20. 
C) 
 
a = -30 e b = 20. 
D) 
 
Apresenta erro de compilação. 
E) 
 
a = 10 e b = -40. 
Questão 2 
A linguagem C de programação utiliza especificadores de formato para identificar o 
tipo de valor guardado nas variáveis e constantes. Eles devem ser usados tanto para 
leitura de um valor, como para a impressão. Quando um programa é executado, o 
compilador usa esses elementos para fazer as devidas referências e conexões, por 
isso o uso correto é fundamental para os resultados. 
Considerando o código apresentado, analise as asserções e escolha a opção correta. 
 
Anexo - Consulte a imagem em melhor resolução no final do cadernos de questões. 
 
 
 
 
I- O comando scanf("%f", idade); guardará o valor digitado na variável idade. 
II- O comando printf("%d",a_letra); imprimirá a letra a na tela. 
III- O comando printf("%c",A_letra); imprimirá a letra A na tela. 
A) 
 
Somente a alternativa I está correta. 
B) 
 
Somente a alternativa III está correta. 
C) 
 
Somente a alternativa II está correta. 
D) 
 
Somente as alternativas I e II estão corretas. 
E) 
 
Somente as alternativas II e III estão corretas. 
Questão 3 
Sobre matrizes, analise as afirmativas e marque V para verdadeiro e F para falso: 
( ) Em qualquer variável composta, o índice começa por zero, então, em uma matriz, 
o primeiro espaço para armazenamento é sempre (0,0), ou seja, índice 0 tanto para 
linha como para coluna. 
( ) Não é obrigatório que todas as posições sejam ocupadas, sendo possível declarar 
uma matriz com 10 linhas e 10 colunas e usar somente uma. 
( ) São arranjos de duas ou mais dimensões. Todos os elementos de uma matriz são 
de tipos diferentes, armazenando informações semanticamente diferentes; 
Agora, assinale a alternativa que apresenta a sequência CORRETA: 
A) 
 
V-V-V; 
B) 
 
F-F-F; 
C) 
 
F-V-F; 
D) 
 
V-V-F; 
E) 
 
F-V-V; 
Questão 4 
O comando while executa a rotina de um programa enquanto uma sintaxe do 
programa for correta. Neste caso, podemos afirmar que: 
I - O programa não executará nenhuma repetição (e as ações que ali dentro 
estiverem programadas) sem antes testar uma condição. 
II - Em alguns casos, quando utilizamos teste no início, pode ocorrer o famoso loop 
infinito. 
III - Geralmente usamos o comando while quando não sabemos quantas vezes o laço 
da condição deve ser repetido. 
Assinale a alternativa correta de acordo com as afirmações acima: 
A) 
 
Somente a afirmação III está correta. 
B) 
 
As afirmações I, II e III estão corretas. 
C) 
 
As afirmações I e II estão corretas. 
D) 
 
Somente a afirmação I está correta. 
E) 
 
Somente a afirmação II está correta. 
Questão 5 
A recursão é uma técnica de programação que envolve a chamada de uma função a 
si mesma para resolver uma tarefa. É útil quando a solução para um problema 
pode ser decomposta em subproblemas menores da mesma natureza. A 
recursividade é uma técnica de programação usada para substituir uma estrutura 
de repetição iterativa, por exemplo, uma que use o for. 
Analise as asserções a seguir e a relação proposta entre elas. 
 
I. As estruturas de repetição sempre podem ser substituídas por funções 
recursivas. 
 
II. Uma função recursiva funciona como um laço de repetição, o qual será 
interrompido somente quando o caso base for satisfeito. 
 
III. Nem sempre é possível substituir uma estrutura de repetição por uma função 
recursiva e vice-versa. 
A) 
 
V-V-V 
B) 
 
F-F-F 
C) 
 
F-F-V 
D) 
 
F-V-F 
E) 
 
F-V-V 
Questão 6 
Analise as afirmativas a seguir sobre listas e struct: 
I- Só é possível retirar um elemento da lista do seu final; 
II- Para inserir e retirar um elemento da lista deve-se atualizar o valor do ponteiro; 
III- A struct é uma variável que armazena valores de tipos diferentes; 
Agora, assinale a alternativa que apresenta a resposta CORRETA: 
A) 
 
Apenas a afirmativa II está incorreta; 
B) 
 
As afirmativas I, II e III estão corretas. 
C) 
 
Apenas a afirmativa I está correta; 
D) 
 
Apenas as afirmativas I e II estão corretas; 
E) 
 
Apenas as afirmativas II e III estão corretas; 
Questão 7 
Quando você precisar adicionar um "1" à variável, você fará uso do "++" 
(incremento), e quando quiser tirar um "1" da variável, você utiliza "- -" 
(decremento), essas operações são caracterizadas unárias, porém, o posicionamento 
dos "++" nas variáveis podem sofrer alterações nos seus valores quando 
representados. 
Analise o programa abaixo e responda a alternativa que corresponde ao valor para p 
e q. 
int main() { 
int p,q; 
p=1; q=1; 
printf("Valor de p = %d\n", p); 
printf("Valor de q = %d\n", q); 
printf("\n Criando o Incremento: p++\n"); 
p++; 
printf("Criando um Decremento: q--\n"); 
q--; 
printf("\n O novo valor para p = %d\n", p); 
printf(" O novo valor para q = %d\n",q); 
return 0; 
} 
A) 
 
O novo valor para "p" é 1 e o novo valor de "q" é 0. 
B) 
 
O novo valor para "p" é 2 e o novo valor de "q" é 0. 
C) 
 
O novo valor para "p" é 1 e o novo valor de "q" é 1. 
D) 
 
O novo valor para "p" é 0 e o novo valor de "q" é 1. 
E) 
 
O novo valor para "p" é 0 e o novo valor de "q" é 2. 
Questão 8 
Podemos inserir um elemento em uma lista em três situações diferentes. Ao 
inserirmos uma informação na lista ligada, é imprescindível que seja atualizado o 
valor do ponteiro dessa lista, assim a lista ligada deverá apontar ao novo elemento 
da lista. 
Qual a funcionalidade do código informado? 
Dado o trecho de código a seguir: 
Lista* inserir (Lista* l, int i) { 
Lista* novo = (Lista*) malloc(sizeof(Lista)); 
novo -> info = i; 
novo -> prox = l; 
return novo; 
} 
A) 
 
Inserir um elemento no final da lista. 
B) 
 
A função aloca dinamicamente memória para um novo elemento da lista com o 
comando Lista* novo = (Lista*) malloc(sizeof(Lista)). O valor de i é atribuído ao 
campo info deste novo elemento. 
C) 
 
Apagar toda a lista para recomeçar. 
D) 
 
Estrutura Lista não foi declarada, apesar dos campos info e prox. 
E) 
 
O campo info do novo elemento é atribuído com o valor de 1, de forma que o novo 
elemento passa a ser o primeiro da lista. Por fim, a função retorna o endereço de 
memória deste novo elemento, que agora é o início da lista encadeada. 
Questão 9 
Sobre vetores, analise as afirmativas a seguir: 
I- Cada elemento no vetor é acessado por meio do seu índice, que sempre começará 
pelo valor um, independentemente da linguagem de programação. 
II- Um vetor de caracteres é chamado de string; 
 
III- A criação de um vetor é similar a uma variável primitiva, tendo que declarar 
somente o tipo que será este vetor e utilizar o *; 
Agora, assinale a alternativa que apresenta a resposta CORRETA: 
A) 
 
Apenas as afirmativas I e II estão corretas; 
B) 
 
As afirmativas I, II e III estão corretas. 
C) 
 
Apenas as afirmativas II e III estão corretas; 
D) 
 
Apenas a afirmativa I está correta; 
E) 
 
Apenas a afirmativa II está correta; 
Questão 10 
Analise as afirmativas a seguir e marque V para verdadeiro e F para falso: 
( ) Só existe uma única solução paraum algoritmo; 
( ) O fluxograma é uma representação gráfica de um algoritmo; 
( ) Todas as variáveis possuem o mesmo tipo. 
Agora, assinale a alternativa que apresenta a sequência CORRETA: 
A) 
 
F-V-F; 
B) 
 
F-F-V; 
C) 
 
F-F-F; 
D) 
 
V-F-F; 
E) 
 
V-V-V; 
Questão 11 
Uma lista ligada, também conhecida como lista encadeada, é um conjunto de dados 
dispostos por uma sequência de nós, em que a relação de sucessão desses elementos 
é determinada por um ponteiro que indica a posição do próximo elemento, podendo 
estar ordenado ou não. 
Assinale a alternativa a seguir que apresenta a informação correta quanto à 
composição de um nó da lista ligada: 
A) 
 
Uma informação e um ponteiro para o elemento anterior. 
B) 
 
Uma informação e um ponteiro para o próximo elemento. 
C) 
 
Ponteiro para o elemento anterior e uma informação. 
D) 
 
Ponteiro para o próximo elemento e um ponteiro para o elemento anterior. 
E) 
 
Ponteiro para o próximo elemento e um ponteiro para NULL. 
Questão 12 
Analise as afirmativas a seguir sobre as estruturas de dados pilha e fila: 
I- Uma pilha é uma estrutura de dados do tipo LIFO, onde o primeiro elemento a ser 
inserido, será o primeiro a ser retirado. 
II- As filas são estruturas de dados do tipo FIFO (first-in first-out), adiciona-se itens 
no fim e remove-se do início. 
III- As principais funções da fila são push e pop; 
Agora, assinale a alternativa que apresenta a resposta CORRETA: 
A) 
 
Apenas as afirmativas I e II estão corretas; 
B) 
 
Apenas a afirmativa II está correta; 
C) 
 
Apenas a afirmativa I está correta; 
D) 
 
As afirmativas I, II e III estão corretas. 
E) 
 
Apenas as afirmativas II e III estão corretas; 
Questão 13 
Quando trabalhamos com o comando "for", podemos encontrar três expressões 
separadas por ponto e vírgula. A primeira expressão é a Inicialização, que é 
executada uma única vez, antes de começar o laço. A segunda é a condição final, em 
que é realizado um teste que determina se a condição é verdadeira ou falsa e, caso 
seja verdadeira, permanece no laço, caso falsa, encerra o laço e passa para a próxima 
instrução. A última expressão é executada depois dos comandos. Qual é o nome dado 
para esta última expressão? 
Assinale a alternativa correta: 
A) 
 
Somatório. 
B) 
 
Incremento. 
C) 
 
Processamento. 
D) 
 
Substituição. 
E) 
 
Finalização. 
Questão 14 
A recursividade é uma técnica de programação na qual uma função chama a si própria 
tornando o código mais limpo e elegante, o que facilita a manutenção e reutilização 
de trechos de códigos e funções. Toda chamada recursiva deve retornar um valor à 
função que "fez o chamado". Analise as asserções a seguir e a relação proposta entre 
elas. 
I - Funções recursivas sempre podem ser utilizadas para substituir estruturas de 
repetição. 
PORQUE 
II - Toda função recursiva é composta pelo caso base e pelas chamadas recursivas 
funcionando como um laço de repetição. 
A) 
 
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa 
correta da I. 
B) 
 
As asserções I e II são proposições falsas. 
C) 
 
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira. 
D) 
 
As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta 
da I. 
E) 
 
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa. 
Questão 15 
Considerando o comando printf("%d",((a > b) || (b < c) && (c < b))), sendo a = 
30, b = 20, c = 10, é correto afirmar que: 
I – O resultado será um 
II – A especificação de formato %d na função printf fará com que o valor seja 
impressa como um inteiro, então 1 será impresso na tela. 
III - A condição printf("%d",((a > b) || (b < c) && (c < b))) sempre será falsa 
Assinale a alternativa correta 
A) 
 
Todas as alternativas estão corretas 
B) 
 
Apenas as alternativas II e III estão corretas 
C) 
 
Nenhuma das alternativas estão corretas 
D) 
 
Apenas a alternativa III está correta 
E) 
 
Apenas a alternativa I está correta 
Questão 16 
Vetores são estruturas de dados estáticas, ou seja, não são redimensionadas em 
tempo de execução. Uma vez criadas com tamanho N, esse tamanho se mantém fixo. 
Para criar uma função que retorna um vetor é preciso recorrer ao uso de ponteiros. 
Avalie o código a seguir e escolha a opção correta. 
#include 
int* retornarVetor(){ 
static int v[10]; 
int a; 
for(a = 0; a < 10; ++a) { 
v[a] = 2 * a; 
} 
return v; 
} 
int main(){ 
int *p; 
p = retornarVetor(); 
printf("Valor = %d",*(p + 2)); 
return 0; 
} 
A) 
 
Será impresso na tela "Valor = 2". 
B) 
 
Será impresso na tela "Valor = 0". 
C) 
 
Será impresso na tela "Valor = 8". 
D) 
 
Será impresso na tela "Valor = 6". 
E) 
 
Será impresso na tela "Valor = 4".

Continue navegando