Baixe o app para aproveitar ainda mais
Prévia do material em texto
18/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 1/12 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 MANTIDO Tentativa 2 120 minutos 15 de 15 MAIS RECENTE Tentativa 2 120 minutos 15 de 15 Tentativa 1 119 minutos 6 de 15 As respostas corretas estarão disponíveis em 21 set em 0:00. Pontuação desta tentativa: 15 de 15 Enviado 18 set em 23:01 Esta tentativa levou 120 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”. 1,5 / 1,5 ptsPergunta 1 Analise o código a seguir. int main() { https://newtonpaiva.instructure.com/courses/8900/quizzes/17712/history?version=2 https://newtonpaiva.instructure.com/courses/8900/quizzes/17712/history?version=2 https://newtonpaiva.instructure.com/courses/8900/quizzes/17712/history?version=1 18/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 2/12 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[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 18/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 3/12 O valor de mat3[1][2] = 6. O valor de mat3[0][1] = 3. O valor de mat3[2][1] = 21. O valor de mat3[1][1] = 8. 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; } Sobre o código apresentado, é correto o que se afirmar em: O programa imprime a primeira linha da variável Matriz. 18/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 4/12 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. No answer text provided. A variável Matriz armazena 40 elementos. A variável Matriz armazena valores reais. A função_desconhecida imprime os maiores valores de uma linha O programa preenche todas as linhas e colunas da matriz. 1,5 / 1,5 ptsPergunta 3 Analise o código abaixo: char nome[41], sobrenome [21]; setlocale(LC_ALL, "Portuguese"); strcpy(nome," Ana "); strcpy(sobrenome,"Maria"); strcat(nome,sobrenome); printf("\n %s\n",nome); A partir do conhecimento construído, ao executar o código acima, qual será o valor impresso? Marque a alternativa correta que demonstre o valor a ser escrito. Maria Ana. 18/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 5/12 Ana Ana. Maria. Ana. Ana Maria. Será impresso o texto Ana Maria, pois nome recebeu “Ana” através do strcpy, e sobrenome recebeu “Maria”; além disso, na sequência, os valores foram concatenados na variável nome1. 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: 18/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 6/12 Fonte: Adaptado de CUNHA, Claudia, 2018. [4][2] [4][3] [3][4] [3][2] [2][3] 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 As variáveis em C podem ser consideradas (i) comuns, quando armazenam conteúdo (números, letras, palavras) na memória, ou (ii) ponteiros, quando armazenam endereços. Enquanto uma variável comum não armazena endereços, uma variável ponteiro só trata de endereços. Nesse contexto, avalie as afirmações a seguir: I. Uma variável ponteiro pode receber diretamente o resultado de uma operação aritmética entre valores reais. II. Variável ponteiro é um tipo especial de variável, que recebe endereços para posições de memória. III. Uma variável ponteiro pode manipular valores de variáveis comuns na memória de forma indireta. É correto o que se afirma em: 18/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 7/12 I, II e III. II e III, apenas. I, apenas. II, apenas. I e III, apenas. A afirmativa I está errada, pois variáveis ponteiros só recebem diretamente os endereços de memória. As outras afirmativas estão corretas. 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 pt1=&valor1 atribui o valor contido em valor1 a pt1. 18/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 8/12 A variável resultado será um ponteiro nulo. 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 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 1,5 / 1,5 ptsPergunta 7 Observe o trecho do código a seguir: char *p1,*ptnome; int *temp, *ptinício, *ptnota; *temp=125; É correto afirmar que o risco de execução na declaração de ponteiros diz respeito à(ao): Fato de um ponteiro estar recebendo um valor inteiro, o que trará um problema em tempo de execução. 18/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 9/12 Uso do asterisco na atribuição de um valor inteiro, o que causará um erro em tempo de projeto. Alteração do endereço no ponteiro tempo por um endereço que não existe na memória, uma vez que 125 não é um endereço de memória. Uso de mais de uma posição de memória, pois, na alocação dinâmica,o ponteiro só pode se referenciar a um valor que ocupe uma posição. Alteração indevida do conteúdo de endereços de memória, pois os ponteiros não foram inicializados. A atribuição de valores indiretamente a um ponteiro sem que este tenha sido inicializado (recebendo NULL ou a posição de uma variável) antes pode trazer problemas de instabilidade ao programa e até a outros programas que utilizam a memória, pois o ponteiro, quando criado, tem um endereço aleatório que pode já estar em uso e, ao alterar o valor contido na memória usando o operador indireto (*), gerar o problema. 1,5 / 1,5 ptsPergunta 8 Reservar dinamicamente é o caso em que não sabemos, no momento da programação, a quantidade de dados que deverão ser inseridos quando o programa já está sendo executado. Em vez de tentarmos prever um limite superior para abarcar todas as situações de uso da memória, temos a possibilidade de reservar memória de modo dinâmico. Os exemplos típicos disto são os processadores de texto, nos quais não sabemos a quantidade de caracteres que o utilizador vai escrever quando o programa estiver sendo executado. Nestes casos 18/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 10/12 podemos, por exemplo, receber a quantidade de caracteres que o usuário digita e depois alocamos a quantidade de memória que precisamos para guardá-lo e depois o armazenamos para uso posterior. Disponível em:< https://pt.wikibooks.org/wiki/Programar_em_C%2B%2B/Aloca%C3%A7 Neste contexto, avalie as asserções a seguir e a relação proposta entre elas. I I – Durante a execução do programa pode-se necessitar alterar o tamanho do blocos de bytes alocados por malloc(). PORQUE II – Isso poderá ocorrer principalmente por mudanças na arquitetura computacional A respeito dessas asserções, assinale a opção correta. As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I. : Durante a execução do programa pode-se necessitar alterar o tamanho do blocos de bytes alocados por malloc(), isso poderá ocorrer principalmente por mudanças na arquitetura computacional. Para estes casos precisaremos utilizar a função realloc() para modificar o tamanho da memória reservada anteriormente Como apresentado na unidade 3 no tópico 3.1.2.1 Linguagem de Programação 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 verdadeiras, mas a II não é uma justificativa correta da I. 18/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 11/12 As asserções I e II são proposições falsas. A asserção I é uma proposição verdadeira, e a II é uma proposição falsa. 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 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, somente. I, II e III. 18/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 12/12 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. I e II, somente. II, somente. II e III, somente. 1,5 / 1,5 ptsPergunta 10 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. math.h string.h stdio.h stdlib.h limits.h Pontuação do teste: 15 de 15
Compartilhar