Programação de Computadores - ufsj.edu.br · Repita o algoritmo da aula anterior (códigos,...

Preview:

Citation preview

Programação de Computadores

Estrutura de Dados - Parte 2

Prof. Dr. Erivelton Geraldo NepomucenoDepto. Engenharia ElétricaSala 4.23 EL – Prédio do DEPELhttp://www.ufsj.edu.br/nepomuceno nepomuceno@ufsj.edu.br

1/18

ESTRUTURAS DE DADOS → ORGANIZAÇÃO DA INFORMAÇÃO PARA

COMPUTAÇÃO

E QUANDO É NECESSÁRIO REUTILIZAR OS MESMOS DADOS? EM COMPUTAÇÕES DISTINTAS E

SEPARADAS NO TEMPO

ARMAZENAMENTO PERMANENTE EM DISPOSITIVOS DE MEMÓRIA

SECUNDÁRIOS: ARQUIVOS! 2/18

Arquivos● Conjunto de registros armazenados

permanentemente● Em dispositivos secundários de memória

○ Discos rígidos ou flexíveis, mídias externas, etc.● Estrutura fora (independente) do ambiente do

algoritmo● “Sobrevive” à execução do algoritmo

3/18

Relembrando: registros● Variáveis compostas heterogêneas● Agrupamentos de dados logicamente

relacionados● Podem ser de tipos diferentes● Cada dado é um componente ou campo do

registro

4/18

Registro: FICHA

Exemplo de dados: FICHA

5/18

Organização de arquivos● Operações sobre arquivos

○ Abertura e fechamento○ Obtenção de um registro○ Inserção de um registro○ Modificação de um registro○ Exclusão de um registro

● Devemos minimizar as operações sobre arquivos → demoradas!

● Tipos de organização:○ Seqüencial○ Direta

6/18

Sintaxe● Declaração

● Exemplodeclare <identificador> arquivo <organização> de <tipo do registro>

IMPORTANTE:O que significa declarar um arquivo?

Instruir o sistema operacional para que aloque espaço adequado (conforme registro) no dispositivo secundário

de memória a ser referenciado pelo identificador! 7/18

8/18

Abertura e fechamento de arquivos● Declaração:

○ Definição de modelos e nomes dos arquivos● Abertura:

○ Associação modelo – arquivo físico○ Instrução de acesso físico○ Tipos:

■ Leitura e/ou escrita

● Fechamento○ Desfaz a associação○ Deve ser usado no fim do algoritmo

9/18

Sintaxe● Abertura

● Exemplo

abra <identificador> <tipo de utilização>

10/18

Sintaxe● Fechamento

● Exemplo

feche <identificador>

11/18

Organização seqüencial● Protocolo de leitura e escrita de arquivos

○ Leitura depende da escrita (naturalmente)● Armazenamento contíguo: um após o outro● Cronologicamente:

○ Primeiro registro: início do arquivo○ Último registro: fim do arquivo

● Leitura de um dado registro só é possível após a leitura dos anteriores

● Escrita de um registro só é feita após os anteriores

12/18

Sintaxe● Leitura

● Escrita

leia <nome do arquivo> . <nome do registro>

escreva <nome do arquivo> . <nome do registro>

13/18

Dado o arquivo A, com registros com campos NOME e SALÁRIO, faça um cópia no arquivo B, dobrando o valor do salário

14/18

Fim de Arquivo (FDA)● Sinalizador para término de leitura● Variável lógica associada ao arquivo● Verdadeiro ao chegar no fim do arquivo● Não é necessário declarar → feito● automaticamente pelas linguagens e

plataformas de programação

15/18

Exercício● Repita o algoritmo da aula anterior (códigos,

profissões e funcionários) modificando o seguinte○ A tabela de profissões (com código e nome da

profissão) está contida no arquivo A e deve ser lida para a memória;

○ O usuário informará, também, 500 nomes de funcionários, um para cada código de profissão a ser consultado

○ O nome do funcionário e o nome de sua respectiva profissão devem ser armazenados em um arquivo B

16/18

ResoluçãoAlgoritmo declare PROF registro (COD numérico, DESC literal) declare FUN registro (NOME, DESC literal) declare A arquivo sequencial de PROF declare B arquivo sequencial de FUNC declare TABP[1:100] PROF {Tabela de profissões} declare NT literal {Nome do funcionário} declare I, J, CODCON numérico {Contadores e códigos de consulta}

I ← 1 abra A leitura; enquanto (não A.FDA) faça leia A.PROF TABP[I].COD ← PROF.COD TABP[I].DESC ← PROF.DESC I ← I+1 fim enquanto

17/18

Resolução abra B escrita

para I = 1 até 500 faça leia NT, CODCON J ← 1 enquanto CODCON ≠ TABP[J].COD faça J ← J + 1 fim enquanto

FUN.NOME ← NT FUN.DESC ← TABP[J].DESC

escreva B.FUN fim para

feche A feche BFim algoritmo 18/18