Buscar

Atividade 4 - Técnicas de Programação/UAM

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Pergunta 1
1 em 1 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:	
Correta B, T, T, B, A.
Resposta Correta:	
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 2
1 em 1 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:	
Correta . r ; fgets ; feof(arq) .
Resposta Correta:	
Correta . r ; fgets ; feof(arq) .
Feedback da resposta:	Parabéns! Sua resposta foi a correta! Você observou bem que o programa manipula um arquivo textual apenas para operações de leitura. A contagem das palavras foi feita linha a linha, usando-se, portanto, a função “ fgets()”. O laço deve ser interrompido ao encontrar o final de arquivo – teste feito a partir do valor de retorno da função “ feof()”.
=============================================================================================
Pergunta 3
1 em 1 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:	
Correta . rb ; sizeof(int) ; fread ; fread .
Resposta Correta:	
Correta . rb ; sizeof(int) ; fread ; fread .
Feedback da resposta:	Parabéns! Sua resposta foi a correta! Você observou bem o fato de que, para somente a leitura de um arquivo binário, faz-se necessário apenas o modo “ rb” de abertura. Arquivos binários requerem a função “ fread()” para que seja processada a leitura do registro.
=====================================================================================================
Pergunta 4
1 em 1 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:	
Correta F, V, V, F.
Resposta Correta:	
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 5
1 em 1 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:	
Correta rewind(arq) ; fread(&ts,sizeof(TSTRUCT),1,arq) ; feof(arq) .
Resposta Correta:	
Correta rewind(arq) ; fread(&ts,sizeof(TSTRUCT),1,arq) ; feof(arq) .
Feedback da resposta:	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 6
1 em 1 pontos
Suponha a existência de um arquivo textual onde as palavras são separadas pelo caractere “$” e pelo caractere “%”. Suponha também, que há a necessidade de se implementar um programa para imprimir, na tela, o conteúdo do referido arquivo de modo que, ao encontrar o caractere “$” imprime-se um espaço em branco e, ao encontrar o “%” pula-se para a linha seguinte da tela.
Para essa questão, analise o código a seguir e preencha as lacunas.
#include <stdio.h>
 
int main()
{
FILE *arq;
char carac;
arq=fopen("texto.txt","___");
if(arq==NULL)
{
printf("Erro de abertura do arquivo.\n");
return 0;
}
while(1)
{
carac = ____(arq);
if(___)
break;
switch(carac)
{
case '$':
carac = ' ';
break;
case '%':
carac = '\n';
break;
}
printf("%c",carac);
}
fclose(arq);
return 0;
}
Assinale a alternativa que você julgue ser a correta.
Resposta Selecionada:	
Correta . r ; getc ; carac == EOF.
Resposta Correta:	
Correta . r ; getc ; carac == EOF.
Feedback da resposta:	Parabéns! Sua resposta foi a correta! Você associou acertadamente o
modo de abertura de arquivo textual para somente leitura (parâmetro “r”), usou a função correta para ler um caractere do arquivo textual (“ getc()”) e testou corretamente o fim do arquivo (“ carac == EOF”).
==========================================================================================================
Pergunta 7
1 em 1 pontos
Na linguagem de programação C, podemos encontrar dois tipos básicos de arquivos: os arquivos binários e os arquivos texto. A forma de diferenciação, em relação à manipulação, consiste no uso de formas de abertura e funções específicas. Para essa questão, assinale, nas afirmativas abaixo, com (B) caso relacione-se aos arquivos binários e, com (T) caso relacione-se aos arquivos textuais.
( ) Para manipular o arquivo, usa-se as funções “ fread()” e “ fwrite()”.
( ) É totalmente legível caso seja aberto em editores de texto do tipo “bloco de notas”.
( ) Por exemplo, uma informação numérica, ocupa neste tipo de arquivo, uma quantidade de bytes compatível com a quantidade de dígitos de seu valor.
( ) Neste tipo de arquivo, tende-se a gastar menos espaço de armazenamento pois cada variável gasta exatamente o seu tamanho ocupado na memória principal; valor do retorno da função “ sizeof()”.
Assinale a alternativa que apresente a sequência correta.
Resposta Selecionada:	
Correta B, T, T, B.
Resposta Correta:	
Correta B, T, T, B.
Feedback da resposta:	Parabéns! Sua resposta foi a correta! Realmente, os arquivos binários possuem como vantagens a sua maior eficiência no armazenamento e manipulação das informações armazenadas pois fazem uma correspondência exata com os tipos de dados manipulados pelos próprios programas.
==================================================================================================
Pergunta 8
1 em 1 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:	
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.
Resposta Correta:	
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:	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 9
1 em 1 pontos
Em uma operação de recuperação de informações a partir de um arquivo, após a leitura de um item, deve-se sempre verificar se o final do arquivo foi alcançado. A informação de EOF ( End-Of-File – Final de Arquivo) pode ser obtida em diversas operações. Para essa questão, analise as linhas de código a seguir:
I – info = fgetc(arq);
II – fputs(buffer, sizeof(buffer), arq);
III – fread(buffer,sizeof(buffer),1,arq);
IV – fputc(carac,arq);
Assinale a alternativa que você julgue ser a correta.
Resposta Selecionada:	
Correta Apenas a função da linha III não pode retornar EOF.
Resposta Correta:	
Correta Apenas a função da linha III não pode retornar EOF.
Feedback da resposta:	Parabéns! Sua resposta foi a correta! Apesar das funções das linhas II e IV serem de saída (gravação), podem retornar EOF em caso de erro. A função da linha I pode retornar EOF no caso do encontro de final de arquivo na operação de leitura. A função da linha III retorna a quantidade de itens lidos.
=========================================================================================================
Pergunta 10
1 em 1 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:	
Correta . arq=fopen("arq.dat","rb+"); .
Resposta Correta:	
Correta . arq=fopen("arq.dat","rb+"); .
Feedback da resposta:	Parabéns! Sua resposta foi a correta! O fato do código apresentar as funções “ fread()” e “ fwrite()” já determina que está sendo manipulado um arquivo binário. Como o arquivo deve existir previamente e serão realizadas operações de leitura e de escrita, o modo de abertura deverá ser, necessariamente “ rb+”.

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando