Este cod scris în continuare considerată o reprezentare algoritmică?

voturi
2

Tocmai am pierdut 50% din răspunsul meu pe un test, deoarece am scris codul în loc de un algoritm pe la jumătatea perioadei mea, mă ciocnindu dintr-un A la un cod de C. Este scris în continuare considerată o reprezentare algoritmică?

Wikipedia: Algoritmul de reprezentare (deoarece stilul de programare este destul de mult pe bază de consens)

EDIT: Ok, așa că lasă-mă să fac câteva puncte clare:

  1. Testul a cerut pseudo-cod, pe care noi niciodată cu adevărat „definit“, în clasă; ne-am scris în engleză pentru algoritmii noștri.

  2. Este o clasă Java, și a scris întreaga soluție într-o metodă Java, împreună cu comentarii. Toate acestea au fost scrise de mână, și a luat mai mult pentru a scrie decât pseudo-cod. M-am gândit că ar fi mai clar.

  3. Eu în mod normal, nu ar face o problemă cu privire la astfel de lucruri, dar este diferența dintre un A și un C, și am o bursă de echitatie pe examene.

  4. În cele din urmă, am face acest post din două motive:

    4.1 Vreau să arăt ceea ce crede comunitatea de programare modernă despre pseudo-cod și reprezentare algoritmice.

    4.2 Vreau să știu ce este acceptabil în „lumea reală“; Am fost de programare pentru ceva timp, dar vreau să fie în măsură să contribuie la open-source proiecte în curând, și nu vreau să-și intensifice pe degetele de la picioare oricui. (Deși sunt destul de sigur că acest subiect are puține șanse de a veni în lumea reală).

Din nou, multumesc pentru orice ajutor / sfat.

Întrebat 05/11/2008 la 00:12
sursa de către utilizator
În alte limbi...                            


8 răspunsuri

voturi
0

Tot ce știu este că nu ar trebui să scrie orice cod decât după un algorithim.

Publicat 05/11/2008 la 00:15
sursa de către utilizator

voturi
5

Este posibil să doriți să dea un exemplu. În cazul în care codul se concentrează prea mult pe specificul de limbă, care nu fac parte din algoritmul, apoi de înțeles că, ar putea fi spus ca ai avut non-algoritm amestecat cu algoritmul dvs., rezultând într-un rezultat incorect.

Disperat pentru raționamentul, întregul punct de învățare este de a arăta că înțelegeți conceptul, nu să se aplece și bifați casetele corespunzătoare.

Un computer poate fi învățat să treacă universitate, dar un calculator cant fi încă învățați să gândească efectiv pentru sine și să aplice cunoștințele.

Mănâncă și regurgitate mentalitate este motivul pentru care n-am absolvit.


În ceea ce privește un comentariu recent, este important de a realiza pseudocod este nedefinit. Există , în general , sunt refolosite termeni în ea, dar ei nu este o limbă strict mai mult decât este englezesc ( în caz contrar ar fi un limbaj de programare, care ar putea fi analizat și executat textual)

Importanța de pseudocod este de a concretiza logica parte a sistemului și nu trebuie să vă faceți griji prea despre sintaxa de dincolo „are sens“

Adesea , acest lucru se poate face pseudocod atât mai concis și mai ușor de înțeles.

Pseudocod, de asemenea, nu se bazează pe cititorul care are o înțelegere a „sintaxa magic“ în limba pentru ao procesa, tot ce trebuie să înțeleagă este termenii utilizați.

Dacă ar fi să dea persoana medie un algoritm în perl de exemplu, cei mai mulți oameni ar muri doar de groază pentru că ei nu văd dincolo de șipcile de zgomot linie.

In timp ce:

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

poate face ca unele sence coerente cu cineva versat în perl, pentru cititor de cod mediu tot ce primesc este un „ce naiba ai spus“ răspuns. Documentarea nu ajuta foarte mult, fie.

| 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 

Dintr-o data ea devine mai puțin ambiguu și un procent mai mare de oameni pot înțelege.

Deci, eventual, jumătate din exercițiul cu scrierea algoritmului este un exercițiu de „Nu numai că trebuie să demonstrezi că înțelege, trebuie, de asemenea, pentru a dovedi vă pot explica raționamentul altora care nu știu nimic despre problema“, care este o vitală capacitatea de ai nevoie. Dacă nu puteți comunica ceea ce ați făcut, nimeni nu poate folosi.

există , de asemenea , această mică problemă urât cu cod, care nu există într - un algoritm, și că este codul poate uita dreapta, dar nu poate face ceea ce crezi că face, și dacă nu o fac bine, și tu nu Nu dau seama, oamenii citesc de inginerie cod invers îl va colmata și copia un rupt algoritm. nu e bine. algoritmul în formă umană se traduce mai bine „ acest lucru este ceea ce eu vreau fac“

Publicat 05/11/2008 la 00:20
sursa de către utilizator

voturi
3

În acest caz, va trebui să amâne la profesor.

Publicat 05/11/2008 la 00:23
sursa de către utilizator

voturi
0

Problema cu utilizarea codului în loc de pseudocod este că, teoretic vorbind, se poate presupune că era de cod, nu pseudocod. Oricum, notele profesor vă pentru răspunsul dumneavoastră, nu pentru cunoștințele dumneavoastră - v-ar fi mai bine răspunde la ceea ce ați cerut, în termenii profesorul îi place. Da, știm cu toții, tu stii mai bine. Dar niciodată nu este un exercițiu de rău pentru a încerca să raționalizeze calea unei alte persoane, știi. Și, cel puțin în țara mea profesorul are dreptul de a te evalua în mod liber, așa că ... a lua împreună cu el!

Publicat 05/11/2008 la 00:29
sursa de către utilizator

voturi
2

Trebuie să furnizați mai multe informații. Ai fost cerut un algoritm, dar codul furnizat. Ați comentariu codul? Cât costă? (Aș vrea să văd întrebarea și răspunsul tău, dar poate că e solicitantă prea mult).

Așa că voi răspunde bazat pe propria mea experiență. Dacă îți cer un algoritm, atunci vreau ceva ce explică, în limba engleză decente, cum să rezolve problema și / sau să îndeplinească cerințele întrebării. Diagramele sunt de asemenea bune (uneori mai bine). Punctul, forma punct, oricare ar fi - pur și simplu trebuie să fie clar, concis și corect.

Dacă mă aprovizionare cu cod care face, atunci mărcile complete de mai sus. Cu toate acestea, dacă furnizați un cod care este pur „limbaj“ și destul de criptic, atunci mărcile vor fi pierdute - mai mult sau mai puțin, în funcție de cât de criptic codul este de fapt. Chiar și cu codul, aș dori să văd o diagramă, de asemenea, doar pentru a arăta înțelegere completă a conceptelor.

Unul dintre cele mai grele lucruri se confruntă atunci când predau programare este în obținerea elevilor să scrie mai mult, nu mai puțin. Uneori am avut să-i reamintesc că o temă (sau examen) nu este o intrare în „concurs de cod cel mai disimulat“. ;-)

Noroc,

-R

Publicat 05/11/2008 la 00:49
sursa de către utilizator

voturi
0

Doar vorbesc cu profesorul și să-l întreb de ce ai greșit întrebarea. Întreabă-l ce ar fi un răspuns corect, și ce diferența fundamentală între cele două.

Ar putea fi faptul că algoritmul ai scris nu a fost corect?

Publicat 05/11/2008 la 01:56
sursa de către utilizator

voturi
0

Codul este un algoritm scris, astfel încât o mașină poate să-l execute. Nu e nimic în această definiție, care spune că nu este, de asemenea, scris pentru un om să înțeleagă. Ai scris în Java obscure algoritmul tau? Asta ar determina dacă am fost de acord cu profesorul tău.

Publicat 05/11/2008 la 02:22
sursa de către utilizator

voturi
2

Ca un elev de clasa pentru un curs de algoritmi avansați, aș întotdeauna decola de puncte în cazul în care există pur și simplu o soluție codificată.

Unele lucruri pur și simplu nu pot fi exprimate ca elocvent în cod, deoarece acestea pot în limba engleză. Pseudo-cod este o încercare de a rupe liber de sintaxă stricte compilator și pentru a permite o anumită expresivitate. Este un pas în direcția corectă a inteligibilității, dar nu întotdeauna suficient.

Mai ales într-o clasă de algoritmi, este întotdeauna important să se furnizeze o dovadă a corectitudinii (fie că este vorba de inducție, contradicție, etc.), precum și o notație mare-O pentru complexitatea și intervale de timp ale spațiului-algoritm dumneavoastră.

Publicat 13/11/2008 la 21:04
sursa de către utilizator

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