Ocaml
Páginas: 8 (1864 palabras)
Publicado: 3 de abril de 2012
impératif / fonctionnel
Programmation "impérative" ou "procédurale”
- Approche
l'ordinateur vers un langage de haut niveau
depuis le langage machine, l'assembleur, le macro-assembleur, FORTRAN, Pascal, C, Java, etc …
par le bas: abstraction de l'architecture de
- -
Etat: représente l'ensemble des variables
Exécution:
état initial
suite finie d'instructions d'affectation
chacune modifie l'état courant
exécutées séquentiellement
elles peuvent être itérées par des boucles "while"
elles peuvent être exécutées conditionnellement à l'aide de "if ... then ... else".
Ocaml: Un langage fonctionnel
impératif / fonctionnel
Programmation “fonctionnelle”
- Approche - Pas - Pas - Pas - Pas - Un
par le haut: le langage est conçu comme un outil pour spécifier les algorithmes
d'état
d'affectation
d'instruction
de boucle
programme : une expression
d'un programme: évaluation de l'expression
- Exécution
Ocaml: Un langage fonctionnel
impératif / fonctionnel
Exemple
- Impératif:int square (int n) {
int s;
s = n*n;
return(s); }
let square = fun x -> x*x;;
let square x = x*x;;
- Fonctionnel
Ocaml: Un langage fonctionnel
Avant toutes choses
Lancer Objective Caml: commande ocaml $ $ ocaml # Sortir de Objective Caml: taper #quit;; ou ctrl D ###quit;; $
Ocaml: Un langage fonctionnel
Pas de différence entre fonction / objet simple
Une fonction est une expression et à ce titre peut être elle-même l'argument ou le résultat d'une autre fonction (ordre supérieur). Récursivité: remplace les boucles
Les expressions
Programme = Expression
Définies par une syntaxe et une sémantique
-
Syntaxe concrète: les caractères ASCIIcomposant l'expression Syntaxe abstraite: la structure profonde, l'arbre syntaxique
-
Possèdent un type (ensemble de valeurs) et une valeur
- -
Sémantique statique: le type de l'expression Sémantique dynamique: la valeur de l'expression
Adéquation entre les 2 sémantiques: le type de l'expression est identique à celui de sa valeur
Les expressions
Exécution = Evaluation
Résultat d'uneévaluation : val nom : type = valeur
- : type = valeur
Exemples :
# 4/(2*2);; - : int = 1 # fun x->x*x;; - : int -> int =
Les expressions
Evaluation
Evaluation en 3 temps analyse syntaxique
production de l'arbre syntaxique si syntaxe correcte
2+3 et 2 + “oiseau” sont syntaxiquement correctes 2+ ne l'est pas
analyse statique
production du type si l'expression est typable
2+3 esttypable, de type int 2 + ”oiseau” ne l'est pas
évaluation proprement dite
production de la valeur si le programme ne boucle pas
Les expressions Définitions
Nommer une expression
let nom = expr
#let x = 2*5+1;; val x : int = 11 #let pi = 3.1416;; val pi : float = 3.1416
l
#let square = fun x ->x*x;; val square : int -> int = #let square x = x*x;; val square : int -> int =
Lesexpressions Définitions
Nommer une expression
let nom = expr
#let x = 2*5+1;; val x : int = 11 #x;; - : int = 11
l
#let square = fun x ->x*x;; val square : int -> int = #square;; - : int -> int =
Les expressions
Définitions locales
Nommer localement
let nom = expr1 in expr2 #let x = 2*5+1;; val x : int = 11 #let x = 2 in x*x;; - : int = 4
l
#x;; - : int = 11
Les expressionsDéfinitions locales
Nommer localement let nom = expr1 in expr2
#let a = 1 and b = 2 in 2*a+b;; - : int = 4 #let a = 1 in let b = 2*a in b+a;; - : int = 3 #let a = 1 and b = 2*a in b+2+a;; Unbound value
Les types de base
int et float
int : + * / mod float : +. -. *. /. ** sqrt cos sin tan asin atan log exp
#3.45;; - : float = 3.45 #3.45E10;; - : float = 34500000000. #3.45e10;; -: float...
Leer documento completo
Regístrate para leer el documento completo.