Buscar

TECNICAS D PROGRAMAÇÃOUN4

Prévia do material em texto

Impresso por Davi Linares, CPF 230.274.748-80 para uso pessoal e privado. Este material pode ser protegido por direitos autorais e não
pode ser reproduzido ou repassado para terceiros. 21/08/2021 13:57:28
Usuário CHLOE WILBORN
Curso GRA1033 TÉCNICAS DE PROGRAMAÇÃO GR3342202 - 
202020.ead-6505.11
Teste ATIVIDADE 4 (A4)
Iniciado 29/11/20 17:11
Enviado 02/12/20 14:05
Status Completada
Resultado da 
tentativa
10 em 10 pontos 
Tempo decorrido 48 horas, 54 minutos
Resultados 
exibidos
Respostas enviadas, Respostas corretas, Comentários
 
1 em 1 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];


{
strncpy(tmp,linha,i);
tmp[i]='\x0';
strcat(tmp,nova_palavra);

strcpy(linha,tmp);
}
}
 
int main()
{
char  !""
FILE *arq,*arqtmp;
#$%"&&'(%%%
if(arq==NULL)
{
printf("Erro de abertura de arquivo origem.");
return 0;
}
#$%"&&'(%%%
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;
)""
____(linha,arqtmp);
}
fclose(arq);
Impresso por Davi Linares, CPF 230.274.748-80 para uso pessoal e privado. Este material pode ser protegido por direitos autorais e não
pode ser reproduzido ou repassado para terceiros. 21/08/2021 13:57:28
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:
 
. ; ; r w fputs ; 
atividade_tmp.txt ; atividade.txt .
Resposta Correta: 
. ; ; r w fputs ; 
atividade_tmp.txt ; atividade.txt .
Feedback 
da 
resposta:
Parabéns! Sua resposta foi a correta! Você observou corretamente 
os tipos de abertura necessários para o arquivo origem das 
informações e para o arquivo temporário; e, também, a necessidade 
do uso da função “ ” para a gravação no arquivo temporário e osfputs()
parâmetros da função “ ”.rename()
 *
1 em 1 pontos
Arquivos textuais são aqueles cujo conteúdo é formado somente por e strings
podem ser abertos por editores de texto do tipo “bloco de notas”. Para essa 
questão, analise o código a seguir:
#include <stdio.h>
 
int main()
{
FILE *arq;
long pos,i;
char carac;
arq = fopen("conteudo.txt","r");
if(arq==NULL)
{
printf("Erro de aberura do arquivo.");
return 0;
}
fseek(arq,0,SEEK_END);
pos=ftell(arq);
printf("Pos = %ld\n",pos);
for(i=pos-1; i>=0; i--)
{
fseek(arq,i,SEEK_SET);
carac = fgetc(arq);
printf("%c",carac);
}
return 0;
}
Assinale a alternativa que você julgue ser a correta.
Resposta 
Selecionada:
 
O programa faz a impressão do arquivo em ordem inversa. O 
trecho com as linhas “ ” e “ fseek(arq,0,SEEK_END); pos=ftell(arq);” servem 
para coletar o tamanho do arquivo.
Resposta 
Correta:
 
O programa faz a impressão do arquivo em ordem inversa. O 
trecho com as linhas “ ” e “ ” servem parafseek(arq,0,SEEK_END); pos=ftell(arq);
coletar o tamanho do arquivo.
Impresso por Davi Linares, CPF 230.274.748-80 para uso pessoal e privado. Este material pode ser protegido por direitos autorais e não
pode ser reproduzido ou repassado para terceiros. 21/08/2021 13:57:28
Feedback 
da 
resposta:
Parabéns! Sua resposta foi a correta! Realmente o programa exibe o
conteúdo do arquivo em ordem reversa. Para posicionar em cada 
caractere do arquivo, foi realizado um laço de repetição iniciando-se 
no penúltimo elemento visto que o último corresponde, justamente, 
ao EOF.
 +
1 em 1 pontos
Ao manipularmos arquivos, alguns cuidados ou estilos devem ser tomados para 
garantir ao programa um maior grau de eficiência e segurança. Dentre as 
afirmativas a seguir, identifique V para verdadeiro e F para falso.
( ) arquivos binários tendem a demandar menos espaço em relação aos arquivos 
texto devido ao fato de que os espaços alocados fisicamente são proporcionados 
pelos tamanhos dos tipos de dados utilizados;
( ) em toda operação envolvendo arquivos, é sempre conveniente testar se a 
operação, por exemplo, abertura, escrita e leitura, foram bem sucedidas;
( ) é mais conveniente abrir um arquivo sempre para leitura e escrita para evitar 
testes de acesso pelo sistema operacional, tornando, portanto, o programa mais 
eficiente;
( ) é conveniente abrir o arquivo com o modo justo para a demanda, ou seja, caso
for realizada apenas leitura de informações, abrir o arquivo somente para leitura. 
Dessa forma, o programa torna-se mais seguro em relação ao acesso às 
informações.
Assinale a alternativa que tenha a sequência correta.
Resposta 
Selecionada:
 
V, V, F, V.
Resposta Correta: 
V, V, F, V.
Feedback
da 
resposta:
Parabéns! Sua resposta foi a correta! Realmente, uma das 
vantagens dos arquivos binários sobre os arquivos de texto é em 
relação ao espaço ocupado. Enquanto que, por exemplo, o valor 
inteiro 345789 ocupa seis nos arquivos textuais, nos arquivos bytes
binários são utilizados apenas quatro . Como um arquivo pode bytes
apresentar problemas, por exemplo, nos próprios dispositivos de I/O 
(Input/Output – Entrada/Saída), é conveniente testar se a operação 
foi bem-sucedida. Por fim, é também conveniente abrir o arquivo 
com o modo adequado à operação para tornar o programa mais 
seguro em relação ao acesso e manutenção das informações. Uma 
informação sobre eficiência que merece destaque é que deve-se 
evitar o uso das funções “ ” e “ fprintf() fscanf()” devido ao fato de que elas
realizam formatações dos valores manipulados aumentando-se, 
portanto, o tempo de processamento. Para maior eficiência, deve-se 
utilizar as funções “ ” e “ ”.fwrite() fread()
  
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 
Impresso por Davi Linares, CPF 230.274.748-80 para uso pessoal e privado. Este material pode ser protegido por direitos autorais e não
pode ser reproduzido ou repassado para terceiros. 21/08/2021 13:57:28
consiste em:
#&,,-,*,-*,''',float>.
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)
{
."/#
."/#
}
 
 
int main()
{
FILE *arq;
int qtd=3;
#$%('&%%%
if(arq==NULL)
{
printf("Erro de abertura do arquivo (1).\n");
return 0;
}
.#&/#
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:
 
. int ; float ; 
wb .
Resposta Correta: 
. int ; float ; 
wb .
Feedback 
da 
resposta:
Parabéns! Sua resposta foi a correta! Realmente, para realizar 
somente operações em um arquivo binário, deve-se usar o modo 
“ ”. O processo de gravação ocorre mediante a utilização de wb
“ ” onde o tamanho do item gravado deve acompanhar o tipo. fwrite()
No caso, foi utilizada a função“ ” vinculado ao tipo passado sizeof()
como parâmetro para a gravação.
 0
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 , independentes de seu tipo; porém, para tal, devemos usar algumas strings
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()
Impresso por Davi Linares, CPF 230.274.748-80 para uso pessoal e privado. Este material pode ser protegido por direitos autorais e não
pode ser reproduzido ou repassado para terceiros. 21/08/2021 13:57:28
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() fputc()” e “ ” 
são utilizadas exclusivamente nos arquivos textuais para a gravação 
de e de caracter, respectivamente. Para os arquivos binários, strings
utiliza-se “ ” e “ ”. A abertura é realizada por meio da função fwrite() fread()
“ ” independentemente do tipo do arquivo.fopen()
 1
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;
. . .
#$%'&%%2%
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) ; fread(&ts,sizeof(TSTRUCT),1,arq) ; 
feof(arq) .
Resposta 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 
“ ”. Devido ao fato de ser um arquivo binário, a leiturafseek(arq,0,SEEK_SET)
deve ser “ ” e o teste de final de arquivo, independentemente do fread()
modo textual ou binário, é feito pela função “ ”.feof()
 3
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 
Impresso por Davi Linares, CPF 230.274.748-80 para uso pessoal e privado. Este material pode ser protegido por direitos autorais e não
pode ser reproduzido ou repassado para terceiros. 21/08/2021 13:57:28
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;
#$%"&&'(%%%
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:
 
. r ; fgets ; 
feof(arq) .
Resposta 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 “ ”. O laço deve ser interrompido ao encontrarfgets()
o final de arquivo – teste feito a partir do valor de retorno da função 
“ ”.feof()
 4
1 em 1 pontos
Em arquivos textuais, quando desejamos substituir uma informação com o 
mesmo tamanho da nova informação, podemos realizar sobrescrita sem a 
necessidade de criação de arquivo temporário para receber a nova versão do 
conteúdo. Para essa questão, analise o código a seguir, que realiza a troca do 
caractere “i” pelo caractere “y” na primeira linha do arquivo. Em sua análise 
Impresso por Davi Linares, CPF 230.274.748-80 para uso pessoal e privado. Este material pode ser protegido por direitos autorais e não
pode ser reproduzido ou repassado para terceiros. 21/08/2021 13:57:28
preencha as lacunas.
#include <stdio.h>
#include <string.h>
 
int main()
{
FILE *arq;
char linha[40];
long pos;
int i;
#$%"&&'(%%%
if(arq==NULL)
{
printf("Erro de abertura do arquivo.\n");
return 0;
}
pos=_____; //armazenar a posicao corrente do ponteiro de arquivo.
fgets(linha,40,arq);
$!
if(linha[i]=='i')
linha[i]='y';
_____; //reposicionar no ponto anterior aa leitura
_____; //gravacao da linha.
fclose(arq);
return 0;
}
Assinale a alternativa que você julgue ser a correta.
Resposta 
Selecionada:
 
. ; r+ ; ftell(arq) fseek(arq,pos,SEEK_SET); 
fputs(linha,arq) .
Resposta Correta: 
. ; r+ ; ftell(arq) fseek(arq,pos,SEEK_SET); 
fputs(linha,arq) .
Feedback 
da 
resposta:
Parabéns! Sua resposta foi a correta! Você deve ter notado que 
podemos salvar a posição do ponteiro do arquivo para que 
possamos restaurar a posição e sobrescrever o conteúdo. Para isso,
foram usadas as funções “ ” e “ ”, respectivamente.ftell() fseek()
 5
1 em 1 pontos
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";
#$%('&%%%
if(arq==NULL)
{
printf("Erro de abertura do arquivo.\n");
return 0;
}
...
&&/# //caso o arquivo ainda esteja vazio
codigo=0;
else
codigo++;
...
.&/#
printf("erro na gravacao do codigo.\n");
else
if(!fwrite(buffer,35,1,arq))
printf("Erro na gravacao do buffer.\n");
Impresso por Davi Linares, CPF 230.274.748-80 para uso pessoal e privado. Este material pode ser protegido por direitos autorais e não
pode ser reproduzido ou repassado para terceiros. 21/08/2021 13:57:28
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.
Resposta 
Selecionada:
 
ab+.
Resposta Correta: 
ab+.
Feedback 
da 
resposta:
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
“ ”, o arquivo deveria existir para ser aberto; caso a abertura fosse r+
“ ”, o arquivo sempre seria criado. Então, sobra o modo “ ”. Pelo w+ a+
fato de aparecer “ ” e “ ”, então, o arquivo é binário. Sendo fwrite() fread()
assim, “ ”.ab+
 !
1 em 1 pontos
Para a manipulação de um arquivo, deve-se antes, realizar a sua abertura 
através do comando “ ”. Tal comando permite associar o nome físico do fopen()
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 “ ” permitindo-se arquivo.dat
operações de leiturae de escrita. Sempre será criado um arquivo 
novo, destruindo o conteúdo caso já exista um arquivo com o 
mesmo nome.
Resposta 
Correta:
 
Será aberto um arquivo binário “ ” permitindo-se arquivo.dat
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.
Quarta-feira, 2 de Dezembro de 2020 14h05min51s BRT
.

Continue navegando