programação de computadores - ufsj.edu.br · repita o algoritmo da aula anterior (códigos,...
TRANSCRIPT
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 [email protected]
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