Baixe o app para aproveitar ainda mais
Prévia do material em texto
20/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 1/13 Avaliação Online 1 Entrega 18 set em 23:59 Pontos 15 Perguntas 10 Disponível 18 set em 21:00 - 22 set em 23:59 4 dias Limite de tempo 120 Minutos Tentativas permitidas 2 Instruções Histórico de tenta�vas Tentativa Tempo Pontuação MAIS RECENTE Tentativa 1 71 minutos 15 de 15 As respostas corretas estarão disponíveis em 21 set em 0:00. Pontuação desta tentativa: 15 de 15 Enviado 20 set em 17:42 Esta tentativa levou 71 minutos. Leia com atenção as orientações abaixo antes de iniciar esta prova: Serão permitidas duas tentativas para realizar esta avaliação, prevalecendo a maior nota. Programe-se para realizar suas avaliações com tranquilidade, pois você terá 120 minutos cronometrados (por tentativa) para conclusão e envio das respostas. Ao iniciar a avaliação o cronômetro não para, independentemente da plataforma estar aberta ou não; Durante a realização da prova: Será exibido uma questão por vez, podendo “Avançar” ou “Voltar” quando necessário dentro do período da tentativa; A tentativa somente será contabilizada após clicar no botão “Enviar”. Fazer o teste novamente 1,5 / 1,5 ptsPergunta 1 Analise o código a seguir. int main() { https://newtonpaiva.instructure.com/courses/8900/quizzes/17712/history?version=1 https://newtonpaiva.instructure.com/courses/8900/quizzes/17712/take?user_id=14597 20/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 2/13 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++) 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[1][1] = 8. O valor de mat3[1][2] = 6. O valor de mat3[2][2] = 9 20/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 3/13 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[0][1] = 3. O valor de mat3[2][1] = 21. 1,5 / 1,5 ptsPergunta 2 Avalie o seguinte trecho de código: #define NLIN 10 #define NCOL 20 int Matriz[NLIN][NCOL]; for(i=0; i < NLIN; i++) for(j=0; j < NCOL; j++) Matriz[i][j] = i+j; Sobre o trecho de código apresentado, assinale a alternativa correta. O valor armazenado em Matriz[0][0] é igual a 0. 20/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 4/13 O valor armazenado em Matriz[0][0] é igual a 0. O trecho de código apresentado define uma matriz de contendo 10 linhas e 20 colunas, neste código, a variável Matriz recebe na posição i,j a soma destes, como em linguagem C , os índices se iniciam em 0, então para Matriz[0][0]=0. Como apresentado na unidade 1, no tópico 1.1.4. Linguagem de Programação. O valor armazenado em Matriz [2][2] é igual a 4. O valor armazenado em Matriz[3][3] é igual a 6. A variável Matriz possui o mesmo número de linhas e colunas. A variável Matriz possui 100 elementos. 1,5 / 1,5 ptsPergunta 3 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++) 20/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 5/13 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. [4][2] [4][3] [3][2] [2][3] [3][4] 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 4 Observe o código a seguir: int resposta = strcmp( nome1, nome2 ) Considerando o código apresentado, se o conteúdo de nome1 for a palavra “Vez” enquanto o conteúdo de nome2 for a palavra “Carro”, qual é o valor armazenado na variável resposta ao final da execução do trecho de código? 20/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 6/13 Menor que 0. Igual a 1. Igual a -1. Igual a 0. Maior que 0. A alternativa correta é que a variável resposta será maior que 0, pois a função strcmp retorna um valor maior que zero caso a primeira string seja maior que 0. Nesse caso de estudo, a situação é essa, pois foi dito que o conteúdo de nome1 é maior que o conteúdo de nome2. 1,5 / 1,5 ptsPergunta 5 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 variável resultado irá armazenar o valor inteiro 97. 20/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 7/13 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 expressão pt1=&valor1 atribui o valor contido em valor1 a pt1. A expressão valor1=47;faz referência ao endereço de memória da variável valor. A variável resultado apresentará erro ao tentar somar os ponteiros. A variável resultado será um ponteiro nulo. 1,5 / 1,5 ptsPergunta 6 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 determinadoendereç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. 20/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 8/13 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): I e II, somente. 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. II e III, somente. III, somente. 1,5 / 1,5 ptsPergunta 7 Analise o seguinte código escrito em linguagem C. #include<stdlib.h> #include<stdio.h> #define MAX 1000 int main(){ 20/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 9/13 int *ptvetor, i,vet[MAX]; for(i=0;i<MAX;i++){ vet[i]=i+1; } ptvetor=vet; for(i=0;i<MAX;i++){ printf(“%p - %i\n”,ptvetor, *ptvetor); ptvetor++; } Sobre o código apresentado é correto o que se afirmar em: A variável *ptvetor é um ponteiro para números inteiros. A variável *ptvetor é um ponteiro para números inteiros, tendo sido declarada no início do programa. Como apresentado na unidade 2 no tópico 2.1.6 Linguagem de Programação As expressões printf(“%p - %i\n”,ptvetor, *ptvetor); mostram um mesmo resultado. A variável *ptvetor é um vetor de inteiros. A expressão vet[i]=i+1; consiste em uma aritmética de ponteiros. A expressão ptvetor++; soma uma unidade na variável vetor. 20/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 10/13 1,5 / 1,5 ptsPergunta 8 Analise a codificação a seguir: #include <stdio.h> #include <stdlib.h> struct x{ int a; int b; int c; }; int main(void){ struct x estrutura; int *y = malloc ( 2* sizeof(estrutura)); printf("%li", sizeof(estrutura)); } Considerando que o tipo inteiro (int) aloca 4 bytes na arquiterura utilizada por esse programa, conclui-se que, usando alocação dinâmica na codificação, a quantidade de bytes alocados para uma variável do tipo x será de: 32 bytes. 64 bytes. 128 bytes. 16 bytes. 12 bytes. 1,5 / 1,5 ptsPergunta 9 A alocação dinâmica de memória é um mecanismo utilizado para possibilitar que uma quantidade de memória seja reservada durante o tempo de execução de uma aplicação. A região de memória utilizada 20/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 11/13 para alocação dinâmica é conhecida como heap. Disponível em:< https://www.embarcados.com.br/ponteiro-em-c- alocacao-dinamica/>Acesso.07.Ago.2019. Neste contexto, julgue as afirmações que se seguem. I – O retorno do valor NULL permite fazer um tratamento de erro ou desenvolver novas linhas de programação para nos desviar do problema de falta de memória. II – A função malloc() (abreviatura de memory allocation) recebe como argumento um número inteiro positivo que representa a quantidade de bytes de memória a ser alocada. III - Uma vez alocada a memória dinamicamente, ela continuará ocupada até que seja desalocada explicitamente pela função free(). Está(ão) correta(s) a(s) afirmativa(s): I, II e III. As três afirmações estão corretas e versam sobre os conceitos de alocação dinâmica de memória, liberação de memória previamente alocada e tratamento de retorno NULL. Como apresentado na unidade 3 no tópico 3.1.2.1 Linguagem de Programação. II e III, somente. II, somente. I, somente. I e II, somente. 1,5 / 1,5 ptsPergunta 10 Analise o seguinte código computacional. 20/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 12/13 # include <stdio.h> # include <stdlib.h> int main(){ int *v, n =500; v = (int *) malloc( sizeof (int)*n); int i; for (i=0;i<n;i++) v[i] = i*i +2; for (i=0;i<n;i++) printf (“v[%d] = %d\n”,i, v[i]); free (v); return 0; } Sobre o código apresentado é correto apenas o que se afirmar em: Ao final de sua execução v[9]=83 20/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 13/13 O código apresentado, aloca dinamicamente um vetor com 500 posições, e inicializa este através da seguinte expressão v[i] = i*i +2, portanto , v[9] = 9*9 +2 =83. Como apresentado na unidade 3 no tópico 3.1.2.1 Linguagem de Programação. Ao final de sua execução v[20]=404 Ao final de sua execução v[12]=144. Ao final de sua execução v[13]=170. Ao final de sua execução v[10]=100. Pontuação do teste: 15 de 15
Compartilhar