Buscar

A4 - Técnicas de Programação

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 8 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 8 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

Prévia do material em texto

 Pergunta 1 
1 em 1 pontos
	
	
	
	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. 
	
	
	
	
		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. 
	Comentário 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. 
	
	
	
 Pergunta 2 
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. 
	Comentário 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 3 
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: 
	
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: 
	
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. 
	Comentário 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 4 
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: 
	
. r ; getc ; carac == EOF. 
	Resposta Correta: 
	
. r ; getc ; carac == EOF. 
	Comentário 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 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"; 
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. 
	
	
	
	
		Resposta Selecionada: 
	
ab+. 
	Resposta Correta: 
	
ab+. 
	Comentário 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 “ r+”, o arquivo deveria existir para ser aberto; caso a abertura fosse “ w+”, o arquivo sempre 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 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. 
	Comentário 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 7 
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 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) . 
	Comentário 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()”, respectivamente. 
	
	
	
 Pergunta 8 
1 em 1 pontos
	
	
	
	Suponha a existência de um arquivo onde a primeira posição indica a quantidade de registros armazenados. Após o indicativo da quantidade, o arquivo armazena 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 a lacuna de modo que o programa imprima os valores relativos ao terceiro par “<int><float>”.
#include <stdio.h>
 
int main()
{
FILE *arq;
int valor_int;
float valor_float;
arq=fopen("exercicio.dat","rb+");
if(arq==NULL)
{
printf("Erro de abertura do arquivo.\n");
return 0;
}
fseek(arq,_______________,SEEK_SET);
fread(&valor_int,sizeof(int),1,arq);
fread(&valor_float,sizeof(float),1,arq);
printf("Terceiro registro: int=%d float=%f\n",valor_int,valor_float);
fclose(arq);
return 0;
}
Assinale a alternativa que você julgue ser a correta.
	
	
	
	
		Resposta Selecionada: 
	
( sizeof(int)+sizeof(float))*2+sizeof(int). 
	Resposta Correta: 
	
(sizeof(int)+sizeof(float))*2+sizeof(int). 
	Comentário da resposta: 
	Parabéns! Sua resposta foi a correta! Você analisou corretamente o fato de que o terceiro registro corresponde ao deslocamento multiplicado por dois, pelo fato de que a numeração do registro se inicia em zero. Além do “ (sizeof(int)+sizeof(float))*2”, deve-se adicionar o deslocamento relativo ao valor da quantidade de registros, localizado no início do arquivo. 
	
	
	
 Pergunta 9 
0 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: 
	
. rb ; sizeof(int) ; fwrite ; fwrite . 
	Resposta Correta: 
	
. rb ; sizeof(int) ; fread ; fread . 
	Comentário da resposta: 
	Infelizmente a sua resposta está incorreta. Para responder essa questão, reveja os modos de abertura de arquivo. Reflita, também, qual a função para a leitura de registros de arquivos binários? 
	
	
	
 Pergunta 10 
1 em 1 pontos
	
	
	
	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. 
	
	
	
	
		Resposta Selecionada: 
	
F, V, F, V. 
	Resposta Correta: 
	
F, V, F, V. 
	Comentário da resposta: 
	Parabéns! Sua resposta foi a correta! Pelo fato da função “ fseek()” utilizar, como parâmetro de deslocamento, um tipo “ long int”, valores negativos podem ser colocados para que seja realizado, um deslocamento de retrocesso do ponteiro do arquivo ou a partir do ponto referenciado. Assim como em vetores, a escrita em posições já gravadas provoca a sobreposição de informações.

Outros materiais