La programmation en C++ moderne

Apprenez la programmation de zéro jusqu'à l'infini !

a marqué ce sujet comme résolu.

Salut à tous,

Depuis quelques jours, je ne cesse de penser à comment améliorer le tutoriel en le rendant plus adapté aux débutants, mais tout en gardant le côté rigoureux. J'ai pensé au plan suivant pour la partie sur les bases, mais j'ai besoin de vos avis dessus.

  1. Premier code, on compile, on explique rapidement les différentes parties.
  2. Faire des calculs, explications sur la priorité des parenthèses comme en maths et enfin, introduction de std::cout pour afficher le résultat de calculs.
  3. Maintenant, on joue avec la mémoire. On parle de la création de variables, des types, puis on introduit pour finir std::cin, pour que l'utilisateur puisse jouer avec des variables.
  4. On introduit le type bool, on détaille les expressions booléennes, les tables de vérités puis on illustre avec if, else et puis else if.
  5. Et si on veut répéter des opérations ? Les boucles sont toutes indiquées. La première présentée est while. On expliquera ensuite que do while est presque identique et que for est une autre façon de faire une boucle.
  6. Il est temps de pratiquer avec le TP sur la blanchisserie.
  7. Mais si on doit faire plusieurs fois appel aux mêmes bouts de code ? Les fonctions arrivent à la rescusse ! Et j'hésite à parler des références ici ou dans un chapitre exclusif.
  8. Il faut savoir gérer les erreurs.

Je ne suis pas convaincu, surtout que j'aimerai bien introduire les tableaux également.

3 Pour std::cin faire aussi un petit point sur las saisie sécurisée ou bien tu préfères garder ça pour le chapitre sur la gestion des erreurs (mais dans ce cas là il serait intéressant de mettre ce chapitre en fin de Partie 1).

4 il faut peut-être faire un petit point sur l'algèbre de bool, ou encore mieux renvoyer vers un autre cours pourquoi pas sur ce site. Un petit exo sur les tables de vérité, écrire les opérateurs à partir de NAND, tussa tussa…

5 La boucle for est plus intéressante pour les tableaux. Enfin pour les tableaux autant présenter la boucle range-based for tout de suite.

7 Oui parler des références ici peut être bien et aussi faire un petit point sur la const-corectness.

8 Tu comptes parler des exceptions ? En lien avec les fonctions tu peux aussi parler de 'no except'.

Vu le nombre de notions que contiendraient le chapitre il faudrait prposer des exercixes complémentaires.

Bonne chance pour la suite et continuez comme ça !

+0 -0

@informaticienzero : Elle te plaît pas ma première partie, presque entièrement rédigée ? :euh:

(d'autant que ça s'approche assez de ton plan, même s'il faut que je peaufine les transitions…)

Ca me paraît être une bonne idée d'ajouter une première approche de la gestion des erreurs, mais pour les tableaux, autant attendre la partie sur la SL, quitte à mettre les tableaux vers le début de cette partie. (je pense notamment à les mettre avant le "complément aux chaînes de caractères", pas après)

+0 -0

Salut,

Avec les auteurs, on se demandait : préférez-vous le tutoiement ou le vouvoiement du lecteur ?

Le vouvoiement serait plus dans l'optique où on s'adresse à une "classe de lecteurs", autrement dit à tous les lecteurs réunis. Mais informaticienzero pense que le tutoiement fait moins distant, d'autant plus que l'on se tutoie tous sur le site.

+2 -0

Bonjour les agrumes !

La bêta tutoriel « La programmation en C++ moderne » a été mise à jour et coule sa pulpe à l'adresse suivante :

Merci d'avance pour vos commentaires.

J'ai commencé le chapitre sur les outils, et je réfléchis à une façon de pouvoir compiler la dernière version de Code::Blocks et de GCC pour les Unixiens / Linuxiens, pour que tous le monde puisse profiter du C++14.

Sous arch, il devrait pas y avoir ce problème. Je pense que les logiciels y sont à jour.

Pour les debianeux, je sais où en sont les dépôts testing. Mais de toutes façons, il me semble que gcc nécessite glibc ou gcc-lib dans la même version, et ça risquerait de planter le système si d'autres composants ne sont pas à jour.

+0 -0

@informaticienzero : j'ai récemment compilé la dernière release de GCC sous Linux Mint, précisément pour avoir C++14, et si ce fut looooong, je n'ai pas rencontré de difficulté particulière, les dépendances (ISL, GMP, etc.) installées par défaut étant assez récentes pour que ça passe. Après, je n'ai compilé que la partie g++, j'ai pas tenté de compiler aussi le compilateur C.

+1 -0

Histoire de vous donner un troisième choix, personnellement j'aime le côté impersonnel du "nous". Il englobe le lecteur dans l'idée de "c'est comme cela que nous faisons, toi et les autres développeurs".

Ksass`Peuk

J'aime bien le "nous", mais il y a des situations où il est inapplicable. Un exemple :

Tu débute complètement et n'as qu'une vague idée de ce que peut bien être la programmation ? Ou bien es-tu déjà un accoutumé et tu souhaite apprendre un nouveau langage ? Ou encore souhaite-tu réviser ou mettre à jour tes connaissances en C++ ? Alors ce tutoriel est fait pour toi.

En tout cas, pour toutes les situations où on peut l'utiliser, il paraît le plus adapté.

+0 -0

Bonjour les agrumes !

La bêta de votre tutoriel « La programmation en C++ moderne » a été mise à jour et coule sa pulpe à l'adresse suivante :

Merci d'avance pour vos commentaires.

P.S : Vos avis sur le choix entre tutoiement et vouvoiement sont toujours les bienvenus :)

+0 -0

Salut,

Je n'ai pas encore lu le tutoriel en entier, et j'ignore les éventuelles modifications que vous avez déjà prévues. Néanmoins, je me permet de faire une petite critique sur le chapitre Les variables.

1. a)

Dans la partie "Les références", je suis troublé par cette phrase :

On peut créer une référence constante vers une variable constante ou non, mais on ne peut créer une référence non constante seulement vers une variable non constante, jamais vers une variable constante.

A mon avis, "référence constante" ne veut pas dire grand chose. Une référence a en quelque sorte un rôle de pointeur qui ne peut pas être modifié, donc qui pointe toujours sur le même objet, et donc qui est "constant dans tous les cas".

De plus, si l'on voulait déclarer une référence constante au premier sens du terme, on devrait alors placer le const après le symbole & (de la même manière que l'on déclare un pointeur nu constant) :

1
2
int a {3};
int &const b = a;

Ce qui nous affiche une jolie erreur :

1
error: 'const' qualifier may not be applied to a reference

Finalement, je me permet de citer ce passage :

Technically speaking, there are no const references. A reference is not an object, so we cannot make a reference itself const. Indeed, because there is no way to make a reference refer to a different object, in some sense all references are const. Whether a reference refers to a const or nonconst type affects what we can do with that reference, not whether we can alter the binding of the reference itself.

C++ Primer, 5th Edition

Certes, ce n'est pas un gros problèmes dans un tutoriel pour débutant, mais je pense qu'il vaut mieux préciser ce genre de détail le plus tôt possible.

1. b)

Autre détails : dans ce même passage, il y a une erreur de français :

on ne peut créer une référence non constante seulement vers une variable non constante

Pour autant que je sache, la formulation "ne … seulement" n'existe pas. C'est soit "ne … que", soit "seulement" :

  1. on ne peut créer une référence non constante que vers une variable non constante
  2. on peut créer une référence non constante seulement vers une variable non constante

2.

Dans la partie "L'inférence de type : auto et decltype" :

Vous remarquerez qu'avec auto, on utilise le signe égal à la place des accolades. En effet, si on utilise les accolades, le type déduit n'est pas le bon pour des raisons que je ne détaillerai pas pour l'instant. Contentez-vous de vous en souvenir, on expliquera le pourquoi du comment en tant et en erreur.

Ce n'est plus vrai, il y a eu un changement.

A propos du tutoriel en général

Au niveau esthétique, j'ai remarqué que le tutoriel affiche les termes provenant de code dans un style de "code inline" (par exemple const). Cependant, ce n'est pas toujours le cas :

On peut ajouter le qualificateur const à une référence.

Et ce n'est pas le seul. Est-ce un choix ? Un oubli ?

Voilà, ça sera tout pour aujourd'hui. :)

+1 -0

A mon avis, "référence constante" ne veut pas dire grand chose.

Dans l'absolue, oui, c'est une "référence vers un objet const". Mais c'est largement entré dans le langage courant de dire "référence constante". A la rigueur, cela mérite une petite note, mais cela ne pose pas de problème d'utiliser "référence constante" dans le cours et d'apprendre ce terme.

Le plus important est de faire comprendre qu'une référence n'est pas affectable :

1
2
3
int i, j;
int& r = i;
r = j; // erreur

Ce n'est plus vrai, il y a eu un changement.

N3922 n'est qu'un proposal, ce n'est pas dans les normes C++11/14. Ca devrait être dans le C++17, donc ce n'est pas aberrant de dire pour le moment que l'on ne peut pas faire cela.

+1 -0

A mon avis, "référence constante" ne veut pas dire grand chose.

Dans l'absolue, oui, c'est une "référence vers un objet const". Mais c'est largement entré dans le langage courant de dire "référence constante".

Oui, je pense bien, même si de mon côté j'ai toujours dit "référence vers constante". ^^ Mais en fait c'est surtout le passage "référence constante vers une variable constante ou non" qui m'a dérangé, je pense qu'il faudrait au moins préciser que l'expression "référence constante" signifie "référence vers une variable considérée comme constante".

Ce n'est plus vrai, il y a eu un changement.

N3922 n'est qu'un proposal, ce n'est pas dans les normes C++11/14. Ca devrait être dans le C++17 […]

gbdivers

Ah, au temps pour moi. A vrai dire, j'ai remarqué ce changement en testant le type d'une variable initialisée de cette nouvelle manière (auto a {3};) et le type était bel et bien int avec GCC 5.2, donc je ne m'étais pas trop attardé sur les détails de ce proposal et je l'avais considéré comme déjà accepté par la norme actuelle.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte