Est un code écrit à toujours considéré comme une représentation algorithmique?

voix
2

Je viens de perdre 50% de ma réponse à un test parce que je l'ai écrit le code à la place d'un algorithme sur mon moyen terme, me cognant d'un A à un C. Est un code écrit à toujours considéré comme une représentation algorithmique?

Wikipedia: Représentation Algorithm (depuis le style de programmation est à peu près consensuelle)

EDIT: Ok, alors laissez-moi faire quelques points clairs:

  1. Le test demandé pseudo-code, que nous jamais vraiment « défini » en classe; nous venons d'écrire en anglais pour nos algorithmes.

  2. Il est une classe Java, et a écrit la totalité de la solution dans une méthode Java, ainsi que des commentaires. Tout cela a été écrit à la main, et a pris plus de temps à écrire que pseudo-code. Je pensais que ce serait plus clair.

  3. Normalement, je ne voudrais pas faire une question au sujet de ces choses, mais il est la différence entre un A et un C, et j'ai une circonscription de bourse sur mes examens.

  4. Enfin, je fais ce poste pour deux raisons:

    4.1 Je veux montrer ce que la communauté de programmation moderne pense pseudo-code et la représentation algorithmique.

    4.2 Je veux savoir ce qui est acceptable dans le « monde réel »; J'ai la programmation depuis un certain temps, mais je veux être en mesure de contribuer à des projets open-source bientôt, et je ne veux pas marcher sur les pieds de personne. (Même si je suis sûr que ce sujet a peu de chances de venir dans le monde réel).

Encore une fois, merci pour toute l'aide / conseil.

Créé 05/11/2008 à 00:12
source utilisateur
Dans d'autres langues...                            


8 réponses

voix
0

Tout ce que je sais est que vous ne devriez pas écrire de code jusqu'à ce que vous avez un algorithim.

Créé 05/11/2008 à 00:15
source utilisateur

voix
5

Vous voudrez peut-être donner un exemple. Si votre code est trop axé sur les détails linguistiques qui ne font pas partie de l'algorithme, puis naturellement, on pourrait dire que vous aviez non algorithme mélangé avec votre algorithme, ce qui entraîne un résultat incorrect.

I Feel pour le raisonnement, le point de l'apprentissage tout est de montrer que vous comprenez le concept, pas de se pencher et cochez toutes les cases à droite.

Un ordinateur peut apprendre à passer l'université, mais un ordinateur ne peut pas être encore appris à penser en fait pour lui-même et appliquer les connaissances.

Manger et régurgiter mentalité est pourquoi je jamais obtenu de diplôme.


En ce qui concerne votre commentaire récent, il est important de réaliser pseudocode est indéfini. Il y a généralement réutilisé termes, mais ce ne est pas une langue plus stricte que l' anglais est (sinon il est un langage de programmation, qui pourrait être analysé et exécuté textuellement)

L' importance de pseudocode est de la chair la logique partie du système et ne pas avoir à se soucier trop sur la syntaxe au - delà « il est logique »

Souvent , cela peut rendre le plus pseudocode à la fois laconique et plus compréhensible.

Ne pseudocode aussi repose pas sur le lecteur ayant une compréhension de la « syntaxe magique » dans la langue afin de les traiter, tout ce qu'ils ont besoin de comprendre est les termes utilisés.

Si vous deviez donner à la personne moyenne un algorithme en Perl par exemple, la plupart des gens meurent simplement de l'horreur parce qu'ils ne voient pas au-delà du bruit des chapes de ligne.

Tandis que:

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

peut faire un peu cohérente à quelqu'un sence versé dans perl, au lecteur de code moyenne tout ce qu'ils obtiennent est « ce que l'enfer vous avez dit juste » réponse. Documenter il ne permet pas beaucoup non plus.

| 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 

Tout à coup, il devient moins ambigu et un pourcentage plus élevé des peuples peut le comprendre.

Donc, peut-être, la moitié de l'exercice avec l'écriture de l'algorithme est un exercice « Non seulement vous devez prouver que vous le comprenez, vous devez également prouver que vous pouvez expliquer votre raisonnement à d'autres qui ne connaissent rien du problème », qui est un élément vital la capacité dont vous avez besoin. Si vous ne pouvez pas communiquer ce que vous avez fait, personne ne peut l'utiliser.

il y a aussi ce petit problème méchant avec le code, qui n'existe pas dans un algorithme, et qui est le code peut regarder à droite, mais ne peut pas faire ce que vous pensez qu'il fait, et si elle ne le fait pas droit, et vous don « t rendre compte, les gens qui lisent l'ingénierie inverse de code , il sera encrasser et copier un cassé algorithme. pas bon. l'algorithme sous forme humaine traduit mieux « ce que je veux faire ne »

Créé 05/11/2008 à 00:20
source utilisateur

voix
3

Dans ce cas, vous devez remettre au professeur.

Créé 05/11/2008 à 00:23
source utilisateur

voix
0

Le problème avec l'aide de code au lieu de pseudo-code est que, théoriquement parlant, on peut supposer qu'il était code, pas pseudo-code. Quoi qu'il en soit, les qualités de professeur vous pour votre réponse, pas vos connaissances - vous seriez mieux répondre à ce que vous a été demandé, aux termes de l'enseignant aime. Oui, nous le savons tous, vous savez mieux. Mais il n'y a jamais un mauvais exercice pour essayer de raisonner de façon d'une autre personne, vous savez. Et au moins dans mon pays, l'enseignant a le droit de vous évaluer librement, alors ... se entendre avec lui!

Créé 05/11/2008 à 00:29
source utilisateur

voix
2

Vous devez fournir plus d'informations. On vous a demandé un algorithme, mais le code fourni. Avez-vous commenter le code? Combien? (Je voudrais voir la question et votre réponse, mais peut-être qui est demandé trop).

Donc, je vais répondre en fonction de ma propre expérience. Si je demande un algorithme, alors je veux quelque chose qui explique, en anglais décent, comment résoudre le problème et / ou répondre aux exigences de la question. Les diagrammes sont aussi bons (parfois plus). Le paragraphe, sous forme de points, quel que soit - il a juste besoin d'être claire, concise et correcte.

Si vous me fournissez avec le code qui fait les marques ci-dessus, puis plein. Toutefois, si vous fournissez le code qui est pur « langage » et plutôt cryptique, alors les marques seront perdues - plus ou moins selon la façon dont le code est en fait cryptique. Même avec le code, je voudrais voir un diagramme et, juste pour montrer la compréhension complète des concepts.

L'une des choses les plus difficiles que je rencontre lorsque la programmation est l'enseignement à inciter les élèves à écrire plus, pas moins. Parfois, j'ai dû leur rappeler qu'une cession (ou examen) ne sont pas une entrée dans le « concours de code le plus obscurcie ». ;-)

À votre santé,

-R

Créé 05/11/2008 à 00:49
source utilisateur

voix
0

Il suffit de parler à votre professeur et lui demander pourquoi vous avez la mauvaise question. Demandez-lui quelle bonne réponse serait, et quelle est la différence fondamentale entre les deux.

Se pourrait-il que l'algorithme que vous avez écrit est incorrect?

Créé 05/11/2008 à 01:56
source utilisateur

voix
0

Code est un algorithme écrit de sorte qu'une machine peut exécuter. Il n'y a rien dans cette définition qui dit qu'il est pas aussi écrit pour un être humain de comprendre. Est-ce que l'écriture en Java obscurcir votre algorithme? Cela permettrait de déterminer si je suis d'accord avec votre professeur.

Créé 05/11/2008 à 02:22
source utilisateur

voix
2

En tant que niveleuse pour un cours d'algorithmes avancés, je toujours des points j'ôte s'il y a une solution simple code.

Certaines choses ne peuvent simplement pas être exprimé avec autant d'éloquence dans le code qu'ils peuvent en anglais. pseudo-code est une tentative de se libérer de la syntaxe stricte du compilateur et de permettre une certaine expressivité. Il est un pas dans la bonne direction de compréhensibilité, mais pas toujours suffisant.

Surtout dans une classe d'algorithmes, il est toujours important de fournir une preuve de la décision correcte (que ce soit par induction, contradiction, etc.), ainsi qu'une notation grand-O pour la complexité et de temps de l'espace-votre algorithme.

Créé 13/11/2008 à 21:04
source utilisateur

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