Baixe o app para aproveitar ainda mais
Prévia do material em texto
Revisar envio do teste: ATIVIDADE 4 GRA1033 TÉCNICAS DE PROGRAMAÇÃO PNA (ON) - 201920.1731.03 Unidade 4 Revisar envio do teste: ATIVIDADE 4 Usuário PABLO MATHEUS SOUZA DOS SANTOS Curso GRA1033 TÉCNICAS DE PROGRAMAÇÃO PNA (ON) - 201920.1731.03 Teste ATIVIDADE 4 Iniciado 26/11/19 09:27 Enviado 02/12/19 21:58 Status Completada Resultado da tentativa 0,5 em 2,5 pontos Tempo decorrido 156 horas, 31 minutos Resultados exibidos Respostas enviadas, Respostas corretas, Comentários Pergunta 1 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; } 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); 0 em 0,25 pontos PABLO MATHEUS SOUZA DOS SANTOS ← OK Revisar envio do teste: ATIVIDADE 4 – GRA1033 TÉCNICAS ... https://unifacs.blackboard.com/webapps/assessment/review/review.jsp?a... 1 of 7 02/12/2019 22:02 Resposta Selecionada: Resposta Correta: Feedback da resposta: custoStr[3]='\x0'; fclose(arq); printf("Custo = %d",atoi(custoStr)); return 0; } Assinale a alternativa que você julgue ser a correta. . r ; fputs ; prodB*3 . . r ; fgets ; prodB*3 . Infelizmente a sua resposta está incorreta. Para responder essa questão, reveja as funções para manipulação de arquivos textos e também, reflita: Qual o modo para ser abrir um arquivo textual somente para leitura? Pergunta 2 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. w b+. 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 3 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. 0 em 0,25 pontos 0 em 0,25 pontos Revisar envio do teste: ATIVIDADE 4 – GRA1033 TÉCNICAS ... https://unifacs.blackboard.com/webapps/assessment/review/review.jsp?a... 2 of 7 02/12/2019 22:02 Resposta Selecionada: Resposta Correta: Feedback da resposta: ( ) 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. V, V, F, 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. Pergunta 4 Resposta Selecionada: Resposta Correta: Feedback 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. Caso o arquivo não exista, será criado um arquivo novo. Caso exista, o seu conteúdo será mantido. 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. Infelizmente a sua resposta está incorreta. Para responder essa questão, reveja os modos de abertura e reflita: o que indica o símbolo 'b'? Qual a ação que o sinal “+” faz sobre o “w”? Pergunta 5 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); 0 em 0,25 pontos 0 em 0,25 pontos Revisar envio do teste: ATIVIDADE 4 – GRA1033 TÉCNICAS ... https://unifacs.blackboard.com/webapps/assessment/review/review.jsp?a... 3 of 7 02/12/2019 22:02 Resposta Selecionada: Resposta Correta: Feedback da resposta: 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 correta. O trecho com as linhas “ fseek(arq,0,SEEK_END);” e “ pos=ftell(arq);” está a mais, pois logo em seguida é feito um novo posicionamento no 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. Infelizmente a sua resposta está incorreta. Para responder essa questão, fazemos-lhe a seguinte pergunta para reflexão: Como encontrar a posição do último elemento do arquivo e, consequentemente, saber o tamanho de um arquivo textual? Pergunta 6 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) { 0,25 em 0,25 pontos Revisar envio do teste: ATIVIDADE 4 – GRA1033 TÉCNICAS ... https://unifacs.blackboard.com/webapps/assessment/review/review.jsp?a... 4 of 7 02/12/2019 22:02 Resposta Selecionada: Resposta Correta: Feedback da resposta: ____(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. . r ; fgets ; feof(arq) . . r ; fgets ; feof(arq) . 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()”. Pergunta 7 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. 0,25 em 0,25 pontos Revisar envio do teste: ATIVIDADE 4 – GRA1033 TÉCNICAS ... https://unifacs.blackboard.com/webapps/assessment/review/review.jsp?a... 5 of 7 02/12/2019 22:02 Resposta Selecionada: Resposta Correta: Feedback da resposta: . 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 fim do arquivo (“ carac == EOF”). Pergunta 8 Resposta Selecionada: Resposta Correta: Feedback da resposta: 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. B, T, B, T. B, T, T, B. Infelizmente a sua resposta está incorreta. Para responder essa questão, reflita sobre como manipulamos os arquivos textuais e binários. Por exemplo, ao nos deparamos com um número no arquivo binário, como coletar efetivamente o seu valor? Pergunta 9 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. V, V, V, F. F, V, V, F. Infelizmente a sua resposta está incorreta. Para responder essa questão, reveja os conceitos de descritores e ponteiros de arquivos e reflita sobre o que vem a ser a abertura do arquivo. Reveja também, os protótipos das funções inerentes à manipulação de arquivos. Pergunta 10 0 em 0,25 pontos 0 em 0,25 pontos 0 em 0,25 pontos Revisar envio do teste: ATIVIDADE 4 – GRA1033 TÉCNICAS ... https://unifacs.blackboard.com/webapps/assessment/review/review.jsp?a... 6 of 7 02/12/2019 22:02 Segunda-feira, 2 de Dezembro de 2019 22h01min50s BRT Resposta Selecionada: Resposta Correta: Feedback da resposta: 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. . arq=fopen("arq.dat","wb+"); . . arq=fopen("arq.dat","rb+"); . Infelizmente a sua resposta está incorreta. Para responder essa questão, reflita sobre as seguintes indagações: Que tipo de arquivo é manipulado pelas funções “ fread()” e “ fwrite()”? Em qual modo de abertura o arquivo deverá existir previamente? Como mencionamos, no modo de abertura, que serão realizadas operações de leitura e de escrita? Revisar envio do teste: ATIVIDADE 4 – GRA1033 TÉCNICAS ... https://unifacs.blackboard.com/webapps/assessment/review/review.jsp?a... 7 of 7 02/12/2019 22:02
Compartilhar