Les fonctions (programmation)
Dans un code, parfois nous avons besoin d'exécuter une tâche plusieurs fois. Pour ne pas écrire le même bloc de code et optimiser notre programme final, nous pouvons faire transcrire ce bloc de code dans une fonction.
Dans un code ou un programme, une fonction est un ensemble de lignes de code qui sont exécutées ou interprétées que lorsqu'elle est appelée. Autrement dit, une boîte noire qui a des entrées; appelées aussi paramètres chez les informaticiens, qui exécute des instructions, et qui retourne un résultat ou un état d'exécution. Ainsi, elle nous permet d'effectuer une tâche spécifique tout en évitant la redondance des lignes de code dans notre programme et d'optimiser le script final, ce qui nous permet de l'appeler à tout moment.
Pour simplifier la modélisation d'une fonction en codage, nous pouvons la simplifier à une boîte fermée avec une ou plusieurs entrées; que ce soit une variable ou un argument; et une ou plusieurs sorties.

Le corps de cette fonction sera donc un bloc de code; composé d'une ou plusieurs lignes de code, et son nom est le nom de la fonction que nous avons donné lors de sa création. Cette boîte dispose ainsi d'une ou plusieurs entées et sorties telles que:
- Les entrées : une entrée est une variable ou un argument que nous injectons lors de l'appel de la fonction.
- Les sorties : une sortie d'une fonction est le résultat suite au bon exécution de notre script ou bloc.
Les fonctions prédéfinies
Dans les langages compilés ou interprétés, tels que le C, C++, Python, ... nous avons sûrement rencontré différentes fonctions prédéfinies et nous les avons utilisées sans nous en apercevoir. Par exemple, la fonction print(), input(), len(), ... sont des fonctions prédéfinies que nous retrouvons dans Python, C++, ...
La fonction print()
Par exemple, la fonction print(), depuis la version de Python, permet d'afficher n'importe quel objet dans la console de sortie. Cette fonction peut prendre plusieurs formes, ci-dessous quelques-unes :
print(a, b, c)
print("bonjour")
print([x, y, z])
Si vous découvrez Python pour la première fois, nous vous indiquons alors que cette fonction prédéfinie permet de passer un nombre indéfini pour affichage à la sortie. Elle est également possible de configurer à l'avance le séparateur entre les différentes variables à afficher au lieu de l'espace (" "). Pour que vous puissiez modifier la manière par défaut dont cette fonction imprime dans notre console, vous devez indiquer à la fonction le format que vous le souhaitiez à travers la saisie d'un argument. Ci-dessous quelques exemples:
#remplacer l'espace " " par une virgule
print("Bonjour", "electro", "robot", "vous", "souhaite", "le", "bienvenu", sep=",")
#ajouter les trois points "..." à la fin de l'affichage
print("La fin", "du","document", end="...")
La fonction input()
En langue Python, pour interroger un utilisateur pour vous saisir une valeur, interagir avec l'utilisateur, choisir une option parmi plusieurs, ... il existe une fonction prédéfinie pour cela : c'est la fonction input(). Cette fonction permet de récupérer une variable saisie par l'utilisateur depuis le clavier (il est à noter que le clavier est un équipement d'entrée de notre système). Voici un exemple simple qui questionne le prénom de l'utilisateur puis il l'affiche avec la fonction print():
#demander le prénom de l'utilisateur
name= input("Qulle est votre prénom ?")
#afficher le prénom de l'utilisateur
print("votre prénom est", name)
En C++, nous pouvons retrouver d'autres fonctions prédéfinies qui nous permettent de réaliser les mêmes fonctions entrées/sorties lorsque nous programmons notre code.
La fonction cout()
Cette fonction de sortie ou d'affichage est spécifique au langage de programmation C++ de la bibliothèque iostream, est l'équivalent à la fonction printf() du langage C. Ci-dessous un exemple pour vous nous démontre cela :
// nous déclaons ici la bibliothèque iostream pour utiliser la fonction cout
#include <iostrem>
//définissons par défaut le namespace à std, cela nous permettra d'éviter de le saisir à chaque fois que nous utilisons les fonctions cin et cout
using namespace std;
int main()
{
cout << "Hello Electro & Robot"; // équivalent à printf("Hello Electro & Robot"); du langage C
return 0;
}
La fonction cin()
Cette fonction d'entrée, propriétaire au langage de programmation C++ de la bibliothèque iostream. Elle est l'équivalent à la fonction scanf() du langage Scanf() est en effet fournie par la bibliothèque <stdio.h>. Pour mieux comprendre cela, nous vous proposons également cet exemple ci-dessous:
// nous déclaons ici la bibliothèque iostream pour utiliser la fonction cin pour les entrées et aussi count les sorties
#include <iostream>
//définissons par défaut le namespace à std, cela nous permettra d'éviter de le saisir à chaque fois que nous utilisons les fonctions cin et cout
using namespace std;
int main ()
{
float Val_1, Val_2, Val_3, somme;
cout << "Entrez 3 valeurs (numérique uniquement) : " << endl;
cin >> Val_1 >> Val_2 >> Val_3;
somme = Val_1 + Val_2 + Val_3;
cout << "La somme des 3 valeurs est : " << somme << endl;
return 0;
}
Comme vous l'avez sûrment remarqué, nous n'avons mis aucune fonction pour tester si la valeur saisie est numérique ou pas afin de ne pas vous complexifier le code. Pour le bon fonctionnement, il est donc recommandé de tester ce code uniquement avec des valeurs numériques. Si vous testez avec des valeurs autres, le résultat fourni ne sera donc pas correct.
Les fonctions les plus connues ?
Pour chaque langage de programmation, quel que soit C, C++, Python ou autre langage, nous trouvons toujours une liste de fonctions que nous utilisons assez fréquemment. Ces fonctions sont généralement existantes dans principalement les bibliothèques standard appropriées de chaque langage de programmation.
En langage C, les fonctions les plus utilisés sont les suivantes :
| Fonction | Description | Bibliothèque |
| printf() | Affiche un texte formaté à la sortie | <stdio.h> |
| scanf() | Lit des entrées à partir d'une entrée | <stdio.h> |
| gets() / fgets() | Lit une chaîne de caractères. Il est recommendé d'utiliser fget() pour une lecture à partir d'un flux que la fonction get() | <stdio.h> |
| puts() | Permet d'affiche une chaîne de caractères | <stdio.h> |
| strlen() | Calcule la longueur d’une chaîne de caractères | <string.h> |
| strcpy() / strncpy() | Copie une chaîne de caractères dans une autre | <string.h> |
| strcat() / strncat() | Concatène deux chaînes de caractères | <string.h> |
| strcmp() / strncmp() | Compare deux chaînes de caractères | <string.h> |
| exit() | Termine le programme en cours | <stdlib.h> |
| atoi() / atof() / atol() | Convertit une chaîne en entier, en virgule flottant ou long | <stdlib.h> |
| rand() / srand() | Génère un nombre aléatoire | <stdlib.h> |
| time() | Donne le temps actuel de la machine | <time.h> |
Et en langage C++, nous pouvons lister ci-dessous les fonctions couramment utilisées :
| Fonction | Description | Bibliothèque |
| std::cout / std::cin | Entrée/sortie standard Ces deux fonctions remplacent printf() et scanf() | <iostream> |
| std::getline() | Lit une ligne entière depuis équipement d’entrée | <iostream> |
| std::stoi() / std::stof() | Convertit une chaîne en nombre Stoi pour convertir une chaine en integer et stof en float | <string> |
| std::to_string() | Convertit un nombre en une chaîne de caractère | <string> |
| std::string::length() | retourne la longueur d'une chaîne de caractère | <string> |
| std::string::substr() | extrait une sous-chaîne d’une chaîne de caractère | <string> |
| std::max() / std::min() | Renvoie la valeur maximale et la valeur minimale d'une ensemble de données exprimés sous forme de collection | <algorithm> |
| std::for_each() | Applique une fonction à chaque élément de la collectoin | <algorithm> |
La différence entre le C et le C++ est que le C++ est un langage de programmation orientée objet tandis que le C est un langage procédural. Néanmoins, les fonctions C restent valides dans le monde du C++
Et pour les calculs mathématiques ?
Pour les fonctions mathématiques, nous retrouvons la même syntaxe dans les deux langages de programmation C et C++; puisque C++ réutilise la quasi-totalité de la bibliothèque math.h de C dans cmath. Le tableau ci-dessous nous résumes la majorité de ces fonctions prédéfinies pour les calculs mathématiques :
| Fonction | Description | Exemple ? |
| sqrt(x) | Racine carrée de x | sqrt(9.0) = 3.0 |
| pow(x, y) | x élevé à la puissance y | pow(2.0, 3.0) = 8.0 |
| exp(x) | e élevé à la puissance x | exp(1.0) = ≈ 2.718 |
| log(x) | Logarithme naturel (base e) | log(2.718) = ≈ 1.0 |
| log10(x) | Logarithme décimal (base 10) | log10(100) = 2.0 |
| fabs(x) | Valeur absolue (float/double) | fabs(-3.2) = 3.2 |
| ceil(x) | Arrondi supérieur | ceil(2.3) = 3.0 |
| floor(x) | Arrondi inférieur | floor(2.9) = 2.0 |
| fmod(x, y) | Reste de la division flottante x % y | fmod(5.3, 2.0) = 1.3 |
| trunc(x) | Tronque la partie décimale | trunc(3.7) = 3.0 |
| round(x) | Arrondit à l'entier le plus proche | round(2.6) = 3.0 |
| hypot(x, y) | √(x² + y²) — norme euclidienne | hypot(3, 4) = 5.0 |
| sin(x) | Sinus de x (en radians) | sin(0) = 0.0 |
| cos(x) | Cosinus de x | cos(0) = 1.0 |
| tan(x) | Tangente de x | tan(0) = 0.0 |
| asin(x) | Arcsin de x | asin(0) = 0.0 |
| acos(x) | Arccos de x | acos(0) = 1.570796 |
| atan(x) | Arctan de x | atan(0) = 0.0 |
| atan2(y, x) | Angle dont la tangente est y/x (meilleur que atan(y/x)) | atan2(0,1) = 0.0 |

