DissertationsEnLigne.com - Dissertations gratuites, mémoires, discours et notes de recherche
Recherche

Les fonctions

Compte Rendu : Les fonctions. Rechercher de 53 000+ Dissertation Gratuites et Mémoires
Page 1 sur 8

xécution du code de la fonction. On dit que le programme appelle la fonction. Lorsque le code de la fonction a été intégralement exécuté on dit que la fonction retourne au programme.

Fichier source (*.c) Programme principal

/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ /* MAIN */ /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ void main () { //--- Variables locales -------------------------------------//-----------------------------------------------------------Initialisation(); while (1) { } //--- End while (1) } /*%%%%%%%%%%%%%%%%%%%%%% END MAIN %%%%%%%%%%%%%%%%%%%%%%%%%%%%*/

Fonction

/*-------------------------------------------------------------*Initialisation () --------------------------------------------------------------Descriptif: Initialisation du mode de fonctionnement Entrée : -Sortie : --*-------------------------------------------------------------*/ void Initialisation() { //--- Variables locales -------------------------------------//-----------------------------------------------------------//### CODE DE LA FONCTION ###// } //--- Initialisation -------------------------------------------

cfpt

Neuhaus J.

Edition 09.02.03

-3-

M

Les fonctions

icrocontrôleur Notes de cours

2.1 Implémentation d’une fonction

L’implémentation d’une fonction requière deux éléments. 1. Le corps de la fonction (code) 2. La déclaration prototype informe le programme de l’existence de la fonction.

2.1.1 Le corps de la fonction

Le corps de la fonction doit se situer après l’accolade de fermeture qui marque la fin du programme principal. On note la présence : • • D’un commentaire qui décrit le rôle de la fonction et ses caractéristiques L’entête de la fonction qui fait apparaître le nom de la fonction et les paramètres d’entrée et de sortie. Dans ce premier exemple, la fonction ne possède pas de paramètre d’où le mot clé « void » et les parenthèses laissées vides (voir aussi le paragraphe 2.2 ci-après). Le code qui est placé dans les accolades Commentaires décrivant

/*------------------------------------------------------------------------*la fonction Initialisation () -------------------------------------------------------------------------Descriptif: Initialisation du mode de fonctionnement des ports Entrée : -Nom de la fonction Sortie : --*------------------------------------------------------------------------*/ void Initialisation () { //### CODE DE LA FONCTION ###// } //--- Initialisation ----------------------------------------------------

Paramètre d’entrée, aucun dans notre cas Paramètre de sortie, aucun dans notre cas

2.1.2 La déclaration prototype

Pour que le programme puisse faire appel à la fonction, il doit être avisé de son existence. Cela se fait à l’aide de la déclaration prototype placée avant le début du programme c'est-à-dire avant les mots clés « void main () ». Du point de vue syntaxique, il suffit de copier l’entête de la fonction que l’on termine par un point virgule.

#include // registres 8051f320

// ==== Fonctions prototypes ================================================== void Initialisation (); // init. config des ports

-4-

Edition 09.02.03

cfpt

Neuhaus J.

M

.

Les fonctions

icrocontrôleur Notes de cours

2.1.3 Les variables locales

Si à l’intérieur de notre fonction nous avons besoins de variables temporaires, il faut les déclarer dans le corps de la fonction comme indiquer ci-après : Déclaration d’une variable locale

void Initialisation () {

//--- Variables locales -------------------------------------unsigned char nom_var; //------------------------------------------------------------

//### CODE DE LA FONCTION ###// } //--- Initialisation ----------------------------------------------------

Les caractéristiques d’une telle variable sont : • • • • • • Elle n’existe pas avant que nous commencions à exécuter le code de la fonction Elle est crée dès que le code de la fonction commence à s’exécuter Sa valeur au moment de sa création est quelconque. Elle est détruite lorsque la fonction se termine (code de la fonction entièrement exécuté). Elle n’est pas accessible par le programme. Elle est totalement dissociée du programme et des autres fonctions et peut, de ce fait, reprendre un nom déjà utilisé hors de la fonction elle-même. Ceci permet, par exemple, de déclarer une variable « i » pour une boucle for même si ce nom est déjà utilisé dans le programme.

Il est possible que dans certains cas exceptionnels, nous ne voulions pas que la variable locale soit détruite lorsque la fonction se termine pour la retrouver dans l’état lors de l’appel qui suivra. Le mot clé « static » permet d’obtenir ce comportement.

//--- Variables locales -------------------------------------static unsigned char nom_var; //------------------------------------------------------------

2.2 Les paramètres

Le passage de paramètres est le moyen choisi pour échanger des données entre le programme et une fonction. Un paramètre doit être vu comme une variable déclarée au niveau de l’entête de la fonction, raison pour laquelle elle est accessible par le programme et la fonction mais attention, avec des droits différents.

cfpt

Neuhaus J.

Edition 09.02.03

-5-

M

Les fonctions

icrocontrôleur Notes de cours

2.2.1 Les paramètres d’entrée

Les paramètres d’entrées sont des variables, déclarée entre les parenthèses de l’entête de la fonction.

void Ma_Fonction(unsigned char param_x, bit param_y) { }

Paramètres d’entrée

Leurs caractéristiques sont : • • Elles doivent être vue comme des variables déclarées dans la fonction. De ce fait, la fonction connaît leur nom et peut les utiliser comme bon lui semble en lecture et en écriture. Le programme doit initialiser leurs valeurs au moment de l’appel de la fonction, mais en aucun cas il peut relire leur contenu. Il ne voit pas leur nom et se réfère uniquement à leur ordre de déclaration.

A noter que les paramètres d’entrée sont facultatifs. Si aucune donnée n’est requise par la fonction, il suffira de laisser les parenthèses vides ou d’y inscrire le mot clé « void ».

void Ma_Fonction(void) { } void Ma_Fonction( ) { }

2.2.1.1 Appel de fonction & transmission des paramètres d’entrée

La transmission des données se fait au moment de l’appel de la fonction. L’exemple ci-dessous permet de comprendre la fonctionnalité. Appel de Ma_Fonction depuis le programme : Valeurs transmises 0

Ma_Fonction(3, 0);

Dès l’instant où l’on entre dans la fonction la variable « param_x » et « param_y » valent respectivement 3 et 0.

void Ma_Fonction(unsigned char param_x, bit param_y) { //### CODE DE LA FONCTION ###//

param_y vaut 0

} //--- Initialisation ----------------------------------------------------

param_x vaut 3

Il est aussi possible de remplacer les valeurs d’initialisation par des variables dans ce cas c’est la valeur des ces variables qui est transmise. Exemple, nous obtiendrons exactement le même comportement que précédemment avec l’appel ci-dessous, si les variables « var_v » et « var_t » valent respectivement 3 et 0.

Ma_Fonction(var_v, var_t);

-6-

Edition 09.02.03

cfpt

Neuhaus J.

M

Les fonctions

icrocontrôleur Notes de cours

2.2.2 Le paramètre de sortie

Le

...

Télécharger au format  txt (15 Kb)   pdf (130.4 Kb)   docx (10.9 Kb)  
Voir 7 pages de plus »
Uniquement disponible sur DissertationsEnLigne.com