Prévia do material em texto
<p>1</p><p>28</p><p>1</p><p>Prof. Ricardo Sonaglio Albano</p><p>Profª. Silvie Guedes Albano</p><p>Linguagem de Programação</p><p>Aula 6</p><p>28</p><p>2</p><p>Conversa Inicial</p><p>28</p><p>3</p><p>Objetivos:</p><p>Estudar sobre a função do Pré-processador</p><p>Discutir sobre o funcionamento e utilização</p><p>de múltiplos arquivos</p><p>Aprender sobre a manipulação de arquivos</p><p>Implementar exemplos práticos</p><p>Bibliotecas Externas e manipulação de</p><p>arquivos</p><p>28</p><p>4</p><p>Assuntos abordados:</p><p>Pré-processador</p><p>Trabalhando com múltiplos arquivos</p><p>Exemplo de múltiplos arquivos</p><p>Manipulação de arquivos</p><p>Aplicações e exemplos</p><p>28</p><p>5</p><p>Pré-processador</p><p>28</p><p>6</p><p>Preparação inicial realizada diretamente no</p><p>código, antes da compilação.</p><p>Atuação do pré-processador é vinculada às</p><p>diretivas, declaradas nas primeiras linhas do</p><p>código</p><p>Pré-processador</p><p>1 2</p><p>3 4</p><p>5 6</p><p>2</p><p>28</p><p>7</p><p>EXE</p><p>Code</p><p>Pré-processador</p><p>Fonte: Albano, 2022</p><p>Aula 6 – Figura 25 – Preprocessor (Fonte: elaborado pelos autores)</p><p>Figura composta (baseada na figura 1 – Aula 1)</p><p>PreprocessorPreprocessor LinkerLinkerCompilerCompiler AssemblerAssembler</p><p>Libraries</p><p>Estamos aqui!</p><p>28</p><p>8</p><p>Tarefas executadas:</p><p>Inclusão de arquivos de cabeçalho (header</p><p>files, .h)</p><p>Expansão de macros</p><p>Remoção de comentários</p><p>Definição de constantes, entre outros</p><p>Pré-processador</p><p>28</p><p>9</p><p>Diretivas mais utilizadas:</p><p>#include: cabeçalho de um arquivo externo.</p><p>#include</p><p>#include “nome_arquivo.h”</p><p>#define: Substituição de texto (maiúsculas)</p><p>Constante simbólica e macro</p><p>Pré-processador</p><p>28</p><p>10</p><p>Trabalhando com múltiplos arquivos</p><p>28</p><p>11</p><p>Conjunto de arquivos (.c e .h), cada qual</p><p>responsável por pequenas funções e</p><p>vinculados entre si</p><p>No processo de compilação de múltiplos</p><p>arquivos, gera-se apenas um único arquivo</p><p>executável</p><p>Trabalhando com múltiplos arquivos</p><p>28</p><p>12</p><p>Etapas:</p><p>Criação de arquivos fontes e respectivos</p><p>arquivos cabeçalhos</p><p>Compilação de arquivos fontes, gerando um</p><p>executável combinado</p><p>Compilação independente ou múltipla</p><p>Trabalhando com múltiplos arquivos</p><p>7 8</p><p>9 10</p><p>11 12</p><p>3</p><p>28</p><p>13</p><p>Code</p><p>Code</p><p>Code</p><p>.i</p><p>.i</p><p>.s</p><p>.s</p><p>EXE</p><p>.o</p><p>.o</p><p>Trabalhando com múltiplos arquivos</p><p>Fonte: Albano, 2022</p><p>.c</p><p>.c</p><p>.h</p><p>Aula 6 – Figura 26 – Arquivos múltiplos (Fonte: elaborado pelos autores)</p><p>28</p><p>14</p><p>Exemplo de múltiplos arquivos</p><p>28</p><p>15</p><p>Manipulação de arquivos</p><p>28</p><p>16</p><p>Processamento de dados:</p><p>Valores alocados na memória e eliminados</p><p>na conclusão da execução</p><p>Dados armazenados em arquivos no disco</p><p>Manipulação de arquivos</p><p>28</p><p>17</p><p>Tipos de arquivos</p><p>Textos</p><p>Caracteres: putc() e getc()</p><p>String: fputs() e fgets()</p><p>Dados formatados: fprintf() e fscanf()</p><p>Binários (bytes): fwrite() e fread()</p><p>Manipulação de arquivos</p><p>28</p><p>18</p><p>Ponteiro de arquivo (tipo FILE)</p><p>Aponta para o endereço (posição 0) do</p><p>arquivo</p><p>Navega pelo conteúdo, percorrendo todas</p><p>as posições do arquivo</p><p>FILE *ponteiro;</p><p>Manipulação de arquivos</p><p>13 14</p><p>15 16</p><p>17 18</p><p>4</p><p>28</p><p>19</p><p>Funções:</p><p>Abertura – fopen()</p><p>Manipulação de arquivos</p><p>MODOS DE LEITURA</p><p>Texto Binário Ação</p><p>"r" "rb" Leitura (read).</p><p>"w" "wb" Gravação (write). Sobreposição.</p><p>"a" "ab" Adição (append).</p><p>“r+”</p><p>“w+”</p><p>“a+”</p><p>"r+b"</p><p>"w+b"</p><p>"a+b"</p><p>Modificador ‘+’, obriga a criação do arquivo.</p><p>Fonte: Albano, 2022</p><p>28</p><p>20</p><p>Fechamento</p><p>fclose(arquivo)</p><p>Renomeando</p><p>rename (nome_atual, novo_nome)</p><p>Exclusão</p><p>remove(nome_arquivo)</p><p>Manipulação de arquivos</p><p>28</p><p>21</p><p>Leitura e gravação</p><p>Caractere a caractere (texto):</p><p>Gravação:</p><p>putc (caractere, ponteiro)</p><p>Leitura:</p><p>getc (ponteiro)</p><p>Status EOF (End Of File)</p><p>Manipulação de arquivos</p><p>28</p><p>22</p><p>Leitura e gravação</p><p>String (texto):</p><p>Gravação:</p><p>fputs (string, ponteiro)</p><p>Leitura:</p><p>fgets (string, tamanho, ponteiro)</p><p>Manipulação de arquivos</p><p>28</p><p>23</p><p>Leitura e gravação</p><p>Dados formatados (texto):</p><p>Gravação:</p><p>fprintf (ponteiro, “texto”, argumentos)</p><p>Leitura:</p><p>fscanf (ponteiro, “operador”,</p><p>&argumento)</p><p>Manipulação de arquivos</p><p>28</p><p>24</p><p>Leitura e gravação</p><p>Registros (binário):</p><p>Gravação:</p><p>fwrite (vetor, tamanho, quantidade,</p><p>ponteiro)</p><p>Leitura:</p><p>fread (endereço, tamanho, ocorrência,</p><p>ponteiro)</p><p>Manipulação de arquivos</p><p>19 20</p><p>21 22</p><p>23 24</p><p>5</p><p>28</p><p>25</p><p>Acesso aleatório – fseek()</p><p>Acesso de forma aleatória, movimentando o</p><p>ponteiro para qualquer posição do arquivo</p><p>em bytes</p><p>O uso do Sizeof() é importante para a</p><p>definição do deslocamento no arquivo</p><p>fseek (ponteiro, qtd_bytes, origem)</p><p>Manipulação de arquivos</p><p>28</p><p>26</p><p>Manipulação de arquivos</p><p>MACROS DE PESQUISA</p><p>Origem Descrição</p><p>SEEK_SET Início do arquivo. Movimentando o ponteiro uma</p><p>quantidade estipulado de bytes para baixo.</p><p>SEEK_CUR Posição corrente (atual). A pesquisa inicia da</p><p>posição atual e move o ponteiro para baixo a</p><p>quantidade de bytes definida.</p><p>SEEK_END Final do arquivo. Move o ponteiro para cima.</p><p>Fonte: Albano, 2022</p><p>28</p><p>27</p><p>Aplicações e exemplos</p><p>28</p><p>28</p><p>Obrigado por sua atenção e</p><p>muito sucesso para você!</p><p>Agradecimento</p><p>28</p><p>29</p><p>25 26</p><p>27 28</p><p>29</p>