Loading...

Main.Static History

Hide minor edits - Show changes to markup

February 26, 2010, at 09:03 AM by Webmaster -
Added lines 1-69:

(:notitle:) (:include HautPageReference:)

Static


Description

Le mot-clé static est utilisé pour créer des variables qui sont visibles uniquement dans une fonction. A la différence des variables locales qui sont détruites et créées à chaque fois qu'une fonction est appelée, les variables static persistent au-delà de l'appel de la fonction, conservant leurs données entre deux appels de la fonction.

Les variables déclarées à l'aide du mot-clé static peuvent être créées et initialisées seulement la première fois que la fonction est appelée.

Exemple


/* Marche au hasard
* Paul Badger 2007
* Marche au hasard erre entre deux limites
* Le mouvement maximum dans une boucle est régit par 
* le paramètre "stepsize"
* Une variable statique évolue de part et d'autre d'une quantité aléatoire
* Cette techniqe est également connue comme le "bruit rose" ou "la marche ébrieuse"
*/

#define randomWalkLowRange -20
#define randomWalkHighRange 20
int stepsize; // déclare variable globale

int thisTime; // déclare variable globale
int total; // déclare variable globale

void setup()
{
  Serial.begin(9600); // initialise connexion série 
}

void loop()
{        //  test la fonction randomWalk
  stepsize = 5;
  thisTime = randomWalk(stepsize);
  Serial.println(thisTime);
   delay(10);
}

int randomWalk(int moveSize){
  static int  place;     // variable pour stocker la valeur dans la fonction - déclarée avec static et donc conserve la
                         // valeur entre 2 appels de la fonction et aucune autre fonction ne peut changer sa valeur. 

  place = place + (random(-moveSize, moveSize + 1));

  if (place < randomWalkLowRange){                    // fixe limites haute etbasse
    place = place + (randomWalkLowRange - place);     // direction positive
  }
  else if(place > randomWalkHighRange){
    place = place - (place - randomWalkHighRange);     //direction négative
  }

  return place;
}

Commentaires utilisateurs

Aucun commentaire

(:include BasPageReference:)