Buscar

TÉCNICAS DE PROGRAMAÇÃO Atividade 4

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 6 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 6 páginas

Prévia do material em texto

Revisar envio do teste: ATIVIDADE 4
 
	Usuário
	RAUL COSTA MAGALHAES
	Curso
	GRA1033 TÉCNICAS DE PROGRAMAÇÃO PNA (ON) - 201920.2160.01
	Teste
	ATIVIDADE 4
	Iniciado
	02/12/19 21:28
	Enviado
	02/12/19 21:47
	Status
	Completada
	Resultado da tentativa
	0,5 em 2,5 pontos  
	Tempo decorrido
	18 minutos
	Resultados exibidos
	Respostas enviadas, Respostas corretas, Comentários
· Pergunta 1
0 em 0,25 pontos
	
	
	
	Para a manipulação de arquivos temos que, inicialmente, realizar a instanciação do ponteiro do arquivo por intermédio da operação de abertura. Para tanto, usa-se a função “ fopen()” passando como parâmetros o nome físico do arquivo e o modo de abertura. Para essa questão, suponha que o programa em questão, tenha em seu código, as seguintes linhas:
if(! fread (&item,sizeof(tipo_do_item),1,arq))
return -1;
...
if(! fwrite (&item,sizeof(tipo_do_item),1,arq))
return -2;
...
Levando em conta as linhas de código acima, o fato de que o arquivo binário deve existir previamente e as suas informações deverão ser mantidas, selecione a opção que contém a forma de abertura adequada.
	
	
	
	
		Resposta Selecionada:
	 
. arq=fopen("arq.dat","wb+"); .
	Resposta Correta:
	 
. arq=fopen("arq.dat","rb+"); .
	Feedback da resposta:
	Infelizmente a sua resposta está incorreta. Para responder essa questão, reflita sobre as seguintes indagações: Que tipo de arquivo é manipulado pelas funções “ fread()” e “ fwrite()”? Em qual modo de abertura o arquivo deverá existir previamente? Como mencionamos, no modo de abertura, que serão realizadas operações de leitura e de escrita?
	
	
	
· Pergunta 2
0 em 0,25 pontos
	
	
	
	Para essa questão, suponha que um certo arquivo mantém, em sua primeira posição, a quantidade de registros armazenados. Após o indicativo da quantidade, são gravados os valores na forma <int,float>. Desta forma, o arquivo consiste em:
<qtd_registros><int1><float1><int2><float2>...<intn,floatn>.
Para essa questão, analise o código a seguir e preencha as lacunas de modo a representar o processo listagem de todos os registros armazenados no arquivo.
#include <stdio.h>
 
int main()
{
FILE *arq;
int qtd,valor_int,i;
float valor_float;
arq=fopen("exercicio.dat","___");
if(arq==NULL)
{
printf("Erro de abertura do arquivo.\n");
return 0;
}
fread(&qtd,____,1,arq);
for(i=0; i<qtd;i++)
{
____(&valor_int,sizeof(int),1,arq);
____(&valor_float,sizeof(float),1,arq);
printf("[%d] int=%d float=%f\n",i,valor_int,valor_float);
}
fclose(arq);
return 0;
}
Assinale a alternativa que você julgue ser a correta.
	
	
	
	
		Resposta Selecionada:
	 
. rb ; sizeof(int) ; fgets ; fgets .
	Resposta Correta:
	 
. rb ; sizeof(int) ; fread ; fread .
	Feedback da resposta:
	Infelizmente a sua resposta está incorreta. Para responder essa questão, reveja os modos de abertura de arquivo. Reflita, também, qual a função para a leitura de registros de arquivos binários?
	
	
	
· Pergunta 3
0 em 0,25 pontos
	
	
	
	Em diversas situações, nos arquivos textuais, faz-se necessária a substituição de palavras. Para essa questão, analise o código a seguir que coleta linha por linha de um arquivo texto e realiza a substituição de palavras. Na análise, preencha as lacunas com os códigos correspondentes.
#include <stdio.h>
#include <string.h>
 
void ProcessaLinha(char linha[],char nome_ret[],char nova_palavra[])
{
int i=0;
char tmp[40];
for(;i<strlen(linha)-strlen(nome_ret);i++)
if(!strncmp(&linha[i],nome_ret,strlen(nome_ret)))
{
strncpy(tmp,linha,i);
tmp[i]='\x0';
strcat(tmp,nova_palavra);
strcat(tmp,&linha[i+strlen(nome_ret)]);
strcpy(linha,tmp);
}
}
 
int main()
{
char linha[40],nome_ret[11],nova_palavra[11];
FILE *arq,*arqtmp;
arq=fopen("atividade.txt","___");
if(arq==NULL)
{
printf("Erro de abertura de arquivo origem.");
return 0;
}
arqtmp=fopen("atividade_tmp.txt","___");
if(arq==NULL)
{
printf("Erro de abertura do arquivo temporario.");
return 0;
}
printf("Palavra a ser substituida (ate 10 letras): ");
gets(nome_ret);
printf("Nova palavra (ate 10 letras): ");
gets(nova_palavra);
while(1)
{
fgets(linha,40,arq); //fgets() lê toda a linha até o <enter>
if(feof(arq))
break;
ProcessaLinha(linha,nome_ret,nova_palavra);
____(linha,arqtmp);
}
fclose(arq);
fclose(arqtmp);
if(remove("atividade.txt"))
printf("Erro na remocao.\n");
else if(rename("____", "____"))
printf("Erro no renomeamento.\n");
return 0;
}
Assinale a alternativa que você julgue possuir a sequência correta.
	
	
	
	
		Resposta Selecionada:
	 
. w ; w ; fputs ; atividade_tmp.txt ; atividade.txt .
	Resposta Correta:
	 
. r ; w ; fputs ; atividade_tmp.txt ; atividade.txt .
	Feedback da resposta:
	Infelizmente a sua resposta está incorreta. Para responder essa questão, reveja os modos de abertura para associar corretamente ao arquivo fonte e ao arquivo temporário. Veja, também, o protótipo da função “ rename()” e as funções para a leitura e escrita relacionadas aos arquivos textuais.
	
	
	
· Pergunta 4
0,25 em 0,25 pontos
	
	
	
	Na linguagem C, encontramos dois tipos de arquivos: os arquivos textuais e os arquivos binários. Nos arquivos textuais, as informações são gravadas como strings, independentes de seu tipo; porém, para tal, devemos usar algumas funções específicas. Para os comandos abaixo, assinale com (T) aquele(s) que serve(m) unicamente para arquivos textuais, com (B) para arquivos binários e, com (A) aquele(s) que serve(m) para ambos.
( ) fwrite()
( ) fputs()
( ) fputc()
( ) fread()
( ) fopen()
Assinale a alternativa cuja ordem você julgue ser correta.
	
	
	
	
		Resposta Selecionada:
	 
B, T, T, B, A.
	Resposta Correta:
	 
B, T, T, B, A.
	Feedback da resposta:
	Parabéns! Sua resposta foi a correta! As funções “ fputs()” e “ fputc()” são utilizadas exclusivamente nos arquivos textuais para a gravação de strings e de caracter, respectivamente. Para os arquivos binários, utiliza-se “ fwrite()” e “ fread()”. A abertura é realizada por meio da função “ fopen()” independentemente do tipo do arquivo.
	
	
	
· Pergunta 5
0 em 0,25 pontos
	
	
	
	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.
	
	
	
	
		Resposta Selecionada:
	 
Será aberto um arquivo binário “ arquivo.dat” permitindo-se operações de leitura e de escrita. Caso o arquivo não exista, será criado um arquivo novo. Caso exista, o seu conteúdo será mantido.
	Resposta 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.
	Feedback da resposta:
	Infelizmente a sua resposta está incorreta. Para responder essa questão, reveja os modos de abertura e reflita: o que indica o símbolo 'b'? Qual a ação que o sinal “+” faz sobre o “w”?
	
	
	
· Pergunta 6
0 em 0,25 pontos
	
	
	
	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;
}
________; //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.
	
	
	
	
		Resposta Selecionada:
	 
rewind(arq) ; fwrite(&ts,sizeof(TSTRUCT),1,arq) ; feof(arq) .
	Resposta Correta:
	 
rewind(arq) ; fread(&ts,sizeof(TSTRUCT),1,arq) ; feof(arq) .Feedback da resposta:
	Infelizmente a sua resposta está incorreta. Para responder essa questão, analise melhor a operação que está sendo demandada através dos comentários associados a cada linha a ser preenchida.
	
	
	
· Pergunta 7
0 em 0,25 pontos
	
	
	
	O armazenamento de informações em uma memória não volátil pode ser feito pelo uso de arquivos. Para tanto, um arquivo deverá ter suas ações realizadas através da manipulação de um descritor de arquivo. Dados os comandos abaixo, enumere-os, utilizando números de um a cinco, de acordo com a ordem que eles deverão aparecer na codificação.
( ) fwrite(buffer,sizeof(buffer),1,arq);
( ) arq = fopen(“arquivo.dat”,”rb+”);
( ) if(arq=NULL)
return;
( ) fclose(arq);
( ) FILE *arq;
Assinale a alternativa que você julgue ter a sequência de uso correta.
	
	
	
	
		Resposta Selecionada:
	 
1, 5, 3, 2, 4.
	Resposta Correta:
	 
4, 2, 3, 5, 1.
	Feedback da resposta:
	Infelizmente a sua resposta está incorreta. Para responder essa questão, reflita melhor o que é um descritor de arquivo e quais as etapas necessárias antes da manipulação propriamente dita.
	
	
	
· Pergunta 8
0 em 0,25 pontos
	
	
	
	Para essa questão, suponha que um certo arquivo mantém, em sua primeira posição, a quantidade de registros armazenados. Após o indicativo da quantidade, são gravados os valores na forma <int,float>. Desta forma, o arquivo consiste em:
<qtd_registros><int1><float1><int2><float2>...<intn,floatn>.
Para essa questão, analise o código a seguir e preencha as lacunas de modo a representar o processo de criação de um arquivo novo e gravação de três registros.
#include <stdio.h>
 
void GravaArq(FILE *arq, int val_i,float val_f)
{
fwrite(&val_i,sizeof(____),1,arq);
fwrite(&val_f,sizeof(____),1,arq);
}
 
 
int main()
{
FILE *arq;
int qtd=3;
arq=fopen("exercicio.dat","___");
if(arq==NULL)
{
printf("Erro de abertura do arquivo (1).\n");
return 0;
}
fwrite(&qtd,sizeof(int),1,arq);
GravaArq(arq,0,2.1);
GravaArq(arq,10,45.21);
GravaArq(arq,20,345.87);
fclose(arq);
return 0;
}
Assinale a alternativa que você julgue ser a correta.
	
	
	
	
		Resposta Selecionada:
	 
. float ; int ; wb .
	Resposta Correta:
	 
. int ; float ; wb .
	Feedback da resposta:
	Infelizmente a sua resposta está incorreta. Para responder essa questão, reveja os modos de abertura de arquivo e, também, o protótipo da função “ fwrite()”. Como dimensionar a quantidade de bytes a serem gravados?
	
	
	
· Pergunta 9
0,25 em 0,25 pontos
	
	
	
	Linguagens estruturadas permitem que informações sejam armazenadas e recuperadas de memórias não voláteis. Porém, elas são dependentes de funções e estruturas exportadas pelo sistema operacional. Dadas as afirmativas a seguir, classifique-as V para verdadeiro e F para falso.
( ) Ponteiros de arquivos (“ FILE *”) devem ser alocados dinamicamente através do uso “ malloc()” antes de serem utilizados.
( ) Ponteiros de arquivos referenciam uma posição de memória mantida pelo sistema operacional que armazena atributos e status dos arquivos manipulados.
( ) Para a manipulação da posição corrente do arquivo podemos usar as funções “ ftell()” e “ fseek()” que devolvem e setam a posição corrente do arquivo, respectivamente.
( ) A função “fread ()” retorna EOF quando chegar ao final do arquivo.
Assinale a alternativa que você julgue ter a sequência correta.
	
	
	
	
		Resposta Selecionada:
	 
F, V, V, F.
	Resposta Correta:
	 
F, V, V, F.
	Feedback da resposta:
	Parabéns! Sua resposta foi a correta! Descritores de arquivos são estruturas mantidas pelo sistema operacional e são endereçados através dos ponteiros de arquivos, que são instanciados pelo uso da função “fopen ()”. A função “fread ()” retorna a quantidade de itens lidos.
	
	
	
· Pergunta 10
0 em 0,25 pontos
	
	
	
	Em algumas situações, temos a necessidade de conhecermos a quantidade de palavras em um arquivo textual. Para essa questão, analise o código a seguir e preencha as lacunas.
#include <stdio.h>
 
int ContPalavras(char linha[])
{
int cont=0,i=0,esp=0;
for(;linha[i]!='\x0';i++)
{
if((!esp) && (linha[i]!=' '))
{
esp=1;
cont++;
}
else
if(esp && (linha[i]==' '))
esp=0;
}
return cont;
}
int main()
{
FILE *arq;
char linha[40];
int cont=0;
arq=fopen("atividade.txt","___");
if(arq==NULL)
{
printf("Erro de abertura do arquivo.\n");
return 0;
}
while(1)
{
____(linha,40,arq);
cont+=ContPalavras(linha);
if(____)
break;
}
printf("Qtd de palavras = %d\n",cont);
fclose(arq);
return 0;
}
Assinale a alternativa que você julgue ser a correta.
	
	
	
	
		Resposta Selecionada:
	 
. w ; fgets ; feof(arq) .
	Resposta Correta:
	 
. r ; fgets ; feof(arq) .
	Feedback da resposta:
	Infelizmente a sua resposta está incorreta. Para responder essa questão, reveja os pontos sobre manipulação de arquivos textuais respondendo à seguinte pergunta: Como coletar as linhas de um arquivo textual e como testar se chegou-se ao seu final?

Continue navegando