DEUG MIAS 24
Types et Structures
de données
TME 1
entrez le mot de passe donné pour la connexion initiale.
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.
ou recommencez en cas de
message d'erreur.
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)
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).
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.
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.
Tuareg -> Interactive Mode -> Run Caml Toplevel
La fenêtre xemacs se divise en deux,
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.
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.
Vous pouvez compléter et approfondir ces essais...
Les portions de texte comprise
entre (* et *) sont des commentaires en syntaxe Caml.
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) ;;
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. *)
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 ;;
( < ) ;;
2 < 3 ;;
2 = 4 ;;
2 <> 4 ;;
2. >= 4. ;;
2 < 3.0 ;;
true > false ;;
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' ;;
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" ;;
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 ;;