Programmation fonctionnelle
|
|
- Stéphane Perrot
- il y a 5 ans
- Total affichages :
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
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>
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étaillength : 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étailRappel. 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étailAlgorithmique 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étailintroduction 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étailAlgorithmes 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étailClasses 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étailInitiation à 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étail1. 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étailExercices 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étailCorrigé 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étailConventions 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étailSTAGE 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étailMachines 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étailAlgorithmique & 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étailUne 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étailCours 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étailmodules & 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étailLicence 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étailTP 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étail1/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étailLicence 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étailVé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étailTP3 : 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étailLicence 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étailDé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étailInitiation à 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étailComplexité. 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étailArbres 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étailProgramme 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étailProgrammation 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étail1. 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étailCours 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étailCours 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étailPré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étailIN 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étailRepré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étailCours 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étailFonctions 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 Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike
Plus en détailCryptographie. 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étailChapitre 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étailFONCTIONS 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étailExercices - 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étailSeance 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étailNotes 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étailMaple: 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étailMIS 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étailPlan 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étailReconstruction 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étailCours 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étailKL5121. 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étailProgrammation. 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étailCours 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étail1 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étailProbabilité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étailSuivant 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étailSNT4U16 - 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étailI. 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étailDé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étailTP 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étailINITIATION 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étail3. 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étailGnuplot. 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étailOCL - 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étailNotes 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étailRappels 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étailLe 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étailLes 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étail4. 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étailQuick 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étailBases 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étailUniversité 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étailDE 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étailPaginer 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étailINTRODUCTION 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étailPrincipes 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étailCours 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étailArguments 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étailPremiers 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étailPerl 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étailLes 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étailLatitude 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étailDe 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étailEPREUVE 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étailPeut-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étailStructure 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étailExamen 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étailCours 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étailTP 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étailStructures 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étailCorrection 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étailAlgorithmique 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étailCours 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étailCryptographie 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étailUtilisation 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étailExercices 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étailLa 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