La programmation en C++ moderne

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

a marqué ce sujet comme résolu.

Reprise du dernier message de la page précédente

Cette réponse a aidé l’auteur du sujet

Tu es motivé en ce moment :D

Je n’ai jamais pris le temps de lire ton cours et les codes d’exemple, du coup j’ai quelques questions.

  • tu utilises parfois \n, parfois std::endl. Il faudrait homogeneiser ? (Ou c’est volontaire ?)

  • dans ce code, tu utilises auto. Ca serait pas mieux d’utiliser decltype(compteur) ?

1
for (auto i { 0u }; i < compteur; ++i)
  • tu utilises des unsigned, mais il y a eu plusieurs discussions (a CppCon et sur les forums ici je crois) a propos de l’utilisation de signed vs unsigned. Et l’idée generale etait d’utiliser signed par defaut et reserver unsigned pour représenter les tailles des collections (héritage historique de la STL). Tu en penses quoi pour dans un cours ?

  • pas de déduction de type dans ce code ? (Alors que tu utilises la deduction avec {} dans la boucle for. A homogénéiser ?)

1
unsigned int repetitions { 3u };

Édité par gbdivers

Pour poser des questions ou simplement discuter informatique, vous pouvez rejoindre le discord NaN.

+2 -0

Oui, j’ai une forte motivation en ce moment, ainsi que du temps disponibe donc j’en profite. :)

  • Pour les retours à la ligne c’est voulu, pour habituer le lecteur aux deux formes.
  • Je n’ai pas introduit decltype encore dans ce cours. Peut-être combiner les deux en decltype(auto) ? Je ne sais pas, à réfléchir.
  • J’utilise unsigned quand je me dis qu’il n’y a pas de sens d’autoriser le stockage de valeurs négatives, comme des notes ou des âges. Sinon je n’ai jamais réfléchi plus que ça.
  • Oui, un oublis ici.

Merci pour tes commentaires. N’hésite pas à m’en faire d’autres. :)

+0 -0

Tu es motivé en ce moment :D

Clairement, oui :)

Quand tu présentes le besoin derrière les fonctions, je me rends compte que le terme C++ ne décrit pas le besoin typique que tu présentes: fonction fait référence aux maths, c’est pour réaliser un même calcul sous des conditions, entrées, différentes: -> sin(0), sin(pi/4), … Le besoin de factoriser une séquence d’instructions en appelle plutôt à la notion de routine ou de procédure (que l’on émule en C++ avec des fonctions void qui ne retournent rien).

Tout ça pour dire: faut-il faire une parenthèse vocabulaire pour aider un pur débutant à assimiler le vocabulaire C?

En termes de vocabulaire, je sais que jeune ça ne rentrait pas, mais aujourd’hui, c’est une évidence qui m’aide à bien énoncer la différence entre f(foo); et f(int foo);. Dans le premier cas, foo est un paramètre réel, dans le second cas c’est un paramètre formel. En anglais, (dans la norme en tout cas), parameter et argument désignent l’un et l’autre respectivement (mais je ne sais plus dans quel sens). Cette différence de vocabulaire peut aider pour faire distinguer le cas où l’on appelle donc une fonction avec un nom de lvalue utilisée en paramètre réel qui est identique au nom du paramètre formel, et qu’il faut bien comprendre qu’il s’agit techniquement de deux variables différentes, tout ça.

EDIT: je ne m’étais pas relu. ^^’ Phrases corrigées.

Édité par lmghs

+0 -0

f(foo); foo = argument

f(int foo); foo = paramètre

pour habituer le lecteur aux deux formes.

Quel est l’intérêt ? (Pour les débutants, j’ai fait le choix de proposer le minimum de syntaxe, pas de toutes les présenter. Tout dépend de ton public cible.)

Sinon je n’ai jamais réfléchi plus que ça.

Je ne sais pas si tu as vu les discussions a propos de ca a la CppCon ?

Pour poser des questions ou simplement discuter informatique, vous pouvez rejoindre le discord NaN.

+0 -0

Je ne sais pas si tu as vu les discussions a propos de ca a la CppCon ?

gbdivers

C’est les mêmes arguments que ceux résumés par @lmghs plus tôt dans la discussion ?

Édité par Ksass`Peuk

First : Always RTFM - "Tout devrait être rendu aussi simple que possible, mais pas plus." A.Einstein [Tutoriel Frama-C WP]

+1 -0

Je vais me relire pour voir les points où j’ai utilisé une expression à la place de l’autre pour corriger. C’est assez mineur, moi-même en vrai j’utilise les deux indépendamment dans mes discussions avec d’autres développeurs, mais soyons rigoureux pour les débutants.

pour habituer le lecteur aux deux formes.

Quel est l’intérêt ? (Pour les débutants, j’ai fait le choix de proposer le minimum de syntaxe, pas de toutes les présenter. Tout dépend de ton public cible.)

gbdivers

Dans le tout premier code, je présente le std::endl, mais dans le chapitre sur les littérales, je parle des caractères spéciaux dont '\n', donc je me suis dit qu’utiliser les deux allait aider le lecteur à retenir ce caractère spécial qu’on voit souvent.

Mais je suis d’accord, mieux vaut présenter le minimum de syntaxes, c’est ce que je m’efforce de faire également.

+0 -0

J’ai bien avancé dans la partie sur les références. Je réfléchis maintenant si j’introduis decltype tout de suite ou plus tard dans le cours. La section d’après sera consacrée aux exercices, pour digérer toutes les nouveautés et bien fixer tout ça en mémoire. Ensuite, je compte parler de la gestion des erreurs et de la réflexions sur les conditions (pré et post), avec notamment assert. J’aimerai aussi parler du polymorphisme ad-hoc, de inline et des trailing functions, mais est-ce que ce n’est pas trop pour le lecteur en un seul chapitre ? Une chose est sûre, c’est que je ne vais pas aborder les lambdas et les templates dans ce chapitre.

Merci d’avance pour vos commentaires.

Édité par informaticienzero

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

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