Leçons de niveau 14

Langage C++/Méthodes

Une page de Wikiversité.
Aller à : navigation, rechercher
Début de la boite de navigation du chapitre
Méthodes
Icône de la faculté
Chapitre no 8
Leçon : Langage C++
Chap. préc. :Boucles & Structures Conditionnelles
Chap. suiv. :Pointeur, Tableaux et références
fin de la boite de navigation du chapitre
Icon falscher Titel.svg
En raison de limitations techniques, la typographie souhaitable du titre, « Langage C++ : Méthodes
Langage C++/Méthodes
 », n'a pu être restituée correctement ci-dessus.

Les Méthodes :[modifier | modifier le wikicode]

La méthode en C++ est l'un des éléments les plus basiques mais essentiels du langage. De nos jours certains programmes informatiques tels les systèmes d'exploitations contiennent plusieurs millions de méthodes. Comme nous l'avons dit précédemment la méthode permet de définir une suite d'opérations à exécuter dans un ordre séquentiel donné.




Où <TypeRetour> est le type de retour de la méthode <NomMethode>, <Portee> est le nom de la portée à laquelle est rattachée la méthode, s'il y a lieu, <TypeParametre> est le type du paramètre, <NomParametre> est le nom du paramètre, <ValeurParDefaut> est la valeur éventuellement souhaitée pour le paramètre, <...> sont des paramètres additionnels et <Instructions> sont les instructions contenues dans la méthode.

En C++ l’application la plus basique en C++ est le point d'entrée programme qui n'est autre que la méthode "main".

Début d'une démonstration


Fin de la démonstration

Ceci est le minimum de code requis pour la création d'une application en C++.

Décortiquons un peu cela :

int main(int argc, char* argv[])

Nous avons donc ici le point d'entrée du programme. C'est une méthode qui a comme type de retour une valeur entière. Cette valeur permet au système de savoir dans quelle circonstance s'est terminé le programme. Si le programme s'est fermé normalement, la valeur de retour sera égale à zéro. Par contre si une erreur s'est produite, alors la valeur de retour sera différente de zéro. En général en cas d'erreur, main retourne -1, mais il peut y avoir d'autres valeurs retournées dans certains cas particuliers.

Le paramètre argc est en fait un compteur sur le nombre de chaines de caractères contenus dans le tableau argv[].

Premières applications :[modifier | modifier le wikicode]

Début d’un principe


Fin du principe


Voici un programme d'exemple qui affiche à l'écran une lettre choisie par le programmeur.

Début de l'exemple


Fin de l'exemple


Autre exemple :

Début de l'exemple


Fin de l'exemple


Les 2 applications produisent le même résultat mais n'ont pas le même code. Cela confirme le fait que la représentation graphique des caractères se fait par le biais de la représentation non signée du codage du caractère.

Bonjour Monde ![modifier | modifier le wikicode]

Début d’un principe


Fin du principe
Début de l'exemple


Fin de l'exemple




Bonjour M. X ![modifier | modifier le wikicode]

Début d’un principe


Fin du principe
Début d'une démonstration


Fin de la démonstration


Voyons ce qui se passe si on exécute la commande DOS: "[PATH]\BonjourMX.exe X". Le programme affiche "Bonjour M. X !".

Si nous exécutons "[PATH]\BonjourMX.exe Dupont", le programme affiche "Bonjour M. Dupont !".

Si nous exécutons "[PATH]\BonjourMX.exe Dupont Dupond" le programme affiche "Bonjour M. Dupond !".

Maintenant que se passerait-il si nous exécutions "[PATH]\BonjourMX.exe" ?

En fait le programme est prévu pour afficher le dernier paramètre de la chaîne d'appel de la ligne de commande. Comme le système d'exploitation passe au programme le chemin de ce dernier comme premier paramètre, la commande "[PATH]\BonjourMX.exe" affichera "Bonjour M. [PATH]\BonjourMX.exe !".




Appels de Méthodes :[modifier | modifier le wikicode]

Début d’un principe


Fin du principe

Voici une petite application qui permet de se familiariser avec l'utilité des méthodes. Imaginons que nous voulons rendre le calclul : y = a . x + b, accessible à tout le programme sans avoir à le réécrire partout dans le code. Nous devrons alors écrire la méthode "CalculeAffine" suivante :

Début de l'exemple


Fin de l'exemple


Ce code n'est pas trop mal, il fonctionne bien. Seulement il a un problème, il comporte des doublons de code.

Panneau d’avertissement

Un vrai développeur n'aurait jamais fait ce programme ainsi. Le copié/collé du code tel que je vous l'ai présenté est consommateur en lignes de code. De plus il ne facilite pas la lecture du code et peut même introduire des erreurs. Il n'est jamais conseillé de copier/coller du code. Dans un cas sur deux cela génère des erreurs.

Voyons comment on pourrait arranger cela de manière plus lisible et moins gourmande en code :

Début de l'exemple


Fin de l'exemple




Récursivité :[modifier | modifier le wikicode]

Début d’un principe


Fin du principe


Récursivité Directe :[modifier | modifier le wikicode]

Début d’un principe


Fin du principe
Début de l'exemple


Fin de l'exemple


Récursivité Indirecte :[modifier | modifier le wikicode]

Début d’un principe


Fin du principe
Début de l'exemple


Fin de l'exemple




Alternative à la Récursivité :[modifier | modifier le wikicode]

En C++, il est toujours possible d'écrire un algorithme qui effectue les tache de la récursion de manière itérative.

Pour la factorielle :

Début d'une démonstration


Fin de la démonstration

Pour le pair/impair :

Début d'une démonstration


Fin de la démonstration




Polymorphisme de Méthode[modifier | modifier le wikicode]

Le polymorphisme de méthode est la faculté qu'ont les méthodes de même nom mais de signatures différentes à pouvoir sélectionner la bonne méthode pour la bonne signature.

Début de l'exemple


Fin de l'exemple