From 51acd05767c8aec4012a63367dcd4cd5b6db2bb1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Wikle=20Dubard?= <loic.dubard@ensiie.fr>
Date: Tue, 12 Mar 2019 17:09:29 +0100
Subject: [PATCH] reformulation des commentaires

---
 src/main.ml | 59 ++++++++++++++++++++++++++++++++++++-----------------
 1 file changed, 40 insertions(+), 19 deletions(-)

diff --git a/src/main.ml b/src/main.ml
index 94d35d4..db6e005 100644
--- a/src/main.ml
+++ b/src/main.ml
@@ -5,7 +5,9 @@
  * date : 03-03-2019
  * *)
 
-(* [split_string s] retourne la liste de caracteres correspondant à la chaine [s] *)
+(* 
+ * @ensure : retourne la liste de caracteres correspondant à la chaine [s] 
+ *)
 let split_string s =
   let rec aux i n =
     if i >= n
@@ -14,11 +16,9 @@ let split_string s =
   in
   aux 0 (String.length s);;
 
-(* [parse_input ()] lit deux lignes sur l'entree standard du programme.
-   La premiere doit comporter un entier, la seconde une chaine de caracteres.
-   Retourne un couple composé de l'entier de la premiere ligne et de la liste des caracteres de la seconde.
-
-   Leve l'exception [Failure "int_of_string"] si la premiere ligne ne represente pas un entier.
+(* @ensure : lit deux lignes sur l'entree standard du programme et Retourne un couple composé de l'entier de la premiere ligne et de la liste des caracteres de la seconde.
+ * @require : La premiere doit comporter un entier, la seconde une chaine de caracteres.
+ * @exception : Leve l'exception [Failure "int_of_string"] si la premiere ligne ne represente pas un entier.
  *)
 
 let parse_input () =
@@ -33,7 +33,10 @@ print_elt 1 (parse_input());;*)
 (*définition de la roue*)
 let roue = ' '::'A'::'B'::'C'::'D'::'E'::'F'::'G'::'H'::'I'::'J'::'K'::'L'::'M'::'N'::'O'::'P'::'Q'::'R'::'S'::'T'::'U'::'V'::'W'::'X'::'Y'::'Z'::[];;
 
-(*[first_to_last c n roue] tourne la roue n fois vers la gauche si c='N' et vers la droite si c='P'*)
+(* 
+ * @ensure : tourne la roue n fois vers la gauche si c='N' et vers la droite si c='P'
+ * @exception : renvoie l'exception RoueVide si la roue en entree est vide.
+ *)
 exception RoueVide;;
 let rec tourner c n roue =
     if n = 0 then roue 
@@ -43,8 +46,11 @@ let rec tourner c n roue =
         else if c='P' then List.rev (tourner 'N' n (List.rev roue))
         else roue;;
 
-(*[char_to_index i a r] cherche récursivement l'indice du charactère a dans la roue r
- * i doit être 0 pour que ça marche*)
+(*
+ * @ensure : cherche récursivement l'indice du charactère a dans la roue r
+ * @require : i doit être 0 au premier appel de la fonction pour que ça marche
+ * @exception : leve l'exception BadCharacter si le charactère n'a pas été trouvé dans la roue
+ *)
 exception BadCharacter;;
 let rec char_to_index i a r= 
     match r with 
@@ -52,14 +58,17 @@ let rec char_to_index i a r=
         | e::l -> if a = e then i
                   else char_to_index (i+1) a l;;  
 
-(*[translate c roue] traduit le charactère c en sa commande en fonction de la roue 'roue'
- * la limite d'optimalité pour choisir entre P et N est le charactère 'M' qui demande 13N et 14P*)
+(* @ensure : traduit le charactère c en sa commande en fonction de la roue 'roue'
+ * la limite d'optimalité pour choisir entre P et N est le charactère 'M' qui demande 13N et 14P
+ *)
 let translate c roue = 
     let n = char_to_index 0 c roue in 
         if (n < 14) then String.concat "" ((String.make n 'N')::"E"::[]),n
         else String.concat "" ((String.make (27-n) 'P')::"E"::[]),(27-n);;
 
-(*[commande (i,l) roue] prend le résultat de l'input et renvoie la commande complète associée'*)
+(* 
+ * @ensure : prend le résultat de l'input et renvoie la commande complète associée 
+ *)
 exception InputVide;;
 let rec commande (i,l) roue = match l with
     | [] -> ""
@@ -73,14 +82,18 @@ print_string (com);;
 
 (************************************************************Début de la phase 2************************************************************)
 
-(*[temps_lettre l] retourne le temps necessaire pour l'emission de la commmande partielle l*)
+(*
+ * @ensure : retourne le temps necessaire pour l'emission de la commmande partielle l
+ *)
 let temps_lettre l = 
     if (l='N' || l='P') then 3
     else if l='S' then 1
     else if l='E' then 5
     else 0;;
 
-(*[temps_commande s] retourne le temps necessaire à l'emission de la commande complète s*)
+(*
+ * @ensure : retourne le temps necessaire à l'emission de la commande complète s
+ *)
 let temps_commande s = 
     let liste_char = split_string s in 
     let rec tps l = match l with 
@@ -95,13 +108,17 @@ Printf.printf "\n %d s\n" (temps_commande com);;
 let liste_roues=roue::[]
 
 
-(*[make_liste_index l c] renvoie la liste des indices où se trouve le charactère c dans chaque roue de l*)
+(* 
+ * @ensure : renvoie la liste des indices où se trouve le charactère c dans chaque roue de l
+ *)
 let rec make_liste_index l c = match l with
     | [] -> []
     | e::r -> (char_to_index 0 c e)::(make_liste_index r c);; 
 
 
-(*[quelle_roue l c] renvoi l'indice de la roue (dans la liste de roues l) avec laquelle il est plus rapide de traduire c*)
+(* 
+ * @ensure : renvoi l'indice de la roue (dans la liste de roues l) avec laquelle il est plus rapide de traduire c
+ *)
 let quelle_roue l c index_init =
     let index = (char_to_index 0 c roue) in
     let m = (if index < 14 then index else 27-index) in
@@ -117,7 +134,9 @@ let quelle_roue l c index_init =
     index_min m (List.length l) 0 (make_liste_index l c);;
 
 
-(*[tourner_list m c n i l] tourne n fois dans le sens de c la roue d'indice i dans la liste de roues l*)
+(*
+ * @ensure : tourne n fois dans le sens de c la roue d'indice i dans la liste de roues l
+ *)
 let rec tourner_list c n i l = 
     if i >= (List.length l) then List.append l (roue::[])
     else match l with
@@ -125,7 +144,9 @@ let rec tourner_list c n i l =
         | e::t -> if i = 0 then  (List.append ((tourner c n e)::[]) t)
         else (List.append (e::[]) (tourner_list c n (i-1) t));;
 
-(*[commande_phase2 (i,l) roue] traduit le message l en commande en selectionnant pour chaque lettre la bonne antenne*)
+(* 
+ * @ensure : traduit le message l en commande en selectionnant pour chaque lettre la bonne antenne
+ *)
 let rec commande_phase2 (i,l) liste_roues index_init = match l with
     | [] -> ""
     | e::t -> let index = quelle_roue liste_roues e index_init in
@@ -136,7 +157,7 @@ let rec commande_phase2 (i,l) liste_roues index_init = match l with
               Printf.printf "%d\n" index;
               String.concat "" (sres::(commande_phase2 (i,t) new_liste index)::[]);;
 
-(*test commande_phase2*)
+(*@ensure : test commande_phase 2*)
 let com2 = commande_phase2 input liste_roues 0;;
 print_string com2;;
 Printf.printf "\n %d s \n" (temps_commande com2);;
-- 
GitLab