Big-tuto C++

a marqué ce sujet comme résolu.

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

+1 -0

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.

+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 !

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.

+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.

+0 -2

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)

+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…

+0 -0
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