Partage

[Exercices] Venez vous entraîner !

Ce mois: Parseur de fonctions mathématiques

16 juin 2011 à 12:08:47

Non il connais très bien le C++.
Tu peux aller voir sur son site perso il a écrit un cours sur le C++ orienté jeux vidéo.
16 juin 2011 à 12:10:55

L'ennui, c'est que les programmeurs de cette trempe sont tout de même horriblement occupés...
16 juin 2011 à 12:32:21

Oui.

Bon j'ai envoyé un deuxième MP à Nanoc et lui disant que si aucune réponse ne m'était parvenue dans une semaine, je créérai un nouveau topic afin de trouver et désigner de nouvelles personne pour s'occuper d'un nouveau topic "Exercices C++".
16 juin 2011 à 14:19:23

<HS>
Dites, Ca serait vachement bien de laisser ce topic (en post-it) réservé aux exercices même.
Vous ne voulez pas plutôt créer un meta-topic ?
</HS>
C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
16 juin 2011 à 14:43:37

Ok. Mais je pense que l'idée de gaulois94 est pas mal non plus.
J'ai une autre idée qui devrait satisfaire pas mal de monde (débutants comme experts) :
on pourrait créer une banque d'exercices organisée et présentée comme suit :

Citation : post n°1

Sommaire des exercices :

Titre Difficulté Catégorie
Optimisation d'un code bourré d'exceptions 5 Optimisation
Création d'une GUI 3 2D + SFML
Gestion d'une bibliothèque municipale 2 Console + BDD




Les exercices proposés par les programmeurs C++ qui le souhaitent sont rajoutés au tableau à condition qu'ils soient présentés ainsi :

Citation : exercice

Titre de l'exercice (Catégorie) (Dificulté)



Énoncé


ici l'énoncé

Solution possible


ici, une des solutions possibles, réalisée par l'auteur (plagiat interdit !)



Explications


ici, les explications de la solution proposée




<titre1>Titre de l'exercice (Catégorie) (Dificulté)</titre1>

<titre2>Énoncé</titre2>
ici l'énoncé

<titre2>Solution possible</titre2>
<secret>ici, une des solutions possibles, réalisée par l'auteur (plagiat interdit !)</secret>

<titre2>Explications</titre2>
<secret>ici, les explications de la solution proposée</secret>


@lmghs : tu as raison, vaudrait mieux ;)
16 juin 2011 à 15:41:30

@lmghs : C'est quoi un meta-topic ?

@germino: Ce que tu dis c'est exactement ce topic -_-"
Pour l'idée de gaulois94, ça va vite devenir l'anarchie.
16 juin 2011 à 17:35:06

pour mon idée j'ai encore plus simple. Les gens qui veulent voir leurs exos sur le sujet, envoie le sujet en MP.

je m'explique. Imaginons que je créé le sujet. Toutes les personnes sont libres de donner un sujet d'exo uniquement via mp. Ensuite, j'éditerais le premier message et envoie un message "mise a jours avec ajout de ..."

Marrant ton exo de GUI il me rappelle vaguement certaines choses ^^

ben écoutez j'ai créé le sujet en espérant que tout seras correct. N'hésitez pas à m'aider à bien le gérer ^^
16 juin 2011 à 17:48:45

@Olytron : mais non :
1) N'importe qui peut participer, mais le lien vers son exo n'est ajouté que s'il respecte la charte de mise en forme
2) Les réponses sont envoyées au créateur de l'exo uniquement -> pas de bazar
3) On peut ajouter dans l'exo une nouvelle sous-partie cachée : les réponses correctes apportées par les membres à l'auteur et que ce dernier aura jugées satisfaisantes
4) Les modérateurs se donnent le droit de censurer un exercice qui ne respècte pas les règles ci-dessus
5) Il n'y a pas de limite de temps
16 juin 2011 à 17:54:06

... C'est fait tellement rapidement et sans aucune organisation.
Je vous laisse donc avec votre idée moi je laisse tombé.

C'est vrai que gaulois94 c'est super réfléchi ce que tu as fait.
En 10 minutes tu crée ton topic (avec faute d'orthographe et présentation qui donne pas envie de lire) ... Bonne chance.
16 juin 2011 à 17:56:51

Je sais ne t'inquiète pas je corrigerais ça ^^

Après libre à toi de le faire si tu en à envie. Le but d'un topic comme celui ci est de le maintenir actifs et non de faire un super trucs qui couleras pour non activité.
16 juin 2011 à 18:01:04

Non mais tu vois moi un topic comme ça je ne mis intéresse pas et je ni participe pas non plus.

EDIT: Nanoc est plus mature que toi (du fait de son âge) et beaucoup plus compétant. Pour moi c'est plus à quelqu'un qui connais le domaine. Toi tu na que 15 ans, je ne dit pas que tu n'es pas mature ou pas compétant, mais réfléchis un peu ! Il y a des personnes plus qualifiées pour faire ça.
16 juin 2011 à 18:12:29

je ne dis pas le contraire. A la différence pres ou nanoc est très occupé et n'a pas forcément le temps de venir ici souvent. Certes je suis jeune mais c'est pas pour sa que je n'ai aucune qualification. Comme dis un ancien proverbe "Ne vendez pas la peau de l'ours avant de l'avoir tué". Je ne dis pas que d'autre sont pas plus qualifié. Mon seul but est de maintenir le sujet assez stable c'est tout. cela me sera aussi assez bénéfique car je pourrais non seulement essayez de résoudre les sujets et me casser la tête a trouver les meilleurs solutions. Je pourrais aussi connaitre de nouvelle bibliothèque et de nouveaux horizons. Cela s'applique aussi aux autres ! En effet, Nanoc ne connais pas toutes les bibliothèques et ne peu pas toutes les maitrisées correctement.

Mon point de vue, est que tout le monde peut proposer ses sujet. Ici, seule une personne en propose. Cela nous permet d'ouvrir de nouveaux horizons.
16 juin 2011 à 18:33:52

Non, j'ai vu qu'un autre validateur (dont j'ai oublié le nom) donnait aussi des exos. Regarde vers les pages 35/36 il me semble.
17 juin 2011 à 1:08:38

il y as une discution en cour pour créer une sorte de partie exercice paralléle aux cours, plus de détails ici et vous pouvez vous inscrire aux MP pour plus d'info ou si vous avez des idées ;)
17 juin 2011 à 9:21:09

Cette discussion doit continuer sur le topic suivant pour éviter de polluer ce sujet : http://www.siteduzero.com/forum-83-659 [...] nisation.html
Anonyme
18 juin 2011 à 23:46:50

Exercice du mois de juin 2011



Nom : Interpréteur Befunge
Sujet : Tableaux, caractères, (fichiers ?)


Un nouvel exercice, puisque ça fait longtemps :

Créer un interpréteur pour le langage ésotérique Befunge



Le Befunge est un langage de programmation très spécial : il est représenté par une carte, en deux dimensions. Un 'curseur' suit le programme, est dirigé par des "flèches" et exécute des instructions sur une pile.
Je laisse la place à Wikipédia pour savoir comment ça marche...

Votre mission : interpréter ce langage. Vos armes : le switch, la std::stack<>. Plus de précision sur l'ennemi sont sur sa fiche que vous auriez déjà dû lire.

Niveau 1 :
Interpréter les flèches, les nombres, les opérations basiques, la fin de programme (@).

Niveau 2 :
Interpréter les conditions, les "string", les opérations directes sur la pile ($, :, \) et les "trampolines" (#). Si possible, lecture depuis fichier.

Niveau 3 :
Interpréter les entrées-sorties de façon sûre, ainsi que l'aléatoire (?). Lecture depuis fichier obligatoire (extension *.bef par exemple).

Niveau 4 :
Interpréter les appels "put" et "get". Taille de la carte (mère) variable. Gestion des bugs possibles dans la carte-programme (boucle infinie, sortie de carte, pile vide) obligatoire.

Au delà :
Pourquoi ne pas rajouter quelques fonctionnalités ?
Au hasard, voici quelques idées :
  • d'autres piles [on passe sur l'autre pile par une lettre majuscule de 'A' à 'F']
  • des "téléporteurs" [avec des lettres majuscules, et même un hasard s'il y en a plusieurs pareilles]
  • des "variables" [par exemple, trois variables : 'x', 'y', 'z', 'r' : 'x' et 'y' sont deux opérandes, elles ne marchent que pour une opération, si elles ne sont pas définies on le prend dans la pile... appeler 'x' ou 'y' dans le code les dépile et les enregistre. 'r' contient le retour de la dernière opération, qui est quand même empilé. appeler 'r' dans le code ré-empile sa valeur, mais 'r' reste valide.]

Certes, ce n'est plus du Befunge-93, mais qu'importe ?
Tant qu'on y est, pouquoi pas une troisième dimension ? Des "trampolines" pour monter, des 'O' pour descendre ?

Pour les graphistes :


Un petit environnement graphique pour programmer et tester ? (éditeur de cases, avec interpréteur par un bouton et un petit log pour erreurs de compilation, et une console pour les entrées/sorties, ça rendrait la programmation ésotérique plus facile ;) )

Vous avez tout fait, vous avez créé un éditeur de programme, un débuggeur, des nouvelles fonctionnalités, vous avez optimisé votre code ? Pourquoi ne pas essayer de faire un COMPILATEUR à présent ? C'est très dur à faire ( ^^ ), et on perd certains aspects du langage ('p' et 'g' par exemple), mais pourquoi pas le porter dans un autre langage (C par exemple) ? Vous seriez sans doute internationalemment reconnu...
18 juin 2011 à 23:59:47

C'est assez ambitieux, comme exercice. L'atelier sur l'interpréteur de brainfuck n'était déjà pas considéré comme simple.
Mais c'est intéressant, et ça permettra de relancer le topic Exercices (et ça décevra les amateurs d'autres langages qui seraient intéressés par un tel exercice).
Puet-être pourrait-on ajouter à la partie au delà une partie "compilation" (bytecode ou code machine) ?
19 juin 2011 à 0:16:32

perso (ce n'est que mon avis) donner des exercices originaux qui pourront peut être donner des idées de projet pour certains (je doute que des personnes veuillent bien traduire un langage ^^)
Anonyme
19 juin 2011 à 0:34:11

@programLyrique : Pour la partie "compilation", je veux bien mais personne n'en a encore fait, pour le faire il faut connaître un assembleur ou traduire dans un autre langage, et ça fait perdre la partie "automodifiante" possible grâce à 'p' et 'g'...
Sinon, il est aussi possible de le faire dans un autre langage, c'est juste que ici on est en C++ sur ce sujet...

@gaulois94 : Je fais ce que je peux pour trouver un exercice un peu original (un peu plus que le pendu), mais tu peux aussi en proposer un toi-même.
D'ailleurs, l'interpréteur Brainfuck a eu pas mal de succès... Même si ici la difficulté n'est pas dans la gestion des boucles, mais avec les commandes de direction.
19 juin 2011 à 1:00:09

je n'ai rien critiquer (et suis meme content que quelqu'un propose un exercice ^^ ) je pense juste que des exercices qui pourront aboutir à un véritable projet donnerais plus envie de le faire ^^ (j'essayerais un de ses jours le tient ^^ ) Sur ce désoler sur ce quiproquo je ne voulais pas t'offenser ^^
19 juin 2011 à 11:06:18

dommage que je n'ai pas trop le temp cet ans ci. sinon je me lancerai bien. Par contre c'est peut être un peu long comme exo non ? (peut être à faire en groupe) on pourais peut être faire des équipes ce serai sympa et ca tisserai des liens :D
Anonyme
19 juin 2011 à 11:28:46

Je peux déjà donner ma manière de voir l'organisation du code...

Tout d'abord, on crée un classe pour la carte, que je vais appeler "progressMap".

Ce sera une matrice (2D) avec une fonction 'setDirection' et une autre 'advance', cette dernière renvoyant la nouvelle case "pointée".

Ensuite, une boucle infinie qui va faire 'advance' à chaque fois, avec un switch pour choisir l'opération (par exemple l'ajout à la pile, le retrait, etc.)
19 juin 2011 à 14:59:34

Allez, je me lance !

Edit 1 (19/06 20:49) : structure de base achevée (pas par pas + run + exécution à la volée) ! Plus qu'à implémenter chaque caractère...
19 juin 2011 à 20:58:30

6 heure d'affilées ? :p (si oui en tout les cas tes endurant et certainement bélier ;) )
19 juin 2011 à 21:30:53

@Hugooguh:
Merci pour l'exercice! :)
J'ai quelques questions:
- On envoie nos codes à réponses? on poste ici?
- On a combien de temps?
Zeste de Savoir, le site qui en a dans le citron !
19 juin 2011 à 21:42:02

germino t'a la foi ^^ (j'en aurait fais 3 (des heures) pas plus ^^ )
Anonyme
19 juin 2011 à 23:12:21

Chez moi ça marche depuis 19H, mais là je me débats avec la lecture depuis un fichier... (choisir l'organisation des données, c'est pas de la tarte...)

EDIT : On oublie, en fait pas besoin de ça, on calcule les valeurs...

pour l'instant, je choisis :
#[attribut]="valeur" commentaires

#[title]="Nom du programme"
#[version]="Befunge-93" par exemple
#[version_ID]="0"
#[width]="12"
#[lenght]="12"
vv  <      <
    2       
    ^  v<   
 v1<?>3v4   
    ^   ^   
>  >?>  ?>5^
    v   v   
 v9<?>7v6   
    v  v<   
    8       
 .  >  >   ^
^<

L'une des difficultés est de faire le remplissage jusqu'à la fin de la ligne par des espaces lors de la lecture...
</span>
20 juin 2011 à 7:16:15

Citation : PITETRE

6 heure d'affilées ? :p (si oui en tout les cas tes endurant et certainement bélier ;) )


Vous êtes fous. J'ai pris le temps de faire une ballade en vélo au milieu. J'y ai passé deux heures, pas plus ^^

Moi je me contente de
vv  <      <
    2       
    ^  v<   
 v1<?>3v4   
    ^   ^   
>  >?>  ?>5^
    v   v   
 v9<?>7v6   
    v  v<   
    8       
 .  >  >   ^
^<

Dans les fichiers...
20 juin 2011 à 7:23:15

ok ^^

EDIT, le programme commence t il en haut à gauche ?