Buscar

Av1_ AGO TADS 2 - Linguagens de Programação

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Outros materiais