UPMF Grenoble II - IMSS ___Deug MASS 1° A_Module

publicité
UPMF Grenoble 2 – L1 MIASHS
INF F2 – Programmation fonctionnelle
TM SCHEME n°2 : Premières fonctions
1. Conversion de températures
Écrire une fonction permettant de convertir une température exprimée en degrés Celsius en
une température équivalente en degrés Fahrenheit, sachant que :
9
F = C+ 32
5
Écrire une fonction permettant de faire la conversion inverse.
2. Correction de fonctions
Les définitions de fonction suivantes présentent toutes un défaut. Les critiquer, en fournir les
spécifications et les corriger.
(define (volumeSphere r)
(* 4/3 pi)
(* r (* r r)))
(define (f x y z) y)
(define (successeur x)
(x + 1))
(define (carre)
(* x x))
(define (aireTriangle triangle)
(* 0.5 (* base hauteur)))
(define (sommeDeCarres (carre x) (carre y))
(+ (carre x) (carre y)))
3. Exercices sur les chaînes
3.1 Conjugaison au futur
Écrire une fonction qui, étant donné l'infinitif d'un verbe régulier du premier groupe, fournit
sa conjugaison au futur de l'indicatif. Par exemple, pour le verbe chanter, le résultat est l'affichage
des chaînes je chanterai, tu chanteras, il ou elle chantera, nous chanterons, etc. La tester en lisant
l'infinitif au clavier.
3.2 Des figues ?
On se propose maintenant d'écrire des Fonctions d'Intérêt Général (des FIG, d'où le
pitoyable calembour du titre de cet exercice). Le but de cet exercice est de produire un fichier
contenant un ensemble de définitions de fonction qui pourront par la suite être utilisées dans divers
exercices. Pour pouvoir définir certaines de ces fonctions, il est nécessaire d'utiliser DrScheme en
mode Advanced Student (menu Language/Choose Language).
Écrire une fonction lireChaine permettant lire au clavier une chaîne de caractères ne
contenant pas d'espaces sans qu'il soit nécessaire de la délimiter par des ". L'utilisation de la
fonction prédéfinie symbol->string peut être utile.
Sachant que la fonction prédéfinie string-length permet de connaître la longueur
d'une chaîne de caractères, écrire les fonctions premier, dernier, debut et fin,
permettant respectivement d’obtenir à partir d’une chaîne, son premier caractère, son dernier
caractère, la sous-chaîne composée des caractères de la chaîne à l’exception du dernier et la
sous-chaîne composée des caractères de la chaîne à l’exception du premier.
Écrire une fonction carChaine permettant d’ajouter un caractère au début d’une
chaîne premier argument ((carChaine #\B "onjour") renvoie "Bonjour", par
exemple). Ecrire une fonction chaineCar permettant d’ajouter un caractère en fin de chaîne
((chaineCar "Bonjour" #\s) renvoie "Bonjours", par exemple).
Sauvegarder toutes ces définitions dans un fichier appelé chaines.ss.
3.3 Retour au présent
Reprendre l'exercice 3.1 pour la conjugaison au présent de l'indicatif. Afin de pouvoir
utiliser les définitions obtenues en 3.2, on peut simplement utiliser la fonction prédéfinie load, qui
prend en paramètre une chaîne ayant pour valeur le nom complet d'un fichier source Scheme et en
évalue les expressions.
3.4 Nom, Prénom, Profession ?
Écrire un programme demandant à l'utilisateur de taper un nom, puis un prénom, puis une
profession, et affichant à l'écran une phrase de la forme "<prénom> <nom> est
<profession>. Ses initiales sont <initiales>".
4. Travail sur les durées … s'il reste du temps
4.1 Affichage Jours-Heures-Minutes-Secondes
Reprendre l'exemple de conversion d'un nombre de secondes à afficher en jours, heures,
minutes et secondes correspondant :
définir 3 fonctions permettant de calculer respectivement le nombre de jours, heures ou
minutes entiers compris dans une durée exprimée en secondes,
définir 4 fonctions sans retour permettant respectivement d'afficher une durée exprimée
en secondes aux formats :
- "<nbjours> jours, <nbheures> heures, <nbmin> minutes et <nbsec>
secondes",
- "<nbheures> heures, <nbmin> minutes et <nbsec> secondes",
- "<nbmin> minutes et <nbsec> secondes",
- "<nbsec> secondes".
terminer le programme par une saisie d'un nombre de secondes au clavier et l'affichage
en jours, heures, minutes et secondes à l'écran.
4.2 Conversion en secondes
Définir une fonction permettant de transformer une durée exprimée en jours, heures,
minutes et secondes en un nombre équivalent de secondes.
4.3 Comparaison de durées
Définir une fonction renvoyant vrai si et seulement si, de 2 durées exprimées en jours,
heures, minutes et secondes, la première est inférieure à la deuxième. Écrire sa définition sous 2
formes, l'une utilisant la fonction obtenue en 4.2, et l'autre ne l'utilisant pas.
Téléchargement