Big-tuto C++

L'auteur de ce sujet a trouvé une solution à son problème.

J'inaugure : il faudrait un plan moderne, pas comme celui du tuto d'OpenClassrooms, pour ne citer que celui-là. Commencer par les bases, mais de manière moderne : la SL avant la POO, etc… Je vais essayer d'y travailler, vous me direz ce que vous en pensez.

Édité par mehdidou99

Plus on apprend, et, euh… Plus on apprend. | Coliru, parfait pour tester ses codes sources !

+0 -0

Le tuto est en bêta ? Normalement y a le topic automatique créé dans le forum concerné (bêta-zone).

EDIT : Ah, c'est pour entamer le tuto en fait ?

Édité par Phigger

La vie, c'est comme les mirabelles

+0 -0

Salut, j'ai un début de big-tuto C++ entamé depuis des lustres, je peux le mettre en bêta et/ou donner l'accès à qui veux (sous CC0).

Actuellement il se compose simplement du tuto d'introduction.

http://zestedesavoir.com/tutoriels/beta/435/le-langage-c/

http://zestedesavoir.com/forums/sujet/3536/le-langage-c/?page=1#p63844

Édité par germinolegrand

FYS : une bibliothèque C++ dans le domaine public

+1 -0
Staff

Merci germinolegrand. Pour le plan, je propose qu'avant de voir la POO, on ait présenté les sujets suivants (non-exaustif) : le langage, son histoire, pourquoi est-il adapté pour les débutants, les variables, leur portée, auto, const, les références, les std::string et autre conteneurs de la SL, les algorithmes, les fonctions, les erreurs (assertion, programmation par contrat, etc). Aucune idée pour les exceptions. Les lambdas, peut-être les templates.

Voici un début de plan : (à travailler, c'est juste une base que j'ai fait rapidement et que l'on peut améliorer)

Plan

  1. Introduction

    1. Le C++, qu'est-ce que c'est ? [définition de langage de programmation, langage compilé, langage multi-paradigme, etc…]
    2. L'histoire du C++ [insérer ici le C++11/14 dans la chronologie]
    3. Quelques liens [compilo en ligne (coliru is the best), documentation, forums… bref, le minimum pour commencer, comme ça ils n'auront pas besoin d'un IDE "chez eux", ça leur facilitera la tâche pour le début]
  2. Les bases

    1. Un programme simple : "Hello World !"
    2. Un peu de calcul [entiers et réels, opérations de base]
    3. Les variables [déduction automatique de types inside + cv qualifiers]
    4. Les chaînes de caractères
    5. Conditions et boucles
    6. Les fonctions [+std::function]
    7. Les flux [fichiers, entrée/sortie standard, stringstreams, etc…]
  3. La bibliothèque standard

    1. Les conteneurs
    2. Les références et les pointeurs [reference_wrapper, unique_ptr + make_unique, shared_ptr + make_shared, pas de raw pointer pour l'instant]
    3. Complément aux chaînes de caractères [wstring, regex ?]
    4. Les algorithmes de la SL
    5. Personnaliser le comportement de ces algorithmes [avec lambdas et pointeurs de fonctions, pas avec les foncteurs puisqu'on n'a pas vu les classes]
  4. Les outils nécessaires pour créer de vrais projets

    1. Le fonctionnement de la compilation
    2. Les outils nécessaires au programmeur : un éditeur de texte, un compilateur, un debugger [présenter au miniimum vim, notepad++ + GCC/GDB, Clang/LLDB, MSVC]
    3. L'IDE : la fusion de tous ces outils [présenter au min CodeBlocks, visual C++, QtCreator, accessoirement CodeLite]
    4. [Complément : à mettre en annexe ?] D'autres outils intéressants [gestionnaire de version et autres]
  5. La Programmation Orientée Objet

    1. La P.O.O, késako ? [penser en terme de service et non de donnée –> solution utilisée par le langage C++ = encapsulation public/private + exemples d'objets vus auparavant : conteneurs, std::function, std::string, etc…]
    2. Créer une classe
    3. En vrac pour la suite, je n'ai pas encore réfléchi à l'ordre : principes solides + déméter + les autres règles de base de la P.O.O, surcharges des opérateurs, sémantique d'entité (donc héritage, virtualité…)/sémantique de valeur (donc copie + mouvement, …)
  6. La gestion des erreurs Différentes manières de gérer les erreurs : avantages et inconvénients (retour de fonctions, assertions, exceptions, programmation par contrat et défensive) -> l'idée est de montrer au lecteur ce qu'il faut faire et ce qu'il ne faut pas, et l'orienter vers la bonne manière de gérer les erreurs selon le contexte (exceptions ou assertions)

  7. La programmation générique

    1. Présentation rapide du paradigme générique [objectifs, solution offerte par le C++ : généricité statique = templates]
    2. En vrac : fonctions et classes templates, spécialisation, autres utilisations des templates (type aliasing avec paramètre template, etc…), méta-prog template + quelques outils offerts par la STL pour la méta-prog.

Qu'en pensez-vous ?

Il manque encore la POO + enum et struct que j'ai hésité à mettre dans les bases + les templates + les exceptions + les assertions + pleins d'autres choses.

Édité par mehdidou99

Plus on apprend, et, euh… Plus on apprend. | Coliru, parfait pour tester ses codes sources !

+0 -0

Pourrais tu éditer ton message, afin de le rendre plus lisible ? Merci :)

Concernant ton plan, je ne pense pas que débuter avec un compilo en ligne soit judicieux. Un débutant total voudra certainement prendre ces repères, et changer sa manière de coder pourrait lui poser problèmes. Personnellement, j'aborderais la partie suivante au début du cours :

1.Le fonctionnement de la compilation 2.Les outils nécessaires au programmeur : un éditeur de texte, un compilateur, un debugger [présenter au min GCC/GDB, Clang/LLDB, MSVC] 3.L'IDE : la fusion de tous ces outils [présenter au min CodeBlocks, visual C++, QtCreator, accessoirement CodeLite] 4.[Complément : à mettre en annexe ?] D'autres outils intéressants [gestionnaire de version et autres]

Toutefois, l'idée du compilateur en ligne peut quand même être intéressant pour quelqu'un qui souhaite rapidement essayer sans se fatiguer à installer si nécessaire un compilo. Par exemple, pour un petit Hello World !.

En tout cas, bonne initiative. Je vous souhaite à tous un bon courage pour la rédaction !

+0 -0

J'ai ajusté selon tes remarques. Et excusez-moi pour la mise en page gênante, c'est corrigé !

EDIT : Je persiste à croire qu'un compilo en ligne est pas mal pour commencer, cependant, le problème de Coliru est qu'il ne dispose pas d'une console pour l'entrée clavier… Il faudrait en trouver un autre pour les débutants.

EDIT 2 : J'ai testé, on peut utiliser sans problème les flux vers les fichiers, par contre.

Édité par mehdidou99

Plus on apprend, et, euh… Plus on apprend. | Coliru, parfait pour tester ses codes sources !

+0 -0

TDM-GCC vient de sortir la version 5.1.0, donc le support des nouvelles normes est maintenant vraiment pas mal, même sous Windows. (il est même complet depuis un moment concernant le C++11)

Édité par mehdidou99

Plus on apprend, et, euh… Plus on apprend. | Coliru, parfait pour tester ses codes sources !

+0 -0

J'irai regarder, merci germinolegrand :)

EDIT : Dommage qu'il soit encore sous GCC 4.9.2… Mais bon, je pense qu'on pourra s'en contenter ! ^^

Édité par mehdidou99

Plus on apprend, et, euh… Plus on apprend. | Coliru, parfait pour tester ses codes sources !

+0 -0

Salut,

A mon avis il manque tout ce qui concerne les pointeurs et aspects plus techniques, que je verrais bien dans une partie juste avant ou apres la POO. Sinon, oui il vaudrait mieux introduire les IDE, compilateurs, et compagnie plus tot, au moins un chapitre avant, histoire qu'ils puissent s'y habituer.

On ira, on saura …

+0 -2

J'ai bien dit que ce n'était pas complet. Les pointeurs nus et autres joyeusetés de bas niveau seront pour après la P.O.O. A noter que mon plan aborde tout de même les pointeurs intelligents dans la partie sur la SL.

Et le chapitre sur les outils du dév est parfait à où il est ;)

Plus on apprend, et, euh… Plus on apprend. | Coliru, parfait pour tester ses codes sources !

+0 -0

Je trouve quand meme que les outils dev doivent etre vus assez tot, et il n'y a pas de raison qu'ils sachent se servir de la STL avant de pouvoir compiler chez eux. Le tuto doit aussi pouvoir etre lu sans connection internet. (epres telechargement evidemment)

On ira, on saura …

+0 -0

J'ai ajouté quelques trucs au plan.

Pour une éventuelle version en ligne, on peut distribuer des versions de Code::Blocks déjà configurées avec un compilo à jour, les bonnes options de compilation, un projet de test déjà créé… Comme ça, le lecteur pourra l'utiliser comme un IDE en ligne. (je propose Code::Blocks pour ce cas d'utilisation car il est léger et portable)

EDIT : après réflexion, je pense que c'est la bonne solution. En effet, coliru prend en charge les flux sur les fichiers mais n'a pas d'entrée clavier, et c'est le contraire pour ideone. Donc si on doit le faire jongler entre deux compilos en ligne, ça ne va pas le faire…

Édité par mehdidou99

Plus on apprend, et, euh… Plus on apprend. | Coliru, parfait pour tester ses codes sources !

+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