Buscar

Atividade 4 - Técnicas de Programação - FMU

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

12/2/2020 Blackboard Learn
https://fmu.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller 1/6
Pergunta 1
Resposta Selecionada:  
Resposta Correta:  
Feedback
da
resposta:
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.
. int ; float ; wb .
. int ; float ; wb .
Parabéns! Sua resposta foi a correta! Realmente, para realizar somente operações em
um arquivo binário, deve-se usar o modo “ wb”. O processo de gravação ocorre mediante
a utilização de “ fwrite()” onde o tamanho do item gravado deve acompanhar o tipo. No
caso, foi utilizada a função “ sizeof()” vinculado ao tipo passado como parâmetro para a
gravação.
Pergunta 2
Resposta Selecionada:  
Resposta Correta:  
Feedback
da
resposta:
Quando se manipula um arquivo, às vezes temos a necessidade de alterar informações ou incluir
novas. Para tanto, funções “ fseek()”, “ fgets()”, “ fputs()”, “ fgetc()” e “ fgets()” podem ser utilizadas. Dentre
as alternativas a seguir, assinale V para verdadeiro e F para falso. 
( ) a função “ fseek()“ não admite valores negativos para o seu deslocamento mesmo quando utilizada
com o parâmetro “SEEK_CUR”; 
( ) no caso de gravarmos uma informação no meio do arquivo, a informação será sobrescrita; 
( ) no caso de gravarmos uma informação no meio do arquivo, toda a informação abaixo do ponto a
receber a nova informação será deslocada; 
( ) a função “ fseek()“ admite três pontos de referência para o seu deslocamento: a partir do início do
arquivo (SEEK_SET), a partir da posição corrente (SEEK_CUR) e a partir do fim do arquivo
(SEEK_END). 
Assinale a alternativa que você julgue ter a sequência correta.
F, F, V, V.
F, V, F, V.
Infelizmente a sua resposta está incorreta. Para responder essa questão, reveja os
conceitos e funcionalidades da função “ fseek()”. Como retroceder a ponteiro do arquivo?
Faça também, um paralelo entre gravação de informações em vetores com a gravação
de informações em arquivos textuais.
1 em 1 pontos
0 em 1 pontos
12/2/2020 Blackboard Learn
https://fmu.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller 2/6
Pergunta 3
Resposta Selecionada:  
Resposta Correta:  
Feedback
da
resposta:
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.
. 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()”.
1 em 1 pontos
12/2/2020 Blackboard Learn
https://fmu.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller 3/6
Pergunta 4
Resposta Selecionada:  
Resposta Correta:  
Feedback
da
resposta:
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.
Apenas a função da linha III não pode retornar EOF.
Apenas a função da linha III não pode retornar EOF.
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 5
Resposta
Selecionada:
Resposta
Correta:
Feedback
da
resposta:
Arquivos textuais são aqueles cujo conteúdo é formado somente por strings e 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.
O programa faz a impressão do arquivo em ordem inversa. O trecho com as linhas
“fseek(arq,0,SEEK_END);” e “ pos=ftell(arq);” servem para coletar o tamanho do arquivo.
O programa faz a impressão do arquivo em ordem inversa. O trecho com as linhas
“fseek(arq,0,SEEK_END);” e “pos=ftell(arq);” servem para coletar o tamanho do arquivo.
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
1 em 1 pontos
12/2/2020 Blackboard Learn
https://fmu.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller 4/6
Pergunta 6
Resposta Selecionada:  
Resposta Correta:  
Feedback
da
resposta:
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. Cadavalor 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; 
} 
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 7
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
1 em 1 pontos
12/2/2020 Blackboard Learn
https://fmu.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller 5/6
Resposta Selecionada:  
Resposta Correta:  
Feedback
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 8
Resposta Selecionada:  
Resposta Correta:  
Feedback
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.
a+.
ab+.
Infelizmente a sua resposta está incorreta. Para responder essa questão, observe melhor
a consideração final “caso o arquivo não exista, será criado um novo e caso exista, os
dados deverão ser mantidos” e as funções utilizadas para ler e gravar no arquivo. Que
tipo de abertura corresponde à essas informações?
Pergunta 9
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)
0 em 1 pontos
1 em 1 pontos
12/2/2020 Blackboard Learn
https://fmu.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller 6/6
Quarta-feira, 2 de Dezembro de 2020 23h59min10s BRT
Resposta Selecionada:  
Resposta Correta:  
Feedback
da
resposta:
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 10
Resposta Selecionada:  
Resposta Correta:  
Feedback
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 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.
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.
1 em 1 pontos

Outros materiais