Buscar

Prova N2 - 09 de 10 - Tecnicas de Programação com comentarios

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 7 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 7 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

Usuário JEFFERSON GOMES LIRA
Curso GRA1033 TÉCNICAS DE PROGRAMAÇÃO GR3342211 - 202110.ead-14912.01
Teste 20211 - PROVA N2 (A5)
Iniciado 21/06/21 20:32
Enviado 21/06/21 21:52
Status Completada
Resultado da tentativa 9 em 10 pontos  
Tempo decorrido 1 hora, 19 minutos
Instruções
Resultados exibidos Respostas enviadas, Respostas corretas, Comentários
Caso necessite a utilização do "EXCEL" clique no link ao lado -----------> excel.xlsx
Pergunta 1
Resposta Selecionada:  
Resposta Correta:  
Comentário
da resposta:
Existem duas formas para a criação de vetores: a primeira consiste em uma definição que
não utiliza efetivamente ponteiros (tal como: “ int vet[5]; ”) e a segundo através da utilização
de ponteiros (como por exemplo, “ int *vet; ”). Para essa questão, assinale com “V” a(s)
linha(s) de código que apresentar o acesso correto à uma posição de um vetor instanciado
como ponteiro e, com “F” a(s) linha(s) que apresentar uma codificação errada. Suponha
que se deseja acessar a posição 3:
 
 
( ) y = (*vet)[3] 
( ) y = vet[3] 
( ) y = *(vet+3) 
( ) y = *(vet+sizeof(int)*3) 
 
Assinale a alternativa que apresente a sequência que você julgue ser a correta.
V, F, F, V.
F, V, V, F.
Infelizmente a sua resposta está incorreta. Para responder essa questão, reveja as formas
de se trabalhar com vetores mapeados através de ponteiros. Lembre-se que desejamos
acessar uma certa posição do vetor e que cada posição corresponde à um deslocamento
de n bytes em relação à célula anterior, sendo n o tamanho (em bytes) do tipo utilizado.
Pergunta 2
Suponha que existe, em um arquivo textual, uma matriz 4x4 que relaciona os custos de um certo produto
A (linhas) combinado com um produto B (colunas) como ilustra o exemplo a seguir: 
00 03 06 02 
03 00 04 07 
06 04 00 01 
02 07 01 00 
O produto não poderá ser combinado com ele mesmo. Por exemplo, combinando-se o produto dois com o
produto três, teremos o valor 01. Cada valor de custo é representado, sempre, por dois caracteres e
separados por um espaço em branco. Analise o código a seguir que imprima, na tela, o custo da
0 em 1 pontos
1 em 1 pontos
https://anhembi.blackboard.com/bbcswebdav/pid-16229536-dt-content-rid-84766551_1/xid-84766551_1
Resposta Selecionada:  
Resposta Correta:  
Comentário
da resposta:
combinação solicitada pelo usuário e preencha as lacunas. 
#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 
int main() 
{ 
char linha[30],custoStr[3]; 
int prodA,prodB,i=0; 
FILE *arq; 
arq=fopen("matrizcustos.txt","___"); 
if(arq==NULL) 
{ 
printf("Erro de abertura de arquivo origem."); 
return 0; 
} 
printf("Produto A (de 0 a 3):"); 
scanf("%d",&prodA); 
printf("Produto B:(de 0 a 3): "); 
scanf("%d",&prodB); 
for(;i<=prodA;i++) 
____(linha,30,arq); 
printf("linha selecionada: %s\n",linha); 
strncpy(custoStr,&linha[___],2); 
custoStr[3]='\x0'; 
fclose(arq); 
printf("Custo = %d",atoi(custoStr)); 
return 0; 
} 
Assinale a alternativa que você julgue ser a correta.
. r ; fgets ; prodB*3 .
. r ; fgets ; prodB*3 .
Parabéns! Sua resposta foi a correta! Você associou corretamente os trechos de código às
lacunas observando de maneira certa o modo de abertura do arquivo (“ r”), a função de
leitura de uma linha a partir de um arquivo textual (“ fgets()”) e o deslocamento dentro da
linha (“ prodB*3”).
Pergunta 3
Define-se como palíndromo a palavra que tem a mesma grafia e leitura caso seja lida da
esquerda para a direita ou da direita para a esquerda. Por exemplo, as palavras “anilina” e
“reviver” são palíndromos. Para essa questão, suponha o código apresentado abaixo:
#include <stdio.h> 
#include <string.h> 
int main() 
{ 
char str[20]="reviver",palind=1; 
int tam = strlen(str); 
int i=0; cont = ____; 
for(; i ___ cont; i++,cont--) 
{ 
if(____) 
1 em 1 pontos
Resposta Selecionada:  
Resposta Correta:  
Comentário
da resposta:
{ 
palind=0; 
break; 
} 
cont--; 
} 
if(palind) 
printf("%s eh palindromo.\n",str); 
else 
printf("%s nao eh palindromo.\n",str); 
return 0; 
} 
Escolha a alternativa que tenha a sequência correta de preenchimento das lacunas:
. tam-1 ; <= ; str[i]!=str[cont] .
. tam-1 ; <= ; str[i]!=str[cont] .
Parabéns! Sua resposta está correta! Você percebeu corretamente que, para se testar um
palíndromo, deve-se percorrer a string nos dois sentidos simultaneamente. Desta forma,
testamos o primeiro caractere com o último, o segundo com o penúltimo e assim
sucessivamente.
Pergunta 4
Resposta Selecionada:  
Resposta Correta:  
Comentário
da resposta:
Um ponteiro para ponteiro denota uma variável que armazena um valor através de uma
dupla indireção. Sendo assim, um ponteiro referência um outro ponteiro que, por sua vez,
aponta para um valor específico. Para essa questão, analise o código a seguir:
 
#include <stdio.h> 
  
int main() 
{ 
int a = 10, *pont, **pontpont; 
pont = &a; 
pontpont = &pont; 
a = 12; 
printf("pont = %d\t pontpont: %d\n", *pont,**pontpont); 
return 0; 
} 
 
Assinale a alternativa que apresenta os valores impressos pela função “ printf() ”.
12 12.
12 12.
Parabéns! Sua resposta foi a correta! Você observou bem que as variáveis “ a”,
“pontpont” e “ pont” referenciam a mesma posição de memória. Sendo assim, o valor a
ser impresso corresponde ao próprio valor de “ a”.
Pergunta 5
Uma string pode ser representada uma estrutura homogênea (vetor) para o
1 em 1 pontos
1 em 1 pontos
Resposta Selecionada:  
Resposta Correta:  
Comentário
da resposta:
armazenamento de uma sequência de caracteres. Em C/C++, as strings são iniciadas na
posição 0 do vetor e são finalizadas pelo caractere nulo ('\x0'). Para essa questão, suponha
que existe uma stringcarregada em uma variável denominada “str”. Dadas as sequências
de código a seguir, assinale, com “R” aquela (s) que proporciona (m) a remoção do
conteúdo de uma certa posição e, com “N”, a (s) que apresentam algum erro de sintaxe ou
de lógica. Suponha a posição a ser retirada = 4.
( ) i=4; 
do 
{ 
str[i]=str[i+1]; 
i++; 
} while(str[i]!='\x0'); 
( ) i=4; 
while(i>=0) 
{ 
str[i]=str[i+1]; 
i--; 
} 
( ) for(i=4;i>=0;i--) 
str[i]=str[i+1]; 
( ) i=4; 
for(;str[i]!='\x0';i++) 
str[i]=str[i+1]; 
Assinale a alternativa que apresenta a sequência correta.
R; N; N; R.
R; N; N; R.
Parabéns! Sua resposta foi a correta! Você observou bem que se deve deslocar para
esquerda todo o conteúdo das posições subsequentes à célula a ser removida.
Pergunta 6
Resposta
Selecionada:
Resposta
Correta:
Comentário
da resposta:
Para a manipulação de um arquivo, deve-se antes, realizar a sua abertura através do comando “ fopen()”.
Tal comando permite associar o nome físico do arquivo assim como a sua forma de abertura. Para essa
questão, analise as linhas de código a seguir: 
FILE *arq; 
arq = fopen(“arquivo.dat”,”wb+”); 
Assinale a alternativa que você julgue ser a correta.
Será aberto um arquivo binário “ arquivo.dat” permitindo-se operações de leitura e de
escrita. Sempre será criado um arquivo novo, destruindo o conteúdo caso já exista um
arquivo com o mesmo nome.
Será aberto um arquivo binário “arquivo.dat” permitindo-se operações de leitura e
de escrita. Sempre será criado um arquivo novo, destruindo o conteúdo caso já exista
um arquivo com o mesmo nome.
Parabéns! Sua resposta foi a correta! Você observou bem que foi incluído o símbolo ”+”,
que indica que operações de escrita poderão ser realizadas além das operações de escrita
do símbolo “w”. O “w” indica ainda, que sempre será criado um arquivo novo, destruindo o
conteúdo do arquivo caso já exista. Além destas informações, encontramos o símbolo “b”
denotando que o arquivo a ser aberto será do tipo binário.
Pergunta 7
1 em 1 pontos
1 em 1 pontos
Resposta Selecionada:  
Resposta Correta:  
Comentário
da resposta:
Na programação em C, podemos encontrar duas formas distintas de se abrir um arquivo (textual ou
binária) aliadas aos modos que esse arquivo será manipulado. Para essa questão, analise o código a seguir,
que manipula um arquivo binário, e preencha a lacuna corretamente. 
. . . 
FILE *arq; 
int codigo;char buffer[35]="algo a ser escrito no arquivo\n"; 
arq=fopen("exercicio.dat","____"); 
if(arq==NULL) 
{ 
printf("Erro de abertura do arquivo.\n"); 
return 0; 
} 
... 
if(!fread(&codigo,sizeof(int),1,arq)) //caso o arquivo ainda esteja vazio 
codigo=0; 
else 
codigo++; 
... 
if(!fwrite(&codigo,sizeof(int),1,arq)) 
printf("erro na gravacao do codigo.\n"); 
else 
if(!fwrite(buffer,35,1,arq)) 
printf("Erro na gravacao do buffer.\n"); 
fclose(arq); 
. . . 
Considerando que, caso o arquivo não exista, será criado um novo e caso exista, os dados deverão ser
mantidos, assinale a alternativa que corresponda ao preenchimento da lacuna.
ab+.
ab+.
Parabéns! Sua resposta foi a correta! Você observou corretamente a consideração final: “
caso o arquivo não exista, será criado um novo e caso exista, os dados deverão ser
mantidos”. Caso fosse colocado “ r+”, o arquivo deveria existir para ser aberto; caso a
abertura fosse “ w+”, o arquivo sempre seria criado. Então, sobra o modo “ a+”. Pelo fato
de aparecer “ fwrite()” e “ fread()”, então, o arquivo é binário. Sendo assim, “ ab+”.
Pergunta 8
Uma das vantagens de um arquivo binário consiste na possibilidade do uso direto de registros (estruturas
de dados). Sendo assim, pode-se gravar ou recuperar, com apenas uma operação, todos os dados
inseridos em tal estrutura de dados. Para essa questão, analise o trecho de código a seguir e preencha as
lacunas. 
TSTRUCT ts; 
. . . 
arq=fopen("registros.dat","rb+"); 
if(arq==NULL) 
{ 
printf("Erro de abertura do arquivo.\n"); 
return 0; 
} 
1 em 1 pontos
Resposta Selecionada:  
Resposta Correta:  
Comentário
da resposta:
________; //posicionar no início do arquivo 
printf("Item a ser localizado: "); 
scanf("%d",&item); 
while(1) 
{ 
________; //ler a estrutura 
if(________) //testar se foi encontrado o final de arquivo 
break; 
if(ts.item==item) 
{ 
//manipulação do registro encontrado... 
Assinale a alternativa que você julgue conter a sequência correta do preenchimento das lacunas.
rewind(arq) ; fread(&ts,sizeof(TSTRUCT),1,arq) ; feof(arq) .
rewind(arq) ; fread(&ts,sizeof(TSTRUCT),1,arq) ; feof(arq) .
Parabéns! Sua resposta foi a correta! Você associou corretamente as lacunas com as
respectivas funções. Para o posicionamento no início do arquivo, poderia ser usada,
também, a função “ fseek(arq,0,SEEK_SET)”. Devido ao fato de ser um arquivo binário,
a leitura deve ser “ fread()” e o teste de final de arquivo, independentemente do modo
textual ou binário, é feito pela função “ feof()”.
Pergunta 9
Resposta Selecionada:  
Quando se implementa uma fução, devemos seguir a sintaxe da linguagem de
programação utilizada e, também, realzar a definição de sua interface de acordo com as
nossas necessidades. Para essa questão, suponha o trecho de código a seguir:
 
#include <stdio.h>  //arquivo header para a funcao printf() 
#include <stdlib.h> //arquivo header para as funcoes srand() e rand() 
#include <time.h>   //arquivo header para a funcao time() 
  
___ func1(int ___x, ___ a) 
{ 
  ___x=rand()%a; 
  return ___x*(rand()%5); 
} 
  
int main() 
{ 
  int aleat,ret; 
  int a=10; 
  srand(time(NULL));  //iniciacao do gerador de numeros aleatorios 
  for(int i=0; i<10;i++) 
    { 
      ret=func1(__aleat,a); 
      printf("valor aleatorio gerado %d: %d (limitado %d) - ret funcao: %d.\n", 
        i,aleat,a,ret); 
    } 
  return 0; 
} 
 
Escolha a afirmativa que contém o resultado da impressão pela função “ printf ” e os
trechos a serem inseridos nas lacunas:
. int ;  * ;  deixar em branco ; * ; * ; & .
1 em 1 pontos
Sexta-feira, 25 de Junho de 2021 15h51min04s BRT
Resposta Correta:  
Comentário
da resposta:
.int ; * ; deixar em branco ; * ; * ; & .
Parabéns! Sua resposta foi a correta! Você observou bem o fato de que a variável
“ aleat”, dentro da função “ main()” não foi instanciada e que a referida instanciação
ocorre dentro da função “ func1”. Desta forma, é necessário que ela seja passada como
referência. Associando esse tipo de passagem, os demais preenchimentos são
consequência.
Pergunta 10
Resposta Selecionada:  
Resposta Correta:  
Comentário
da resposta:
Um programa consiste em criar uma sequência lógica de instruções de modo que possam
ser manipuladas informações representadas na forma de variáveis. Em linguagens tipadas,
como é o caso de C/C++, toda variável deve ser declarada associando à um tipo de dados.
Dadas as declarações abaixo em C/C++, assinale com “C” a(s) que você julgue estar
corretamente declarada(s) e, com “E” a(s) errada(s):
( ) int a; b;
( ) unsigned char x, y[10];
( ) int a, char b;
( ) int [10] x;
( ) float a; int b;
Assinale a alternativa que contenha a ordem correspondente à sua marcação.
E; C; E; E; C.
E; C; E; E; C.
Parabéns! Sua resposta foi a correta! Realmente, as declarações em C/C++, caso envolvam
duas ou mais variáveis, devem seguir a forma: “<tipo> variável1, variável2;”. Pode-se colocar
declarações usando vários tipos de dados, porém, cada agrupamento deverá ser separado
por um “;”.
1 em 1 pontos

Continue navegando