Atualizado pela última vez em outubro de 2021.
Somente o arquivo com código fonte em C++ (arquivo .cpp) deve ser entregue.
Depois de projetar, implementar e testar, quando houver boas evidências de que o programa está certo. Não gaste suas tentativas enviando o programa antes de fazer testes para ver se ele está funcionando.
As pessoas gostam de pensar em regras para usar o Dredd. Isso geralmente atrapalha o aproveitamento da disciplina, pois a atenção deve estar no problema sendo resolvido. É o problema (e não o Dredd) que determina se isso ou aquilo é importante. Solicite ao seu professor que melhore o enunciado de um problema toda vez que ele falhar em determinar o que é importante. É comum que os alunos tenham problemas em acertar uma resposta simplesmente por terem ignorado algum pedaço do enunciado.
Primeiramente, é bom mencionar que é muito difícil programar o Dredd para dar mensagens super explicativas e ainda por cima tentando não mostrar para o aluno qual a forma de corrigir o problema. Se o Dredd indicasse qual a correção, você não estaria treinando encontrar e corrigir erros em programas. Se dependesse só de mim, as mensagens do Dredd seriam bem mais vagas e menos significativas do que realmente são.
Na tentativa de agradar os outros professores do grupo, várias mensagens diferentes podem aparecer durante a correção do Dredd. Porém nem sempre elas são aquilo que o programador realmente deveria focar para corrigir seu programa. Tentar ser específico, trás um efeito colateral de aumentar os "falsos positivo", ou seja, direcionar a atenção do aluno para algum aspecto que não era realmente importante.
Apesar disso, ter mensagens específicas pode realmente ajudar os alunos a encontrar erros em muitas situações. Apenas não leve as mensagens para um lado de informação infalível e indiscutível. Se a mensagem não te ajuda a entender onde focar sua correção, simplesmente use a informação de que seu programa tem erros e faça uma correção geral dele.
Exemplos e explicações de algumas mensagens:
As entradas e saídas devem obedecer o enunciado, considerando a ordem e a quantidade de informações. Se o enunciado diz para ler a idade e depois o peso, então essas duas informações e somente essas duas informações, nesta ordem, devem ser lidas. Os enunciados costumam ter uma seção específica para determinar quais são as entradas, as saídas e a ordem delas. Se o enunciado estiver ambíguo em relação a isso, peça ao seu professor que melhore o enunciado.
A relação de ordem entre as entradas e saídas geralmente não importa. Por exemplo: se um problema consiste em ler 10 palavras e escrever as palavras lidas que forem do gênero masculino, então não importa se serão lidas todas as 10 palavras antes das operações de escrita ou se as operações de escrita acontecem enquanto as operações de leitura estão acontecendo, afinal, não é preciso ler todas as 10 palavras para saber se a primeira é do gênero masculino. Se por algum motivo o criador do problema considera essa ordem importante, então ele deve deixar isso bem claro no enunciado.
Se as saídas devem atender o enunciado, então o programa não pode ser desenvolvido de forma que "converse com o usuário". Ou seja, o programa não pode escrever mensagens de interface que ajudam uma pessoa a saber quais dados o programa está esperando. Mensagens como "digite a altura:" são consideradas saídas do programa e só podem ser usadas se o enunciado (em especial a seção de saídas) exigir.
As saídas devem ser separadas. Por exemplo: se o enunciado manda escrever a altura e a largura, então deve haver algum tipo de separação entre as duas, se o enunciado não diz nada a respeito, essa separação pode ser algo bem comum como um espaço ou um fim de linha. Cuidado com indicações de unidade ou sufixos. É o enunciado que determina se eles devem ser escritos, se devem ser juntos ou separados, etc. Confira os exemplos de saída para ver se você entendeu direito.
Diferenças entre maiúsculas e minúsculas, uso de acentos ou não fazem a diferença entre uma resposta certa ou errada, esteja atento ao enunciado.
A formatação de números na saída geralmente não é importante. Quando for, não é exemplo de saída, mas sim o enunciado que determina o que deve ser feito. Para a grande maioria dos problemas não interessa se o valor foi escrito com mais ou menos casas decimais ou mesmo se o valor foi escrito em notação científica. Preocupe-se em produzir código bem feito e não em formatar números. Não é exemplo de saída que determina se um valor é real ou inteiro, se deve ser escrito com casas decimais ou não. O exemplo de saída serve para ilustrar as regras e não para determiná-las.
Para saber mais sobre leituras, escritas, entradas e saídas de dados, leia o material específico.
Uma das mensagens que podem aparecer na justificativa de nota do Dredd é que o seu programa contém "trechos perigosos". Esses trechos perigosos podem ser coisas bem distintas como variáveis que foram usadas antes de ganhar valor ou funções que contém um caminho de execução sem return (dentro do assunto modularização, porém relacionado às recomendações para sequências de seletores), mas de qualquer forma são indicações de que o programa teve um planejamento inadequado. Dependendo da gravidade do problema, pode indicar um programa que funciona por acaso.
O Dredd não informa exatamente quais trechos do seu programa são perigosos mas o seu compilador informa. O Dredd não é capaz de encontrar (e nem procura) diversos problemas que seu compilador e seu professor são capazes de encontrar então simplesmente preste atenção às mensagens do compilador. Elas têm descrições do problema e informam a posição do código onde o problema foi encontrado. Vale lembrar que o compilador pode ser configurado para reclamar mais ou menos de trechos do código que podem ser compilados mas que são indícios de que algo está errado. Confira as configurações usadas durante o seu processo de compilação.
Se você conferiu com cuidado e está certo de que seu compilador está usando uma configuração adequada e mesmo assim não está reclamando de trechos que o Dredd considera perigosos, então é provável que você esteja usando uma versão muito antiga do compilador. Procure descobrir qual compilador você está usando e qual a versão dele para depois instalar uma versão mais recente. Lembre-se: IDE não é compilador.
Esta página é mantida por Bruno Schneider para a disciplina de IAlg