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