Buscar

Avaliação Online 1_ FEV TADS 2 - Linguagens de Programação 1

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

Avaliação Online 1
Entrega 5 abr em 23:59 Pontos 15 Perguntas 10
Disponível 30 mar em 0:00 - 5 abr em 23:59 7 dias
Limite de tempo 120 Minutos Tentativas permitidas 2
Instruções
Histórico de tentativas
Tentativa Tempo Pontuação
MAIS RECENTE Tentativa 1 77 minutos 13,5 de 15
 As respostas corretas estarão disponíveis em 6 abr em 0:00.
Pontuação desta tentativa: 13,5 de 15
Enviado 1 abr em 18:19
Esta tentativa levou 77 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
A linguagem C não possui um tipo string explícito. Não existe palavra
reservada que declare uma variável para armazenar uma string. Em
vez disto, você aloca espaço na memória para uma string definindo
uma matriz de caracteres. Uma matriz de caracteres algumas vezes se
https://newtonpaiva.instructure.com/courses/10791/quizzes/23713/history?version=1
https://newtonpaiva.instructure.com/courses/10791/quizzes/23713/take?user_id=18108
parece com qualquer outra variável. Por exemplo, você pode mostrar
uma string inteira na tela numa única operação printf e usar uma
variedade de funções para ler uma string do teclado e armazenar
numa variável de entrada. 
Fonte: Disponível em:<
https://www.unicamp.br/fea/ortega/info/aula09.htm> Acesso.08.
Ago.2019.
Nesse contexto, avalie as asserções a seguir e a relação proposta
entre elas:
I - A leitura de valores string pode ser feita da mesma forma que a
leitura de outros tipos. 
PORQUE 
II - utilizando-se scanf com a string de controle %s a entrada é
formatada para o tipo texto.
A respeito dessas asserções, assinale a opção correta.
 As asserções I e II são proposições falsas. 
 
As asserções I e II são proposições verdadeiras, e a II é uma
justificativa correta da I.
 
A leitura de valores string pode ser feita da mesma forma que a
leitura de outros tipos, utilizando scanf com a string de controle
%s, que formata a entrada para o tipo texto. Para ler o nome
declarado, o comando de entrada dado por scanf(“%s”,&nome);.
Como apresentado na unidade 1, no tópico 1.1.3. Linguagem de
Programação
 
 
As asserções I e II são proposições verdadeiras, mas a II não é uma
justificativa correta da I.
 
A asserção I é uma proposição falsa e a II é uma proposição
verdadeira.
 
A asserção I é uma proposição verdadeira, e a II é uma proposição
falsa.
1,5 / 1,5 ptsPergunta 2
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++) 
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
 O valor de mat3[1][2] = 6. 
 O valor de mat3[1][1] = 8. 
 O valor de mat3[0][1] = 3. 
 O valor de mat3[2][1] = 21. 
0 / 1,5 ptsPergunta 3IncorretaIncorreta
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):
 Vetor de strings. 
 String. 
 Vetor de caracteres. 
 Matriz de strings. 
 Matriz de caracteres. 
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 4
O programador, que estava desenvolvendo um programa para a escola onde você
trabalha, criou uma lógica que compara a palavra Aluno com o conteúdo da variável
str. Para que a comparação seja feita de forma simplificada, foi utilizada a função
strlwr, da biblioteca string.h; porém, o desenvolvedor começou o código e não pôde
terminá-lo. Como você tem um conhecimento avançado em programação, foi
chamado para continuar o desenvolvimento do programa e viu que o programador
havia começado a configurar a comparação da string (str) com a palavra (Aluno)
utilizando o strlwr, e a única coisa que faltou para terminar foi a constante literal da
comparação. 
Com base nas informações apresentadas, de que modo deve ser escrita a constante
no código para que a comparação com a função strlwr(str) seja executada quando o
usuário escrever Aluno?
 “ALUNO ou aluno” 
 “aluno” 
 “ALUNO” 
 “Aluno ou aluno” 
 “Aluno” 
A função strlwr retorna o conteúdo da string minúsculo. No caso
proposto na questão, independentemente da forma como o
usuário digitar a palavra aluno (Aluno, ALUNO, aluno, AlUnO,
ALuNo), ele retornará que são iguais se a constante a ser
comparada for “aluno”.
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 expressão valor1=47;faz referência ao endereço de memória da
variável valor.
 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 expressão pt1=&valor1 atribui o valor contido em valor1 a pt1. 
 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
Analise o seguinte código escrito em linguagem C.
#include<stdlib.h>
#include<stdio.h>
#define MAX 1000
int main(){
 
 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:
 
As expressões printf(“%p - %i\n”,ptvetor, *ptvetor); mostram um mesmo
resultado.
 A variável *ptvetor é um vetor de inteiros. 
 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
 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. 
1,5 / 1,5 ptsPergunta 7
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):
 I e II, somente. 
 II, somente. 
 II e III, 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.
 III, somente. 
1,5 / 1,5 ptsPergunta 8
A implementação abaixo, em linguagem C, faz uso do recurso de
alocação dinâmica e retorna valores armazenados e um vetor V.
Selecione abaixo qual resultado corresponde ao resultado da
codificação.
# include <stdio.h> 
# include <stdlib.h> 
int main () {
int *v,n =5; 
v = (int *) malloc ( sizeof (int)*n); 
int i; 
for (i=0;i<n;i++)
v[i] = i*i;
for (i=0;i<n;i++)
printf ("%d,", v[i]);
free (v); 
return 0;
}
 0, 1, 4, 9, 16, 
 0, 1, 2, 3, 4, 5, 
 1, 2, 3, 4, 5, 
 1, 1, 1, 1, 1, 
1,5 / 1,5 ptsPergunta 9
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, somente. 
 I, somente. 
 III, somente. 
Apenas a terceira afirmação está correta, a primeira afirmação
está incorreta, pois a variável *pi é um ponteiro para um número
inteiro, já a segunda afirmação está incorreta, pois o primeiro
printf irá mostrar o valor armazenado em *pi , lido a partir do
teclado.
 
Como apresentado na unidade 3 no tópico 3.1.2.1 Linguagem de
Programação.
 II e III, somente. 
1,5 / 1,5 ptsPergunta 10
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:
 16 bytes. 
 64 bytes. 
 32 bytes. 
 12 bytes. 
 128 bytes. 
Pontuação do teste: 13,5 de 15

Continue navegando