Outils d'utilisateurs

Outils du Site


programmez_avec_le_langage_c

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

programmez_avec_le_langage_c [2016/12/08 22:05]
gbdivers
programmez_avec_le_langage_c [2019/12/27 19:58] (Version actuelle)
gbdivers
Ligne 1: Ligne 1:
  
-====== Débuter en C++ moderne - Tome 1 ====== 
  
-** Cours de C++ moderne **+<note warning>Ce cours n'est plus à jour, il est préférable de ne pas le suivre. Je vous recommande le cours sur Zeste de Savoir : https://zestedesavoir.com/tutoriels/822/la-programmation-en-c-moderne/.</note>
  
-** Création d'applications en C++ moderne par la pratique ** 
  
-===== Avant-propos ===== 
- 
-  * [[Introduction]] 
-  * [[Comment suivre ce cours]] 
-  * [[Comment réaliser les exercices de ce cours]] 
-  * [[Demander de l'aide et aider les autres]] 
-  * [[normes et compilateurs]] 
-  * [[autres langages]] 
- 
-===== Premiers pas ===== 
- 
-=== Langage === 
- 
-  * [[Programme minimal]] 
-  * [[Hello world]] 
-  * [[chaines]] 
-  * [[qualité logiciel]] 
-  * [[erreurs]] qu'est ce qu'une erreur ? (erreur de programmation, assert, exception, etc). Comment reagir a une erreur ? Chemins differents entre valeur retournee et exception (et contexte de traitement different). Comparaison std::find/new (exemple allocation ressource jeux). optional: pas de contexte transmis. rethrow = changed le contexte transmis. 
- 
-=== Compléments === 
- 
-  * [[histoire]] 
-  * [[doc]] 
- 
-===== Bases du calcul numérique ===== 
- 
-=== Langage === 
- 
-  * [[Calculs arithmétiques]] 
-  * [[Logique et calcul booléen]] 
-  * [[Nombres réels]] 
-  * [[string]] 
- 
-=== Compléments === 
- 
-  * [[boole et morgan]] 
-  * [[complex]] 
-  * [[virgule fixe]] 
-  * [[ratio]] 
- 
-===== Conserver les valeurs en mémoire ===== 
- 
-=== Langage === 
- 
-  * [[rvalue et lvalue]] 
-  * [[enum class]] 
-  * [[inférence de type]] 
-  * [[types en détail]] 
-  * [[informations sur les types]] 
-  * [[définir ses types]] 
- 
-=== Compléments === 
- 
-  * [[Nombres aléatoires]]  
- 
-===== Collections et algorithmes ===== 
- 
-=== Langage === 
- 
-  * [[collection]]  
-  * [[map]] 
-  * [[collection2]]  
-  * [[comparer]] 
-  * [[rechercher]] 
-  * [[itérateurs]] 
-  * [[autres collections]] 
- 
-=== Compléments === 
- 
-  * [[bitset]] 
- 
-===== Chaînes avancées et expressions régulières ===== 
- 
-=== Compléments === 
- 
-  * [[string étendu]] 
-  * [[expressions régulières]] 
-  * [[expressions régulières 2]] 
-  * [[expressions régulières 3]] 
-  * [[validation motifs]] 
- 
-===== Créer des fonctions ===== 
- 
-=== Langage === 
- 
-  * [[fonctions]] 
-  * [[paramètres arguments]] 
-  * [[references]] 
-  * [[surcharge fonctions]] 
-  * [[prédicats]] 
-  * [[fonctions génériques]] 
- 
-=== Compléments === 
- 
- 
-  * [[callable]] 
-  * [[perfect forwarding]] 
-  * [[rvalue, lvalue et leur amis]] 
-  * [[pile]] 
-  * constexpr 
-  * [[aliasing]] 
- 
-===== Créer des algorithmes ===== 
- 
-<note warning>Les chapitres suivants sont encore en cours de rédaction, voire à l'état d'ébauche. N’hésitez pas a faire des remarques ou poser des questions sur le forum de [[http://zestedesavoir.com/forums/|Zeste de Savoir]] ou de [[http://openclassrooms.com/forum/sujet/nouveau-cours-c-moderne|OpenClassroom]].</note> 
- 
-=== Langage === 
- 
-  * [[structure de contrôle]] 
-  * [[boucles]] 
-  * [[recursivite]] 
- 
-=== Compléments === 
- 
-  * [[Pair et tuple]] 
-  * [[variadic]] 
-  * [[static]], mémoire static, string table 
-  * [[init C++17]] 
-  * break, continue, goto 
- 
- 
-===== Entrées et sorties ===== 
- 
-=== Langage === 
- 
-  * [[io]] 
-  * [[ligne de commande]] 
-  * [[cin]] 
-  * [[fichier]] 
- 
-=== Compléments === 
- 
-  * cout en detail 
-  * variables d'environnement  
-  * signals, abort, exit 
-  * gestion des buffers avec les streams, concepts de latence, debit, cache. 
- 
- 
-===== Concevoir une bibliothèque ===== 
- 
-=== Langage === 
- 
-  * [[compilation séparée]] https://akrzemi1.wordpress.com/2016/11/28/the-one-definition-rule/ 
-  * documentation, commentaire, codes d'exemple 
-  * [[gérer les erreurs]] 
-  * [[tests unitaires]] 
-  * [[performances]] 
-  * [[conception bibliothèque]], interface publique, réutilisabilité. "Easy to use correctly, hard to use incorrectly" - Scott Meyers. Design interface : s'adapter aux conventions qui existent. Etre consistant 
-  * modules, conception en couches, utilisation de n-1 et n+1 
-  * namespace, dépendances. l'espace de noms global et anonyme :: 
-  * pré-condition et post-condition 
-  * physical design 
-  * variables globales, étude de std::cout 
-  * abi et C 
-  * macro, pré-processeur, directive de compilation 
- 
-https://www.famkruithof.net/uuid/uuidgen 
- 
- 
-===== Les outils de développement ===== 
- 
-  * [[build system]] 
-  * [[IDE]] 
-  * [[compilateur]] 
-  * [[débogueur]] 
-  * [[validation statique]] 
-  * [[validation style]]  
-  * [[documentation]] 
-  * [[gestion versions]] 
-  * [[tests]] 
-  * [[déployer]] 
-  * [[bug tracker]] 
- 
-https://github.com/lefticus/cppbestpractices/blob/master/02-Use_the_Tools_Available.md 
- 
-===== Les classes à sémantique de valeur =====  
- 
-  * [[poo]] 
- 
-=== Langage === 
- 
-  * [[classe]] 
-  * [[constructeurs]] 
-  * [[opérateurs]] 
-  * [[conversions]] http://cpptruths.blogspot.de/2015/11/covariance-and-contravariance-in-c.html 
-  * * allocation et liberation de ressources, raii 
- 
-=== Compléments === 
- 
-  * [[swap]] 
-  * [[SOLID]] 
-  * [[design pattern]] 
-  * [[object function]] 
-  * chaining methods 
- 
-=== Pratiquer === 
- 
-  * [[sémantique conteneur]] 
-  * [[string_view]] 
-  * [[user iterator]] 
-  * [[wrapper]] 
-  * traits : adapter les type_traits pour fonctionner avec vos classes 
- 
-===== Les classes à sémantique d'entité =====  
- 
-=== Langage === 
- 
-  * [[sémantique d'entité]] 
-  * [[héritage]] 
-  * [[polymorphisme et pointeurs]] 
-  * [[fonction virtuel]] 
-  * [[invariant de classe]] 
- 
-=== Compléments === 
- 
-  * [[Pile et Tas]], création et destruction 
-  * théorie des graphes, arbres 
-  * héritage multiple 
-  * pourquoi les manipuler via indirections ? aliasing, smart ptr 
- 
-  * points de variation : comment faire varier le comportement d'un programme ? (directive de compilation, template police/traits, héritage, DP stratégie) Quand utiliser quelle technique ? Impact sur la qualité du code (maintenabilité, évolutivité, etc) 
-  * durée de vie et propriétaire des objets 
- 
-calculateur de systeme de vote de condorcet 
- 
-=== Pratiquer === 
- 
-  * jeu d'échec 
-  * évaluation de script (if, for, etc) 
-  * article citation format (type medline) 
-  * http://progdupeu.pl/forums/sujet/205/banque-dexercices 
-  * factory. Créer une fonction factory avec switch, avec create, avec allocator 
-  * système de gestion d'événements 
- 
-===== Bibliothèques externes ===== 
- 
-  * [[libs]] 
-  * internationalisation : ICU 
-  * interface utilisateur : Qt, SFML 
-  * réseau : boost.asio, POCO, QtNetwork 
-  * XML : QtXml 
-  * base de données : QtSql 
-  * web : wt 
-  * script : boost.python, QtScript 
-  * https://cpp.libhunt.com/ 
-  * http://fffaraz.github.io/awesome-cpp/ 
-  * http://en.cppreference.com/w/cpp/links/libs 
- 
----- 
-====== Le C++03 ====== 
- 
-  * [[old C++]] 
-  * [[string style C]] 
-  * [[tableaux style C]] 
-  * [[pointeurs style C]], surcharge opérateurs d'accès -> * &, etc + surcharge opérateur new et delete, pointeur de fonction 
- 
-=== Pratiquer (A trier) === 
- 
-  * [[parser]]  
-  * [[eval]] 
-  * [[intervalle]] 
-  * [[zip unzip]] 
-  * [[chiffres]] 
-  * [[modèle texte]] 
-  * XML 
-  * [[tableur]] 
-  * [[bitmap]] 
-  * [[sample]]  
-  * [[poker]] 
-  * [[sous chaines]] 
-  * [[zebra puzzle]]  
-  * [[scrabble]] 
-  * [[regex parser]] 
-  * imagerie : génération d'arbres avec L-System 
-  * implémenter des générateurs aléatoires cryptographiques 
-  * créer un systeme d'allocation memoire (tas). Allocator, utilisation des espaces libres, défragmentation 
-  * buffer avec vector 
-  * http://martinfowler.com/bliki/CQRS.html 
-  * https://en.wikipedia.org/wiki/Fizz_buzz 
- 
-Notes: 
- 
-  * conversion implicite et explicite 
-  * indirections, adaptateurs, raw ptr/ref 
-  * "Make interfaces easy to use correctly and hard to use incorrectly" - Scott Meyers 
- 
-https://sciencetonnante.wordpress.com/2015/10/16/la-machine-a-inventer-des-mots-video/ 
-https://github.com/fffaraz/awesome-cpp 
-https://github.com/rigtorp/awesome-modern-cpp 
-https://www.reddit.com/r/dailyprogrammer/ 
-http://morpheo.inrialpes.fr/people/Boyer/index.php?id=m1-mosig 
- 
-====== À suivre... ====== 
- 
-[[en cours]] 
programmez_avec_le_langage_c.1481231157.txt.gz · Dernière modification: 2016/12/08 22:05 par gbdivers