Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Atividade A3 
Técnicas de Programação 
 Pergunta 1 
 
 
 
 ​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]; 
 ​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> 
 
 
 
Pergunta 2 
 
 
 
 ​1 em 1 pontos 
 
 
 
 ​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: 
. ​r​ ; ​w​ ; ​fputs ; atividade_tmp.txt​ ; ​atividade.txt ​. 
Resposta Correta: 
. ​r​ ; ​w​ ; ​fputs ; atividade_tmp.txt​ ; ​atividade.txt ​. 
Feedbac
k 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 “ ​fputs()​” para a gravação no 
arquivo temporário e os parâmetros da função “ ​rename()​”. 
 
 
 
Pergunta 3 
 
 
 
 ​1 em 1 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: 
4, 2, 3, 5, 1. 
Resposta Correta: 
4, 2, 3, 5, 1. 
Feedbac
k da 
resposta
: 
Parabéns! Sua resposta foi a correta! É realmente esta a 
sequência! Apenas podemos realizar, por exemplo, operações de 
escrita se o arquivo estiver devidamente aberto. Para abrir, 
devemos usar a função “ ​fopen()​” sobre um ponteiro de arquivo “ 
FILE *​”. Depois da função “ ​fopen()​”, é conveniente testar se a 
abertura foi bem sucedida. Após o uso, o arquivo deverá ser 
fechado com “ ​fclose()​”. 
 
 
 
Pergunta 4 
 
 
 
 ​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: 
Apenas a função da linha III não pode retornar EOF. 
Resposta Correta: 
Apenas a função da linha III não pode retornar EOF. 
Feedbac
k 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 5 
 
 
 
 ​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: 
B, T, T, B. 
Resposta Correta: 
B, T, T, B. 
Feedbac
k 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 6 
 
 
 
 ​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: 
B, T, T, B, A. 
Resposta Correta: 
B, T, T, B, A. 
Feedbac
k 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. 
 
 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>...<int​n​,float​n​>​. 
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 quevocê julgue ser a correta. 
 
 
 
Pergunta 7 
 
 
 
 ​1 em 1 pontos 
 
 
 
 
 
 
 
Resposta Selecionada: 
. ​int ; float ; wb ​. 
Resposta Correta: 
. ​int ; float ; wb ​. 
Feedbac
k 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 “ 
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. 
 
 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. 
 
 
 
Pergunta 8 
 
 
 
 ​1 em 1 pontos 
 
 
 
 
 
 
 
Resposta Selecionada: 
F, V, V, F. 
Resposta Correta: 
F, V, V, F. 
Feedbac
k 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. 
 
 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) 
 ​{ 
 ​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. 
 
 
 
 
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)​ . 
Feedbac
k 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 “ ​ftell()​” e “ ​fseek()​”, 
 
 
Pergunta 9 
 
 
 
 ​1 em 1 pontos 
 
 
 
 
respectivamente. 
 
 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. 
 
 
 
Pergunta 10 
 
 
 
 ​1 em 1 pontos 
 
 
 
 
 
 
 
Resposta 
Selecionada
: 
 
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. 
Resposta 
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. 
Feedbac
k 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. 
 
 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: 
. ​r​ ; ​fgets ; feof(arq) ​. 
Resposta Correta: 
. ​r​ ; ​fgets ; feof(arq) ​. 
Feedbac
k 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()​”.

Mais conteúdos dessa disciplina