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