SCC0215012018 Trabalho Prático (cdac)

De CoteiaWiki

A descrição do trabalho prático será realizada durante o andamento da disciplina.


Trabalho Prático - Turmas A e B

Especificação da segunda parte do trabalho prático ATUALIZADO

Data de entrega da segunda parte do trabalho prático: 24 de junho de 2018, até as 23h59m.
Instruções: as instruções de entrega encontram-se no documento de especificação da primeira parte do trabalho prático.

Outro esclarecimento. Os alunos pediram para que algumas funcionalidades fossem retiradas do trabalho prático. Isso não será possível, mas resolvemos atribuir pontuação menor para algumas funcionalidades. Dessa forma:
- Todas as funcionalidades solicitadas na segunda parte do trabalho prático devem ser entregues.
- As funcionalidades [13] e [14] terão pontuação menor, sendo corrigidas para o valor máximo de 2 pontos.

TURMA A. Política de Gerenciamento de Buffer-pool
Grupo 01. Política: LRU
Grupo 02. Política: MRU
Grupo 03. Política: S2Q
Grupo 04. Política: S2Q
Grupo 05. Política: LRU
Grupo 06. Política: SCA
Grupo 07. Política: SCA
Grupo 08. Política: NRU
Grupo 09. Política: MRU
Grupo 10. Política: FIFO
Grupo 11. Política: LFU
Grupo 12. Política: LIFO
Grupo 13. Política: LFU
Grupo 14. Política: LIFO
Grupo 15. Política: FIFO

TURMA B. Política de Gerenciamento de Buffer-pool
Grupo 01. Política: MRU
Grupo 02. Política: LFU
Grupo 03. Política: FIFO
Grupo 04. Política: SCA
Grupo 05. Política: LIFO
Grupo 06. Política: NRU
Grupo 07. Política: LRU
Grupo 08. Política: S2Q

Especificação da primeira parte do trabalho prático ATUALIZADO
Exemplo em C de leitura e escrita na saída padrão
Exemplo de script para testar o funcionamento do programa (exemplo para o trabalho 1)
Especificação dos arquivos .csv
Dados de entrada para a Turma A
Dados de entrada para a Turma B

Data de entrega da primeira parte do trabalho prático: 09 de maio de 2018, até as 23h59m.
Instruções: as instruções de entrega encontram-se no documento de especificação da primeira parte do trabalho prático.
Contato (Turma B): Matheus Carvalho [mcarvalhor@usp.br]
Contato (Turma A): Gabriel Kanegae [gabriel.kanegae@usp.br]

Turma A: Grupos
Turma B: Grupos




Template de documentação usando o LaTeX




Frequently asked questions (FAQ)


Pergunta. Como determinar se um registro foi removido ou não?
Resposta. Devido a limitação de diferenciar caracteres por meio da tabela ASCII (usar o caracter * para denotar registros removidos não é o suficiente pois ao ler o primeiro byte de um registro pode-se pensar que o registro foi removido sendo que ele é um registro válido). Para evitar esse problema a ideia é simbolizar o registro removido com um inteiro negativo (i.e., -1) que ocupa 4 bytes (esse tipo de valor nunca fará parte do domínio do primeiro campo de ambas as turmas). Dessa forma, lê-se os 4 primeiros bytes (assim como leria o primeiro campo normal de um registro), se for -1 significa que o registro foi removido, caso contrário o registro é válido. O próximo elemento de um registro removido indica a continuação do empilhamento dos RRNs de registros removidos (ou seja, comportamento como visto em aula). Sabendo disso, já leria esses 4 bytes do empilhamento de maneira correta (ao invés dos outros caracteres do segundo campo).


Pergunta. Como os valores nulos devem ser mostrados na saída padrão e como eles são passados para a entrada do programa?
Resposta. Para exibir valores nulos armazenados em um campo fixo deve-se mostrar o caracter 0 até a capacidade do respectivo campo. Por exemplo, para a turma A se o campo fixo dataFinal de um registro for nulo, deve-se mostrar a seguinte sequencia de caracteres 0000000000 (ou seja, 10 vezes o caracter 0). Já para a turma B se o campo fixo uf de um registro for nulo, deve-se mostrar a seguinte sequencia de caracteres 00 (ou seja, 2 vezes o caracter 0). Se um campo de tamanho variável tiver valor nulo, ele não deverá ser mostrado em nenhuma forma e sim somente o seu indicador de tamanho (que será 0).
Exemplo de exibição de um registro contendo campos nulos (dataFinal e municipio são nulos)- Turma A:
35000012 01/02/2012 0000000000 24 AYRES DE MOURA PROFESSOR 0 17 RUA ARTUR ORLANDO
Exemplo de exibição de um registro contendo campos nulos (dataAtiv e nomeEscola são nulos)- Turma B:
31031917 0000000000 MG 0 7 ARAUJOS 4 CTBC
Note que a exibição de registros faz parte das funcionalidades 2, 3 e 4.

Para capturar da tela um registro contendo campos nulos vale a especificação do trabalho. Ou seja, caso o valor de um campo seja uma string (seja o campo fixo ou variável), ela deve estar entre aspas simples (por exemplo, 'SAO PAULO'). Caso o valor seja nulo, ele deve ser identificado como 0 para os campos de tamanho fixo (sem aspas) e como para os campos de tamanho variável (aspas simples vazia). Não é necessário realizar o tratamento de truncamento de dados. Exemplos de entrada de registros com campos nulos pode ser vista na especificação das funcionalidades 6 e 7.


Pergunta. Como deve ser realizada a desfragmentação eficiente?
Resposta. Outro arquivo vazio deve ser aberto para acomodar os registros que não foram removidos no arquivo original (ou seja, varredura sequencial no arquivo de dados original). Depois da escrita de todos os registros no novo arquivo, o arquivo antigo deve ser removido (ver o comando remove() em C) e depois o nome do arquivo novo deve ser renomeado para o mesmo nome do arquivo antigo (ver o comando rename() em C).


Pergunta. Qual é o primeiro RRN a ser considerado no arquivo de dados e arquivo de índice?
Resposta. Todo RRN deve começar pelo 0.


Pergunta. A funcionalidade 10 não deveria ser chamada para construir todo o índice com base no arquivo de dados já preenchido?
Resposta. Não! A funcionalidade 10 é para construir o arquivo de índice e de dados a partir de um arquivo .csv e ele tem a mesma sintaxe da funcionalidade 1. Ou seja:
./ProgramaTrab2 1 'arquivo.csv'
Nessa funcionalidade, programada de forma diferente, agora terá que fazer o seguinte:

para cada registro (linha) do arquivo csv:

  --> cria um registro e o insere no arquivo de dados 
--> insere o elemento que aponta para o registro inserido no arquivo de índice
--> continua os passos anteriores até que todas as linhas do arquivo .csv sejam lidas.

A funcionalidade 11 é similar, primeiro insere o registro no arquivo de dados e depois seu elemento no arquivo de índice.



Menu de Opções

SCC0215 - Organização de Arquivos - Profa. Dra. Cristina D. A. Ciferri
SCC0215012018 Descrição do Curso (cdac)
SCC0215012018 Calendário de Aulas (cdac)
SCC0215012018 Material Didático (cdac)
SCC0215012018 Listas de Exercícios (cdac)
SCC0215012018 Exercícios de Sala de Aula (cdac)
SCC0215012018 Trabalho Prático (cdac)