MIAS 1 et MASS 1 - Programmation fonctionnelle
TP 2 : Structures conditionnelles, prédicats, environnement

 Exercice 1 : Spécifier et écrire une fonction qui renvoie la valeur absolue d'un réel.
 
 
 

Exercice 2 : Spécifier et définir les prédicats estpair? qui testent la parité d'un entier. On pourra utiliser la fonction prédéfinie remainder.

(Remarque : les prédicats prédéfinis even? et odd? testent respectivement si un nombre est pair ou impair).
 
 
 

Exercice 3 : Spécifier et écrire un prédicat divisiblepar? qui teste si un nombre est divisible par un autre.
 
 
 

Exercice 4 : Spécifier est écrire un prédicat bissextile? qui teste si une année est bissextile. (on pourra utiliser le prédicats divisiblepar? précédemment défini.
 
 
 

Exercice 5 : Écrire deux versions de la fonction suivante, l'une en utilisant if, l'autre en utilisant cond.

;   mention : Reel --> Chaine
;               x  |-> "TB"        si x >= 16
;                      "B"         si 14<= x < 16
;                      "AB"        si 12 <= x < 14
;                      "Passable"  si 10 <= x <12
;                      "Recale"    si x <10
 

 
 

Exercice 6 : Écrire la fonction suivante :

;   queltype : Objet --> Chaine
;                o   |-> "reel"     si o est un reel mais pas entier
;                        "entier"   si o est un entier
;                        "booleen"  si o est un booleen
;                        "chaine"   si o est un chaine
;                        "autre"    dans tous les autres cas
 

 
 

Exercice 7 : Calcul de la date de Pâques.
L'algorithme suivant permet de calculer la date de Pâques en fonction de l'année ou plus exactement le numero du jour à partir du 1er mars qui correspond au dimanche de Pâques.

Étant donnée annee un nombre à 4 chiffres représentant l'année, on pose :

   a = annee modulo 19
   b = annee modulo 4
   c = annee modulo 7
   d = (19*a + 24) modulo 30
   e = (2*b + 4*c + 6*d +5) modulo 7
le résultat est alors numjour = 22 + d + e.

a) Écrire une fonction numjour qui prend en argument annee et renvoie le numéro du jour à partir du 1er mars. L'utilisation de variables globales est interdite.

b) Écrire une fonction traduit qui convertit le résultat de la fonction numjour en une chaîne de caractères correspondant à la date de Pâques.

Par exemple, si le numéro du jour renvoyé par numjour est 42 alors la date est "11 avril" (11=42-31).

On utilisera les fonctions prédéfinies manipulant des chaînes de caractères (cf. annexe du cours).

c) Enfin, écrire une fonction paques qui prend en argument une année ets renvoie la date de Pâques sous forme de chaîne de caractères.
 
 
 

Exercice 8 : Dans l'exercice précédent le calcul de la date à nécessité de définir 3 fonctions dans l'environnement global or les fonctions numjour et traduit ne sont utilisées que par la fonction paques.

Écrire une nouvelle fonction jourpaques dans laquelle les fonctions numjour et traduit sont définies localement.
 
 
 

Exercice 9 : Écrire, en n'utilisant que des variables et des fonctions locales, la fonction suivante qui indique le nombre de solutions réelles d'une équation du second degré à coefficients réels :

;   nombre de solutions ax^2+bx+c=0
;   second-degre : Reel, Reel, Reel --> Chaine
;                    a ,   b ,  c   |-> "infini" si a=b=c=0
;                                       "aucune" si a=b=0 et c<>0
;                                       "une"    si a=0 et b<>0 et c<>0
;                                       "aucune" si delta<0 et a,b et c <>0
;                                       "double" si delta=0
;                                       "deux"   dans tous les autre cas