RESUMO DA AULA, CRIBS
Информатика и информационные технологии. Динамическая память (конспект лекций) Diretório / Notas de aula, folhas de dicas Índice (expandir) PALESTRA Nº 6. Arquivos 1. Arquivos. Operações de arquivo A introdução do tipo de arquivo na linguagem Pascal é causada pela necessidade de fornecer a capacidade de trabalhar com dispositivos de computador periféricos (externos) projetados para entrada, saída e armazenamento de dados. O tipo de dados do arquivo (ou arquivo) define uma coleção ordenada de um número arbitrário de componentes do mesmo tipo. A propriedade comum de uma matriz, conjunto e registro é que o número de seus componentes é determinado no estágio de escrita do programa, enquanto o número de componentes de arquivo no texto do programa não é determinado e pode ser arbitrário. Ao trabalhar com arquivos, são realizadas operações de E/S. Uma operação de entrada significa transferir dados de um dispositivo externo (de um arquivo de entrada) para a memória principal de um computador, uma operação de saída é uma transferência de dados da memória principal para um dispositivo externo (para um arquivo de saída). Os arquivos em dispositivos externos geralmente são chamados de arquivos físicos. Seus nomes são determinados pelo sistema operacional. Em programas Pascal, os nomes dos arquivos são especificados usando strings. Para trabalhar com arquivos no programa, você deve definir uma variável de arquivo. Pascal suporta três tipos de arquivos: arquivos de texto, arquivos componentes, arquivos não digitados. As variáveis de arquivo que são declaradas em um programa são chamadas de arquivos lógicos. Todos os procedimentos e funções básicos que fornecem E/S de dados funcionam apenas com arquivos lógicos. O arquivo físico deve ser associado ao arquivo lógico antes que os procedimentos de abertura do arquivo possam ser executados. Arquivos de texto Um lugar especial na linguagem Pascal é ocupado por arquivos de texto, cujos componentes são do tipo caractere. Para descrever arquivos de texto, a linguagem define o tipo padrão Texto: var TF1, TF2: Texto; Os arquivos de texto são uma sequência de linhas e as linhas são uma sequência de caracteres. As linhas são de comprimento variável, cada linha termina com um terminador de linha. Arquivos de componentes Um componente ou arquivo tipado é um arquivo com o tipo declarado de seus componentes. Os arquivos de componentes consistem em representações de máquina de valores de variáveis; eles armazenam dados da mesma forma que a memória do computador. A descrição dos valores do tipo de arquivo é: tipo M = Arquivo de T; onde M é o nome do tipo de arquivo; T - tipo de componente. Os componentes de arquivo podem ser todos os tipos escalares e de tipos estruturados - matrizes, conjuntos, registros. Em quase todas as implementações específicas da linguagem Pascal, a construção "arquivo de arquivos" não é permitida. Todas as operações em arquivos de componentes são executadas usando procedimentos padrão. Escreva(f,X1,X2,...XK) Arquivos não digitados Arquivos não digitados permitem que você grave seções arbitrárias da memória do computador no disco e as leia do disco para a memória. Os arquivos não tipados são descritos da seguinte forma: var f: Arquivo; Agora listamos os procedimentos e funções para trabalhar com diferentes tipos de arquivos. 1. Procedimento Assign(var F; FileName: String); O procedimento AssignFile mapeia um nome de arquivo externo para uma variável de arquivo. F é uma variável de arquivo de qualquer tipo de arquivo, FileName é uma expressão String ou uma expressão PChar se a sintaxe estendida for permitida. Todas as outras operações com F são realizadas com um arquivo externo. Você não pode usar um procedimento com uma variável de arquivo já aberta. 2. Procedimento Fechar(varF); O procedimento quebra o vínculo entre a variável de arquivo e o arquivo de disco externo e fecha o arquivo. F é uma variável de arquivo de qualquer tipo de arquivo, aberta pelos procedimentos Reset, Rewrite ou Append. O arquivo externo associado a F é totalmente modificado e então fechado, liberando o descritor de arquivo para reutilização. A diretiva {SI+} permite tratar erros durante a execução do programa usando tratamento de exceção. Com a diretiva {$1-} desativada, você deve usar IOResult para verificar erros de E/S. 3.Função Eof(var F): Booleana; {Arquivos digitados ou não digitados} Função Eof[(var F: Text)]: Booleana; {arquivos de texto} Verifica se a posição atual do arquivo é o final do arquivo. Eof(F) retorna True se a posição atual do arquivo for após o último caractere do arquivo ou se o arquivo estiver vazio; caso contrário, Eof(F) retornará False. A diretiva {SI+} permite lidar com erros durante a execução do programa usando tratamento de exceção. Com a diretiva {SI-} desativada, você deve usar IOResult para verificar erros de E/S. 4. Apagar Procedimento (var F); Exclui o arquivo externo associado a F. F é uma variável de arquivo de qualquer tipo de arquivo. Antes de chamar o procedimento Erase, o arquivo deve ser fechado. A diretiva {SI+} permite lidar com erros durante a execução do programa usando tratamento de exceção. Com a diretiva {SI-} desativada, você deve usar IOResult para verificar erros de E/S. 5. Função FileSize(var F): Integer; Retorna o tamanho em bytes do arquivo F No entanto, se F for um arquivo digitado, FileSize retornará o número de registros no arquivo. O arquivo deve ser aberto antes de usar a função FileSize. Se o arquivo estiver vazio, FileSize(F) retornará zero. F é uma variável de qualquer tipo de arquivo. 6.Função FilePos(var F): LongInt; Retorna a posição atual de um arquivo dentro de um arquivo. Antes de usar a função FilePos, o arquivo deve estar aberto. A função FilePos não é usada com arquivos de texto. F é uma variável de qualquer tipo de arquivo, exceto o tipo Texto. 7. Procedimento Reset(var F [: File; RecSize: Word]); Abre um arquivo existente. F é uma variável de qualquer tipo de arquivo associado a um arquivo externo usando AssignFile. RecSize é uma expressão opcional que é usada se F for um arquivo sem tipo. Se F for um arquivo sem tipo, RecSize determinará o tamanho do registro usado ao transferir dados. Se RecSize for omitido, o tamanho do registro padrão será de 128 bytes. O procedimento de Redefinição abre um arquivo externo existente associado à variável de arquivo F. Se não houver nenhum arquivo externo com esse nome, ocorrerá um erro em tempo de execução. Se o arquivo associado a F já estiver aberto, primeiro ele será fechado e depois reaberto. A posição atual do arquivo é definida para o início do arquivo. 8. Procedimento Reescrever(var F: Arquivo [; Recsize: Word]); Cria e abre um novo arquivo. F é uma variável de qualquer tipo de arquivo associado a um arquivo externo usando AssignFile. RecSize é uma expressão opcional que é usada se F for um arquivo sem tipo. Se F for um arquivo sem tipo, RecSize determinará o tamanho do registro usado ao transferir dados. Se RecSize for omitido, o tamanho do registro padrão será de 128 bytes. O procedimento Rewrite cria um novo arquivo externo com o nome associado a F. Se já existir um arquivo externo com o mesmo nome, ele é excluído e um novo arquivo vazio é criado. 9. Procura de Procedimento(var F; N: LongInt); Move a posição atual do arquivo para o componente especificado. Você só pode usar o procedimento com arquivos abertos digitados ou não digitados. A posição atual do arquivo F é movida para o número N. O número do primeiro componente do arquivo é 0. A instrução Seek(F, FileSize(F)) move a posição do arquivo atual para o final do arquivo. 10. Anexo de Procedimento(var F: Texto); Abre um arquivo de texto existente para anexar informações ao final do arquivo (anexar). Se um arquivo externo com o nome fornecido não existir, ocorrerá um erro em tempo de execução. Se o arquivo F já estiver aberto, ele fecha e reabre. A posição atual do arquivo é definida para o final do arquivo. 11.Função Eoln[(var F: Text)]: Booleano; Verifica se a posição atual do arquivo é o final de uma linha em um arquivo de texto. Eoln(F) retorna True se a posição atual do arquivo estiver no final de uma linha ou arquivo; caso contrário, Eoln(F) retornará Falso. 12. Procedimento Leitura(F, V1 [, V2,..., Vn]); {Arquivos digitados e não digitados} Procedimento Ler([var F: Texto;] V1 [, V2,..., Vn]); {arquivos de texto} Para arquivos digitados, o procedimento lê o componente do arquivo em uma variável. Em cada leitura, a posição atual no arquivo avança para o próximo elemento. Para arquivos de texto, um ou mais valores são lidos em uma ou mais variáveis. Com variáveis String, Read lê todos os caracteres até (mas não incluindo) o próximo marcador de fim de linha, ou até que Eof(F) seja avaliado como True. A cadeia de caracteres resultante é atribuída à variável. No caso de uma variável do tipo inteiro ou real, o procedimento aguarda uma sequência de caracteres que formam um número de acordo com as regras da sintaxe Pascal. A leitura pára quando o primeiro espaço, tabulação ou fim de linha é encontrado ou quando Eof(F) é avaliado como Verdadeiro. Se a string numérica não corresponder ao formato esperado, ocorrerá um erro de E/S. 13. Procedimento Readln([var F: Texto;] V1 [, V2..., Vn]); É uma extensão do procedimento Read e é definido para arquivos de texto. Lê uma sequência de caracteres no arquivo, incluindo o marcador de fim de linha, e move para o início da próxima linha. Chamar a função Readln(F) sem parâmetros move a posição atual do arquivo para o início da próxima linha, se houver, caso contrário, salta para o final do arquivo. 14. Função SeekEof[(var F: Text)]: Booleano; Retorna o final do arquivo e só pode ser usado para arquivos de texto abertos. Normalmente usado para ler valores numéricos de arquivos de texto. 15. Função SeekEoln[(var F: Text)]: Booleano; Retorna o terminador de linha em um arquivo e só pode ser usado para arquivos de texto abertos. Normalmente usado para ler valores numéricos de arquivos de texto. 16. Procedimento Escrever([var F: Texto;] P1 [, P2,..., Pn]); {arquivos de texto} Grava um ou mais valores em um arquivo de texto. Cada parâmetro de entrada deve ser do tipo Char, um dos tipos inteiros (Byte, ShortInt, Word, Longint, Cardinal), um dos tipos de ponto flutuante (Single, Real, Double, Extended, Currency), um dos tipos string ( PChar, AisiString , ShortString) ou um dos tipos booleanos (Boolean, Bool). Procedimento Escrever(F, V1,..., Vn); {Arquivos digitados} Grava uma variável em um componente de arquivo. As variáveis VI...., Vn devem ser do mesmo tipo que os elementos do arquivo. Cada vez que uma variável é escrita, a posição atual no arquivo é movida para o próximo elemento. 17. Procedimento Writeln([var F: Texto;] [P1, P2,..., Pn]); {arquivos de texto} Executa uma operação de gravação e, em seguida, coloca um marcador de fim de linha no arquivo. Chamar Writeln(F) sem parâmetros grava um marcador de fim de linha no arquivo. O arquivo deve estar aberto para saída. 2. Módulos. Tipos de módulos Um módulo (1Ж1Т) em Pascal é uma biblioteca de sub-rotinas especialmente projetada. Um módulo, ao contrário de um programa, não pode ser lançado para execução por conta própria, ele só pode participar da construção de programas e outros módulos. Os módulos permitem que você crie bibliotecas pessoais de procedimentos e funções e construa programas de praticamente qualquer tamanho. Um módulo em Pascal é uma unidade de programa armazenada separadamente e compilada independentemente. Em geral, um módulo é uma coleção de recursos de software destinados ao uso por outros programas. Os recursos do programa são entendidos como quaisquer elementos da linguagem Pascal: constantes, tipos, variáveis, sub-rotinas. O módulo em si não é um programa executável, seus elementos são usados por outras unidades de programa. Todos os elementos do programa do módulo podem ser divididos em duas partes: 1) elementos de programa destinados ao uso por outros programas ou módulos, tais elementos são chamados de visíveis fora do módulo; 2) elementos de software que são necessários apenas para o funcionamento do próprio módulo, são chamados de invisíveis (ou ocultos). De acordo com isso, o módulo, além do cabeçalho, contém três partes principais, denominadas interface, executável e inicializada. Em geral, um módulo tem a seguinte estrutura: unidade <nome do módulo>; {título do módulo} interface {descrição dos elementos de programa visíveis do módulo} implementação {descrição dos elementos de programação ocultos do módulo} começar {instruções de inicialização do elemento do módulo} final. Em um caso particular, o módulo não pode conter uma parte de implementação e uma parte de inicialização, então a estrutura do módulo será a seguinte: unidade <nome do módulo>; {título do módulo} interface {descrição dos elementos de programa visíveis do módulo} implementação final. A utilização de procedimentos e funções em módulos tem suas peculiaridades. O cabeçalho da sub-rotina contém todas as informações necessárias para chamá-la: nome, lista e tipo de parâmetros, tipo de resultado para funções. Essas informações devem estar disponíveis para outros programas e módulos. Por outro lado, o texto de uma sub-rotina que implementa seu algoritmo não pode ser utilizado por outros programas e módulos. Portanto, os cabeçalhos de procedimentos e funções são colocados na parte de interface do módulo, e o texto é colocado na parte de implementação. A parte de interface do módulo contém apenas cabeçalhos visíveis (acessíveis a outros programas e módulos) de procedimentos e funções (sem a palavra de serviço forward). O texto completo do procedimento ou função é colocado na parte de implementação, e o cabeçalho não pode conter uma lista de parâmetros formais. O código fonte do módulo deve ser compilado usando a diretiva Make do submenu Compile e gravado em disco. O resultado da compilação do módulo é um arquivo com extensão . TPU (Unidade Turbo Pascal). O nome base do módulo é obtido do cabeçalho do módulo. Para conectar um módulo ao programa, você deve especificar seu nome na seção de descrição do módulo, por exemplo: usa Crt, Gráfico; Caso os nomes das variáveis na parte de interface do módulo e no programa que utiliza este módulo sejam os mesmos, a referência será à variável descrita no programa. Para se referir a uma variável declarada em um módulo, você deve usar um nome composto que consiste no nome do módulo e no nome da variável, separados por um ponto. O uso de nomes compostos se aplica não apenas a nomes de variáveis, mas a todos os nomes declarados na parte de interface do módulo. O uso recursivo de módulos é proibido. Se um módulo tiver uma seção de inicialização, as instruções nessa seção serão executadas antes que o programa que usa esse módulo comece a ser executado. Vamos listar os tipos de módulos. 1. Módulo do SISTEMA. O módulo SYSTEM implementa rotinas de suporte de nível inferior para todos os recursos internos, como E/S, manipulação de strings, operações de ponto flutuante e alocação dinâmica de memória. O módulo SYSTEM contém todas as rotinas e funções padrão e integradas do Pascal. Qualquer sub-rotina Pascal que não faça parte do Pascal padrão e não seja encontrada em nenhum outro módulo está contida no módulo System. Este módulo é usado automaticamente em todos os programas e não precisa ser especificado na instrução uses. 2. Módulo DOS. O módulo Dos implementa várias rotinas e funções Pascal que são equivalentes às chamadas DOS mais usadas, como GetTime, SetTime, DiskSize e assim por diante. 3. Módulo CRT. O módulo CRT implementa vários programas poderosos que fornecem controle total sobre os recursos do PC, como controle de modo de tela, códigos de teclado estendidos, cores, janelas e sons. O módulo CRT só pode ser utilizado em programas que rodam em computadores pessoais IBM PC, PC AT, PS/2 da IBM e são totalmente compatíveis com os mesmos. Uma das principais vantagens do uso do módulo CRT é a maior velocidade e flexibilidade nas operações da tela. Programas que não funcionam com o módulo CRT exibem informações na tela usando o sistema operacional DOS, que está associado a uma sobrecarga adicional. Ao usar o módulo CRT, as informações de saída são enviadas diretamente para o sistema básico de entrada/saída (BIOS) ou, para operações ainda mais rápidas, diretamente para a memória de vídeo. 4. Módulo GRÁFICO. Usando os procedimentos e funções incluídos neste módulo, você pode criar vários gráficos na tela. 5. Módulo OVERLAY. O módulo OVERLAY permite reduzir os requisitos de memória de um programa DOS em modo real. De fato, é possível escrever programas que excedam a quantidade total de memória disponível, pois apenas parte do programa estará na memória em um determinado momento. Autor: Tsvetkova A.V. << Voltar: Arquivos (Arquivos. Operações de arquivo. Módulos. Tipos de módulos) >> Encaminhar: Estruturas de dados abstratas (Estruturas de dados abstratas. Pilhas. Filas) Recomendamos artigos interessantes seção Notas de aula, folhas de dicas: ▪ Pediatria Hospitalar. Notas de aula Veja outros artigos seção Notas de aula, folhas de dicas. Leia e escreva útil comentários sobre este artigo. Últimas notícias de ciência e tecnologia, nova eletrônica: A existência de uma regra de entropia para o emaranhamento quântico foi comprovada
09.05.2024 Mini ar condicionado Sony Reon Pocket 5
09.05.2024 Energia do espaço para Starship
08.05.2024
Outras notícias interessantes: ▪ Dispositivo compacto para visualização da atividade cerebral ▪ Rede Li-Fi local para o desenvolvimento da Internet das coisas ▪ A condutividade do cristal é aumentada em 400 vezes ▪ Turbina Eólica Silenciosa Liam F1 ▪ Células sexuais cultivadas a partir de células-tronco Feed de notícias de ciência e tecnologia, nova eletrônica
Materiais interessantes da Biblioteca Técnica Gratuita: ▪ seção do site da Antena. Seleção de artigos ▪ artigo de Aurélio Agostinho (Bem-aventurado Agostinho). Aforismos famosos ▪ artigo Como Bill Gates se beneficiou ao escrever um programa de horário escolar? Resposta detalhada ▪ artigo Diretor de edição de programas de televisão e rádio. Descrição do trabalho
Deixe seu comentário neste artigo: Todos os idiomas desta página Página principal | Biblioteca | Artigos | Mapa do Site | Revisões do site www.diagrama.com.ua |