Introduction à la programmation fonctionelle
Objectif du cours:
réfléchir aux principes de base de la programmation et de l’informatique à
travers l’apprentissage d’un langage simple mais puissant.
Différence entre “programmation (concept abstrait) et “programmation sur machine”
(réalisation particulière d’un processus de conception).
relative indépendance du langage vis à vis des problèmes de programmation
le choix du langage tient à deux choses:
puissance d’expression pour résoudre des problèmes complexes et
facilité d’utilisation et d’apprentissage pour se concentrer sur l’essentiel
choix de la programmation fonctionnelle
1
La programmation fonctionnelle ?
concept fondamental: l’abstraction traiter une chose complexe en la divisant en choses
plus simples et en ignorant les détails.
objets de base : la fonction un programme est un ensemble de fonctions traitant des
données d’entrée
des langages interprétés : instructions / interprété au fur et à mesure — machine
langages compilés :
instructions / préparation (compilation) / execution
avantage/ inconvénients
évaluation / débuggage plus souple
plus lent (mais on peut toujours compiler)
le langage choisi : Camel la programmation fonctionnelle est une famille de langage très
proches, dont le plus célèbre est LISP développé au MIT.
le successeur de LISP: scheme: plus léger, plus simple et aussi puissant, utilisé pour
l’éducation mais pas de typage des données; on utilisera donc un autre langage
fonctionnel typé: Camel
2
A retenir
processus de calcul : êtres abstraits mis en œuvre dans les ordinateurs ;
données : ou information, objets manipulés par les processus ;
programme : contrôle évolution des processus ;
langage de programmation : traduit les processus de façon symbolique
interprète : traduit les processus écrit dans un langage de programmation.
3
Elements de base de la programmation
Le langage de programmation :
permet de donner des instructions ;
constitue un cadre d’organisation des processus de calcul.
grâce généralement à :
des expressions primitives (nombres, fonctions de base)
des moyens de composition pour construire des expressions composees d’expressions
primitives
des moyens d’abstraction pour nommer et manipuler des objets composés comme un
tout, comme si c’était une expression primitive.
Pour la programmation on distingue souvent deux sortes « d’objets »:
les données (par ex. les nombres)
les procédures (par ex. l’addition de nombres)
Les procédures portent généralement sur des objets particuliers
4
Les expressions
l’interprète Camel évalue des expressions
> Caml Light version 0.74
#1230 ;;
- : int = 1230
la réponse précise le type de la réponse avec sa valeur.
# 10 + (3*4);;
- : int = 22
+, /, * sont des opérateurs décrivant des procédures primitives, les nombres sont des
expressions primitives.
Une expression composée est formée à partir d’expressions (primitives ou non) et
d’opérateurs, terminée par ;;
5
Les types de base d’expressions
les entiers (int) : les nombres entiers relatifs.
les réels (float) : nombres décimaux. 1.67
les booléens : le vrai (true) et le faux (false).
les caractères (char) : ’a’ ’X’ ’&’
les chaînes de caractères (string) “bonjour”
Les opérateurs n’acceptent que certains types comme arguments. Par exemple, + ne prend
que des entiers :
# "toujours" + 29 ;;
Entrée interactive:
> "toujours" + 29 ;;
> ^^^^^^^^^^
Cette expression est de type string,
mais est utilisée avec le type int.
6
Les définitions
Pour manipuler des objets, nécessité de les nommer: l’opérateur let
# let j = 20 ;;
j : int = 20
# 30 - j ;;
- : int = 10
# let k = 3* j + 27;;
k : int = 87
La définition est le moyen de base de l’abstraction.
Elle permet :
de représenter le résultat d’opérations composées ;
de construire des objets complexes par étapes
développement et test incrémental des programmes.
Pour cela il faut pouvoir définir des procédures, moyen d’abstraction plus puissant que le
nommage d’un objet, en nommant des opérations composées à partir de paramètres.
7
Les fonctions
nécessité de manipuler des fonctions, avec paramètres de différentes sortes, en nombre
différents besoin d’abstraire les fonctions
ce qui définit une fonction : ses paramètres (appelés variables en maths) et la façon dont
on la calcule;
Par ex. carre : x x*x
mais une fonction peut l’être de plusieurs choses: l’énergie cinétique en physique,
EC: m v
Pour définir une fonction on spécifie donc les paramètres et le corps:
let cinetik m v = 0.5 *. m *. v *. v ;;
retourne la fonction
cinetik : float -> float -> float = <fun>
A l’application d’une fonction, par ex. (cinetik 75.5 25.9), les paramètres formels
sont remplacés par les valeurs fournies.
8
Les expressions conditionnelles
Une expression conditionnelle permet l’évaluation d’une expression différenciée selon une
condition (vrai ou fausse). Par exemple la définition de la valeur absolue est une expression
conditionnelle :
si
sinon
Elle se traduit en Camel par
let abs x = if x >=0 then x
else -x ;;
9
Conditionnelles (suite)
On peut utiliser les opérateurs suivants sur les conditions (booléens):
=égalité (opérateur polymorphe)
or “ou” logique
&“et” logique
not négation
exercice :
10
1 / 13 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !