=ARENA=
Introduction et généralités.
Le site ARENA maison de la Dune a vu le jour en juin 2001. Il s’agit d’un centre d’interprétation de l’environnement dédié à la connaissance du massif dunaire d’Écault. Ce massif dunaire représente la plus grande superficie de dunes grises de la côte française. Ce site naturel protégé est géré par Eden 62.
Situé à Saint-Étienne-au-Mont, (à 15 min de Boulogne sur mer) dans le Pas-de-Calais, ce centre surprend dès le départ, par sa structure physique. 
En effet, le bâtiment est camouflé au milieu des oyats, la couleur sable et le toit de bois, donne la sensation que la structure est abandonnée aux éléments, ce qui a pour effet de susciter chez le visiteur une prise de conscience que les dunes ne sont pas fixes mais sont bel et bien vivantes.
Le centre ARENA est étroitement lié à la communauté d’agglomération du boulonnaisqui semble apporté une attention toute particulière à son patrimoine naturel et tient à le préserver.
D’ailleurs, la communauté d’agglomération du boulonnais a mis en place un service « Patrimoine Naturel » qui a pour objectif des sensibiliser le grand public aux questions environnementales dont la préservation du patrimoine naturel sur le territoire boulonnais par le biais de diverses animations.
Le genre d’animation mise en place est basée sur une forte collaboration avec les différents gestionnaires et propriétaires de nombreux sites sur le boulonnais.
Il en résulte 1.000 hectares en espaces naturels sensibles, propriétés du Conservatoire du Littoral et du Conseil Général du Pas-de-Calais, gérés par Eden 62 :
Les sites littoraux :
Les sites d'intérieurs :
3.000 hectares de forêts domaniales gérés par l'Office National des Forêts :
Activités de la structure.
L’objectif premier du centre ARENA maison de la Dune est de sensibiliser le public à la précarité de la dune aujourd’hui et à l’impact de l’activité humaine qui menace l’équilibre de la faune et de la flore (en termes d’occupation du territoire).
Le centre accueille un large public, comprenant aussi bien des familles, que des groupes scolaires, ou tout simplement des amoureux du patrimoine naturel boulonnais.
Pour atteindre son objectif, ce centre d’interprétation de l’environnement mise sur des activités diverses pouvant ainsi satisfaire les attentes de leur public.
Une exposition sur le thème du littoral boulonnais propose au travers d’une mise en scène originale et de manière interactive et pédagogique, de découvrir la manière dont se forme une dune, mais présente également la diversité de la faune et de la flore.
Cette exposition passe par de nombreux jeux qui sont aussi bien mécaniques, informatiques que tactiles ou sous forme de films.
L’autre orientation de cette exposition est la sensibilisation, notamment à la relation Homme/Nature.
Le volet sensibilisation se décompose en plusieurs activités selon le public concerné, autour d’activités proposées de manière ponctuelle.
Spécificités du lieu.
Au-delà de son activité première de sensibiliser le public à la protection des dunes et de la flore et de la faune, ARENA est allé plus loin en proposant des activités liées aux modes de vie des consommateurs.
En effet, chaque premier weekend du mois et pendant les vacances scolaires, le public a la possibilité de bénéficier de conseils pour avoir une manière de vivre plus écolo. Ces animations traitent 2 thèmes principaux :
Ex : mangeoires à oiseaux, refuges à insectes, nichoirs
Parallèlement à ces activités le centre dispose d’une boutique nature permettant d’accéder à de nombreux produits « naturels », où le visiteur peut se laisser tenter par quelques dégustations...

Implémentation d'algorithmes classiques/Algorithmique du texte/Algorithme de Boyer-Moore

L'algorithme de Boyer-Moore recherche une sous-chaîne de caractères en commençant par la fin.
C.
Note : la méthode de construction de la seconde table de correspondance (codice_1) dans cet exemple est plus lente que ce qu’elle devrait être (pour la simplicité de l’implémentation). Cela ne donne donc pas une comparaison valable avec les autres algorithmes, si vous cherchez à comparer leur vitesse. Une méthode plus rapide doit être utilisée à la place (et on peut tenir compte des remarques exprimées ci-dessus concernant sa taille, le bornage de ses valeurs possibles en fonction de la taille de l’alphabet et la limitation du prétraitement nécessaire à une partie seulement de la clé si celle-ci est très longue et dépasse certaines limites liées à la taille de l‘alphabet quand il est plus petit que la clé recherchée).
/* This helper function checks, whether the last "portion" bytes
 * of "needle" (which is "nlen" bytes long) exist within the "needle"
 * at offset "offset" (counted from the end of the string),
 * and whether the character preceding "offset" is not a match.
 * Notice that the range being checked may reach beyond the
 * beginning of the string. Such range is ignored.
static inline int boyermoore_needlematch(
 const unsigned char* needle, size_t nlen,
 size_t portion, size_t offset)
 ssize_t virtual_begin = nlen - offset - portion;
 ssize_t ignore = 0;
 if (virtual_begin < 0) {
 ignore = -virtual_begin;
 virtual_begin = 0;
 if (virtual_begin > 0 && needle[virtual_begin - 1] == needle[nlen-portion - 1])
 return 0;
 return memcmp(
 needle + nlen - portion + ignore,
 needle + virtual_begin,
 portion - ignore) == 0;
/* Returns a pointer to the first occurrence of "needle"
 * within "haystack", or NULL if not found.
const unsigned char* memmem_boyermoore(
 const unsigned char* haystack, size_t hlen,
 const unsigned char* needle, size_t nlen)
 size_t *skip; /* Array of shifts with self-substring match check */
 size_t a, hpos;
 ssize_t occ[UCHAR_MAX + 1]; /* Array of last occurrence of each character */
 if (nlen > hlen || nlen <= 0 || !haystack || !needle)
 return NULL;
 /* Preprocess #1: init occ[] */
 /* Initialize the table to default value */
 for (a = UCHAR_MAX + 1; --a >= 0)
 occ[a] = -1;
 /* Then populate it with the analysis of the needle */
 /* But ignoring the last letter */
 for (a = 0 ; a < nlen - 1 ; a++)
 occ[needle[a]] = a;
 /* Preprocess #2: init skip[] */ 
 /* Note: This step could be made a lot faster.
 * A simple implementation is shown here. */
 skip = (size_t *) malloc(nlen * sizeof(size_t));
 /* We should check here if skip is NULL (allocation failed) ! */
 for (a = 0; a < nlen; ++a) {
 size_t value = 0;
 while (value < nlen && !boyermoore_needlematch(needle, nlen, a, value))
 ++value;
 skip[nlen - a - 1] = value;
 /* Search */
 for (hpos = 0; hpos <= hlen - nlen; ) {
 size_t npos = nlen - 1;
 while (needle[npos] == haystack[npos + hpos]) {
 if (npos == 0) {
 free(skip);
 return haystack + hpos;
 --npos;
 hpos += max(skip[npos], npos - occ[haystack[npos + hpos]]);
 free(skip);
 return NULL;

Implémentation d'algorithmes classiques/Algorithmes de tri/Smoothsort