Mudanças entre as edições de "SCC0215012018 Trabalho Prático (cdac)"

De CoteiaWiki
Linha 35: Linha 35:
 
'''Pergunta'''. Como determinar se um registro foi removido ou não? <br>
 
'''Pergunta'''. Como determinar se um registro foi removido ou não? <br>
 
'''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). <br>
 
'''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). <br>
 +
 +
<br>
 +
 +
'''Pergunta'''. Como os valores nulos devem ser mostrados na saída padrão e como eles são passados para a entrada do programa? <br>
 +
'''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). <br>
 +
Exemplo de exibição de um registro contendo campos nulos (dataFinal e municipio são nulos)- Turma A: <br>
 +
35000012 01/02/2012 0000000000 24 AYRES DE MOURA PROFESSOR 0 17 RUA ARTUR ORLANDO <br>
 +
Exemplo de exibição de um registro contendo campos nulos (dataAtiv e nomeEscola são nulos)- Turma B: <br>
 +
31031917 0000000000 MG 0 7 ARAUJOS 4 CTBC <br>
 +
Note que a exibição de registros faz parte das funcionalidades 2, 3 e 4. <br>
 +
 +
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.<br>
  
 
== Menu de Opções ==
 
== Menu de Opções ==

Edição das 17h17min de 24 de abril de 2018

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


Trabalho Prático - Turmas A e B

Especificação da primeira parte do trabalho prático ATUALIZADO
Exemplo em C de leitura e escrita na saída padrão
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.

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)