Sta scrivendo il codice fuori ancora considerato una rappresentazione algoritmica?

voti
2

Ho appena perso il 50% della mia risposta in un test perché ho scritto il codice, invece di un algoritmo sul mio medio termine, mi urtando da una A ad un C. è la scrittura di codice fuori ancora considerato una rappresentazione algoritmica?

Wikipedia: Algoritmo Rappresentanza (in quanto lo stile di programmazione è praticamente basata sul consenso)

EDIT: Ok, quindi cerchiamo di fare alcune lunghezze di vantaggio:

  1. Il test ha chiesto pseudo-codice, che non abbiamo mai veramente definito in classe; abbiamo appena scritto fuori inglese per i nostri algoritmi.

  2. Si tratta di una classe Java, e scrisse l'intera soluzione in un metodo Java, con i commenti. Tutto questo è stato scritto a mano, e ha preso più tempo per scrivere di pseudo-codice. Ho pensato che sarebbe stato più chiaro.

  3. Io normalmente non fare una questione di queste cose, ma è la differenza tra una A e una C, e ho una borsa di studio a cavallo sui miei esami.

  4. Infine, sto facendo questo post per due motivi:

    4.1 Voglio mostrare ciò che la comunità di programmazione moderno pensa di pseudo-codice e la rappresentazione algoritmica.

    4.2 Voglio sapere che cosa è accettabile nel mondo reale; Sono stato di programmazione per un certo tempo, ma voglio essere in grado di contribuire ad aprire-source progetti presto, e io non voglio pestare i piedi a nessuno. (Anche se io sono abbastanza sicuro che questo argomento ha poche possibilità di venire nel mondo reale).

Ancora una volta, grazie per qualsiasi aiuto / consigli.

È pubblicato 05/11/2008 alle 00:12
fonte dall'utente
In altre lingue...                            


8 risposte

voti
0

Tutto quello che so è che non dovrebbe scrivere alcun codice fino a quando si dispone di un algorithim.

Risposto il 05/11/2008 a 00:15
fonte dall'utente

voti
5

Si consiglia di dare un esempio. Se il codice si concentra troppo sulle specificità linguistiche che non fanno parte dell'algoritmo, allora Comprensibilmente, si potrebbe dire hai avuto non algoritmo mescolato con l'algoritmo, determinando un risultato errato.

I Feel per il ragionamento, il punto di apprendimento è quello di mostrare a capire il concetto, di non piegarsi e spuntare tutte le caselle giuste.

Un computer può essere insegnato a passare all'università, ma un computer cant essere ancora insegnato a pensare in realtà per sé e applicare le conoscenze.

Mangia e rigurgitare mentalità è il motivo per cui non ho mai laureato.


Per quanto riguarda il tuo commento recente, la sua importante rendersi conto pseudocodice è indefinito. Ci sono generalmente riutilizzati termini in essa, ma non è un linguaggio rigoroso non più di quanto l'inglese è (altrimenti sarebbe essere un linguaggio di programmazione, che potrebbe essere analizzato ed eseguito testualmente)

L' importanza di pseudocodice è quello di rimpolpare la logica parte del sistema e non devono preoccuparsi eccessivamente sulla sintassi oltre 'ha senso'

Spesso questo può fare la pseudocodice sia più conciso e più comprensibile.

Pseudocodice anche non si basa sul lettore avere una comprensione della 'sintassi di magia' nel linguaggio al fine di elaborarlo, tutti hanno bisogno di capire è i termini utilizzati.

Se si dovesse dare la persona media un algoritmo in Perl per esempio, la maggior parte delle persone sarebbe solo muoiono di orrore, perché non vedere oltre il massetti di rumore di linea.

Mentre:

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

può fare qualche sence coerente a qualcuno esperto in perl, per il lettore medio di codice tutto quello che ottengono è una risposta "ma che cazzo hai appena detto". Documentare non aiuta molto sia.

| 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 

Improvvisamente diventa meno ambigua e una percentuale maggiore dei popoli può capire.

Così forse, la metà l'esercizio con la scrittura l'algoritmo è un esercizio di "Non solo si deve dimostrare hai capito bene, si hanno anche per dimostrare che si può spiegare il vostro ragionamento ad altri che non sanno nulla del problema", che è un fondamentale capacità di cui hai bisogno. Se non è possibile comunicare ciò che avete fatto, nessuno può usarlo.

c'è anche questo piccolo problema con il codice di brutto, che non esiste in un algoritmo, e questo è il codice può guardare a destra, ma non può fare ciò che si pensa che fa, e se non lo fa proprio, e si don 't si rendono conto, gente che legge il codice di engineering inverso che verrà fallo su e copiare una rotta algoritmo. non bene. l'algoritmo in forma umana meglio traduce 'questo è quello che voglio fare fare'

Risposto il 05/11/2008 a 00:20
fonte dall'utente

voti
3

In questo caso, è necessario rinviare al professore.

Risposto il 05/11/2008 a 00:23
fonte dall'utente

voti
0

Il problema con l'utilizzo di codice invece di pseudocodice è che, teoricamente parlando, si potrebbe supporre che si trattava di codice, non pseudocodice. In ogni caso, i gradi insegnante per la tua risposta, non per la vostra conoscenza - si sarebbe meglio rispondere a quello che ha chiesto, nei termini l'insegnante ama. Sì, lo sappiamo tutti, lo sai meglio. Ma non è mai una cattiva esercizio per cercare di ragionare modo di un'altra persona, lo sai. E almeno nel mio paese l'insegnante ha il diritto di valutare liberamente, in modo da ... andare d'accordo con lui!

Risposto il 05/11/2008 a 00:29
fonte dall'utente

voti
2

È necessario fornire ulteriori informazioni. È stato chiesto a un algoritmo, ma forniti di codice. Hai commentare il codice? Quanto? (Mi piacerebbe vedere la domanda e la risposta, ma forse questo è richiesta troppo).

Quindi io risponderò in base alla mia esperienza. Se sto chiedendo un algoritmo, quindi voglio qualcosa che spiega, in un inglese decente, come risolvere il problema e / o soddisfare le esigenze della domanda. I diagrammi sono anche buoni (a volte meglio). Paragrafo, forma di punto, qualunque sia - ha solo bisogno di essere chiaro, conciso e corretto.

Se mi fornite con il codice che fa i segni di cui sopra, allora completi. Tuttavia, se si fornisce il codice che è puro "linguaggio" e piuttosto criptico, quindi marchi saranno persi - più o meno a seconda di come criptico codice è in realtà. Anche con il codice, mi piacerebbe vedere un diagramma così, solo per mostrare completa comprensione dei concetti.

Una delle cose più difficili che devono affrontare quando insegnare la programmazione è a ottenere gli studenti a scrivere di più, non di meno. A volte ho dovuto ricordare loro che un incarico (o esame) non è una voce nel "concorso più offuscato codice". ;-)

Saluti,

-R

Risposto il 05/11/2008 a 00:49
fonte dall'utente

voti
0

Basta parlare con il professore e gli chiedo il motivo per cui hai la domanda sbagliata. Chiedigli cosa sarebbe una risposta giusta, e quale sia la differenza fondamentale è tra i due.

Potrebbe essere che l'algoritmo che hai scritto non era corretta?

Risposto il 05/11/2008 a 01:56
fonte dall'utente

voti
0

Codice è un algoritmo scritto in modo che una macchina può eseguirlo. Non c'è nulla in questa definizione che dice non è scritto anche per un essere umano per capire. Ha fatto scrivere in Java oscurare il vostro algoritmo? Che sarebbe determinare se ero d'accordo con l'insegnante.

Risposto il 05/11/2008 a 02:22
fonte dall'utente

voti
2

Come un selezionatore per un corso di algoritmi avanzati, avrei sempre tolgo punti se non v'è semplicemente una soluzione in codice.

Alcune cose semplicemente non possono essere espresse come eloquentemente nel codice come possono in inglese. Pseudo-codice è un tentativo di liberarsi di una rigorosa sintassi compilatore e permettere una certa espressività. E 'un passo nella giusta direzione di comprensibilità, ma non sempre sufficiente.

Soprattutto in una classe di algoritmi, è sempre importante fornire una prova di correttezza (sia che si tratti per induzione, la contraddizione, etc.), così come una notazione O-grande per la complessità spazio-tempo-e del vostro algoritmo.

Risposto il 13/11/2008 a 21:04
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more