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/11 Avaliação Online 1 Entrega 20 set em 23:59 Pontos 15 Perguntas 10 Disponível 14 set em 0:00 - 20 set em 23:59 7 dias Limite de tempo 120 Minutos Tentativas permitidas 2 Instruções Histórico de tenta�vas Tentativa Tempo Pontuação MAIS RECENTE Tentativa 1 28 minutos 4,5 de 15 As respostas corretas estarão disponíveis em 21 set em 0:00. Pontuação desta tentativa: 4,5 de 15 Enviado 18 set em 17:23 Esta tentativa levou 28 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 0 / 1,5 ptsPergunta 1IncorretaIncorreta 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 https://newtonpaiva.instructure.com/courses/8900/quizzes/17712/history?version=1 https://newtonpaiva.instructure.com/courses/8900/quizzes/17712/take?user_id=15842 18/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 2/11 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): Vetor de caracteres. Matriz de caracteres. Vetor de strings. Matriz de strings. String. 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. 18/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 3/11 1,5 / 1,5 ptsPergunta 2 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. Ana Maria. Ana. Maria Ana. 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. 0 / 1,5 ptsPergunta 3IncorretaIncorreta Avalie o seguinte trecho de código: 18/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 4/11 #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[3][3] é igual a 6. A variável Matriz possui 100 elementos. O valor armazenado em Matriz [2][2] é igual a 4. O valor armazenado em Matriz[0][0] é igual a 0. A variável Matriz possui o mesmo número de linhas e colunas. 1,5 / 1,5 ptsPergunta 4 Analise o seguinte trecho de código. #define TAM_MAX 10000 double vetor[TAM_MAX]; double variavel1; for(i=0; i<TAM_MAX; i++) scanf("%f",&vetor[i]); variavel1 = vetor[0]; for(i=0; i<TAM_MAX; i++) if (vetor[i] > variavel1) variavel1 = vetor[i]; Sobre o código apresentado é correto o que se afirma em: O código imprime todos os valores do variável vetor. 18/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 5/11 O código seleciona o menor elemento da variável vetor variável1 recebe todos os valores de variável vetor. O código seleciona o maior elemento da variável vetor. O código apresentado declara um vetor com 10000 posições e realiza a leitura de seus elementos a partir do teclado em seguida, seleciona o maior elemento deste vetor e o armazena na variável (variavel1). Como apresentado na unidade 1, no tópico 1.1.4. Linguagem de Programação A variável1 é impressa na tela. 0 / 1,5 ptsPergunta 5IncorretaIncorreta 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): 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. 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 6/11 Alteração indevida do conteúdo de endereços de memória, pois os ponteiros não foram inicializados. 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. Uso do asterisco na atribuição de um valor inteiro, o que causará um erro em tempo de projeto. 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 6 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. http://www.facom.ufu.br/~backes/gsi002/Aula10-Ponteiros.pdf 18/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 7/11 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. PORQUEII - 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, 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. As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I. 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 falsas. 0 / 1,5 ptsPergunta 7IncorretaIncorreta 18/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 8/11 Analise o código a seguir. #include<stdlib.h> #include<stdio.h> #include<locale.h> int main(){ int *pt1, **pt2, valor; setlocale(LC_ALL, “Portuguese”); pt1=&valor; valor=100; pt2=&pt1; printf(“%p\n”,pt2); printf(“%p\n”,*pt2); printf(“%i”,**pt2); } Nesse contexto, julgue as afirmações que se seguem. I – A expressão printf(“%i”,**pt2); mostra o número 100. II – A atribuição pt1=&valor; faz com que pt assuma o valor armazenado em valor. III – A declaração **pt2 no início do código é um ponteiro para um número real. Está(ão) correta(s) a(s) afirmativa(s): III, somente. I e II, somente. II eIII, somente. II, somente. I, somente. 0 / 1,5 ptsPergunta 8IncorretaIncorreta 18/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 9/11 Analise o seguinte trecho de código. #include <stdlib.h> #include<stdio.h> int main (){ int * vetor; vetor = malloc (10 * sizeof (int)); for (int n = 0; n< 10; n++) vetor[n]=n*n; vetor = realloc (vetor, 15 * sizeof (int)); for (int n = 10; n < 15; n++) vetor[n]=n; printf (“\n”); for (int n = 0; n < 15; n++) printf (“\n vetor[%i]=%i”,n,vetor[n]); } Neste contexto, julgue as afirmações que se seguem. I - A função realloc sobrescreve todos os dados do vetor. II – Ao final da execução do código vetor [14] =14. II – Ao final da execução do código vetor [5] =25. Está(ão) correta(s) a(s) afirmativa(s): II e III, somente. I e III, somente. I, somente. I e II, somente. II, somente. 0 / 1,5 ptsPergunta 9IncorretaIncorreta 18/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 10/11 Analise o seguinte código computacional. # include <stdio.h> # include <stdlib.h> int main (){ int *pi; pi = (int *) malloc(sizeof(int)); printf(“\n Digite um numero : “); scanf(“%d”, pi); printf(“\n primeira impressao: %d\n”, *pi); free(pi); printf(“\n segunda impressao: %d\n\n”, *pi); system (“pause”); return 0; } Considerando o código apresentado, julgue as afirmações que se seguem. I - A variável *pi é um número inteiro. II - O primeiro printf irá mostrar o endereço de memória relativo a *pi. III – O programa aloca dinamicamente o número de bytes para um número inteiro. Está(ão) correta(s) a(s) afirmativa(s): I e II, somente. II e III, somente. I, somente. III, somente. II, somente. 18/09/2020 Avaliação Online 1: AGO.TADS.2 - Linguagens de Programação https://newtonpaiva.instructure.com/courses/8900/quizzes/17712 11/11 0 / 1,5 ptsPergunta 10IncorretaIncorreta 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: 64 bytes. 16 bytes. 32 bytes. 12 bytes. 128 bytes. Pontuação do teste: 4,5 de 15