Récursivité et Récurrence
|
|
- Damien Rousseau
- il y a 7 ans
- Total affichages :
Transcription
1 Université Joseph Fourier UFR IMAG Département Licence Sciences et Technologie LICENCE SCIENCES & TECHNOLOGIES 1 re année INF121 ALGORITHMIQUE ET PROGRAMMATION FONCTIONNELLE Récursivité et Récurrence Fonctions récursives Types récursifs Ensembles dénis récursivement Principe de récurrence
2 Table des matières 5 Fonctions récursives sur les entiers Dénition, exécution et terminaison de fonctions récursives Équations récursives et appels récursifs Terminaison du calcul et fonction de Mesure Rédaction d'une preuve de terminaison Implantation en caml Exemple de fonction récursive non calculable Analyse et critique de cette réalisation Fonctions récursives qui retournent plusieurs résultats Fonctions récursives dont la terminaison dépend de plusieurs arguments L'algorithme du pgcd rapide Exemple d'exécution, mesure et preuve de terminaison
3 Chapitre 5 Fonctions récursives sur les entiers 5.1 Dénition, exécution et terminaison de fonctions récursives La dénition d'une fonction récursive se fait en 4 étapes : 1. spécification mathématique : comme au chapître précédent avec la particularité qu'une fonction récursive f est dénie par une suite récurrente. 2. réalisation informatique : a) L'algorithme est donné sous la forme d'un système d'équations dont certaines sont récursives, c'est-à-dire que la valeur de f est dénie en faisant appel à f. b) preuve de terminaison du calcul à l'aide d'une fonction de Mesure, c) implantation en caml Prenons un exemple. SPÉCIFICATION MATHÉMATIQUE Prol puis : Z N Z Sémantique : puis (x, n) est la nème puissance de x. Les puissances de x sont les termes de la suite récurrente (x i ) i N dénie par x 0 = 1 x i = x x i 1 quand i > 0 Exemple puis (3, 2) = 9 Propriétés 1. x Z, puis (x, 0) = 1 2. x Z, n N, puis (x, 2n) = puis (x x, n) 3. x Z, n N, puis (x, 2n + 1) = x puis (x x, n) RÉALISATION INFORMATIQUE Algorithme : La fonction puis est facile à dénir : il sut de traduire les équations de la suite récurrente. Dénition récursive de la fonction par des équations (1) puis (x, 0) = 1 (2) puis (x, i) = x puis (x, i 1) quand i > 0 1
4 5.1.1 Équations récursives et appels récursifs Vous remarquerez que l'équation (2) dénit puis en faisant appel à puis, on dit qu'elle est récursive ou qu'elle fait des appels récursifs. Cela signie que le calcul de puis (x, i) va demander le calcul puis (x, i 1) qui demandera le calcul de puis (x, i 2) et ainsi de suite. Une telle équation a un sens si on peut montrer que cette suite de calcul en cascade va prendre n. appel appelle appelle puis (x, 3) puis (x, 2) puis (x, 1) puis (x, 0) récursif = = = = x puis (x, 2) x puis (x, 1) x puis (x, 0) 1 = x x x 1 }{{} = retour x x 1 retour x = 1 retour n des appels récursifs résulat du calcul Terminaison du calcul et fonction de Mesure Pour montrer la terminaison des calculs en cascade, on donne une fonction mathématique, appelée Mesure, qui estime la distance qui nous sépare de la n du calcul. Cette distance n'est mesurée ni en centimètres, ni en secondes mais en nombre d'appels récursifs. C'est un entier naturel qui indique le nombre maximal 1 d'appels qui restent avant d'atteindre l'appel qui mettra n au calcul. Pour montrer la terminaison du calcul, la fonction Mesure doit prendre exactement les mêmes arguments que puis et doit retourner un entier naturel. Pour montrer la terminaison de puis on doit donc dénir la Mesure en fonction de x et n de sorte qu'elle retourne un entier et qu'elle indique le nombre d'appels restants. SPÉCIFICATION MATHÉMATIQUE Prol Mesure : Z N N Sémantique : Mesure (x, n) est le nombre maximal d'appels récursifs avant la n calcul de puis (x, n). On choisit : Mesure (x, n) def = en prenant soin que le résulat de la mesure appartienne à N. Reprenons les appels récursifs en cascade déclenchés par puis (x, n) et regardons ce que donne la Mesure que nous avons choisie. appel appelle appelle puis (x, 3) puis (x, 2) puis (x, 1) récursif puis (x, 0) Mesure (x, 3) Mesure (x, 2) Mesure (x, 1) Mesure (x, 0) =.. > =.. > =.. > = 0 On constate qu'elle décroît strictement à chaque appel récursif et comme la Mesure donne une valeur dans N, elle ne peut pas décroître indéniment ; elle atteindra forcément 0 et le calcul s'arrêtera Rédaction d'une preuve de terminaison Pour montrer qu'un calcul termine il n'est pas nécessaire de donner une fonction Mesure qui atteint exactement 0 quand le calcul s'arrête. Il sut de trouver une Mesure qui prend des valeurs dans N et qui décroît strictement à chaque appel récursif. La terminaison est garantie puisqu'il est impossible de constuire une suite d'entiers qui soit innie et strictement décroissante. Par ailleurs, il n'est pas nécessaire d'examiner les exécutions de la fonction, il sut de considérer la ou les équations qui sont récursives l'équation (2) dans le cas de puis et de montrer, sur l'équation, que 1 En général il est dicile de donner le nombre exact d'appels récursifs ; par contre il est aisé de déterminer le nombre maximal d'appels. 2
5 chaque appel récursif fait décroître strictement la mesure. Voici comment on rédige une telle preuve de terminaison : TERMINAISON On dénit Mesure (x, n) def =.. Preuve de terminaison : (i) Les arguments de la fonction sont la fonction (ii) Justions que la mesure choisie retourne des valeurs dans.... : Mesure (x, n) =.. et n N d'après le prol de la fonction puis : Z n N Z (iii) Montrons que la mesure à appel : Pour (ii), on considère uniquement les équations qui comportent des : Seule l'équation (2) est récursive et on doit donc montrer : Équation (2) appel initial puis (x, i) = appel récursif quand i > 0 Mesure (x, i) = i donc Mesure (x, i) > Mesure (x, ) > = vraie pour tout i ok > Mesure (x, ) Implantation en caml Maintenant que nous sommes sûr que les équations récursives dénissent un calcul qui termine nous pouvons les traduire en caml et demander à la machine d'eectuer les calculs. L'exécution du calcul va engendrer des appels récursifs en cascade mais nous sommes assurés que cette cascade d'appels va prendre n tôt ou tard. Implantation 1, par traduction des équations récursives On utilise le ltrage sur (x, n) pour déterminer si on est dans le cas de l'équation (1) ou de l'équation (2). let... (puis : int * nat -> int) = function (x,n) -> match (x,n) with partie optionnelle (x,0) -> 1 (* équation 1 *) (x,i) when i>0 -> x * puis(x,i-1) (* équation 2 *) 3
6 Implantation 2, même traduction mais en notation abbrégée let rec (puis : int * nat -> int) = function (x,0) -> 1 (* équation 1 *) (x,i) when i>0 -> x * puis(x,i-1) (* équation 2 *) Remarque Nous redonnons ci-dessous le prol et les équations de la fonction puissance an de soulignez la proximité de la fonction écrite en caml et de sa description mathématique. Prenez le temps de comparer l'implantation 2 avec le prol et les équations ci-dessous. Prol puis : Z N Z Dénition récursive de la fonction par des équations (1) puis (x, 0) = 1 (2) puis (x, i) = x puis (x, i 1) quand i > 0 Conclusion Pour bien programmer en caml il faut dénir ses fonctions mathématiquement par des équations récursives ; ensuite la traduction est quasi immédiate. 5.2 Exemple de fonction récursive non calculable SPÉCIFICATION MATHÉMATIQUE Prol puis : Z N Z Sémantique : puis (x, n) est la nème puissance de x. Les puissances de x sont les termes de la suite récurrente (x i ) i N dénie par x 0 = 1 x i = xi+1 x RÉALISATION INFORMATIQUE Algorithme : On dénit la fonction puis par traduction des équations de la suite récurrente. Dénition récursive de la fonction par des équations (1) puis (x, 0) = 1 (2) puis (x, i) = puis (x, i + 1)/x quand i > 0 Implantation : On traduit les équations récursives en caml let rec (puis : int * nat -> int) = function (x,0) -> 1 (x,i) when i>0 -> puis(x,i+1) / x Analyse et critique de cette réalisation Cette fonction est parfaitement dénie, correctement typée et elle est acceptée par caml. Mais... Question : que ce passe-t'il si on essaie de l'exécuter, par exemple en demandant de calculerpuis (3, 2) Elle ne pas puisque puis (x, 2) appelle puis (x,.. ) appelle puis (x,.. ) appelle... 4
7 Nous avons bien suivi toutes les étapes de conception d'une fonction récursive, toutes sauf une : nous avons négligé la preuve de terminaison et le calcul ne termine pas. Nous avons donné une dénition correcte du point de vue mathématique mais incorrecte du point de vue informatique car non calculable. 5.3 Fonctions récursives qui retournent plusieurs résultats La division euclidienne de a par b doit rendre deux résultats : le quotient de la division et le reste. Elle retourne donc un couple (reste, quotient). SPÉCIFICATION MATHÉMATIQUE Prol div : N N N N Sémantique : div (a, b) = (q, r) est le résultat de la division euclidienne de a par b, c'est-à-dire que les entiers q et r sont tels que a = b q + r avec r < b Exemples 1. div (14, 3) = (4, 2) car 5 = et.. < 3 2. div (5, 7) = (0, 4) car 5 = et.. < 7 Propriétés 1. div (a, a) = (..,.. ) car a = et.. <.. 2. div (1, 1) = (..,.. ) car 1 = et.. <.. 3. div (1, b) = (..,.. ) car 1 = et.. <.. quand b > 1 4. div (a, 0) = car a =.. q + r avec r <.. n'est pas C'est pour cela qu'on impose la contrainte b RÉALISATION INFORMATIQUE Algorithme : Tant qu'il nous reste dans a une quantité susante pour prendre b, on retranche b de a, c'est-à-dire qu'on prend une fois de plus b de a et donc le quotient augmente d'une unité. Lorsqu'on ne peut plus retrancher b de a (parce que a < b) alors le reste de la division euclidienne c'est a. Dénition récursive de la fonction reste par des équations (1) reste(a, b) =.. quand a < b (2) reste(a, b) = reste(...., b) quand a b Dénition récursive de la fonction quotient par des équations (1 ) quotient(a, b) =.. quand a < b (2 ) quotient(a, b) = 1 + quotient( , b) quand a b 5
8 Dénition de la fonction div par des équations div (a, b) = ( (a, b), reste(..,..)) quand a 0, b > 0 Implantation 1 type nat = int (* >= 0 *) type natpos = int (* >0 *) let rec (quotient : nat * natpos -> nat) = function (a,b) when..>=0 &&..>0 -> if... then 0 else.. + quotient(...,b) let rec (reste : nat * natpos -> nat) = function (a,b) when a b... -> if... then r else reste(...,b) let (div : nat * natpos -> nat * nat) = function (a,b) &&... -> ( quotient...,...(a,b) ) RÉALISATION INFORMATIQUE autre version qui regroupe les fonctions quotient et reste Algorithme : On calcule le reste et le quotient simultanément. Dénition récursive de la fonction reste par des équations (1 ) quotient-reste(a, b, q, r) = (q, r) quand r < b (2 ) quotient-reste(a, b, q, r) = quotient-reste(a, b,.. +..,....) quand r b Dénition de la fonction div par des équations div (a, b) = quotient-reste(a, b, q, r) avec r = a et q = 0 }{{} quand a 0, b > 0 valeurs iniitiales de r et q Implantation autre version let rec (quotient_reste : nat * natpos * nat * nat -> nat * nat) = function (a,b,q,r) when... -> if (r<b) then (q,r) else quotient_reste(..,..,q..1,r..b) let (div : nat * natpos -> nat * nat) = function (a,b) when... -> let r=.. and q=.. in quotient_reste(a,b,q,r) 6
9 Exercice Rédigez les preuves de terminaison des fonctions reste, quotient et quotient - reste. TERMINAISON de la fonction reste On dénit Mesure (a, b) def =.. Preuve de terminaison : (i) Les arguments de la fonction sont la fonction (ii) Justions que la mesure choisie retourne des valeurs dans.... : Mesure (a, b) =.. N puisque.. N d'après le prol de la fonction reste (iii) Montrons que la mesure à appel : Pour (ii), on considère uniquement les équations qui comportent des : Seule l'équation (2) est récursive et on doit montrer : Équation (2) appel initial reste(a, b) = appel récursif reste( ,..) quand a > b Mesure (a, b) > Mesure ( ,..) =.. donc Mesure (a, b) > = ok > Mesure ( ,..) si b... 0 La condition b n'est pas dénie pour b = 0. est nécessaire pour garantir la terminaison. Voilà pourquoi la division TERMINAISON de la fonction quotient - reste On dénit Mesure (a, b,..,.. ) def =.. Preuve de terminaison : (i) Les arguments de la fonction sont la fonction (ii) Justions que la mesure choisie retourne des valeurs dans.... : Mesure (a, b,..,.. ) =.. N puisque.. N d'après le prol de la fonction quotient-reste (iii) Montrons que la mesure à appel : 7
10 Pour (ii), on considère uniquement les équations qui comportent des : Seule l'équation (2) est récursive et on doit montrer : Équation (2) appel initial quotient-reste(a, b, q, r) = appel récursif quotient-reste(..,..,.. +..,....) Mesure (a, b, q, r) > Mesure (a,.., , ) =.. donc Mesure (a, b, q, r) > = ok > Mesure (.., b, q......, r..... ) si Là encore, la condition est nécessaire pour garantir la terminaison. Voilà pourquoi on impose b Fonctions récursives dont la terminaison dépend de plusieurs arguments Calcul rapide du PGCD exercice du partiel 2009 (0 min, 6 pt) Le but de cette partie est d'écrire un algorithme de calcul rapide du pgcd (plus grand diviseur commun) de deux entiers et d'étudier la terminaison de l'algorithme. définition (PGCD) L'entier positif p est le pgcd des entiers a et b si il satisfait les 3 conditions : 1. p divise a 2. p divise b 3. tout autre diviseur q de a et de b est inférieur à p Q1. (0 min, 1 pt) On donne ci-dessous des dénitions de 3 fonctions qui seront utiles pour dénir ensuite la fonction pgcd. On suppose que la fonction pair est déjà implantée. Complétez les dénitions ci-dessous. SPÉCIFICATION MATHÉMATIQUE du pair Prol pair : Z Sémantique : pair (n) vaut vrai si n est divisible par 2 SPÉCIFICATION MATHÉMATIQUE du prédicat impair Prol impair : Sémantique : impair (n) vaut vrai si n n'est pas divisible par 2 8
11 RÉALISATION INFORMATIQUE Implantation let (impair :... ) =... -> not... SPÉCIFICATION MATHÉMATIQUE Prol dist : Z Z.... Sémantique : dist (a, b) est la distance qui sépare les nombres a et b Exemple 1. dist (5, 8) = 3 2. dist (15, 12) = 3 3. dist (0, 1) = 1 4. dist ( 2, 0) = 2 5. dist ( 2, 3) = 5 6. dist ( 7, 5) = 2 Propriétés 1. a, b Z, a b = dist(a, b) si a... b 2. a, b Z, a b = dist(a, b) si RÉALISATION INFORMATIQUE Implantation let (dist :...) =... -> let d =... in if L'algorithme du pgcd rapide SPÉCIFICATION MATHÉMATIQUE Prol pgcdr : N N N Sémantique : pgcdr (a, b) est le plus grand des nombres qui divise à la fois a et b. Exemples 1. pgcdr (5, 12) = 1 en eet 5 et 12 n'ont pas de diviseur commun non nul autre que 1 2. pgcdr (8, 6) = 2 en eet 8 = 2 4 et 6 = pgcdr (24, 16) = 8 en eet 24 = 3 8 et 16 = 2 8 donc 8 est le plus grand diviseur commun de 24 et 16 L'exercice consiste à traduire chacune des remarques ci-dessous sous la forme d'une équation qui dénit l'algorithme de calcul rapide du pgcd d'un couple d'entiers (a, b). 9
12 Q2. (0 min, 1.5 pt) Complétez les pointillés dans les remarques suivantes : RÉALISATION INFORMATIQUE Algorithme : Dans le cas où l'un des deux nombres a, b vaut 1 alors le pgcd vaut... Dans le cas où les nombres sont consécutifs (soit a = n et b = n + 1 ou bien b = n et a = n + 1), le pgcd de a et b vaut 1. Si les deux nombres a et b sont égaux alors le pgcd est Si a est pair et b est impair alors le pgcd(a, b) est égal au pgcd de b et de a/2. Réciproquement, si a est impair et b pair alors le pgcd(a, b) est égal au pgcd de et de Si les deux nombres sont pairs, ils sont donc chacun divisibles par deux. Que peut-on alors dire du pgcd de a et b Si les deux nombres sont impairs et a > b, les diviseurs communs à a et b sont forcément des diviseurs de ; donc le pgcd de a et b est égal au pgcd de a b et de b. Si les deux nombres sont impairs et si a < b, les diviseurs communs à a et b sont forcément des diviseurs de b a ; donc le pgcd de a et b est égal au pgcd de et de... Q3. (0 min, 1.5 pt) À partir des remarques précédentes, complétez les équations de l'algorithme. RÉALISATION INFORMATIQUE Dénition récursive de la fonction par des équations (1) pgcdr (a, b) =.. si (2) pgcdr (a, b) = a si (3) pgcdr (a, b) = pgcdr (.., ) si (4) pgcdr (a, b) = si (5) pgcdr (a, b) = pgcdr ( , ) si (6) pgcdr (a, b) = pgcdr ( ,..) si (7) pgcdr (a, b) = pgcdr (.., ) si Exemple d'exécution, mesure et preuve de terminaison Q4. (0 min, 2 pt) Complétez les appels récursifs engendrés par l'appel pgcdr (44, 37) en indiquant à chaque étape l'équation utilisée. Ensuite, donnez une fonction Mesure à valeur dans N qui décroit 10
13 strictement à chaque appel récursif et vériez qu'elle décroît eectivement sur la séquence d'appels récursifs engendrés par pgcdr (44, 37). Mesure (a, b) def = pgcdr (44, 37) Mesure (44, 37) =.... d'après (.. ) = > pgcdr (22,.... ) Mesure (22,.... ) =.... d'après (.. ) = > pgcdr (...., 37) Mesure (...., 37) =.... d'après (.. ) = > pgcdr (...., 26) Mesure (...., 26) =.... d'après (.. ) = > pgcdr (11,.... ) Mesure (11,.... ) =.... d'après (.. ) = > pgcdr (....,.. ) Mesure (....,.. ) =.... d'après (.. ) = > pgcdr (....,.. ) Mesure (....,.. ) =.... d'après (.. ) =.. Exercice Rédigez la preuve de terminaison pour les équations récursives (3) et (6). TERMINAISON On dénit Mesure (a, b) def = Preuve de terminaison : (i) Les arguments de la fonction sont la fonction (ii) Justions que la mesure choisie retourne des valeurs dans.... : Mesure (a, b) = pgcdr N puisque a N et b N d'après le prol de la fonction 11
14 (iii) Montrons que la mesure à appel : Pour (ii), on considère uniquement les équations qui comportent des : Pour l'équation récursive (3) on doit montrer : Équation (3) appel initial pgcdr (a, b) = appel récursif quand impair (.. ) pair (..) Mesure (a, b) = donc Mesure (a, b) > Mesure (a, ) > = ok > Mesure (a, ) si b.. Notez que b > 0 ne sut pas pour garantir la décroissance stricte car lorsque b = 1 on a b/2 vaut 0. Il faut que b... Heureusement c'est le cas car b et que b est Pour l'équation récursive (6) on doit montrer : Équation (6) appel initial pgcdr (..,..) = appel récursif Mesure (a, b) = donc Mesure (a, b) > Mesure ( ,..) > = =.. ok > Mesure ( ,..) si b La décroissance stricte est garantie puisque b
Problème : Calcul d'échéanciers de prêt bancaire (15 pt)
Problème : Calcul d'échéanciers de prêt bancaire (15 pt) 1 Principe d'un prêt bancaire et dénitions Lorsque vous empruntez de l'argent dans une banque, cet argent (appelé capital) vous est loué. Chaque
Plus en détailRecherche 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é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é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é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é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é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é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é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é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é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é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étailVers l'ordinateur quantique
Cours A&G Vers l'ordinateur quantique Données innies On a vu dans les chapîtres précédents qu'un automate permet de représenter de manière nie (et même compacte) une innité de données. En eet, un automate
Plus en détail6. Les différents types de démonstrations
LES DIFFÉRENTS TYPES DE DÉMONSTRATIONS 33 6. Les différents types de démonstrations 6.1. Un peu de logique En mathématiques, une démonstration est un raisonnement qui permet, à partir de certains axiomes,
Plus en détailDate : 18.11.2013 Tangram en carré page
Date : 18.11.2013 Tangram en carré page Titre : Tangram en carré Numéro de la dernière page : 14 Degrés : 1 e 4 e du Collège Durée : 90 minutes Résumé : Le jeu de Tangram (appelé en chinois les sept planches
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étailDEVOIR MAISON : THEME : LES CLES DE CONTROLE. I. La clé des codes barres
DEVOIR MAISON : THEME : LES CLES DE CONTROLE I. La clé des codes barres Le code U.P.C. (Universal Product Code) utilise des nombres de treize chiffres pour désigner un produit de consommation. Les douze
Plus en détailRaisonnement par récurrence Suites numériques
Chapitre 1 Raisonnement par récurrence Suites numériques Terminale S Ce que dit le programme : CONTENUS CAPACITÉS ATTENDUES COMMENTAIRES Raisonnement par récurrence. Limite finie ou infinie d une suite.
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é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é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étailL ALGORITHMIQUE. Algorithme
L ALGORITHMIQUE Inspirée par l informatique, cette démarche permet de résoudre beaucoup de problèmes. Quelques algorithmes ont été vus en 3 ième et cette année, au cours de leçons, nous verrons quelques
Plus en détailLa question est : dans 450 combien de fois 23. L opération est donc la division. Le diviseur. Le quotient
par un nombre entier I La division euclidienne : le quotient est entier Faire l activité division. Exemple Sur une étagère de 4mm de large, combien peut on ranger de livres de mm d épaisseur? La question
Plus en détailDéfinition : On obtient les nombres entiers en ajoutant ou retranchant des unités à zéro.
Chapitre : Les nombres rationnels Programme officiel BO du 8/08/08 Connaissances : Diviseurs communs à deux entiers, PGCD. Fractions irréductibles. Opérations sur les nombres relatifs en écriture fractionnaire.
Plus en détailchapitre 4 Nombres de Catalan
chapitre 4 Nombres de Catalan I Dénitions Dénition 1 La suite de Catalan (C n ) n est la suite dénie par C 0 = 1 et, pour tout n N, C n+1 = C k C n k. Exemple 2 On trouve rapidement C 0 = 1, C 1 = 1, C
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étailPourquoi l apprentissage?
Pourquoi l apprentissage? Les SE sont basés sur la possibilité d extraire la connaissance d un expert sous forme de règles. Dépend fortement de la capacité à extraire et formaliser ces connaissances. Apprentissage
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é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é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étailAxiomatique de N, construction de Z
Axiomatique de N, construction de Z Table des matières 1 Axiomatique de N 2 1.1 Axiomatique ordinale.................................. 2 1.2 Propriété fondamentale : Le principe de récurrence.................
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é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étailCouples de variables aléatoires discrètes
Couples de variables aléatoires discrètes ECE Lycée Carnot mai Dans ce dernier chapitre de probabilités de l'année, nous allons introduire l'étude de couples de variables aléatoires, c'est-à-dire l'étude
Plus en détail2. RAPPEL DES TECHNIQUES DE CALCUL DANS R
2. RAPPEL DES TECHNIQUES DE CALCUL DANS R Dans la mesure où les résultats de ce chapitre devraient normalement être bien connus, il n'est rappelé que les formules les plus intéressantes; les justications
Plus en détailChapitre VI - Méthodes de factorisation
Université Pierre et Marie Curie Cours de cryptographie MM067-2012/13 Alain Kraus Chapitre VI - Méthodes de factorisation Le problème de la factorisation des grands entiers est a priori très difficile.
Plus en détailSub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"
TD1 : traduction en Visual BASIC des exemples du cours sur les structures de contrôle de l'exécution page 1 'TRADUCTION EN VBA DES EXEMPLES ALGORITHMIQUES SUR LES STRUCTURES 'DE CONTROLE DE L'EXECUTION
Plus en détailExercices - Polynômes : corrigé. Opérations sur les polynômes
Opérations sur les polynômes Exercice 1 - Carré - L1/Math Sup - Si P = Q est le carré d un polynôme, alors Q est nécessairement de degré, et son coefficient dominant est égal à 1. On peut donc écrire Q(X)
Plus en détailNOTATIONS PRÉLIMINAIRES
Pour le Jeudi 14 Octobre 2010 NOTATIONS Soit V un espace vectoriel réel ; l'espace vectoriel des endomorphismes de l'espace vectoriel V est désigné par L(V ). Soit f un endomorphisme de l'espace vectoriel
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é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étailEteindre. les. lumières MATH EN JEAN 2013-2014. Mme BACHOC. Elèves de seconde, première et terminale scientifiques :
MTH EN JEN 2013-2014 Elèves de seconde, première et terminale scientifiques : Lycée Michel Montaigne : HERITEL ôme T S POLLOZE Hélène 1 S SOK Sophie 1 S Eteindre Lycée Sud Médoc : ROSIO Gauthier 2 nd PELGE
Plus en détailCOURS ALGORITHMIE. Mathématiques. Le monde merveilleux des algorithmes!! Croyez-moi, vous allez les adorer. Julien Bordas T.S 3
Mathématiques COURS ALGORITHMIE Le monde merveilleux des algorithmes!! Croyez-moi, vous allez les adorer Julien Bordas T.S 3 La Nativité Mathématiques A qui s adresse ce cours? COURS ALGORITHMIE Ce cours
Plus en détailCentre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :
Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de
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é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étailTHEME : CLES DE CONTROLE. Division euclidienne
THEME : CLES DE CONTROLE Division euclidienne Soit à diviser 12 par 3. Nous pouvons écrire : 12 12 : 3 = 4 ou 12 3 = 4 ou = 4 3 Si par contre, il est demandé de calculer le quotient de 12 par 7, la division
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étailAlgorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)
Algorithmes et Programmes Introduction à l informatiquel! Vie d'un programme! Algorithme! Programmation : le langage! Exécution et test des programmes Chapitre : Algorithmes et Programmes 2 Cycle de vie
Plus en détailINF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies
INF 232: Langages et Automates Travaux Dirigés Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies Année Académique 2013-2014 Année Académique 2013-2014 UNIVERSITÉ JOSEPH
Plus en détailThéorie de la Programmation
Théorie de la Programmation http://perso.ens-lyon.fr/daniel.hirschkoff/thpr hop Programmation, Théorie de la programmation Langages de programmation I il existe de nombreux langages de programmation I
Plus en détailSystème binaire. Algèbre booléenne
Algèbre booléenne Système binaire Système digital qui emploie des signaux à deux valeurs uniques En général, les digits employés sont 0 et 1, qu'on appelle bits (binary digits) Avantages: on peut utiliser
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étailProgrammation Objet - Cours II
Programmation Objet - Cours II - Exercices - Page 1 Programmation Objet - Cours II Exercices Auteur : E.Thirion - Dernière mise à jour : 05/07/2015 Les exercices suivants sont en majorité des projets à
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étailINF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février 2014 17:30 à 20:30
Examen intra 20 février 2014 17:30 à 20:30 Nom, prénom : Code permanent : Répondez directement sur le questionnaire. Question #1 5% Quelle influence peut avoir le typage dynamique sur la maintenabilité
Plus en détailALGORITHMIQUE ET PROGRAMMATION En C
Objectifs ALGORITHMIQUE ET PROGRAMMATION Une façon de raisonner Automatiser la résolution de problèmes Maîtriser les concepts de l algorithmique Pas faire des spécialistes d un langage Pierre TELLIER 2
Plus en détail1 Définition et premières propriétés des congruences
Université Paris 13, Institut Galilée Département de Mathématiques Licence 2ème année Informatique 2013-2014 Cours de Mathématiques pour l Informatique Des nombres aux structures Sylviane R. Schwer Leçon
Plus en détailavec des nombres entiers
Calculer avec des nombres entiers Effectuez les calculs suivants.. + 9 + 9. Calculez. 9 9 Calculez le quotient et le rest. : : : : 0 :. : : 9 : : 9 0 : 0. 9 9 0 9. Calculez. 9 0 9. : : 0 : 9 : :. : : 0
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étailChapitre 1 : Évolution COURS
Chapitre 1 : Évolution COURS OBJECTIFS DU CHAPITRE Savoir déterminer le taux d évolution, le coefficient multiplicateur et l indice en base d une évolution. Connaître les liens entre ces notions et savoir
Plus en détailProgrammation avec Xcas ou Python
Programmation avec Xcas ou Python G. Aldon - J. Germoni - J.-M. Mény IREM de Lyon Mars 2012 GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 1 / 20 Éditeur Xcas Environnement Le texte d un programme
Plus en détailUEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.
UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases
Plus en détailLe chiffre est le signe, le nombre est la valeur.
Extrait de cours de maths de 6e Chapitre 1 : Les nombres et les opérations I) Chiffre et nombre 1.1 La numération décimale En mathématique, un chiffre est un signe utilisé pour l'écriture des nombres.
Plus en détailLogique. Plan du chapitre
Logique Ce chapitre est assez abstrait en première lecture, mais est (avec le chapitre suivant «Ensembles») probablement le plus important de l année car il est à la base de tous les raisonnements usuels
Plus en détailDéveloppements limités. Notion de développement limité
MT12 - ch2 Page 1/8 Développements limités Dans tout ce chapitre, I désigne un intervalle de R non vide et non réduit à un point. I Notion de développement limité Dans tout ce paragraphe, a désigne un
Plus en détailCH.6 Propriétés des langages non contextuels
CH.6 Propriétés des langages non contetuels 6.1 Le lemme de pompage 6.2 Les propriétés de fermeture 6.3 Les problèmes de décidabilité 6.4 Les langages non contetuels déterministes utomates ch6 1 6.1 Le
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étail1.6- Génération de nombres aléatoires
1.6- Génération de nombres aléatoires 1- Le générateur aléatoire disponible en C++ 2 Création d'un générateur aléatoire uniforme sur un intervalle 3- Génération de valeurs aléatoires selon une loi normale
Plus en détailIntroduction a l'algorithmique des objets partages. Robert Cori. Antoine Petit. Lifac, ENS Cachan, 94235 Cachan Cedex. Resume
Introduction a l'algorithmique des objets partages Bernadette Charron{Bost Robert Cori Lix, Ecole Polytechnique, 91128 Palaiseau Cedex, France, charron@lix.polytechnique.fr cori@lix.polytechnique.fr Antoine
Plus en détailApplication 1- VBA : Test de comportements d'investissements
Application 1- VBA : Test de comportements d'investissements Notions mobilisées Chapitres 1 à 5 du cours - Exemple de récupération de cours en ligne 1ère approche des objets (feuilles et classeurs). Corps
Plus en détailOPTIMISATION À UNE VARIABLE
OPTIMISATION À UNE VARIABLE Sommaire 1. Optimum locaux d'une fonction... 1 1.1. Maximum local... 1 1.2. Minimum local... 1 1.3. Points stationnaires et points critiques... 2 1.4. Recherche d'un optimum
Plus en détailLes suites numériques
Chapitre 3 Term. STMG Les suites numériques Ce que dit le programme : Suites arithmétiques et géométriques CONTENUS CAPACITÉS ATTENDUES COMMENTAIRES Suites arithmétiques et géométriques Expression du terme
Plus en détailCours d arithmétique Première partie
Cours d arithmétique Première partie Pierre Bornsztein Xavier Caruso Pierre Nolin Mehdi Tibouchi Décembre 2004 Ce document est la première partie d un cours d arithmétique écrit pour les élèves préparant
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étail108y= 1 où x et y sont des entiers
Polynésie Juin 202 Série S Exercice Partie A On considère l équation ( ) relatifs E :x y= où x et y sont des entiers Vérifier que le couple ( ;3 ) est solution de cette équation 2 Déterminer l ensemble
Plus en détailLes Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.
Les Triggers SQL Didier DONSEZ Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.fr 1 Sommaire Motivations Trigger Ordre Trigger Ligne Condition Trigger
Plus en détailGestion mémoire et Représentation intermédiaire
Gestion mémoire et Représentation intermédiaire Pablo de Oliveira March 23, 2015 I Gestion Memoire Variables locales Les variables locales sont stockées: Soit dans un registre,
Plus en détailJava Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites
Java Licence Professionnelle 2009-2010 Cours 7 : Classes et méthodes abstraites 1 Java Classes et méthodes abstraites - Le mécanisme des classes abstraites permet de définir des comportements (méthodes)
Plus en détailFonctions de plusieurs variables : dérivés partielles, diérentielle. Fonctions composées. Fonctions de classe C 1. Exemples
45 Fonctions de plusieurs variables : dérivés partielles, diérentielle. Fonctions composées. Fonctions de classe C 1. Exemples Les espaces vectoriels considérés sont réels, non réduits au vecteur nul et
Plus en détailIUT de Laval Année Universitaire 2008/2009. Fiche 1. - Logique -
IUT de Laval Année Universitaire 2008/2009 Département Informatique, 1ère année Mathématiques Discrètes Fiche 1 - Logique - 1 Logique Propositionnelle 1.1 Introduction Exercice 1 : Le professeur Leblond
Plus en détailEnoncé et corrigé du brevet des collèges dans les académies d Aix- Marseille, Montpellier, Nice Corse et Toulouse en 2000. Énoncé.
Enoncé et corrigé du brevet des collèges dans les académies d Aix- Marseille, Montpellier, Nice Corse et Toulouse en 2000. Énoncé. I- ACTIVITES NUMERIQUES (12 points) Exercice 1 (3 points) On considère
Plus en détailTravaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation
Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des
Plus en détailPlan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml
OCL Object Constraint Language Le langage de contraintes d'uml Plan 1. Introduction 2. Les principaux concepts d'ocl Object Constraint Language 1 Object Constraint Language 2 Exemple: une application bancaire
Plus en détailCours Programmation Système
Cours Programmation Système Filière SMI Semestre S6 El Mostafa DAOUDI Département de Mathématiques et d Informatique, Faculté des Sciences Université Mohammed Premier Oujda m.daoudi@fso.ump.ma Février
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étailProgrammation linéaire
1 Programmation linéaire 1. Le problème, un exemple. 2. Le cas b = 0 3. Théorème de dualité 4. L algorithme du simplexe 5. Problèmes équivalents 6. Complexité de l Algorithme 2 Position du problème Soit
Plus en détailPar combien de zéros se termine N!?
La recherche à l'école page 79 Par combien de zéros se termine N!? par d es co llèg es An dré Do ucet de Nanterre et Victor Hugo de Noisy le Grand en seignants : Danielle Buteau, Martine Brunstein, Marie-Christine
Plus en détailIntroduction à l étude des Corps Finis
Introduction à l étude des Corps Finis Robert Rolland (Résumé) 1 Introduction La structure de corps fini intervient dans divers domaines des mathématiques, en particulier dans la théorie de Galois sur
Plus en détailAlgorithmique et programmation : les bases (VBA) Corrigé
PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours VBA, Semaine 1 mai juin 2006 Corrigé Résumé Ce document décrit l écriture dans le langage VBA des éléments vus en algorithmique. Table des matières 1 Pourquoi
Plus en détailCORRECTION EXERCICES ALGORITHME 1
CORRECTION 1 Mr KHATORY (GIM 1 A) 1 Ecrire un algorithme permettant de résoudre une équation du second degré. Afficher les solutions! 2 2 b b 4ac ax bx c 0; solution: x 2a Solution: ALGORITHME seconddegré
Plus en détailContinuité en un point
DOCUMENT 4 Continuité en un point En général, D f désigne l ensemble de définition de la fonction f et on supposera toujours que cet ensemble est inclus dans R. Toutes les fonctions considérées sont à
Plus en détailPROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES
Leçon 11 PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES Dans cette leçon, nous retrouvons le problème d ordonnancement déjà vu mais en ajoutant la prise en compte de contraintes portant sur les ressources.
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étailTexte Agrégation limitée par diffusion interne
Page n 1. Texte Agrégation limitée par diffusion interne 1 Le phénomène observé Un fût de déchets radioactifs est enterré secrètement dans le Cantal. Au bout de quelques années, il devient poreux et laisse
Plus en détailCours Fonctions de deux variables
Cours Fonctions de deux variables par Pierre Veuillez 1 Support théorique 1.1 Représentation Plan et espace : Grâce à un repère cartésien ( ) O, i, j du plan, les couples (x, y) de R 2 peuvent être représenté
Plus en détailCalculateur quantique: factorisation des entiers
Calculateur quantique: factorisation des entiers Plan Introduction Difficulté de la factorisation des entiers Cryptographie et la factorisation Exemple RSA L'informatique quantique L'algorithme quantique
Plus en détailLogiciel de Base. I. Représentation des nombres
Logiciel de Base (A1-06/07) Léon Mugwaneza ESIL/Dépt. Informatique (bureau A118) mugwaneza@univmed.fr I. Représentation des nombres Codage et représentation de l'information Information externe formats
Plus en détail