Baixe o app para aproveitar ainda mais
Prévia do material em texto
19/09/2020 Carolina Azzalin Baptista Cardoso de Moraes, histórico de teste: Avaliação Online 1 https://newtonpaiva.instructure.com/courses/8900/quizzes/17712/history?version=2 1/12 Avaliação Online 1 Resultados para Carolina Azzalin Bap�sta Cardoso de Moraes As respostas corretas estarão disponíveis em 21 set em 0:00. Pontuação desta tentativa: 15 de 15 Enviado 19 set em 18:31 Esta tentativa levou 22 minutos. 1,5 / 1,5 ptsPergunta 1 Quando se observa um código de programação, com a chance de simular seu funcionamento, é possível descobrir muita coisa, desde como ele manipula os valores até de que tipo são esses valores, mesmo que isso não esteja explícito no código. No caso de vetores e matrizes de caracteres, strings e vetores de strings, o que os diferencia é a forma como são manipulados no código, e não propriamente a forma como são declarados. No código abaixo, é possível ver a declaração e uso de uma estrutura. Considerando que a estrutura só é utilizada dessa forma, observe o código: char nomes[10][21]; for(i=0;i<=9;i++) { for(j=0;j<=20;j++) { printf("Digite o próximo valor:"); scanf("%c",&nomes[i][j]); } } Nesta situação, pode-se afirmar que foi declarado no começo do código um(a): Matriz de caracteres. String. 19/09/2020 Carolina Azzalin Baptista Cardoso de Moraes, histórico de teste: Avaliação Online 1 https://newtonpaiva.instructure.com/courses/8900/quizzes/17712/history?version=2 2/12 Vetor de caracteres. Vetor de strings. Matriz de strings. Strings referem-se a uma forma de manipulação dos vetores de caracteres que, quando são lidos utilizando a string de controle (%s) no scanf( ) ou um comando de entrada próprio – o gets( ) –, são reconhecidos como uma palavra ou texto, e não somente como um conjunto de caracteres. A estrutura não é um string, mas, sim, uma matriz de caracteres por não ser manipulada como string ao receber os dados. 1,5 / 1,5 ptsPergunta 2 Analise o seguinte trecho de código. #include void funcao_descolhecida(int Vet[10]) { int i; for(i = 0; i < 10; i++) { printf("%d ", Vet[i]); } } int main() { int Matriz[5][10]; int i; for(i = 0; i < 10; i++){ Matriz[0][i] = i; } i = 0; funcao_descolhecida (Matriz[i]); printf("\n"); return 0; } 19/09/2020 Carolina Azzalin Baptista Cardoso de Moraes, histórico de teste: Avaliação Online 1 https://newtonpaiva.instructure.com/courses/8900/quizzes/17712/history?version=2 3/12 Sobre o código apresentado, é correto o que se afirmar em: A variável Matriz armazena valores reais. No answer text provided. O programa preenche todas as linhas e colunas da matriz. A variável Matriz armazena 40 elementos. O programa imprime a primeira linha da variável Matriz. O programa apresentado, declara uma variável Matriz cujas imensões são 5 linhas e 10 colunas , em seguida inicializa a linha de índice 0 com os valores de 0 a 9 , em seguida imprime esta linha através da função_desconhecida. Como apresentado na unidade 1, no tópico 1.1.4. Linguagem de Programação. A função_desconhecida imprime os maiores valores de uma linha 1,5 / 1,5 ptsPergunta 3 Analise o código a seguir. int main() { int linha; int coluna; int i; int somaprod; int mat1[3][3]={{5,4,3},{1,3,4},{5,7,9}}; int mat2[3][3]={{1,0,0},{0,1,0},{0,0,1}}; int mat3[3][3]; int M1L=3, M1C=3, M2L=3, M2C=3; for(linha=0; linha<M1L; linha++) 19/09/2020 Carolina Azzalin Baptista Cardoso de Moraes, histórico de teste: Avaliação Online 1 https://newtonpaiva.instructure.com/courses/8900/quizzes/17712/history?version=2 4/12 for(coluna=0; coluna<M2C; coluna++){ somaprod=0; for(i=0;i<M1L; i++) somaprod+=mat1[linha][i]*mat2[i][coluna]; mat3[linha][coluna]=somaprod; } for(linha=0; linha<M1L; linha++){ for(coluna=0; coluna<M2C; coluna++) printf("%d ", mat3[linha][coluna]); printf("\n"); } system("PAUSE"); return 0; } Após a execução do código anterior é correto o que se afirma em: O valor de mat3[2][1] = 21. O valor de mat3[2][2] = 9 O algoritmo descrito no texto, inicialmente declara três matrizes mat1, mat2 e, mat 3 , sendo cada uma delas de dimensão 3x3.Posteriormente inicializa das duas primeiras, e, em seguida, realiza a multiplicação destas , armazenando seu resultado em mat3, por fim o algoritmo imprime a matriz resultante. Importante observar que mat2 consiste na matriz identidade, logo o produto de mat1 por mat2 consiste em mat1 , o qual é armazenada em mat3. Como apresentado na unidade 1, no tópico 1.1.4. Linguagem de Programação O valor de mat3[1][1] = 8. O valor de mat3[0][1] = 3. O valor de mat3[1][2] = 6. 19/09/2020 Carolina Azzalin Baptista Cardoso de Moraes, histórico de teste: Avaliação Online 1 https://newtonpaiva.instructure.com/courses/8900/quizzes/17712/history?version=2 5/12 1,5 / 1,5 ptsPergunta 4 Matrizes são recursos muito utilizados tanto na matemática quanto na computação. Uma matriz pode organizar os dados de mesmo tipo em um programa entre linhas e colunas, permitindo o uso posterior das informações de forma mais prática. Quando é necessário percorrer uma matriz, é importante que se observem os 2 índices necessários para acesso a cada campo, assim como acontece com os pontos de um plano cartesiano. Seu amigo programador precisa criar uma matriz na qual todas as linhas devem ser preenchidas com valores de 0 a 2. Ele enviou-lhe um trecho do código que havia criado para que você fizesse um teste; porém, no trecho que enviou, não havia a declaração da matriz. Como você necessita do código completo para realizar o teste, como ficará a declaração dessa matriz para que o programa funcione corretamente? A seguir, está o código enviado pelo seu amigo: for(i=0;i<=3;i++) for(j=0;j<=2;j++) matriz[i][j]=j; Após analisar o código, pode-se afirmar que a forma correta para a declaração da matriz para que esse código funcione corretamente é int matriz: Fonte: Adaptado de CUNHA, Claudia, 2018. [3][2] [4][2] [2][3] [3][4] [4][3] 19/09/2020 Carolina Azzalin Baptista Cardoso de Moraes, histórico de teste: Avaliação Online 1 https://newtonpaiva.instructure.com/courses/8900/quizzes/17712/history?version=2 6/12 Como a repetição mais externa (i) é responsável por mudar a linha, e a mais interna (j) é responsável por preencher as colunas de cada linha, o “i” vai de 0 a 3 (4 posições) e o “j” vai de 0 a 2 (3 posições), além de receber o valor e o “j” nas posições, podemos afirmar que a matriz é (Int matriz[4][3]). 1,5 / 1,5 ptsPergunta 5 Em C, uma variável que contém um endereço de memória é uma variável do tipo ponteiro. Um valor, que é um endereço (como &a) é um valor de ponteiro. Quando um ponteiro (a variável) contém um determinado endereço, dizemos que ele aponta para o endereço de memória. Além disso, se o valor deste ponteiro é o endereço de uma outra variável qualquer, dizemos que tal ponteiro aponta para esta outra variável. Diponível em;< http://www.inf.ufpr.br/cursos/ci067/Docs/NotasAula/notas- 28_Ponteiros.html> Acesso.06. Ago.2019. Nesse contexto, considere pt1 um ponteiro, em seguida julgue as afirmações que se seguem. I – A expressão pt1 ++; acessa o próximo endereço de memória. II – A expressão (*pt1)-=2; acesso dois endereços de memória para traz. III – A expressão pt1=pt1+9; acessa dez endereços de memória frente. Está(ão) correta(s) a(s) afirmativa(s): II, somente. II e III, somente. III, somente. 19/09/2020 Carolina Azzalin Baptista Cardoso de Moraes, histórico de teste: Avaliação Online 1 https://newtonpaiva.instructure.com/courses/8900/quizzes/17712/history?version=2 7/12 I e II, somente. I, somente. Apenas a afirmação I está correta, as a segunda afirmação II está incorreta, pois a expressão(*pt1)-=2; acessa o conteúdo apontado subtraído de 2 e a terceira expressão pt1=pt1+9;// acessa 9 endereços à frente. Como apresentado na unidade 2 no tópico 2.1.5 Linguagem de Programação. 1,5 / 1,5 ptsPergunta 6 Analise o seguinte código em linguagem C. #include <stdio.h> #include <stdlib.h> int main(){ int *pt1=NULL, *pt2=NULL; int valor1, valor2, resultado; valor1=47; valor2=50; pt1=&valor1; pt2=&valor2; resultado=*pt1+*pt2; printf(“%i \n”,resultado); system(“PAUSE”); return 0; } Sobre o código apresentado é correto o que se afirmar em: A expressão valor1=47;faz referência ao endereço de memória da variável valor. 19/09/2020 Carolina Azzalin Baptista Cardoso de Moraes, histórico de teste: Avaliação Online 1 https://newtonpaiva.instructure.com/courses/8900/quizzes/17712/history?version=2 8/12 A variável resultado será um ponteiro nulo. A expressão pt1=&valor1 atribui o valor contido em valor1 a pt1. A variável resultado irá armazenar o valor inteiro 97. O programa apresentado declara as variáveis valor1, valor2 e resultado, como sendo do tipo inteiro, bem como os ponteiros *pt1, *pt2 também sendo do tipo inteiro. Posteriormente, a variável resultado recebe a soma dos valore que pt1 e pt2 apontam, portanto 97. Como apresentado na unidade 2 no tópico 2.1.5 Linguagem de Programação A variável resultado apresentará erro ao tentar somar os ponteiros. 1,5 / 1,5 ptsPergunta 7 Um ponteiro é um espaço reservado de memória usado para guardar o endereço de memória de uma outra variável. Além disso, um ponteiro é uma variável como qualquer outra do programa, sua diferença é que ela não armazena um valor inteiro, real, caractere ou booleana. Ela serve para armazenar endereços de memória (são valores inteiros sem sinal. Disponível em:<http://www.facom.ufu.br/~backes/gsi002/Aula10- Ponteiros.pdf (http://www.facom.ufu.br/~backes/gsi002/Aula10- Ponteiros.pdf) >Acesso.06. Ago.2019. Nesse contexto, avalie as asserções a seguir e a relação proposta entre elas. I - Se um ponteiro p armazena o endereço de uma variável i, podemos dizer o ponteiro p aponta para i ou p é o endereço de i. PORQUE http://www.facom.ufu.br/~backes/gsi002/Aula10-Ponteiros.pdf 19/09/2020 Carolina Azzalin Baptista Cardoso de Moraes, histórico de teste: Avaliação Online 1 https://newtonpaiva.instructure.com/courses/8900/quizzes/17712/history?version=2 9/12 II - Se um ponteiro p tem valor diferente de NULL então *p é o valor da variável apontada por p. A respeito dessas asserções, assinale a opção correta A asserção I é uma proposição verdadeira, e a II é uma proposição falsa. As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I. As asserções I e II são proposições falsas. As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa correta da I. A primeira afirmação versa sobre as propriedades de um ponteiro, e a segunda explana o conceito sobre como exibir o valor para o qual o ponteiro aponta. A asserção I é uma proposição falsa e a II é uma proposição verdadeira. 1,5 / 1,5 ptsPergunta 8 A linguagem C utiliza bibliotecas para serem incluídas em aplicações com o objetivo de oferecer recursos adicionais à linguagem. Estas são incluídas na elaboração de programas através do comando include. Para manipularmos a alocação dinâmica, precisaremos de uma biblioteca específica. Selecione a alternativa correta. 19/09/2020 Carolina Azzalin Baptista Cardoso de Moraes, histórico de teste: Avaliação Online 1 https://newtonpaiva.instructure.com/courses/8900/quizzes/17712/history?version=2 10/12 limits.h string.h stdlib.h stdio.h math.h 1,5 / 1,5 ptsPergunta 9 O desenvolvimento de uma aplicação envolve a utilização de recursos de memória, e gerenciar esses recursos com um código mais bem planejado torna a aplicação menos propença a falhas. Usando as funções de alocação de memória da linguagem C, é possível manipular áreas de memória livre e, nelas, poderemos alocar as variáveis. Se a região, porém, não tiver espaço para essa alocação, qual retorno receberíamos se usássemos as funções malloc( ) e realloc( )? null false 0 full true Todas as funções de alocação de memória retornam uma informação para o código, mas somente quando retornam null saberemos que houve erro. 19/09/2020 Carolina Azzalin Baptista Cardoso de Moraes, histórico de teste: Avaliação Online 1 https://newtonpaiva.instructure.com/courses/8900/quizzes/17712/history?version=2 11/12 1,5 / 1,5 ptsPergunta 10 Analise o seguinte trecho de código. #include <stdio.h> #include <stdlib.h> struct x{ int a; int b; int c; }; int main(void){ struct x estrutura; int *y = malloc ( sizeof(estrutura)); printf(“%li”, sizeof(estrutura)); } Sobre o trecho de código apresentado é correto apenas o que se afirma em: Aloca dinamicamente uma estrutura. O código apresentado aloca dinamicamente uma estrutura contendo três números inteiros. Como apresentado na unidade 3, no tópico 3.1.2.1 Linguagem de Programação. Imprime a posição de memória da estrutura através do comando printf. 19/09/2020 Carolina Azzalin Baptista Cardoso de Moraes, histórico de teste: Avaliação Online 1 https://newtonpaiva.instructure.com/courses/8900/quizzes/17712/history?version=2 12/12 Declara uma estrutura de números reais. Imprime uma estrutura através do comando printf. Lê a partir do teclado três números inteiros. Pontuação do teste: 15 de 15
Compartilhar