Je pense que je peux m'en occuper. Mais je ne veux pas me retrouver tout seul pour l'organiser, sinon c'est pas la peine de créer un compte ou je suis seul à accéder.
Le topic actuel a eu un nouvel exercice, mais il n'est pas marqué dans le sommaire, il nous occupe maintenant parce qu'on a suivi la conversation, mais un nouveau venu n'ira pas chercher l'énoncé...
Edit : j'aimerais savoir qui me soutiendra dans cette tâche !
Au besoin, j'accepte d'aider.
Mais je ne garantis rien quant à ma disponibilité, donc si jamais je ne réponds plus, il te faudra chercher un nouvel équipier. Enfin, je pense quand même rester un moment.
Du coup, je vais dès maintenant créer le compte, je t'envoie les identifiants (Sûrement Exercices C++ ; ou le nom le plus proche que j'aurai pû trouver), après il n'y aura plus qu'à créer le topic (ce dont je vais essayer me charger juste après le MP).
Ensuite, il n'y aura plus qu'à authentifier le topic.
Voilà, le compte est créé. Si quelqu'un a une objection, surtout n'hésitez pas à le dire (mais de préférence avant que le topic n'aie vraiment démarré).
J'envoie le lien vers le nouveau topic très bientôt.
(Je n'ai pas encore eu le temps de noter la difficulté des exercices, et je dois me déconnecter d'internet pour le moment, mais n'hésitez surtout pas à proposer vos notes de difficulté. Pour le moment, j'ai uniquement repris les exercices de Nanoc, mais il y aurait aussi l'interpréteur Befunge à reprendre, par exemple.)
je t'aiderais avec plaisir (surtout pour trouver des exercices sur la SFML par exemple) mais pour le moment, je suis occupé avec nours. si t'a besoin de moi, tu sais où me trouver
Je me suis dis "OK pour proposer des exercices, gérer le sujet etc..." mais qui vas les corrigés ? Faudrait peut être que certains vienne vous aider à les coder... Voila j'espère que certains voudrais bien se proposer (je pourrais mais suis encore débutant mais j'essayerais quand même de mon coté )
Je peux me proposer pour les corrections (soit à partir de mon propre code, soit à partir d'un code simple, fonctionnel et clair comme base pour comparer)
Autre truc (à propos du nouveau topic), il faudrait rajouter des liens vers la (/les) correction(s)
Oui, ce sera fait
Au fait, je pense qu'il faut changer la façon de donner la difficulté : sur 20, la moitié des personnes qui l'ont lu ont crû que c'était une note de qualité...
Je propose de supprimer le "/20" qui est trompeur...
Autre truc (à propos du nouveau topic), il faudrait rajouter des liens vers la (/les) correction(s)
J'ai ajouté une colonne et commencé à le faire
Edit :
Je propose d'ajouter sur le premier post que les solutions apportées devraient utiliser la POO un maximum (eg: pas la moitié du programme dans le main ou fonctions libres !).
voir mon post sur le sujet : http://www.siteduzero.com/forum-83-664 [...] html#r6396510
Bon encore pour le main, je comprend. Je connais des gens qui détestent qu'il y ai une structure de contrôle dans le main.
Mais faire de la POO à toutes les sauces :/ , je pense qu'il faut pas en exagéré.
Je suis pour la POO, seulement quand cela apporte un avantage valable. Ici ::Grill, serait pratique pour une IA. ::Joueur, je vois pas l'utilité. Dans tous les cas, il n'y auras que 2 joueurs.
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles- ♡ Copying is an act of love.
Bon encore pour le main, je comprend. Je connais des gens qui détestent qu'il y ai une structure de contrôle dans le main.
Mais faire de la POO à toutes les sauces :/ , je pense qu'il faut pas en exagéré.
Je suis pour la POO, seulement quand cela apporte un avantage valable. Ici ::Grill, serait pratique pour une IA. ::Joueur, je vois pas l'utilité. Dans tous les cas, il n'y auras que 2 joueurs.
+1 (cf mon commentaire dans le sujet des exercices).
Je trouve ça bien que des personnes investissent de leurs temps pour corriger les exos, mais il faut aussi avoir un niveau correcte en C++ pour proposer une correction, et la ce n'est pas le cas( vouloir mettre de la POO à tout prix...)
Je ne suis pas pour obliger à sortir des classes. Il faut quelles viennent naturellement.
Maintenant, pour le jeu, ce n'est pas déconnant : "for each p: player { p.play() };"
Et suivant qui est le joueur, on passera par le clavier, ou un min-max.
Ben justement ! Tu parles d'IA (on peut aussi parler d'un joueur réseau) : quelle solution propre (en C++ j'entends) as-tu pour contourner la fonction virtuelle pure play() de ::Player ? (à par un pointeur de fonction, mais c'est bien plus moche !)
De plus qui te dis que le joueur 1 n'a pas envie de voir apparaître "c'est maintenant au tour de @che !" ? Pourquoi devrait-on se cantonner à 'O' et 'X' ? Pourquoi ne pas enregistrer les données du joueur avec protection par mot de passe ? (ie: se connecter à son compte, pourquoi pas en ligne si le réseau est implémenté)
Après, pourquoi le débutant ne voudrait pas créer une variante du morpion à 3 joueurs ?
C'est là que j'aime la POO : tu peux améliorer autant que tu veux, ça reste propre !
@neo : je t'invite à relire ceci avant de commencer à me traiter d’incompétent :
Citation : germino
j'ajouterai que le but de ce topic est d'abord d'aider les débutants à pratiquer la POO même si sur de si petits projets on peut facilement s'en passer : comment vont-ils pouvoir aborder de plus gros projets en POO s'ils ne l'ont pas pratiqué et habitué sur de petits exercices ?
J'ajoute ceci : comment peut-on dire ce qu'on lit souvent sur les forums de programmation comme ici (je suis parfaitement de cet avis et j'imagine que vous aussi) :
Citation : les bons pédagogues à l'attention des débutants
Il faut commencer par de petits projets avant de vous lancer dans des gros. Sinon, vous n'arriverez à rien !
et en même temps dire que durant les petits projets d'entrainement il ne faut pas employer les grands moyens des grands projets parce que ça n'est pas approprié pour un si petit projet ?
C'est extrêmement contradictoire ! Comment voulez-vous que les débutants puissent espérer se lancer un jour dans ces "grands" projets si on ne leur apprend jamais comment faire ?
Il faut développer chez eux le réflexe et la façon de penser de la programmation orientée objet ! Ces exercices sont là pour les préparer, la théorie n'est pas suffisante pour savoir programmer correctement en POO !
edit : merci lmghs pour cet avis qui corrobore la première partie de ma réponse
Disons qu'il ne faut pas être extrémiste. Si la bonne pratique est de définir des fonctions libres, alors non il ne faut pas sortir des classes (cf la question d'il y a un jour où deux où l'on assistait à une dérivation de vector pour lui rajouter ... operator<<).
Pour ça, faire des classes non!
Si le prochain exo tourne autour des développements limités, on ne va pas mettre cos, tan, exp & cie dans une classe pour "faire OO" -- d'autant cela ne le serait pas non plus.
En revanche, je te rejoins pour montrer les bonnes pratiques. C'est juste que l'OO n'est LA bonne pratique passe-partout.
Oui, mais tu avoueras que pour le sujet qui nous occupe, l'OO est plus adapté !
Je ne trouve les fonctions libres intéressantes que pour la redéfinition d'opérateurs externes agissant sur deux classes qui est justifiée par le fait qu'il n'y a pas de raison de la mettre plus dans l'une que dans l'autre (edit : ou qui surtout demande à modifier une classe ne nous appartenant pas !).
Par contre, je vais me permettre de te contredire au sujet des cos tan et cie : il suffit d'imaginer que int/float/double sont des classes pour intégrer ces fonctions en tant que méthodes (idem à std::string !)
(eg: imagine que tu aies à définir la classe BigInt qui permette de calculer avec une très grande précision : y'a pas de raison d'en faire des fonctions externes !)
il ne faut pas obliger à utiliser les classe, seulement encourager, car c'est quelque chose qui viens en pratiquant.
Si c'est pour faire une classe Helloworld qui écrit "Hello world" quand on appel le constructeur .
Ben justement ! Tu parles d'IA (on peut aussi parler d'un joueur réseau) : quelle solution propre (en C++ j'entends) as-tu pour contourner la fonction virtuelle pure play() de ::Player ? (à par un pointeur de fonction, mais c'est bien plus moche !)
De plus qui te dis que le joueur 1 n'a pas envie de voir apparaître "c'est maintenant au tour de @che !" ? Pourquoi devrait-on se cantonner à 'O' et 'X' ? Pourquoi ne pas enregistrer les données du joueur avec protection par mot de passe ? (ie: se connecter à son compte, pourquoi pas en ligne si le réseau est implémenté)
Bon dans un cas aussi extrémiste, il est évident qu'une class s'impose. Ici, nous n'avons besoin que d'un int pour gérer le numéro du joueur.
Citation : germino
Après, pourquoi le débutant ne voudrait pas créer une variante du morpion à 3 joueurs ?
Ben il n'a qu'a modifier le code de gestion du numéro. Evidamment, il faudra utiliser autre chose que j=3-j; mais le principe reste le même.
Citation : germino
C'est là que j'aime la POO : tu peux améliorer autant que tu veux, ça reste propre !
On peut obtenir des code extrêmement sale même avec la POO. D'ailleurs, abusées des class y contribue.
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles- ♡ Copying is an act of love.
Oui, mais tu avoueras que pour le sujet qui nous occupe, l'OO est plus adapté !
Je ne trouve les fonctions libres intéressantes que pour la redéfinition d'opérateurs externes agissant sur deux classes qui est justifiée par le fait qu'il n'y a pas de raison de la mettre plus dans l'une que dans l'autre (edit : ou qui surtout demande à modifier une classe ne nous appartenant pas !).
Par contre, je vais me permettre de te contredire au sujet des cos tan et cie : il suffit d'imaginer que int/float/double sont des classes pour intégrer ces fonctions en tant que méthodes (idem à std::string !)
mauvais exemple désolé ... std::basic_string est l'exemple même d'un mauvais design, une bonne grosse classe monolithique. Avoir des functions membres (méthodes à un autre sens) ça introduit un couplage fort, c'est pour ça que quand on peut avoir des fonctions libres (dans un namespace associé à la classe pour profiter de l'ADL même) c'est mieux, ça permet de réutiliser ces dernières.
(cf par exemple le design de boost.graph)
Pourquoi définir en membre ce que l'interface de la classe te permet de faire depuis l'extérieur ?
Voilà une question à la réponse tout sauf triviale.
string est reconnue comme un échec : trop de fonctions.
Mets cos en membre de double et ... tu assistes à un foirage de l'ampleur de celui des libs de java : il faut la redéfinir pour float, pour long double, etc. Pourtant l'algo est le même.
Si tous les algos standards ne sont pas membres, il y a une excellente raison à cela. Stepanov dans son /notes on programming/ sous-entendais assez fortement que si begin() est une fonction membre des divers conteneurs, c'était pour faire plaisir au courant aveuglé par l'OO à l'époque.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Cours de C++ moderne
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles - ♡ Copying is an act of love.
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles - ♡ Copying is an act of love.