PDFprof.com Search Engine



Programmation fonctionnelle TD no 1

PDF
Images
List Docs
  • Quels sont les langages de programmation fonctionnelle ?

    Des langages fonctionnels plus récents tels ML (1973), Haskell (1987), OCaml, Erlang, Clean et Oz, CDuce, Scala (2003), F# ou PureScript (2013), Agda (en) sont fortement typés.

  • Quelle est la différence entre programmation fonctionnelle et POO ?

    En programmation fonctionnelle, une fonction est l'unité de manipulation principale.
    En POO, un objet est l'unité de manipulation principale.
    La programmation fonctionnelle prend principalement en charge l'abstraction sur les données et l'abstraction sur le comportement.

  • Pourquoi utiliser la programmation fonctionnelle ?

    Il est possible d'utiliser la programmation fonctionnelle de manière récursive.
    Cela va permettre d'avoir un code plus lisible et plus court.
    De plus, le code s'auto documenter de lui-même.

  • Une fonction désigne en programmation un « sous-programme » permettant d'effectuer des opérations répétitives.
    Au lieu d'écrire le code complet autant de fois que nécessaire, on crée une fonction que l'on appellera pour l'exécuter, ce qui peut aussi alléger le code, le rendre plus lisible.

Programmation fonctionnelle TD no 1
Enseignement moral et civique
Enseignement moral et civique
L'enseignement moral et civique dans les établissements scolaires
Enseignement moral et civique Présentation
Enseignement moral et civique
Education Civique et morale
Enseignement moral et civique
Programme d'enseignement moral et civique de première des voies
Qu'est-ce que la Propriété Intellectuelle ?
Propriété intellectuelle
Next PDF List

Programmation fonctionnelle TD no 1

Programmation fonctionnelleTD no1 : Programmer avec des fonctionsExercice 1 (Types et fonctions)Déterminez, si possible, le type des fonctions suivantes :1.letf1 x =ifx < 0then-xelsex2.letf2 x = x / 03.letf3 x = (x + 1, x +. 1.0)4.letf4 x y z =ifxtheny + 1elsez5.letf5 x y z =ifxthenyelsez6.letf6 x y = x y7.let recf7 x = f7 x8.let recf8 x =if true thenf8 xelse0Exercice 2 (Exponentiation entière)On rappelle que l"exponentiation**n"est définie que sur les flottants.1.

Définissez une fonctionexp1qui réalise l"exponentiation entière à partir de l"exponentiation flottante etde conversions.2.

Définissez une fonctionexp2qui réalise l"exponentiation entière à partir du schéma de récurrence :x0= 1xn+1=x?xn3.

Définissez une fonctionexp3qui réalise l"exponentiation entière à partir du schéma de récurrence :x0= 1x2n= (x?x)nx2n+1=x?(x?x)n4.

En modifiant la fonction précédente, comment obtiendriez-vous les trois derniers chiffres du nombre20192019?Exercice 3 (Intégration)Une des applications courantes de l"informatique concerne l"approximation numérique de différents pro-blèmes.

On s"intéresse ici au calcul d"une valeur approchée de?baf(t)dtoùfest une fonction continue sur l"intervalle[a,b].Une formule de quadrature est une approximation de l"intégrale à l"aide d"une formule linéaire utilisantun nombre fini de valeurs prises par la fonctionfassociées à des poids.Formule du rectanglef(a)?(b-a)Formule du point milieuf?a+b2??(b-a)Formule du trapèzef(a) +f(b)2?(b-a)Formule de Simpson?16f(a) +23f?a+b2?+16f(b)??(b-a)11.

Quels sont les paramètres nécessaires pour calculer l"intégrale? En déduire le type Ocaml que doit avoirune formule de quadrature.2.

Implémentez la formule de Simpson.3.

L"erreur produite par les formule de quadrature est croissante avec l"amplitude de l"intervalle d"intégra-tion.

Pour limiter l"erreur, on profite de la linéarité de l"intégration :?baf(t)dt=n-1?i=0?ai+1aif(t)dtoùa=a0< a1<···< an-1< an=b.

On utilise alors une formule de quadrature sur chacun dessous-intervalles obtenus (dont l"amplitude est plus faible).

Que vaut le termeaisi l"on veut découper demanière régulière l"intervalle[a,b]?4. On veut définir une fonctionquadrature_compositequi réalise l"optimisation précédente.

La formulede quadrature utilisée ainsi que le nombre de sous-intervalles sont passés en paramètres.

Quelle est letype de la fonction?5.

Définissez la fonctionquadrature_composite.Exercice 4 (Mot de Fibonacci)En théorie des langages, le mot de Fibonacci est la limite de la suite de chaînes binaires définie par :S0= 0S1= 01Sn+2=Sn+1SnLes premiers termes de la suite sont donc :S00S101S2010S301001S401001010S50100101001001 1.

Définissez la fonctionmot_fibonacciqui renvoieSn. Prenez garde à la complexité de la fonction.2.

Un morphisme de mots est une fonction qui transforme un mot en un autre et qui est compatibleavec la concaténation.

Autrement dit, une fonctionφest un morphisme si pour tous motsuetv,φ(uv) =φ(u)φ(v).

Un morphisme est donc entièrement défini par l"image des lettres : pour tout motu=u0 un-1,φ(u) =φ(u0) φ(un-1).

On peut donc les représenter par le typechar -> string.Définissez une fonctionappliquer_morphismequi prend en paramètre un morphismeφet un motuetqui renvoieφ(u).3.

Définissez une fonctionappliquer_morphisme_iterequi prend en paramètre un morphismeφ, un motuet un entiernet qui renvoieφn(u).4.

La suiteSpeut être définie à l"aide d"un morphisme :S0= 0Sn+1=φ(Sn)oùφest le morphisme tel queφ(0) = 01etφ(1) = 0.Déduisez-en une nouvelle implémentation de la fonctionmot_fibonacci.Page 2