TD1 - fil

Transcription

TD1 - fil
API2-prime
2013–2014
Licence SESI - Semestre 3
TD1 : entrées/sorties
Exercice 1 : Lecture d’un annuaire
On suppose manipuler des fichiers qui contiennent un annuaire. Chaque entrée de l’annuaire est écrite sur deux
lignes : la première contient le nom, la seconde le numéro de téléphone.
Question 1.1 En utilisant le schéma général vu en cours, écrire les instructions permettant la lecture de l’annuaire
et son affichage sous la forme :
DUPONT 0389776534
MARTIN 0856248963
...
On suppose maintenant que l’annuaire ne contient que des numéros sous le format internationnal, c’est-à-dire que le
numéro est composé d’un ’+’ suivi de l’indicatif du pays sur 2 chiffres puis du numéro.
Question 1.2 Ecrire une fonction prenant en paramètre le nom de l’annuaire et un indicatif de pays et qui procède
à l’affichage de numéros uniquement pour le pays concerné.
En Caml, il existe trois fichiers particuliers :
– l’entrée standard ;
– la sortie standard ;
– la sortie erreur.
La première, nommée stdin , sert d’entrée par défaut, par conséquent elle est de type in channel. Il n’est pas
nécessaire de l’ouvrir, on doit considérer qu’elle est toujours ouverte par défaut. La seconde, nommée stdout , – de
type out channel – est la sortie par défaut. La troisième, nommée stderr , – de type out channel également – est la
sortie utilisée pour afficher les message d’erreur.
Exercice 2 : Rationnels
Un rationnel est un nombre représenté par deux entiers : le numérateur et le dénominateur.
Question 2.1
Donner un type permettant de représenter un rationnel.
Question 2.2 Que se passe-t-il si la fonction int_of_string prend en argument une chaı̂ne de caractère qui n’est
pas la représentation d’un entier ?
Question 2.3
Ecrire une fonction lire_rationnel qui permette de lire un rationnel sur l’entrée standard.
Exercice 3 : Jeu de dame
Quelqu’un a programmé en Caml un jeu de dame. Malheureusement il manque à son jeu la fonctionalité de
sauvegarde dans un fichier, permettant de mettre une partie en pause puis de la reprendre ensuite.
Question 3.1
Proposez un format de fichier texte pour sauvegarder une partie de dames.
On suppose que le programmeur du jeu a modélisé le plateau dans un tableau à deux dimensions où chaque case
contient :
– soit le caractère espace si la case est vide,
– soit le caractère ’n’ si c’est un pion noir,
– soit le caractère ’b’ si c’est un pion blanc,
– soit le caractère ’N’ si c’est une dame noire,
– soit le caractère ’B’ si c’est une dame blanche.
Question 3.2
Ecrire une fonction de lecture d’un fichier de sauvegarde qui retourne le plateau correspondant.
Question 3.3
Ecrire une fonction d’écriture d’un plateau donné dans un fichier.
1
Exercice 4 : mot croisé
Un mot croisé est présenté comme un fichier de ligne de texte.
– Sur la premiere ligne, il y a le nombre l de lignes de la grille ;
– sur la seconde ligne, il y a le nombre c de colonnes de la grille ;
– sur la troisieme ligne, il y a le nombre n de cases noires ;
– sur les 2n lignes suivantes, on a le numéro de ligne puis le numéro de colonne juste en dessous des cases noires ;
– sur les l lignes suivantes, on a les définitions des mots horizontaux ; il peut y avoir plusieurs mot sur une même
ligne dans ce cas les définitions sont séparées par des barres verticales | (on suppose qu’aucune ne contient ce
caractère) ;
– sur les c lignes suivantes, on a les définitions des mots verticaux ; il peut y avoir plusieurs mot sur une même
colonnes dans ce cas les définitions sont séparées par des barres verticales | (on suppose qu’aucune ne contient
ce caractère) ;
– sur les l lignes suivantes, on a les mots horizontaux, s’il y en a plusieurs sur la ligne on les sépare par des barres
verticales ;
– sur les c lignes suivantes, on a les mots verticaux, s’il y en plusieurs sur la colonne on les sépare par des barres
verticales.
par exemple :
3
4
2
2
4
3
3
un célébre langage de programmation
un outil qui permet d’écrire des programmes et de les tester...
possessif|un célébre langage de programmation poularisé par Kernighan et Ritchie.
démonstratif
un célébre langage de programmation
note
cinquante| dernière lettre de la machine abstraite catégorique
caml
edi
ta|c
cet
ada
mi
l|c
Question 4.1
Déclarer les types nécessaires à la représentation des informations d’une grille de mot croisé.
Question 4.2 Réalisez une procédure paramétrée par un élément de type mot croise et un canal de sortie et qui
envoie en mode texte dans ce canal l’élément de type mot croise passé en paramètre.
Question 4.3
mot croisé lu.
Réalisez la fonction (à effet de bord) qui fait la lecture en mode texte d’un mot croisé et renvoie le
2