programação de computadores - ufsj.edu.br · repita o algoritmo da aula anterior (códigos,...

18
Programação de Computadores Estrutura de Dados - Parte 2 Prof. Dr. Erivelton Geraldo Nepomuceno Depto. Engenharia Elétrica Sala 4.23 EL – Prédio do DEPEL http://www.ufsj.edu.br/nepomuceno [email protected] 1/18

Upload: hoanglien

Post on 04-Jan-2019

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programação de Computadores - ufsj.edu.br · Repita o algoritmo da aula anterior (códigos, profissões e funcionários) modificando o seguinte A tabela de profissões (com código

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

Page 2: Programação de Computadores - ufsj.edu.br · Repita o algoritmo da aula anterior (códigos, profissões e funcionários) modificando o seguinte A tabela de profissões (com código

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

Page 3: Programação de Computadores - ufsj.edu.br · Repita o algoritmo da aula anterior (códigos, profissões e funcionários) modificando o seguinte A tabela de profissões (com código

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

Page 4: Programação de Computadores - ufsj.edu.br · Repita o algoritmo da aula anterior (códigos, profissões e funcionários) modificando o seguinte A tabela de profissões (com código

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

Page 5: Programação de Computadores - ufsj.edu.br · Repita o algoritmo da aula anterior (códigos, profissões e funcionários) modificando o seguinte A tabela de profissões (com código

Registro: FICHA

Exemplo de dados: FICHA

5/18

Page 6: Programação de Computadores - ufsj.edu.br · Repita o algoritmo da aula anterior (códigos, profissões e funcionários) modificando o seguinte A tabela de profissões (com código

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

Page 7: Programação de Computadores - ufsj.edu.br · Repita o algoritmo da aula anterior (códigos, profissões e funcionários) modificando o seguinte A tabela de profissões (com código

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

Page 8: Programação de Computadores - ufsj.edu.br · Repita o algoritmo da aula anterior (códigos, profissões e funcionários) modificando o seguinte A tabela de profissões (com código

8/18

Page 9: Programação de Computadores - ufsj.edu.br · Repita o algoritmo da aula anterior (códigos, profissões e funcionários) modificando o seguinte A tabela de profissões (com código

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

Page 10: Programação de Computadores - ufsj.edu.br · Repita o algoritmo da aula anterior (códigos, profissões e funcionários) modificando o seguinte A tabela de profissões (com código

Sintaxe● Abertura

● Exemplo

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

10/18

Page 11: Programação de Computadores - ufsj.edu.br · Repita o algoritmo da aula anterior (códigos, profissões e funcionários) modificando o seguinte A tabela de profissões (com código

Sintaxe● Fechamento

● Exemplo

feche <identificador>

11/18

Page 12: Programação de Computadores - ufsj.edu.br · Repita o algoritmo da aula anterior (códigos, profissões e funcionários) modificando o seguinte A tabela de profissões (com código

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

Page 13: Programação de Computadores - ufsj.edu.br · Repita o algoritmo da aula anterior (códigos, profissões e funcionários) modificando o seguinte A tabela de profissões (com código

Sintaxe● Leitura

● Escrita

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

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

13/18

Page 14: Programação de Computadores - ufsj.edu.br · Repita o algoritmo da aula anterior (códigos, profissões e funcionários) modificando o seguinte A tabela de profissões (com código

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

Page 15: Programação de Computadores - ufsj.edu.br · Repita o algoritmo da aula anterior (códigos, profissões e funcionários) modificando o seguinte A tabela de profissões (com código

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

Page 16: Programação de Computadores - ufsj.edu.br · Repita o algoritmo da aula anterior (códigos, profissões e funcionários) modificando o seguinte A tabela de profissões (com código

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

Page 17: Programação de Computadores - ufsj.edu.br · Repita o algoritmo da aula anterior (códigos, profissões e funcionários) modificando o seguinte A tabela de profissões (com código

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

Page 18: Programação de Computadores - ufsj.edu.br · Repita o algoritmo da aula anterior (códigos, profissões e funcionários) modificando o seguinte A tabela de profissões (com código

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