Programmation fonctionnelle

Dimension: px
Commencer à balayer dès la page:

Download "Programmation fonctionnelle"

Transcription

1 Exercice 1 a Programmation fonctionnelle a1/ # let a = 5 ;; a2/ # let f x = let a = x * x in (3*a+2) ;; a3/ # f 3 ;; a4/ # f a ;; Cours 7 : la récursivité (2) Licence 1 Année Par N. VINCENT # let a = 5 ;; val a : int = 5 # let f x = let a = x * x in (3*a+2) ;; # f 3 ;; - : int = 29 # f a ;; - : int = 77 Licence 1 - programmation fonctionnelle 2 Exercice 1-b b1/ # let h x y = match x,y with 0, y -> 2 * y x, 0 -> 3 * x _ -> x * y ;; b2/ # h 0 6 ;; b3/ réécrire la fonction h avec un seul argument et indiquer l interprétation correspondante. val h : int -> int -> int = <fun> # h 0 6 ;; - : int = 12 # let h (x,y) = match x,y with 0, y -> 2 * y x, 0 -> 3 * x _ -> x * y ;; val h : int * int -> int = <fun> Licence 1 - programmation fonctionnelle 3 Exercice 1-c c1/ # let g a b x = b (x,2*x) b (x, a x) ;; c2/ # g abs ;; c3/ proposer un exemple cohérent pour les 3 arguments et indiquer un appel correspondant. # let g a b x = b (x,2*x) b (x, a x) ;; val g : (int -> int) -> (int * int -> bool) -> int -> bool = <fun> # g abs ;; - : (int * int -> bool) -> int -> bool = <fun> # let aux (x,y) = x = y ;; # g abs aux 4 ;; val aux : 'a * 'a -> bool = <fun> Licence 1 - programmation fonctionnelle 4 Exercice 2 1 / 1 / Écrire une fonction booléenne petit qui compare deux éléments de même type donnés en argument. La fonction se base sur l opérateur < entre le premier et le second argument. Quel est le résultat de l appel : petit 56 25? Quel est le résultat de l appel : petit (30,4) (7,85)? # let petit x y = x <y ;; val petit : 'a -> 'a -> bool = <fun> # petit ;; Exercice 2 2 / 2 / Écrire une fonction range dont l argument est un couple d éléments de même type et dont le résultat est le couple des éléments rangés en sorte que le premier élément du couple est le plus petit. (on utilisera la fonction petit) Exemple : le résultat de l appel range ((6,5),(3,4)) est ((3,4),(6,5)) # let range (x,y) = if petit x y then (x,y) else (y,x) ;; val range : 'a * 'a -> 'a * 'a = <fun> # petit (30,4) (7,85) ;; Licence 1 - programmation fonctionnelle 5 Licence 1 - programmation fonctionnelle 6 1

2 Exercice 2 3 / 3 / Une date est modélisée par un triplet d entiers. Écrire une fonction booléenne avant indiquant si une date précède une autre. On écrira deux versions. a/ L une des définitions commencera par : let avant (j1,m1,a1) (j2,m2,a2)= b/ L autre commencera par : let avant d1 d2 = Exemple : le résultat de l appel avant (18,2,2019) (12,3,2019) est true avant est une fonction de comparaison qui diffère de la fonction petit. # let avant (j1,m1,a1) (j2,m2,a2) = if a1 <> a2 then a1 < a2 else if m1 <> m2 then m1 < m2 else j1 <= j2 ;; # let avant d1 d2 = match d1,d2 with (j1,m1,a1),(j2,m2,a2) -> if a1 <> a2 then a1 < a2 else if m1 <> m2 then m1 < m2 else j1 <= j2 ;; Licence 1 - programmation fonctionnelle 7 Exercice 2 3 / 3 / Une date est modélisée par un triplet d entiers. Écrire une fonction booléenne avant indiquant si une date précède une autre. On écrira deux versions. a/ L une des définitions commencera par : let avant (j1,m1,a1) (j2,m2,a2)= b/ L autre commencera par : let avant d1 d2 = Exemple : le résultat de l appel avant (18,2,2019) (12,3,2019) est true avant est une fonction de comparaison qui diffère de la fonction petit. # let avant (j1,m1,a1) (j2,m2,a2) = (a1,m1,j1) < (a2,m2,j2) ;; # let avant d1 d2 = match d1,d2 with (j1,m1,a1),(j2,m2,a2) -> (a1,m1,j1) < (a2,m2,j2) ;; Licence 1 - programmation fonctionnelle 8 Exercice 2 4 / Exercice 2 5 / 4 / Écrire une fonction tri avec deux arguments, une fonction de comparaison et un couple d éléments de même type. Le résultat de la fonction est le couple des éléments rangés en sorte que le premier élément du couple est inférieur au second au sens de la fonction en argument. La définition de tri commencera par let tri f (x,y). On indiquera l interprétation de la fonction proposée. Quel est l appel pour ordonner un couple de deux dates : (12,3,2019) et (18,2,2019)? # let tri f (x,y) = if f x y then (x,y) else (y,x) ;; val tri : ('a -> 'a -> bool) -> 'a * 'a -> 'a * 'a = <fun> # tri avant ((12,3,2019),(18,2,2019)) ;; - : (int * int * int) * (int * int * int) = ((18, 2, 2019), (12, 3, 2019)) Licence 1 - programmation fonctionnelle 9 5 / Écrire une fonction annees qui permet de calculer le nombre d années entières entre deux dates modélisées par le triplet décrit précédemment. La fonction comporte deux arguments (chacune des deux dates). # let annees d1 d2 = let ((j1,m1,a1),(j2,m2,a2))=tri avant (d1,d2) in if avant (j1,m1,a1) (j2,m2,a1) then a2-a1 else a2-a1-1 ;; val annees : 'a * 'b * int -> 'a * 'b * int -> int = <fun> Licence 1 - programmation fonctionnelle CC1 Chaîne, variable et expression # let X = 3 ;; Error: Unbound constructor X Les indices n ont pas de sens 2

3 Match # let f a = match a with (x,y,z) -> z ;; # f(3,2,5) ;; val f : 'a * 'b * 'c -> 'c = <fun> - : int = 5 # let f x y = match x with (3, y) -> 3 * y (5, 5) -> 55 _ -> 2 * y ;; val f : int * int -> int -> int = <fun> # f(3,25) # f(3,25) ;; ;; # f(3,25) 25 ;; - : int -> int = <fun> - : int = 75 # f(2,25) 25 ;; - : int = 50 # f(3,5) 25 ;; - : int = 15 Match # let f x = match x with (a,2*a) -> 5-> 5 _ -> 6 ;; _ -> 6 ;; Error: Syntax error: pattern expected. let # let f x f = x = match (x1,x2) with with x -> x -> 2 * 2 x *;; x ;; Error: Unbound value x1 # let f f1 x x = = match x x with (x1,x2)-> -> x1 x1 ;; ;; val f1 : 'a * 'b -> 'a = <fun> # let f f2 x x = = let let (x1,x2) = = x x in in x1 x1 ;; ;; val f2 : 'a * 'b -> 'a = <fun> # let h x,y = y ;; Error: Syntax error # f (3,6) ;; # let x=(x1,x2,x3) x=(x1,x2) ;; ;; Error: Unbound value x1 # f1 (2,25) ;; - : int = 2 # f2 (3,5) ;; - : int = 3 Comparaison # (2, 3) < (7, 1) ;; # 3 < 5 < (9 <11) ;; # 3 < 5 < 9 ;; ;; Error: This expression has type int but an expression was expected of type bool # true < true ;; # let f x y = if (x < y) then x < y else y < x ;; val f : 'a -> 'a -> bool = <fun> # false < true ;; # f 5 1 ;; Match # let f x = match x with x > 0 -> 1 x <0 -> -1 x=0 -> 0 ;; Error: Syntax error # let f x = match x with true -> 1 false false -> ->-1-1 _ -> _ -> 0 ;; 0 ;; Warning 11: this match case is unused. val f : bool -> int = <fun> # let f x y = if (1+x)<y then true else false ;; val f : int -> int -> bool = <fun> # let f x y = (1+x)<y ;; val f : int -> int -> bool = <fun> # let f x = match x<0 with true -> 0 false -> x ;; # let f x = if (x < 0) = true then 0 else x ;; # let f x = if x < 0 then 0 else x ;; If then else # let f a = if a > 0 then a-1 ;; # let f a = if a > 0 then a-1 ;; Error: This expression has type int but an expression was expected of type unit # let f a = if a > 0 then print_string "positif";; ;; val f : int -> unit = <fun> # let f a = if a > 0 then a-1 else print_string "négatif" ;; Error: This expression has type unit but an expression was expected of type int 3

4 # let positif a = a > 0 ;; ;; val positif : int -> bool = <fun> # let f positif l = List.for_all positif l ;; val f : ('a -> bool) -> 'a list -> bool = <fun> # let negatif a = a < 0 ;; val negatif : int -> bool = <fun> # let liste = [5;4; 8; 6] ;; val liste : int list = [5; 4; 8; 6] # f positif liste ;; # f negatif liste ;; # let f positif l = List.for_all positif l ;; val f : ('a -> bool) -> 'a list -> bool = <fun> # let list = [5; -1; 4; 8; 6] ;; val list : int list = [5; -1; 4; 8; 6] # f positif list ;; Error: Unbound value positif # let plus a = a > 0 ;; val plus : int -> bool = <fun> # f plus list ;; # let moins a = a < 0 ;; val moins : int -> bool = <fun> # f moins list ;; Fonction récursive Schéma de base #let rec f x = Si condition sur x Alors résultat facile à calculer Sinon lien entre le résultat sur les données plus simples et le résultat sur x Les difficultés : - définir le cas simple (condition sur x résultat) - trouver le lien avec les cas plus simples ramenant au cas simple Licence 1 - programmation fonctionnelle 21 Récursion et accumulation Factorielle : n! = (n-1).n let rec fact n = if n = 0 then 1 else n * fact(n-1) ;; val fact : int -> int = <fun> # fact 3 ;; fact <-- 3 fact(3) fact <-- 2 fact <-- 1 3xfact(2) fact <-- 0 3x2xfact(1) fact --> 1 fact --> 1 3x2x1xfact(0) fact --> 2 3x2x1x1 fact --> 6 Pourrait être calculée au fur et à mesure n! = (n-1). n Licence 1 - programmation fonctionnelle 22 Récursion et accumulation Récursion et ordre des calculs calcul au fur et à mesure n! = (n-1). n Pour calculer 4! 4 4x3 4x3x2 4x3x2x1 Il faut créer une variable intermédiaire dans laquelle on stocke les calculs progressivement. C est un accumulateur Nous l appellerons acc Licence 1 - programmation fonctionnelle 23 Comment créer une variable qui change de valeur au fur et à mesure des calculs? Utiliser une fonction factorielle qui a 2 arguments - n la valeur dont on calcule la factorielle - acc la variable intermédiaire # let rec facto acc n Pour 3! facto 1 3 facto 3 2 facto 6 1 facto 6 0 Cas simple n=0 et n->(n-1) Résultat : contenu de acc Cas plus simple acc -> acc x n n -> n 1 Lien facto (acc x n) (n 1) Licence 1 - programmation fonctionnelle 24 4

5 Récursion et ordre des calculs # let rec facto acc n = if n = 0 then acc else facto (acc * n) (n-1) ;; val facto : int -> int -> int = <fun> # facto 1 4 ;; Appel facto 1 3 facto 3 2 facto 6 1 facto 6 0 # facto 1 3 ;; facto <-- 1 facto* <-- 3 facto <-- 3 facto* <-- 2 facto* <-- 1 facto* <-- 0 Licence 1 - programmation fonctionnelle 25 L utilisateur n a pas à connaître l algorithme utilisé acc doit être caché Variable d'accumulation cachée n! = (n-1).n let factoriel n = facto 1 n ;; val factoriel : int -> int = <fun> # factoriel 4 ;; # let factoriel n = let rec facto acc nn = if nn = 0 then acc else facto (acc * nn) (nn-1) in facto 1 n ;; val factoriel : int -> int = <fun> # factoriel 4 ;; # factoriel 3 ;; facto <-- 1 facto* <-- 3 facto <-- 3 facto* <-- 2 facto* <-- 1 facto* <-- 0 Licence 1 - programmation fonctionnelle 26 Version terminale / non terminale # let rec facto acc n = if n = 0 then acc else facto (acc * n) (n-1) ;; val facto : int -> int -> int = <fun> let rec fact n = if n = 0 then 1 else n * fact(n-1) ;; val fact : int -> int = <fun> Terminal Non Terminal f(x) = si condition alors valeur sinon f(...) f(x) = si condition alors valeur sinon g(f(...)) Licence 1 - programmation fonctionnelle 27 Longueur d une liste # let rec long l = if l = [] then 0 else 1 + long (List.tl l) ;; version non terminale ajouter 1 à chaque fois qu une tête est trouvée Cas simple l = [] et l = h::t l -> t Résultat : contenu de acc Cas plus simple acc -> acc + 1 l -> t Lien longueur (acc + 1) t # let rec longueur acc l = if l = [] then acc else longueur (acc + 1) (List.tl l) ;; version terminale Licence 1 - programmation fonctionnelle 28 Longueur d une liste version terminale Les points importants # let long l = let rec longaux acc ll = match ll with [] -> acc h::t -> longaux (acc + 1) t in longaux 0 l ;; val long : 'a list -> int = <fun> Méthode récursive non terminale Méthode récursive terminale Licence 1 - programmation fonctionnelle 29 Licence 1 - programmation fonctionnelle 30 5

Recherche dans un tableau

Recherche dans un tableau Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6

Plus en détail

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun> 94 Programmation en OCaml 5.4.8. Concaténation de deux listes Définissons maintenant la fonction concat qui met bout à bout deux listes. Ainsi, si l1 et l2 sont deux listes quelconques, concat l1 l2 constitue

Plus en détail

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2 1 Univ. Lille1 - Licence info 3ème année 2013-2014 Expression Logique et Fonctionnelle... Évidemment Cours n o 1 : Introduction à la programmation fonctionnelle 1 Introduction La programmation fonctionnelle

Plus en détail

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme Rappel Ralf Treinen Université Paris Diderot UFR Informatique Laboratoire Preuves, Programmes et Systèmes treinen@pps.univ-paris-diderot.fr 6 mai 2015 Jusqu'à maintenant : un petit langage de programmation

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives introduction Chapitre 5 Images récursives http ://univ-tln.fr/~papini/sources/flocon.htm Récursivité http://www.poulain.org/fractales/index.html Image qui se contient elle-même 1 Exemples mathématiques

Plus en détail

Algorithmes récursifs

Algorithmes récursifs Licence 1 MASS - Algorithmique et Calcul Formel S. Verel, M.-E. Voge www.i3s.unice.fr/ verel 23 mars 2007 Objectifs de la séance 3 écrire des algorithmes récursifs avec un seul test rechercher un élément

Plus en détail

Classes et Objets en Ocaml.

Classes et Objets en Ocaml. Classes et Objets en Ocaml. Didier Rémy 2001-2002 http://cristal.inria.fr/ remy/mot/2/ http://www.enseignement.polytechnique.fr/profs/informatique/didier.remy/mot/2/ Cours Exercices Slide 1 1. Objets 2.

Plus en détail

Initiation à l algorithmique

Initiation à l algorithmique Informatique S1 Initiation à l algorithmique procédures et fonctions 2. Appel d une fonction Jacques TISSEAU Ecole Nationale d Ingénieurs de Brest Technopôle Brest-Iroise CS 73862-29238 Brest cedex 3 -

Plus en détail

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Ces exercices portent sur les items 2, 3 et 5 du programme d informatique des classes préparatoires,

Plus en détail

Corrigé des TD 1 à 5

Corrigé des TD 1 à 5 Corrigé des TD 1 à 5 1 Premier Contact 1.1 Somme des n premiers entiers 1 (* Somme des n premiers entiers *) 2 program somme_entiers; n, i, somme: integer; 8 (* saisie du nombre n *) write( Saisissez un

Plus en détail

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

Plus en détail

STAGE IREM 0- Premiers pas en Python

STAGE IREM 0- Premiers pas en Python Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer

Plus en détail

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Machines virtuelles fonctionnelles (suite) Compilation ML Java Machines virtuelles fonctionnelles (suite) Compilation ML Java Cours de Compilation Avancée (MI190) Benjamin Canou Université Pierre et Maire Curie Année 2011/2012 Semaine 3 Machines virtuelles fonctionnelles

Plus en détail

Algorithmique & programmation

Algorithmique & programmation Algorithmique & programmation Type structuré Article, Enregistrement, Structure Définition de nouveaux types!! On a vu les types simples "! entier, booléen, caractère, chaîne de caractères!! Comment gérer

Plus en détail

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU Gabriel Antoine Louis Paillard Ce travail a eu le soutien de la CAPES, agence brésilienne pour

Plus en détail

Cours de Programmation 2

Cours de Programmation 2 Cours de Programmation 2 Programmation à moyenne et large échelle 1. Programmation modulaire 2. Programmation orientée objet 3. Programmation concurrente, distribuée 4. Programmation monadique 5. Les programmes

Plus en détail

modules & compilation

modules & compilation Programmation fonctionnelle avec OCaml 3ème séance, 19 mars 2015 modules & compilation samuel.hornus@inria.fr http ://www.loria.fr/ shornus/ocaml/ Modules Un module regroupe un ensemble de définitions

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez

Plus en détail

Vérification de programmes et de preuves Première partie. décrire des algorithmes

Vérification de programmes et de preuves Première partie. décrire des algorithmes Vérification de programmes et de preuves Première partie. décrire des algorithmes Yves Bertot September 2012 1 Motivating introduction A partir des années 1940, il a été compris que l on pouvait utiliser

Plus en détail

TP3 : Manipulation et implantation de systèmes de fichiers 1

TP3 : Manipulation et implantation de systèmes de fichiers 1 École Normale Supérieure Systèmes et réseaux Année 2012-2013 TP3 : Manipulation et implantation de systèmes de fichiers 1 1 Répertoire de travail courant Le but de l exercice est d écrire une commande

Plus en détail

Licence Sciences et Technologies Examen janvier 2010

Licence Sciences et Technologies Examen janvier 2010 Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.

Plus en détail

Découverte de Python

Découverte de Python Découverte de Python Python est un des langages informatiques au programme des concours à partir de la session 2015. Ce tutoriel vous permettra de vous mettre à peu près à niveau de ce qui a été fait en

Plus en détail

Initiation à la programmation en Python

Initiation à la programmation en Python I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de

Plus en détail

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation Complexité Objectifs des calculs de complexité : - pouvoir prévoir le temps d'exécution d'un algorithme - pouvoir comparer deux algorithmes réalisant le même traitement Exemples : - si on lance le calcul

Plus en détail

Arbres binaires de recherche

Arbres binaires de recherche 1 arbre des comparaisons 2 recherche dichotomique l'arbre est recalculé à chaque recherche 2 5 3 4 7 9 1 6 1 2 3 4 5 6 7 9 10 conserver la structure d'arbre au lieu de la reconstruire arbre binaire de

Plus en détail

Programme Compte bancaire (code)

Programme Compte bancaire (code) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; Programme Compte bancaire (code) namespace compte_bancaire /// Classe Program public

Plus en détail

Programmation C++ (débutant)/instructions for, while et do...while

Programmation C++ (débutant)/instructions for, while et do...while Programmation C++ (débutant)/instructions for, while et do...while 1 Programmation C++ (débutant)/instructions for, while et do...while Le cours du chapitre 4 : le for, while et do...while La notion de

Plus en détail

1. Structure d'un programme FORTRAN 95

1. Structure d'un programme FORTRAN 95 FORTRAN se caractérise par la nécessité de compiler les scripts, c'est à dire transformer du texte en binaire.(transforme un fichier de texte en.f95 en un executable (non lisible par un éditeur) en.exe.)

Plus en détail

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan Cours de C++ François Laroussinie Dept. d Informatique, ENS de Cachan 2 novembre 2005 Première partie I Introduction Introduction Introduction Algorithme et programmation Algorithme: méthode pour résoudre

Plus en détail

Cours Informatique Master STEP

Cours Informatique Master STEP Cours Informatique Master STEP Bases de la programmation: Compilateurs/logiciels Algorithmique et structure d'un programme Programmation en langage structuré (Fortran 90) Variables, expressions, instructions

Plus en détail

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Représentation d un entier en base b

Représentation d un entier en base b Représentation d un entier en base b 13 octobre 2012 1 Prérequis Les bases de la programmation en langage sont supposées avoir été travaillées L écriture en base b d un entier est ainsi défini à partir

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

Fonctions de deux variables. Mai 2011

Fonctions de deux variables. Mai 2011 Fonctions de deux variables Dédou Mai 2011 D une à deux variables Les fonctions modèlisent de l information dépendant d un paramètre. On a aussi besoin de modéliser de l information dépendant de plusieurs

Plus en détail

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

Plus en détail

Cryptographie. Cours 3/8 - Chiffrement asymétrique

Cryptographie. Cours 3/8 - Chiffrement asymétrique Cryptographie Cours 3/8 - Chiffrement asymétrique Plan du cours Différents types de cryptographie Cryptographie à clé publique Motivation Applications, caractéristiques Exemples: ElGamal, RSA Faiblesses,

Plus en détail

Chapitre 10. Les interfaces Comparable et Comparator 1

Chapitre 10. Les interfaces Comparable et Comparator 1 Chapitre 10: Les interfaces Comparable et Comparator 1/5 Chapitre 10 Les interfaces Comparable et Comparator 1 1 Ce chapitre a été extrait du document "Objets, Algorithmes, Patterns" de [René Lalement],

Plus en détail

FONCTIONS DE PLUSIEURS VARIABLES (Outils Mathématiques 4)

FONCTIONS DE PLUSIEURS VARIABLES (Outils Mathématiques 4) FONCTIONS DE PLUSIEURS VARIABLES (Outils Mathématiques 4) Bernard Le Stum Université de Rennes 1 Version du 13 mars 2009 Table des matières 1 Fonctions partielles, courbes de niveau 1 2 Limites et continuité

Plus en détail

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer Pour commencer Exercice 1 - Ensembles de définition - Première année - 1. Le logarithme est défini si x + y > 0. On trouve donc le demi-plan supérieur délimité par la droite d équation x + y = 0.. 1 xy

Plus en détail

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Seance 2: Complétion du code de jeu. (durée max: 2h) Mot clé const et pointeurs: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Implémentez jeu_recupere_piece

Plus en détail

Notes du cours MTH1101N Calcul I Partie II: fonctions de plusieurs variables

Notes du cours MTH1101N Calcul I Partie II: fonctions de plusieurs variables Notes du cours MTH1101N Calcul I Partie II: fonctions de plusieurs variables Fausto Errico Département de mathématiques et de génie industriel École Polytechnique de Montréal Automne 2012 Table des matières

Plus en détail

Maple: premiers calculs et premières applications

Maple: premiers calculs et premières applications TP Maple: premiers calculs et premières applications Maple: un logiciel de calcul formel Le logiciel Maple est un système de calcul formel. Alors que la plupart des logiciels de mathématiques utilisent

Plus en détail

MIS 102 Initiation à l Informatique

MIS 102 Initiation à l Informatique MIS 102 Initiation à l Informatique Responsables et cours : Cyril Gavoille Catherine Pannier Matthias Robine Marc Zeitoun Planning : 6 séances de cours 5 séances de TD (2h40) 4 séances de TP (2h40) + environ

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR

Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR Mickaël Bergem 25 juin 2014 Maillages et applications 1 Table des matières Introduction 3 1 La modélisation numérique de milieux urbains

Plus en détail

Cours d Analyse. Fonctions de plusieurs variables

Cours d Analyse. Fonctions de plusieurs variables Cours d Analyse Fonctions de plusieurs variables Licence 1ère année 2007/2008 Nicolas Prioux Université de Marne-la-Vallée Table des matières 1 Notions de géométrie dans l espace et fonctions à deux variables........

Plus en détail

KL5121. Pour activer des sorties en fonction de la position d'un codeur

KL5121. Pour activer des sorties en fonction de la position d'un codeur KL5121 Pour activer des sorties en fonction de la position d'un codeur VERSION : 1.0 / PH DATE : 07 Février 2006 Sommaire Ce manuel explique de manière pratique les étapes successives pour mettre en œuvre

Plus en détail

Programmation. fonctionnelle, impérative, logique et orientée objet

Programmation. fonctionnelle, impérative, logique et orientée objet Programmation fonctionnelle, impérative, logique et orientée objet Introduction Les langages de programmation permettent de décrire des calculs de façon plus abstraite qu'un programme machine. Les programmes

Plus en détail

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

1 Recherche en table par balayage

1 Recherche en table par balayage 1 Recherche en table par balayage 1.1 Problème de la recherche en table Une table désigne une liste ou un tableau d éléments. Le problème de la recherche en table est celui de la recherche d un élément

Plus en détail

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12 Probabilités. I - Rappel : trois exemples. Exemple 1 : Dans une classe de 25 élèves, il y a 16 filles. Tous les élèves sont blonds ou bruns. Parmi les filles, 6 sont blondes. Parmi les garçons, 3 sont

Plus en détail

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) Modularité Extensions Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) généricité modules de première classe : peuvent être

Plus en détail

SNT4U16 - Initiation à la programmation 2014-2015. TD - Dynamique de POP III - Fichiers sources

SNT4U16 - Initiation à la programmation 2014-2015. TD - Dynamique de POP III - Fichiers sources SNT4U16 - Initiation à la programmation Licence SVT 2 ème année 2014-2015 TD - Dynamique de POP III - Fichiers sources contacts : mathias.gauduchon@univ-amu.fr, melika.baklouti@univ-amu.fr, xavier.giraud@univ-amu.fr,

Plus en détail

I. Introduction aux fonctions : les fonctions standards

I. Introduction aux fonctions : les fonctions standards Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons

Plus en détail

Découverte du tableur CellSheet

Découverte du tableur CellSheet Découverte du tableur CellSheet l application pour TI-83 Plus et TI-84 Plus. Réalisé par Guy Juge Professeur de mathématiques et formateur IUFM de l académie de Caen Pour l équipe des formateurs T 3 Teachers

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes PLAN CYCLE DE VIE D'UN LOGICIEL EXPRESSION DES BESOINS SPÉCIFICATIONS DU LOGICIEL CONCEPTION DU LOGICIEL LA PROGRAMMATION TESTS ET MISE AU POINT DOCUMENTATION CONCLUSION C.Crochepeyre Génie Logiciel Diapason

Plus en détail

Gnuplot. Chapitre 3. 3.1 Lancer Gnuplot. 3.2 Options des graphes

Gnuplot. Chapitre 3. 3.1 Lancer Gnuplot. 3.2 Options des graphes Chapitre 3 Gnuplot Le langage C ne permet pas directement de dessiner des courbes et de tracer des plots. Il faut pour cela stocker résultats dans des fichier, et, dans un deuxième temps utiliser un autre

Plus en détail

OCL - Object Constraint Language

OCL - Object Constraint Language OCL - Object Constraint Language Laëtitia Matignon laetitia.matignon@univ-lyon1.fr Département Informatique - Polytech Lyon Université Claude Bernard Lyon 1 2012-2013 Laëtitia Matignon SIMA - OCL - Object

Plus en détail

Notes du cours MTH1101 Calcul I Partie II: fonctions de plusieurs variables

Notes du cours MTH1101 Calcul I Partie II: fonctions de plusieurs variables Notes du cours MTH1101 Calcul I Partie II: fonctions de plusieurs variables Guy Desaulniers Département de mathématiques et de génie industriel École Polytechnique de Montréal Automne 2014 Table des matières

Plus en détail

Rappels sur les suites - Algorithme

Rappels sur les suites - Algorithme DERNIÈRE IMPRESSION LE 14 septembre 2015 à 12:36 Rappels sur les suites - Algorithme Table des matières 1 Suite : généralités 2 1.1 Déition................................. 2 1.2 Exemples de suites............................

Plus en détail

Le prototype de la fonction main()

Le prototype de la fonction main() Le prototype de la fonction main() 1. Introduction...1 2. Paramètres et type de retour de la fonction main()...1 3. Exemple 1...2 4. La fonction exit() du C...2 5. Détecter le code de retour d un programme

Plus en détail

Les arbres binaires de recherche

Les arbres binaires de recherche Institut Galilée Année 2010-2011 Algorithmique et arbres L2 TD 6 Les arbres binaires de recherche Type en C des arbres binaires (également utilisé pour les ABR) : typedef struct noeud_s { struct noeud_s

Plus en détail

4. Les structures de données statiques

4. Les structures de données statiques 4. Les structures de données statiques 4.1 Tableaux à une dimension 4.1.1 Introduction Imaginons que dans un programme, nous ayons besoin simultanément de 25 valeurs (par exemple, des notes pour calculer

Plus en détail

Quick Start Guide Touch Tone Capture. Guide de démarrage rapide Saisie à l aide du clavier

Quick Start Guide Touch Tone Capture. Guide de démarrage rapide Saisie à l aide du clavier Qick Start Gide Toch Tone Captre Gide de démarrage rapide Saisie à l aide d clavier 1 Getting Started To help yo get started, this gide otlines some of the most common transactions for the Toch Tone Captre

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

Université Paris-Dauphine DUMI2E 1ère année, 2009-2010. Applications

Université Paris-Dauphine DUMI2E 1ère année, 2009-2010. Applications Université Paris-Dauphine DUMI2E 1ère année, 2009-2010 Applications 1 Introduction Une fonction f (plus précisément, une fonction réelle d une variable réelle) est une règle qui associe à tout réel x au

Plus en détail

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de

Plus en détail

Paginer les données côté serveur, mettre en cache côté client

Paginer les données côté serveur, mettre en cache côté client Paginer les données côté serveur, mettre en cache côté client Vous voulez sélectionner des lignes dans une table, mais celle-ci comporte trop de lignes pour qu il soit réaliste de les ramener en une seule

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Principes des langages de programmation INF 321. Eric Goubault

Principes des langages de programmation INF 321. Eric Goubault Principes des langages de programmation INF 321 Eric Goubault 24 mars 2014 2 Table des matières 1 Introduction 7 2 Programmation impérative 11 2.1 Variables et types........................... 11 2.2 Codage

Plus en détail

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle. Université Montpellier-II UFR des Sciences - Département Informatique - Licence Informatique UE GLIN302 - Programmation Applicative et Récursive Cours No 3 : Identificateurs, Fonctions, Premières Structures

Plus en détail

Arguments d un programme

Arguments d un programme Arguments d un programme L2 SPI, Bruno Jacob 1 Arguments Quand on appelle un programme dans un environnement UNIX ou MS- DOS, on compose une ligne de commandes de la forme : nom-du-programme argument1

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

Perl Console. Votre compagnon pour développer en Perl. Les Journées du Perl 2007 16, 17 novembre, Lyon. Alexis Sukrieh <sukria@sukria.

Perl Console. Votre compagnon pour développer en Perl. Les Journées du Perl 2007 16, 17 novembre, Lyon. Alexis Sukrieh <sukria@sukria. Perl Console Votre compagnon pour développer en Perl Les Journées du Perl 2007 16, 17 novembre, Lyon Alexis Sukrieh Plan Pourquoi une console? Le modèle «Read-Eval-Print-Loop» Dépendances

Plus en détail

Les chaînes de caractères

Les chaînes de caractères Les chaînes de caractères Dans un programme informatique, les chaînes de caractères servent à stocker les informations non numériques comme par exemple une liste de nom de personne ou des adresses. Il

Plus en détail

Latitude 49.37 N Longitude 06.13 E Altitude 376 m RÉSUMÉ MENSUEL DU TEMPS DE JANVIER 2014

Latitude 49.37 N Longitude 06.13 E Altitude 376 m RÉSUMÉ MENSUEL DU TEMPS DE JANVIER 2014 RÉSUMÉ MENSUEL DU TEMPS DE JANVIER 2014 Valeurs moyennes: Valeur Jour Valeur (en C) (en C) (en C) gazon (en C) 11,4 7 13,9 1975 3,6 0,8 4,9 2007-6,3 1963-3,0 29-17,8 1979-2,8 12-24,6 1985 37,1 50,3 95,5

Plus en détail

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que Introduction. On suppose connus les ensembles N (des entiers naturels), Z des entiers relatifs et Q (des nombres rationnels). On s est rendu compte, depuis l antiquité, que l on ne peut pas tout mesurer

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

Plus en détail

Peut-on tout programmer?

Peut-on tout programmer? Chapitre 8 Peut-on tout programmer? 8.1 Que peut-on programmer? Vous voici au terme de votre initiation à la programmation. Vous avez vu comment représenter des données de plus en plus structurées à partir

Plus en détail

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

Examen Médian - 1 heure 30

Examen Médian - 1 heure 30 NF01 - Automne 2014 Examen Médian - 1 heure 30 Polycopié papier autorisé, autres documents interdits Calculatrices, téléphones, traducteurs et ordinateurs interdits! Utilisez trois copies séparées, une

Plus en détail

Cours d algorithmique pour la classe de 2nde

Cours d algorithmique pour la classe de 2nde Cours d algorithmique pour la classe de 2nde F.Gaudon 10 août 2009 Table des matières 1 Avant la programmation 2 1.1 Qu est ce qu un algorithme?................................. 2 1.2 Qu est ce qu un langage

Plus en détail

TP Maple 4 Listes, tests, boucles et procédures

TP Maple 4 Listes, tests, boucles et procédures TP Maple 4 Listes, tests, boucles et procédures Les structures de branchement (tests) et de répétition (boucles) sont au fondement de la programmation informatique. Elles permettent respectivement d effectuer

Plus en détail

Structures algébriques

Structures algébriques Structures algébriques 1. Lois de composition s Soit E un ensemble. Une loi de composition interne sur E est une application de E E dans E. Soient E et F deux ensembles. Une loi de composition externe

Plus en détail

Correction Code nécessaire à la compilation : let bs ="\\" let nl = "\n" ;; let appliquer = List.map ;; (* affichage d'un noeud *)

Correction Code nécessaire à la compilation : let bs =\\ let nl = \n ;; let appliquer = List.map ;; (* affichage d'un noeud *) Correction Code nécessaire à la compilation : let bs ="\\" let nl = "\n" let appliquer = List.map (* affichage d'un noeud *) let (noeud_vers_ch : int -> string) = function n -> "fib(" ^ (string_of_int

Plus en détail

Algorithmique I. Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr. Algorithmique I 20-09-06 p.1/??

Algorithmique I. Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr. Algorithmique I 20-09-06 p.1/?? Algorithmique I Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr Télécom 2006/07 Algorithmique I 20-09-06 p.1/?? Organisation en Algorithmique 2 séances par semaine pendant 8 semaines. Enseignement

Plus en détail

Cours de Systèmes d Exploitation

Cours de Systèmes d Exploitation Licence d informatique Synchronisation et Communication inter-processus Hafid Bourzoufi Université de Valenciennes - ISTV Introduction Les processus concurrents s exécutant dans le système d exploitation

Plus en détail

Cryptographie RSA. Introduction Opérations Attaques. Cryptographie RSA NGUYEN Tuong Lan - LIU Yi 1

Cryptographie RSA. Introduction Opérations Attaques. Cryptographie RSA NGUYEN Tuong Lan - LIU Yi 1 Cryptographie RSA Introduction Opérations Attaques Cryptographie RSA NGUYEN Tuong Lan - LIU Yi 1 Introduction Historique: Rivest Shamir Adleman ou RSA est un algorithme asymétrique de cryptographie à clé

Plus en détail

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

Exercices sur les interfaces

Exercices sur les interfaces Exercices sur les interfaces Fabrice Rossi 18 octobre 1999 1 Le type Object 1.1 Manipulations élémentaires Exercice 1.1 : Indiquer l affichage produit par le programme suivant : public class UpCast1 {

Plus en détail

La boucle for La boucle while L utilisation du if else. while (condition) { instruction(s) }

La boucle for La boucle while L utilisation du if else. while (condition) { instruction(s) } VI Initiation à la programmation sous Comme nous l avons constaté tout au long du document, offre de nombreuses fonctionnalités En tant que nouvelles utilisateurs de il vous est désormais PRESQUE possible

Plus en détail