0% acharam este documento útil (0 voto)
175 visualizações9 páginas

Técnicas de Programação Atividade 4 (A4)

Enviado por

Giovanni Moreno
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
175 visualizações9 páginas

Técnicas de Programação Atividade 4 (A4)

Enviado por

Giovanni Moreno
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 9

1 em 1 pontos

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","___");
https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 1/9
27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ...

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.

Resposta Selecionada: . r ; w ; fputs ; atividade_tmp.txt ; atividade.txt .

Resposta Correta: . r ; w ; fputs ; atividade_tmp.txt ; atividade.txt .

Comentário Parabéns! Sua resposta foi a correta! Você observou corretamente os tipos de
da abertura necessários para o arquivo origem das informações e para o arquivo
resposta: 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
Pergunta 2
Na linguagem C, encontramos dois tipos de arquivos: os arquivos textuais e os arquivos binários.

https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 2/9
27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ...

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.

Resposta Selecionada: B, T, T, B, A.

Resposta Correta: B, T, T, B, A.

Comentário Parabéns! Sua resposta foi a correta! As funções “ fputs()” e “ fputc()” são
da utilizadas exclusivamente nos arquivos textuais para a gravação de strings e de
resposta: 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.

1 em 1 pontos
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;
https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 3/9
27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ...

}
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.

Resposta Selecionada: . r ; fgets ; prodB*3 .

Resposta Correta: . r ; fgets ; prodB*3 .

Comentário Parabéns! Sua resposta foi a correta! Você associou corretamente os trechos de
da código às lacunas observando de maneira certa o modo de abertura do arquivo
resposta: (“ r”), a função de leitura de uma linha a partir de um arquivo textual (“
fgets()”) e o deslocamento dentro da linha (“ prodB*3”).

1 em 1 pontos
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)
{

https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 4/9
27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ...

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 Parabéns! Sua resposta foi a correta! Você deve ter notado que podemos salvar
da a posição do ponteiro do arquivo para que possamos restaurar a posição e
resposta: sobrescrever o conteúdo. Para isso, foram usadas as funções “ ftell()” e “
fseek()”, respectivamente.

1 em 1 pontos
Pergunta 5
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 que apresente a sequência correta.

Resposta Selecionada: B, T, T, B.

Resposta Correta:
https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 5/9
27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ...

B, T, T, B.

Comentário Parabéns! Sua resposta foi a correta! Realmente, os arquivos binários possuem
da como vantagens a sua maior e ciência no armazenamento e manipulação das
resposta: informações armazenadas pois fazem uma correspondência exata com os tipos
de dados manipulados pelos próprios programas.

1 em 1 pontos
Pergunta 6
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.

Resposta Selecionada: ab+.

Resposta Correta: ab+.

Comentário Parabéns! Sua resposta foi a correta! Você observou corretamente a


da consideração nal: “ caso o arquivo não exista, será criado um novo e caso
resposta: 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
https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 6/9
27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ...

seria criado. Então, sobra o modo “ a+”. Pelo fato de aparecer “ fwrite()” e “
fread()”, então, o arquivo é binário. Sendo assim, “ ab+”.

1 em 1 pontos
Pergunta 7
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 Parabéns! Sua resposta foi a correta! Você observou bem que foi incluído o
da símbolo ”+”, que indica que operações de escrita poderão ser realizadas além
resposta: 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.

1 em 1 pontos
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.

https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 7/9
27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ...

Resposta Selecionada: . arq=fopen("arq.dat","rb+"); .

Resposta Correta: . arq=fopen("arq.dat","rb+"); .

Comentário Parabéns! Sua resposta foi a correta! O fato do código apresentar as funções “
da fread()” e “ fwrite()” já determina que está sendo manipulado um arquivo
resposta: 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+”.

1 em 1 pontos
Pergunta 9
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.

Resposta Selecionada: F, V, V, F.

Resposta Correta: F, V, V, F.

Comentário Parabéns! Sua resposta foi a correta! Descritores de arquivos são estruturas
da mantidas pelo sistema operacional e são endereçados através dos ponteiros de
resposta: 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
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()
{

https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 8/9
27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ...

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 Parabéns! Sua resposta foi a correta! Você associou acertadamente o modo de
da abertura de arquivo textual para somente leitura (parâmetro “r”), usou a função
resposta: correta para ler um caractere do arquivo textual (“ getc()”) e testou
corretamente o m do arquivo (“ carac == EOF”).

Terça-feira, 27 de Abril de 2021 11h11min44s BRT

https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 9/9

Você também pode gostar