DEUG MIAS 24
 
 

Types et Structures de données
 
 

TME 1


1.Vous connecter en binôme sur une machine

2.Changer le mot de passe

Please enter old password:

entrez le mot de passe donné pour la connexion initiale.

Please enter new password:

Please retype new password:

entrez le mot de passe que vous avez choisi. N'utilisez que les touches du clavier, pas le pavé numérique.

The NIS password has been changed on dante.

ou recommencez en cas de message d'erreur.
 
 

3.Vous enregistrer sur papier

Sur la feuille d'enregistrement qui circulera, indiquez soigneusement : Ceci permettra de résoudre les problèmes lors de connexions ultérieures...
 
 

4.Configurer votre compte

Pour utiliser les éditeurs de texte emacs ou xemacs, vous avez besoin de fichiers de configuration.

Dans un terminal, tapez la commande :

/home/Ens/ocaml/bin/install

qui doit répondre :

Installation terminée.

sinon corrigez la commande (attention à la majuscule, aux fautes de frappe)
 
 

5.Utiliser l'éditeur xemacs

 

 

Attention : l'éditeur xemacs répond à tout appui sur une touche du clavier !

Les caractères "normaux" sont insérés dans le tampon d'édition, les caractères de contrôle (un ou plusieurs) sont interprétés comme des appels de commandes.

Notations :

C-X indique le caractère "Control X" obtenu en maintenant la touche Ctrl enfoncée et appui sur la touche X.

M-X indique la suite de 2 caractères obtenu par appui sur la touche Echap puis appui sur la touche X.

Pour annuler un frappe involontaire d'un (ou plusieurs) caractère de contrôle, utilisez C-G (Contol G).
 
 

5.1.lancer l'éditeur xemacs

Toujours dans le terminal, tapez la commande :

xemacs &

Une nouvelle fenêtre s'affiche avec le logo xemacs.

Il est déconseillé de l'ouvrir en plein écran, sa largeur initiale de 80 colonnes doit être respectée pour une impression correcte. Prenez l'habitude de ne pas dépasser 80 caractères sur une ligne dans vos fichiers.

Vous aurez aussi besoin de gérer d'autres fenêtres sur le bureau.

Par contre, vous pouvez maximiser sa taille verticale en cliquant, avec le bouton central de la souris dans le bouton de changement de taille de la fenêtre, bouton central à l'extrémité droite de la barre de titre de la fenêtre xemacs.

Remarquer la ligne du bas de la fenêtre, appellée mini-buffer où l'éditeur communique avec vous par messages.
 
 

5.2.Créer un nouveau fichier pour ocaml

Dans le menu déroulant Fichier, sélectionner le sous menu Ouvrir... (Fichier -> Ouvrir...)

ou cliquez dans le bouton gauche Open de la barre d'outils.

Dans le mini-buffer, complétez la ligne par le nom du fichier, par exemple tme1.ml

puis appuyez sur la touche Entrée.

L'extension .ml du nom du fichier active automatiquement le mode Tuareg (en rouge dans la barre inférieure), spécialisé pour travailler avec ocaml.

Vous pouvez entrer une phrase telle que

let a = 3 ;;

suivie par Entrée.
 
 

5.3.Sauvegarder le fichier

Cliquez sur le bouton Save ou sélectionner avec la souris : Fichier -> Enregistrer tp1.ml
 
 

5.4.Lancer ocaml sous xemacs

Dans la barre de menus, sélectionner le menu puis les sous-menus :

Tuareg -> Interactive Mode -> Run Caml Toplevel

La fenêtre xemacs se divise en deux,

Vous pouvez : Pour ce dernier choix, sélectionner avec la souris

Tuareg -> Interactive Mode -> Evaluate Phrase

ou tapez le raccourci clavier

C-C C-E

signifiant : avec la touche Ctrl maintenue enfoncée, tapez sur les touches C puis E.

Vous pourrez sauvegarder ultérieurement une trace de votre travail en sauvegardant le contenu de la fenêtre inférieure ocaml dans un fichier (par exemple tp1.trace.
 
 

Avec cet environnement, vous allez pouvoir entrer des phrases (au sens ocaml) dans la fenêtre du haut et lire la réponse de ocaml à ces phrases dans la fenêtre du bas.
 
 

5.5.Consulter la documentation en ligne d'ocaml

Sélectionnez, avec la souris

Tuareg -> Reference Manual...

et attendez l'ouverture de netscape sur l'introduction du manuel ocaml.

Vous pouvez enregistrer un siget pour cette page que vous aurez souvent à atteindre...

Dans la suite du TP, des commentaires vous indiquent des recherches à effectuer dans cette documentation.
 
 

6.Essai du langage ocaml

Entrez les phrases proposées ci-dessous et analysez les réponses de ocaml avec vos connaissances du cours.

Vous pouvez compléter et approfondir ces essais...

Les portions de texte comprise entre (* et *) sont des commentaires en syntaxe Caml.
 
 

6.1.le type int et ses expressions

(* la syntaxe : cf

doc --> Part II -> The Objective Caml language -> Lexical conventions --> Integer literals *)

12 ;;

-6 ;;
 
 

(* les expressions : cf

doc --> Part V -> Index of modules -> Pervasives --> Integer arithmetic *)

12 - 4 ;;
 
 

3 * 2 ;;

3 / 5 ;;

7 / 2 ;;

7 / 0 ;;

7 mod 3 ;;

8 mod 3 ;;

9 mod 3 ;;

-7 / 3 ;;

-7 mod 3 ;;

-8 / 3 ;;

-8 mod 3 ;;
 
 

(* les priorités : cf

doc --> Part II -> The Objective Caml language -> Expressions --> tableau des opérateurs *)

12 - 4 + 3 ;;

12 - (4 + 3) ;;
 
 

6 / 2 * 3 ;;

6 / (2 * 3) ;;
 
 

1 + 3 * 2 ;;

(1 + 3) * 2 ;;
 
 

1 - 3 / 2 ;;

(1 - 3) / 2 ;;
 
 

(* les constantes et fonctions : cf

doc --> Part V -> Index of modules -> Pervasives --> Integer arithmetic *)

max_int ;;

max_int + 1 ;;

min_int ;;

min_int -1 ;;

max_int * 2 ;;
 
 

succ ;;

succ 0 ;;
 
 

pred ;;

pred 0 ;;
 
 

abs ;;

abs (-3) ;;
 
 

6.2.le type float et ses expressions

(* la syntaxe : cf

doc --> Part II -> The Objective Caml language -> Lexical conventions --> Floating-point literals

*)

0.3 ;;

3. ;;

.3 ;;

1.5 ;;

1e-3 ;;
 
 

(* les expressions : cf

doc --> Part V -> Index of modules -> Pervasives --> Floating-point arithmetic *)

2. +. 3.5 ;;

2 +. 3.5 ;;

2 + 3.5 ;;
 
 

3.5 /. 2. ;;

3. /. 2 ;;
 
 

2.0 /. 0.0 ;;

-2.0 /. 0.0 ;;

0.0 /. 0.0 ;;
 
 

2. ** 3. ;;
 
 

abs_float ;;

abs_float (-3.2) ;;
 
 

sqrt ;;

sqrt 4.0 ;;
 
 

(* Vous pouvez tester les priorités - même principe que pour les entiers. *)
 
 

6.3.le type bool

(* les constantes : cf

doc --> Part II -> The Objective Caml language -> Values --> Variant values *)

true ;;

false ;;
 
 

(* les expressions : cf

doc --> Part V -> Index of modules -> Pervasives --> Boolean operations *)

not ;;

not true ;;
 
 

( && ) ;;

true && false ;;
 
 

( || ) ;;

true || false ;;
 
 

6.4.les comparaisons

(* cf doc --> Part V -> Index of modules -> Pervasives --> Comparisons *)

( < ) ;;

2 < 3 ;;

2 = 4 ;;

2 <> 4 ;;
 
 

2. >= 4. ;;
 
 

2 < 3.0 ;;
 
 

true > false ;;
 
 

6.5.le type char

(* la syntaxe : cf

doc --> Part II -> The Objective Caml language -> Lexical conventions --> Chracter literals *)

'A' ;;

'\n' ;;
 
 

(* les fonctions : cf

doc --> Part V -> Index of modules -> Pervasives --> Caracter operations *)

int_of_char ' ' ;;

char_of_int 10 ;;
 
 

'a' > 'A' ;;
 
 

6.6.le type string

(* la syntaxe : cf

doc --> Part II -> The Objective Caml language -> Lexical conventions --> Strings literals *)

"Bonjour " ;;

"Monsieur\n" ;;
 
 

"Bonjour " ^ "Madame\n" ;;
 
 

print_string ("Bonjour " ^ "Madame\n") ;;

print_string "Bonjour " ^ "Madame\n" ;;
 
 

7.lier un nom à une valeur

(* Définition globale : cf

doc --> Part III -> The toplevel system (ocaml) *)

let a = 10 ;;

a ;;

let b = 3.0 ;;

b ;;

float_of_int a +. b ;;
 
 

let souhait = "Bonjour " and dest = "tout le monde\n" ;;

let message = souhait ^ dest ;;

print_string message ;;
 
 

(* par_10 n retourne n * 10 *)

let par_10 n = n * a ;;

par_10 2 ;;
 
 

let a = 100 ;;

a ;;

par_10 3 ;;
 
 

8.Terminer la séance

Ne pas arrêter la machine.