Langage conventionnel ou pseudo-code ?
J'ai toujours trouvé ça vraiment très chiant d'écrire de la programmation sur papier. J'ai jamais essayé le
pseudo-code, mais j'ai peur de ne pas être rigoureux... Des expériences personnelles à partager ?
Et toi, tu prends quoi comme langage pour l'épreuve écrite ?
Pour des épreuves sur papier, le but est de décrire des algorithmes, pas de les coder.
Du coup, utiliser un langage algorithmique semble plus adapté :
- Pas de focalisation sur la syntaxe. La syntaxe est libre avec pour seul but la facilité de compréhension.
- On peut s'affranchir de la plupart des limites des langages de programmation.
- mais on peut faire un peu n'importe quoi, et ça peut être un problème.
Après, c'est un choix que chacun fait, personnellement j'hésite encore, mais je tends à préférer le langage
algorithmique.
Cependant, il ne faut pas avoir peur de ne pas être rigoureux, tu peux vraiment faire ce que tu veux en pseudo-code, du
moment que c'est compréhensible ;)
Le pseudo-code, c'est pas un truc définit comme les langages de programmation.
En gros ça veut dire "tu fais ce que tu veux tant qu'on comprend".
Donc oui...
Je me posais la même question que rmonat... Quelle est la meilleure façon de s'y prendre ? Sortir les schémas UML ?
C'est l'avantage même du pseudo-code, tu t'affranchis des contraintes syntaxiques que t'imposent les langages de prog.
Par exemple, pour faire une structure, mon prof d'algo actuel utilise une définition qui permet de définir aussi bien
des types primitifs que des types plus complexes. Par exemple il définit un "nœud" (utilisé dans ce cas pour faire une
liste chainée) de la manière suivant :
Nom : nœud
Utilise : élément, booléen
Opérations :
- constructNœud : élément x nœud -> nœud
- ?suivant : nœud -> booléen
- suivant : nœud -> nœud
- contenu : nœud -> élément
- changerCont : nœud x élément -> nœud
- changerSuiv : nœud x nœud -> nœud
C'est un exemple comme un autre, tout le monde n'utiliserait pas forcement cette syntaxe (même moi je ne suis pas totalement d'accord sur cette syntaxe et en utilise une autre assez proche).
Edit : @LPTheKiller l'UML est une possibilité envisageable. Il a l'avantage (ou désavantage selon les cas ?) d'être normalisé. Mais tu peux vraiment faire comme tu veux, même utiliser une syntaxe proche de ton langage de prog préféré ;)
Hum, comment on fait une structure en pseudo code ? \^\^
Struct Personne
Nom
Age
...
?
EDIT : sinon ça va se finir en python, mais ça va être mooooche x)
Personnelement, j'ai pris un pseudo-pseudo-code (c'est du pseudo-code remis a ma sauce).
Par exemple, voila ce que j'aurais coder pour afficher les nombres de 1 a 10:
Afficher:
Entier i.
Parcourir de 0 a 10 et mettre la valeur actuel dans i
Afficher i
Et pour une structure:
structure Personne
Entier Age.
Chaine_Caractere nom.
Ca a le merite d'etre plus clair que du code pur et dur (peu de commentaire a mettre \^\^) et d'avoir une vrai synthaxe.
En revanche, il m'a fallu detaille tout mon code (mais comme je l'aurais fait pour du C++ :p ).
Voila, et soit dit en passant, merci au gars qui m'a dit qu'on pouvait ecrire ca comme ca, je l'aurais fait en C++
sinon :p
Moi, perso, l'année dernière, je l'avais fait en php, ça posait pas de problème … Et puis, en cas de doute sur une fonction, je le précisais en commentaire
syntaxe* !
Du moment que c'est pas du pseudo code où on suppose Dijkstra (où autres) déjà codé... Après, pour ceux qui codent dans
un langage, c'est sûr que par exemple ceux codant en cpp ont plus de structures genre tas par exemple à leur disposition
que ceux codant en caml light. Bref, la vie est injuste !
Perso j'ai plus l'impression de fournir quelque chose de concret en écrivant du C++. Ca m'entraine un peu moi aussi.
Evidemment je prête pas vraiment attention aux erreurs de syntaxe (genre un point-virgule oublié après la définition
d'une classe).
Et puis c'est marrant de dessiner plein d'accolades. :)
Artifère : « Après, pour ceux qui codent dans un langage, c'est sûr que par exemple ceux codant en cpp ont plus de structures genre tas par exemple à leur disposition que ceux codant en caml light. Bref, la vie est injuste ! »
Wait... WHAT ???
Pikrass : Ah les accolades, je détestes en faire des qui débouchent sur rien et sont sur une ligne comme en prog', et je les rate toujours !
Le truc pour réussir une accolade, c'est de partir du milieu ! Avant je galérais toujours pour les dessiner, et maintenant ça va tout seul ;)
Bah, trouve-moi un tas dans les bibliothèques standard de caml light, perso j'ai pas trouvé encore !
En c++, ya la priority_queue.
Ce n'est qu'un exemple.
Artifère : Ah, tu parles d'un " tas ", j'avais lu "t'as" (tu as), et ta phrase (qui manque sérieusement de ponctuation) n'avait plus aucun sens !!
nono212 : Ah, bien, merci pour l'astuce :p
Artifère : « Dijkstra ( où autres) »
→ GULP.
Sinon les gens, pour les épreuves écrites, contentez-vous de faire un truc clair pour le correcteur, ce sera gentil :)
Bon, ben faut que je commence à m'entraîner au brainfuck alors...
Si tu fais ça, je découpe ta copie en petits symboles +, .
Argl, en effet ! M'enfin j'étais fatigué, j'ai édité mon message pour ajouter cette parenthèse, je, euh...
Pour moi ce sera du joli pseudo-code. Par exemple BFS en pseudo-code ça donne ça: http://bb.xieke.com/files/bfs.png