mirror of
https://github.com/Ladebeze66/cpp-partie-2.git
synced 2025-12-16 05:57:57 +01:00
94 lines
5.9 KiB
Plaintext
94 lines
5.9 KiB
Plaintext
# **************************************************************************** #
|
|
# #
|
|
# ::: :::::::: #
|
|
# introduction.txt :+: :+: :+: #
|
|
# +:+ +:+ +:+ #
|
|
# By: fgras-ca <fgras-ca@student.42.fr> +#+ +:+ +#+ #
|
|
# +#+#+#+#+#+ +#+ #
|
|
# Created: 2024/02/10 15:12:35 by fgras-ca #+# #+# #
|
|
# Updated: 2024/02/11 12:30:48 by fgras-ca ### ########.fr #
|
|
# #
|
|
# **************************************************************************** #
|
|
|
|
** Chapitre I
|
|
** Introduction
|
|
** Le C++ est un langage de programmation polyvalent créé par Bjarne Stroustrup
|
|
** comme une extension du langage de programmation C, ou "C avec Classes"
|
|
** (source : Wikipedia).
|
|
** L'objectif de ces modules est de vous introduire à la Programmation Orientée Objet.
|
|
** Ce sera le point de départ de votre voyage en C++. De nombreux langages sont recommandés
|
|
** pour apprendre la POO. Nous avons décidé de choisir le C++ puisqu'il est dérivé
|
|
** de votre vieux ami le C.
|
|
** Comme il s'agit d'un langage complexe, et afin de garder les choses simples,
|
|
** votre code sera conforme à la norme C++98.
|
|
** Nous sommes conscients que le C++ moderne est très différent sous de nombreux aspects.
|
|
** Donc, si vous voulez devenir un développeur C++ compétent, c'est à vous d'aller
|
|
** plus loin après le 42 Core Commun !
|
|
*/
|
|
|
|
** Chapitre II
|
|
** Règles générales
|
|
** Compilation
|
|
** • Compilez votre code avec c++ et les drapeaux -Wall -Wextra -Werror
|
|
** • Votre code doit encore compiler si vous ajoutez le drapeau -std=c++98
|
|
**
|
|
** Formatage et conventions de nommage
|
|
** • Les répertoires d'exercices seront nommés de cette façon : ex00, ex01, ..., exn
|
|
** • Nommez vos fichiers, classes, fonctions, fonctions membres et attributs comme
|
|
** requis dans les directives.
|
|
** • Écrivez les noms des classes en format UpperCamelCase. Les fichiers contenant
|
|
** le code des classes seront toujours nommés selon le nom de la classe. Par exemple :
|
|
** ClassName.hpp/ClassName.h, ClassName.cpp, ou ClassName.tpp. Ainsi, si vous avez
|
|
** un fichier d'en-tête contenant la définition d'une classe "BrickWall" représentant
|
|
** un mur de briques, son nom sera BrickWall.hpp.
|
|
** • Sauf indication contraire, tous les messages de sortie doivent se terminer par un
|
|
** caractère de nouvelle ligne et être affichés sur la sortie standard.
|
|
** • Adieu Norminette ! Aucun style de codage n'est imposé dans les modules C++.
|
|
** Vous pouvez suivre celui que vous préférez. Mais gardez à l'esprit qu'un code que
|
|
** vos pairs évaluateurs ne peuvent pas comprendre est un code qu'ils ne peuvent pas
|
|
** noter. Faites de votre mieux pour écrire un code propre et lisible.
|
|
**
|
|
** Autorisé/Interdit
|
|
** Vous ne codez plus en C. Il est temps de passer au C++ ! Par conséquent :
|
|
** • Vous êtes autorisé à utiliser presque tout de la bibliothèque standard. Ainsi,
|
|
** au lieu de vous en tenir à ce que vous connaissez déjà, il serait intelligent
|
|
** d'utiliser autant que possible les versions C++ des fonctions C auxquelles vous
|
|
** êtes habitué.
|
|
** • Cependant, vous ne pouvez pas utiliser d'autres bibliothèques externes. Cela
|
|
** signifie que les bibliothèques C++11 (et formes dérivées) et Boost sont interdites.
|
|
** Les fonctions suivantes sont également interdites : *printf(), *alloc() et free().
|
|
** Si vous les utilisez, votre note sera de 0 et c'est tout. Notez que, sauf mention
|
|
** explicite du contraire, l'utilisation des mots-clés using namespace <ns_name> et
|
|
** friend est interdite. Sinon, votre note sera de -42.
|
|
** • Vous êtes autorisé à utiliser la STL dans les modules 08 et 09 uniquement. Cela
|
|
** signifie : pas de Conteneurs (vector/list/map/etc.) et pas d'Algorithmes (tout ce
|
|
** qui nécessite d'inclure l'en-tête <algorithm>) jusqu'à ce moment. Sinon, votre
|
|
** note sera de -42.
|
|
**
|
|
** Quelques exigences de conception
|
|
** • Les fuites de mémoire se produisent aussi en C++. Lorsque vous allouez de la
|
|
** mémoire (en utilisant le mot-clé new), vous devez éviter les fuites de mémoire.
|
|
** • Du module 02 au module 09, vos classes doivent être conçues selon la Forme
|
|
** Canonique Orthodoxe, sauf indication contraire explicite.
|
|
** • Toute implémentation de fonction mise dans un fichier d'en-tête (sauf pour les
|
|
** modèles de fonction) signifie 0 pour l'exercice.
|
|
** • Vous devriez être capable d'utiliser chacun de vos en-têtes indépendamment des
|
|
** autres. Ainsi, ils doivent inclure toutes les dépendances dont ils ont besoin.
|
|
** Cependant, vous devez éviter le problème de double inclusion en ajoutant des
|
|
** gardes d'inclusion. Sinon, votre note sera de 0.
|
|
**
|
|
** Lisez-moi
|
|
** • Vous pouvez ajouter des fichiers supplémentaires si vous en avez besoin (c'est-à-dire,
|
|
** pour diviser votre code). Comme ces devoirs ne sont pas vérifiés par un programme,
|
|
** n'hésitez pas à le faire tant que vous remettez les fichiers obligatoires.
|
|
** • Parfois, les directives d'un exercice semblent courtes mais les exemples peuvent
|
|
** montrer des exigences qui ne sont pas explicitement écrites dans les instructions.
|
|
** • Lisez chaque module complètement avant de commencer ! Vraiment, faites-le.
|
|
** • Par Odin, par Thor ! Utilisez votre cerveau !!!
|
|
** Vous devrez implémenter beaucoup de classes. Cela peut sembler fastidieux,
|
|
** à moins que vous ne soyez capable de scripter votre éditeur de texte préféré.
|
|
** Une certaine liberté vous est donnée pour compléter les exercices.
|
|
** Cependant, suivez les règles obligatoires et ne soyez pas paresseux. Vous
|
|
** manqueriez beaucoup d'informations utiles ! N'hésitez pas à lire sur les
|
|
** concepts théoriques.
|
|
*/ |