Les fonctions

Voici la liste de toutes les fonctions standard du M. Leur utilisation est présentée dans l’exemple sur Les fonctions.

abs(X)

Cette fonction prend un argument et renvoie sa valeur absolue. Si X est indefini, alors abs(X) = indefini.

afficher

Cette fonction affiche sur la sortie standard la valeur de l’expression en argument. Elle accepte trois types d’arguments.

  • Les chaines de caractères, encadrées par des guillemets : afficher "Bonjour, monde!"

  • Les expressions numériques, encadrées de parentheses: afficher (X). Il est possible d’indiquer la précision minimale (afficher (X):2) et la précision maximale (afficher (X):2..4).

  • L’indentation à rajouter à l’affichage de la prochaine ligne : afficher indenter(3). Un compteur interne sauvegarde l’indentation courante. Si le compteur est négatif, il est immédiatement réinitialisé à zero.

Ses arguments s’ajoutent les uns après les autres sans parentheses et sans séparateur. Exemple:

afficher indenter(1) "X =" (X):2..4 "\n" indenter(-1);

Les caractères spéciaux sont echappés avec “ \ “ :

afficher "Je dis \"Bonjour, monde!\"";

arr(X)

Cette fonction prend un argument et renvoie l’entier le plus proche, ou indefini s’il est indefini.

attribut(X, attribut)

Cette fonction prend un argument X et un nom d’attribut a et retourne la valeur associée à l’attribut a de X.

champ_evenement(X, champ)

Cette fonction prend un argument X et un nom de champ d’événement champ. La valeur X correspond à l’identifiant de l’événement. %TODO: référence chap événement Si le champ correspond à une valeur, champ_evenement la retourne. Si le champ correspond à une variable, champ_evenement retourne sa valeur.

Note : champ_evenement peut être utilisée pour assigner des valeurs et des références à des événéments. Exemple:

evenement
: valeur ev_val
: variable ev_var;

# Associe la valeur 42 au champ ev_val de l'événement 0.
champ_evenement (0,ev_val) = 42;
# Associe la variable X au champ ev_var de l'événement 0.
champ_evenement (0,ev_var) reference X;

inf(X)

Cette fonction prend un argument et renvoie l’entier inferieur le plus proche, ou indefini s’il est indefini.

max(X, Y)

Cette fonction prend deux arguments et renvoie la plus grande valeur des deux. Si les deux valeurs sont indefinies, alors la fonction renvoie indefini. Si X est défini et Y est indefini, alors max(X,Y) = max(X, 0). De même, si X est indéfini et Y est defini, alors max(X,Y) = max(0, Y).

meme_variable(X, Y)

Cette fonction prend en argument deux variables et vérifie s’il s’agit de la même variable. Elle est notamment utilisée dans les iterateurs de variables pour effectuer des traitements spécifiques.

multimax(X, TAB)

Cette fonction prend deux arguments X une valeur et TAB un tableau de valeurs. Elle calcule la plus grande valeur contenue dans TAB entre 0 et X - 1. Si X est indefini ou X <= 0, alors multimax(X, TAB) = indefini. X peut être plus grand que la taille de TAB, auquel cas multimax calculera le maximum de TAB.

min(X, Y)

Cette fonction prend deux arguments et renvoie la plus petite valeur des deux. Si les deux valeurs sont indefinies, alors la fonction renvoie indefini. Si X est défini et Y est indefini, alors min(X,Y) = min(X, 0). De même, si X est indéfini et Y est defini, alors min(X,Y) = min(0, Y).

nb_evenements()

Cette fonction renvoie le nombre total d’événements.

null(X)

Cette fonction prend un argument X et renvoie 1 si X est égal à 0, 0 si X est défini et différent de 0, et indefini s’il est indefini.

Cette fonction est strictement équivalente à l’expression (X = 0)

positif(X)

Cette fonction prend un argument X et renvoie 1 si X est strictement supérieur à 0, 0 si X est inferieur ou égal à 0, et indefini si X est indefini.

Cette fonction est strictement équivalente à l’expression X > 0.

positif_ou_nul(X)

Cette fonction prend un argument X et renvoie 1 si X est supérieur ou égale à 0, 0 si X est strictement inferieur ou égal à 0, et indefini si X est indefini.

Cette fonction est strictement équivalente à l’expression X >= 0.

present(X)

Cette fonction prend un argument X et renvoie 0 s’il est indefini et 1 sinon.

Note : cette fonction est la seule façon de tester si une valeur est égale à indefini car l’expression booléenne (indefini = indefini) est égale à indefini.

somme(X, Y, …)

Cette fonction n’a pas de limite d’arguments. Elle calcule leur somme. Si aucun argument n’est donné à la fonction somme, elle renvoie 0. Si tous ses arguments sont indefinis, alors elle renvoie la valeur indefini.

supzero(X)

Cette fonction prend un argument X et renvoie sa valeur s’il est strictement supérieur à 0, sinon il renvoie indefini.

taille(TAB)

Cette fonction prend en argument soit une variable, soit un tableau. S’il s’agit d’une variable, taille renvoie 1, sinon elle renvoie la taille du tableau. Elle échoue si l’argument est une constante ou une valeur.

type(V, type)

Cette fonction prend en argument une variable et un type. Elle renvoie 1 si V est du type donné, 0 sinon.