Buscar

TÉCNICAS DE PROGRAMAÇÃO ATIVIDADE 4 (A4)

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

Prévia do material em texto

https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 1/9
Pergunta 1
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","___"); 
1 em 1 pontos
27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ...
https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 2/9
Resposta Selecionada: 
Resposta Correta: 
Comentário
da
resposta:
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.
. r ; w ; fputs ; atividade_tmp.txt ; atividade.txt .
. r ; w ; fputs ; atividade_tmp.txt ; atividade.txt .
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 “ fputs()” para a
gravação no arquivo temporário e os parâmetros da função “ rename()”.
Pergunta 2
Na linguagem C, encontramos dois tipos de arquivos: os arquivos textuais e os arquivos binários.
1 em 1 pontos
27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ...
https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 3/9
Resposta Selecionada: 
Resposta Correta: 
Comentário
da
resposta:
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í�cas. 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.
B, T, T, B, A.
B, T, T, B, A.
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 3
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 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; 
1 em 1 pontos
27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ...
https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 4/9
Resposta Selecionada: 
Resposta Correta: 
Comentário
da
resposta:
} 
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 4
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 preencha as lacunas. 
#include <stdio.h> 
#include <string.h> 
  
int main() 
{ 
FILE *arq; 
char linha[40]; 
long pos; 
int i; 
arq=fopen("atividade.txt","___"); 
if(arq==NULL) 
{ 
1 em 1 pontos
27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ...
https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 5/9
Resposta
Selecionada:
Resposta Correta:
Comentário
da
resposta:
printf("Erro de abertura do arquivo.\n"); 
return 0; 
} 
pos=_____; //armazenar a posicao corrente do ponteiro de arquivo. 
fgets(linha,40,arq); 
for(i=0;i<strlen(linha);i++) 
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.
. r+ ; ftell(arq) ; fseek(arq,pos,SEEK_SET);
fputs(linha,arq) .
. r+ ; ftell(arq) ; fseek(arq,pos,SEEK_SET);
fputs(linha,arq) .
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 “ ftell()” e “
fseek()”, respectivamente.
Pergunta 5
Resposta Selecionada: 
Resposta Correta:
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í�cas. Para essa questão, assinale, nas a�rmativas
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 queapresente a sequência correta.
B, T, T, B.
1 em 1 pontos
27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ...
https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 6/9
 
Comentário
da
resposta:
B, T, T, B.
Parabéns! Sua resposta foi a correta! Realmente, os arquivos binários possuem
como vantagens a sua maior e�ciê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 6
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 bu�er[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(bu�er,35,1,arq)) 
printf("Erro na gravacao do bu�er.\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 �nal: “ 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
1 em 1 pontos
27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ...
https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 7/9
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 7
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 8
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.
1 em 1 pontos
1 em 1 pontos
27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ...
https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 8/9
Resposta Selecionada: 
Resposta Correta: 
Comentário
da
resposta:
. arq=fopen("arq.dat","rb+"); .
. arq=fopen("arq.dat","rb+"); .
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+”.
Pergunta 9
Resposta Selecionada: 
Resposta Correta: 
Comentário
da
resposta:
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 a�rmativas a seguir, classi�que-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 �nal do arquivo. 
Assinale a alternativa que você julgue ter a sequência correta.
F, V, V, F.
F, V, V, F.
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
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() 
{ 
1 em 1 pontos
1 em 1 pontos
27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ...
https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 9/9
Terça-feira, 27 de Abril de 2021 11h11min44s BRT
Resposta Selecionada: 
Resposta Correta: 
Comentário
da
resposta:
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.
. r ; getc ; carac == EOF.
. r ; getc ; carac == EOF.
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 �m do arquivo (“ carac == EOF”).

Outros materiais