CSI3525: Concepts des Langages de Programmation Notes # 6: Langages de Programmation Fonctionelle II: Introduction au ML.

Slides:



Advertisements
Présentations similaires
Programmation Orienté Objet en C++
Advertisements

Cours n° 7 Standard Template Library II.
Le langage Z Pr ZEGOUR DJAMEL EDDINE
Introduction à l’Algorithmique
C.
Les fonctions de XPath et XSLT
M. BENJELLOUN : Info II Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique de Mons
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
CSI3525: Concepts des Langages de Programmation Notes # 5: Langages de Programmation Fonctionelle I: Introduction au Scheme.
Lycée Louis Vincent SEANCE 6 Python Les listes Lundi 25 novembre 2013.
CSI3525: Concepts des Langages de Programmation Notes # 11: Sous-Programmes ( Lire Chapitre 8 )
Chapitre IV. Structures linéaires (piles, files, listes chaînées)
Regrouper des éléments de même type et pouvoir y accéder à laide dun identificateur et dun indice. Objectif des tableaux.
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
OCaml - Les listes L3 MI.
Points importants de la semaine Les boucles. Les types arithmétiques. Les opérateurs.
Expressions et assignations
OCaml – Les arbres L3 MI.
Les structures de données
CSI3525: Concepts des Langages de Programmation Notes # 12: Implementation des Sous-Programmes ( Lire Chapitre 9 )
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
Programmation fonctionnelle Le langage LISP
Outils de Programmation
Séances de soutien Projet informatique 2A
O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa.
Introduction à la programmation (Java)
Base de programmation Script unity en c#.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Sixième cours Les chaînes de caractères et le passage de paramètres par référence Passage de paramètres par référence String.h.
Principes de programmation
CSI3525: Concepts des Langages de Programmation
CSI3525: Concepts des Langages de Programmation Notes # 7: Noms, Liaisons, Verification de Type et Portee ( Lire Chapitre 4 )
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
IFT 6800 Atelier en Technologies d’information
1-1 Chapitre 5: Les variables Introduction Les noms Les variables Les attributions (bindings) Portée et durée de vie L'environnement de référence Les noms.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Animateur : Med HAIJOUBI
Structures des données
2.1 - Historique Chapitre 2 : Introduction au langage C++
Labo II : Tableaux et pointeurs
3 Les instructions. Cours 32 Plan du cours 3 Instruction Bloc Portée L’alternative Affectations =, +=, *=… Comment comparer –Comparer des réels –Comparer.
Algorithmique et programmation en
Les variables et les types standard des données
Un survol du language C.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk.
 Syntaxe du langage PHP
Le langage Racket (Lisp)
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Les types composés Les enregistrements.
Les surcharges d'opérateurs
Évaluation et application des fonctions Let f = function x -> ( function y -> x+y );; Type :int -> (int ->int) int -> int ->int f int.
CSI2520 Un langage de programmation par scripting orienté-objet (et fonctionnel)
Modélisation des documents: DTD et Schéma
Let rec f n = if n = 0 then true else g (n-1) g n = if n = 0 then false else f (n-1) val f : int -> bool = val g : int -> bool =
Les bases de l’algorithmique
Module algorithmique et programmation
Module 133 Développer des applications Web Introduction à PHP.
Introduction à l’utilitaire
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Objets et Actions Élémentaires.
Directives Ocaml Définition
Philippe Gandy - 15 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
A la découverte d’Excel Certificat Informatique et Internet.
Introduction au langage C
ALGORITHME ET PROGRAMMATION RÉVISION Informatique et Sciences du Numérique.
Informatique 2A Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3.
Transcription de la présentation:

CSI3525: Concepts des Langages de Programmation Notes # 6: Langages de Programmation Fonctionelle II: Introduction au ML

2 Introduction n ML est un langage fonctionnel a portee locale comme le Scheme. n Neanmoins, il differe du Scheme de facon significative: – Il utilise des declaration de types, des inferences de types et il est fortement type. Scheme, au contraire, nutilise pratiquement pas de types. – Il utilise une syntaxe plus proche du Pascal et du C que du Scheme. – ML fait du traitement dexception et il incorpore un module qui permet limplementation de types de donnees abstraites.

3 Types de Donnees Primitives et Symboles Reserves n Type de donnees Primitives: entiers, reels, booleens, chaines de caracteres. n Pour entiers et reels, ~ indique la negativite (e.g., ~3, ~2.4, etc.). n ML reconnait les majuscules et les minuscules (e.g.,True <> true). n Les caracteres de controle sont representes comme en C (e.g., \n pour aller a la ligne, \t pour tab, etc.).

4 Types de Donnees Structurees n Listes Mixtes (tuples): une sequence dobjets de types varies separes par des virgules et compris dans des parentheses. (E.g., (12, abc, 3) ou (2, a, (3, 4.3), xyz, (true, 7)). n Le n ieme membre dune liste mixte peut etre accede par #n (e.g.: #2(2, 4, 6) = 4) n Une liste est une liste mixte qui consiste dobjets du meme type. (e.g., [a, b, c, d] ou [[1,2],[3,4]]). n nil est la liste vide.

5 Types Definis par lUsager datatype identificateur = expression_de_type Examples: n datatype couleur = rouge | orange | vert; n datatype arbre = nul | noeud of int * arbre * arbre *arbre;

6 Attachements de Valeurs a des Identificateurs n val identificateur = expression; n Example: val X = 7 n Notez que = nest pas un symbole daffectation mais plutot un symbole dattachement: X = 8 retournerait false. n De plus, une fois quune valeur est attachee a X, on ne peut plus en attacher dautre, a moins que lon change denvironement en utilisant la construction: let val nom_d_environement = expression_1 in expression_2 end

7 Expressions I Expressions Arithmetiques: – Negation: ~, – operateurs multiplicatifs: *, /, div, mod, – operateurs additifs: +, - – operateurs relationnels: =, <>, >=,, <. Expressions Booleennes – andalso, orelse, not – andalso et orelse utilisent levaluation paresseuse. Expressions de chaines de caracteres – concatenation: ^ – exemple: abc ^ def = abcdef

8 Expressions II Expression Conditionnelle – if expression then partie_vrai else partie_fausse – la partie else nest pas optionelle. Expression de Boucle – while expression_1 do expression_2 – expression_2 doit changer lassociation dune variable dans lenvironement local pour que expression_1 puisse-t-etre changee. Expressions de Listes – tete de liste L: hd(L) – queue de liste L: tl(L) – constructtion de liste: hd(L)::tl(L) =L – fusion de deux listes: [1, [3, 4] = [1,2,3,4] – coercion entre liste et chaine: explode, implode

9 Specifications et Definitions de Fonctions Specifications de Sequences (expression_1; expression_2; expression_3) Definition de Fonctions – fun nom_de_fonction (parametres) = expression; – Exemple: fun addition(a:int, b:int):int = a+b; – Note 1: int n a pas besoin d etre specifie partout – Note2: Les fonctions peuvent etre polymorphiques et il y a possibilite de « pattern matching »

10 Exceptions n ML permet aux programmeurs de definir des exceptions. Une exception est un evenement inhabituel (ou bien une erreur ou non) qui peut etre detecte par le hardware ou le logiciel et qui peut necessiter un traitement special. n ML a un systeme de traitement dexception qui intervient lorsquune exception est relevee. n Definition: exception nom_de_l_exception; n Invocation: raise nom_de_l_exception; n Traitement: expression handle traitement avec traitement(motif1) ==> expression1 traitement(motif2) ==> expression2 etc...

11 Passer des Fonctions comme Arguments n Comme en Scheme, les fonctions peuvent etre passees comme arguments: n Exemple: - fun fait_x(x:int --> int, y:int)= x(y); val fait_x = fn : (int --> int) * int --> int - fun double(x)= 2*x; val double = fn : int --> int - fait_x(double,4); val it = 8 : int

12 Fonctions Primitives: Entrée/Sortie n use nom_de_fichier (lit un programme) n print(x) (imprime un objet primitif x) n open_in(nom_de_fichier) (ouvre nom_de_fichier et retourne un pointeur de type instreamau fichier ouvert. n input(pointeur_fichier, t) (retourne une chaine de caracteres de longueur t constitues par les t caracteres consecutifs du fichier de reference) n end_of_stream(pointeur_fichier) retourne vrai si la fin du fichier a ete atteinte.

13 Autres Fonctions Primitives n hd(liste) (retourne le 1er element de la liste) n tl(liste) (retourne la liste constituee de tous les elements sauf le premier). n explode(chaine) (convertit chaine en une liste de chaines dun seul caractere) n implode(liste) (prend une liste de chaines et retourne une seule chaine) n size(chaine) (retourne le nombre de caracteres dans la chaine) n ord(x) (retourne la valeur numerique du caractere x) n chr(i) (retourne le caractere represente par la valeur numerique i.