Está escrevendo código fora ainda considerada uma representação algorítmica? [fechadas]

StackOverflow https://stackoverflow.com/questions/263834

  •  06-07-2019
  •  | 
  •  

Pergunta

Eu só perdeu 50% da minha resposta em um teste porque eu escrevi o código para fora em vez de um algoritmo no meu médio prazo, me batendo de um A para a C. Está escrevendo código fora ainda considerada uma representação algorítmica?

Wikipedia: Algoritmo Representação (desde estilo de programação é praticamente consenso baseado em)

EDIT: Ok, então deixe-me fazer alguns pontos de vantagem:

  1. O teste pediu pseudo-código, que nós nunca realmente "definido" em sala de aula; nós apenas escreveu Inglês para os nossos algoritmos.

  2. É uma classe Java, e escreveu toda a solução em um método de Java, junto com comentários. Tudo isso foi escrito à mão, e levou mais tempo para escrever do que pseudo-código. Eu pensei que seria mais clara.

  3. Eu normalmente não fazer uma questão sobre essas coisas, mas é a diferença entre um A e um C, e eu tenho uma equitação bolsa em meus exames.

  4. Finalmente, eu estou fazendo este post por dois motivos:

    4.1 Quero mostrar o que a comunidade de programação moderna pensa em pseudo-código e representação algorítmica.

    4.2 Eu quero saber o que é aceitável no "mundo real"; Eu tenho programado há algum tempo, mas eu quero ser capaz de contribuir para projetos de código aberto em breve, e eu não quero pisar no pé de ninguém. (Embora eu tenho certeza que este tema tem pouca chance de chegar no mundo real).

Mais uma vez, obrigado por qualquer ajuda / conselhos.

Foi útil?

Solução

Você pode querer dar um exemplo. Se o seu código se concentra demais em detalhes específicos de linguagem que não fazem parte do algoritmo, então Compreensivelmente, pode-se dizer que você tinha não algoritmo misturado com o seu algoritmo, resultando em um resultado incorreto.

I sentir o raciocínio, todo o ponto de aprendizagem é mostrar a você entender o conceito, não se curvar e marque todas as caixas.

Um computador pode ser ensinado para passar universidade, mas um computador não pode ser ainda ensinou a realmente pensar por si e aplicar o conhecimento.

Comer e mentalidade regurgitar é por isso que eu nunca se formou.


Com relação ao seu recente comentário, é importante perceber pseudocódigo é indefinido. Há geralmente são reutilizados termos nele, mas não é uma linguagem rigorosa mais do Inglês é (caso contrário, seria ser uma linguagem de programação, o que poderia ser analisado e executado na íntegra)

O importância de pseudocódigo é aprofundar a lógica parte do sistema e não precisa se preocupar excessivamente sobre o além sintaxe 'faz sentido'

Muitas vezes isso pode tornar o pseudocódigo tanto mais concisa e mais compreensível.

Pseudocódigo também não depende do leitor ter uma compreensão da 'sintaxe mágica' na língua, a fim de processá-lo, tudo que eles precisam entender é os termos usados.

Se você fosse dar a pessoa média um algoritmo em perl por exemplo, a maioria das pessoas só iria morrer de horror, porque eles não vêem passado as mesas de ruído na linha.

Enquanto:

sub foo { 
   my @args = @_ ; 
   my( $a, $b )=(@args[0],@args[1]); 
   for( @{ $a } ){
       $b .= $_ ; 
       s/id//g; 
   }
   return [$b,$a];
}

pode fazer algum sence coerente com alguém versado em perl, o leitor de código de média todos eles recebem é uma resposta "o que diabos você acabou de dizer". Documentando isso não ajuda muito também.

| there is a subroute foo which can take a list of strings, and a default string, 
\-  which then iterates all items in  that list, 
| \-  and for each item in that list 
|     1. appends the contents of that item to the end of the default string
|     2. removes all instances of the string "id" in that item
| 
 \ and returns a list, which contains 
    1. the concatentated default string 
    2. the modified input list 

De repente, ela se torna menos ambíguo e uma maior percentagem de pessoas podem entendê-la.

Então, possivelmente, metade do exercício com a escrever o algoritmo é um exercício de "Não só você tem que provar que você entendê-lo, você também tem que provar que você pode explicar o seu raciocínio para outros que não sabem nada do problema", que é uma habilidade vital que você precisa. Se você não pode se comunicar o que você fez, ninguém pode usá-lo.

há também este problema pouco desagradável com código, que não existe em um algoritmo, e que é o código pode olhar direito, mas não pode fazer o que você pensar isso acontecer, e se não fizer isso direito, e você não percebe, pessoas que lêem a engenharia reversa do código que vai sujar-lo e copiar um quebrado algoritmo. não é bom. o algoritmo em forma humana melhor traduz 'isto é o que eu quero fazer fazer'

Outras dicas

Neste caso, você tem que adiar para o professor.

Você precisa fornecer mais informações. Você foram convidados para um algoritmo, mas o código fornecido. Você quis comentar o código? Quanto? (Eu gostaria de ver a pergunta e sua resposta, mas talvez isso seja pedir muito).

Então, eu vou responder com base na minha própria experiência. Se eu estou pedindo um algoritmo, em seguida, eu quero algo que explica, em Inglês decente, como resolver o problema e / ou cumprir as exigências da questão. Diagramas também são bons (às vezes melhor). Parágrafo, ponto forma, qualquer que seja -. Ele só precisa ser clara, concisa e correta

Se você me fornecer código que faz as marcas acima, então completos. No entanto, se você fornecer o código que é "linguagem" pura e bastante enigmática, então marcas serão perdidos - mais ou menos, dependendo de como críptico o código realmente é. Mesmo com código, eu gostaria de ver um diagrama bem, só para mostrar compreensão completa dos conceitos.

Uma das coisas mais difíceis que enfrentam ao ensinar programação é no sentido de obter os alunos a escrever mais, não menos. Às vezes eu tive que lembrá-los que uma atribuição (ou exame) não é uma entrada no "concurso de código mais ofuscado". ; -)

Cheers,

-R

Como um aluno para um algoritmos avançados claro, eu sempre tirar pontos se não é simplesmente uma solução codificada.

Algumas coisas simplesmente não podem ser expressos como eloquentemente em código que puderem em Inglês. Pseudo-código é uma tentativa de se libertar da estrita sintaxe compilador e permitir alguma expressividade. É um passo na direção certa de compreensibilidade, mas nem sempre é suficiente.

Especialmente em uma classe de algoritmos, é sempre importante para fornecer uma prova de correção (seja por indução, contradição, etc.), bem como uma notação big-O para a complexidade espaço e tempo-do seu algoritmo .

Tudo que eu sei é que você não deve escrever qualquer código até depois você tem um algorithim.

O problema com o uso de código em vez de pseudocódigo é que, teoricamente falando, pode-se supor que foi código, não pseudocódigo. De qualquer forma, o professor notas pela sua resposta, não para o seu conhecimento - você seria melhor responder o que você estava pediu, nos termos do professor gosta. Sim, todos nós sabemos, você sabe melhor. Mas nunca é um mau exercício para tentar razão caminho de outra pessoa, você sabe. E, pelo menos no meu país, o professor tem o direito de avaliá-lo livremente, então ... se dar bem com ele!

Apenas converse com seu professor e perguntar por que você tem o errado pergunta. Pergunte a ele o que uma resposta certa seria, eo que a diferença fundamental entre os dois.

Será que o algoritmo que você escreveu não era correto?

Code é um algoritmo escrito de forma que uma máquina pode executá-lo. Não há nada nessa definição que diz que não é também escrito para um ser humano de entender. Será que a escrita em Java obscurecer seu algoritmo? Que determinaria se eu concordava com o seu professor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top