Quando pensamos em arquivo nos vem em mente aquele armário com um monte de pastas para guardar informações. É exatamente essa a ideia de arquivos, um local para armazenar informações e resgatá-las quando for necessário.
LEAL, Gislaine Camila Lapasini. Algoritmos e Lógica de Programação II. Maringá: Unicesumar, 2016.
Conhecendo os conceitos sobre arquivos e com base em sua habilidade em inferir conclusões, leia as asserções abaixo:
I. Ao realizar uma operação com a função fgetc() em um arquivo, o programa estará realizando entrada de dados.
PORQUE
II. A função fgetc() permite que dados sejam copiados de um arquivo arbitrário (salvo em HD) para o programa em execução (salvo em memória).
A respeito de tais asserções, assinale a opção correta.
Alternativas
Alternativa 1:
As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I.
Alternativa 2:
As asserções I e II são proposições verdadeira mas a II não é uma justificativa correta da I.
Alternativa 3:
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
Alternativa 4:
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
Alternativa 5:
As asserções I e II são proposições falsas.
Soluções para a tarefa
A linguagem C utiliza o conceito de fluxo (stream) de dados, que podem ser manipulados em dois diferentes tipos de fluxos: fluxos de texto e fluxos binários. O fluxo de texto é composto por uma seqüência de caracteres, que pode ou não ser dividida em linhas terminadas por um carácter de final de linha, mas esse caractere não é obrigatório. Já o fluxo binário é composto por uma seqüência de bytes lidos, sem tradução, diretamente do dispositivo externo.
As funções de Entrada e Saída normalmente utilizadas estão armazenadas na biblioteca stdio.h. Sendo algumas das mais comuns abaixo:
- putc(), fputc() - Escrever caractere em um arquivo
- getc(), fgetc() - Ler caractere de um arquivo
- fprintf(), fscanf() - Equivale ao printf e scanf, respectivamente, usando stream
- sscanf() - Equivale ao scanf() usando string
Com isso em mente, podemos analisar melhor as afimativas.
Afirmativa I é verdadeira, pois fgetc() é uma função de entrada de dados em C, já que ao abrir o arquivo e utilizar essa função estamos lendo os caracteres contidos nele.
Afirmativa II é verdadeira, pois ao abrirmos um arquivo salvo no HD, através da função fopen(), por exemplo, e atribuirmos o carácter lido por meio da função de entrada fgetc() a uma variável, o que for lido será copiado para essa variável e, assim, podemos utiliza-los ao longo do código, como no trecho de código abaixo, que mostra um contador de caracteres:
do {
caractere = fgetc(arquivo);
if (caractere == '\n') {
contagem++;
}
} while(caractere != EOF);
Logo, podemos concluir que a alternativa correta é a 1, pois as asserções I e II são verdadeiras, e a assertiva II justifica corretamente a I, já que demonstra seu uso.
Espero ter ajudado!
Resposta:
Alternativa I: Ambas são verdadeiras e a II é justificativa da I.
Explicação:
Conforme já explicado pelo amigo abaixo.