LIFAP1 : ALGORITHMIQUE ET PROGRAMMATION RECURSIVE. Présentation de l UE Modalités de Contrôle des Connaissances

Documents pareils

STAGE IREM 0- Premiers pas en Python

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

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

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Cours d Informatique

Algorithmes récursifs

Algorithmique et Programmation, IMA

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

Algorithmique et programmation : les bases (VBA) Corrigé

CORRECTION EXERCICES ALGORITHME 1

Feuille TD n 1 Exercices d algorithmique éléments de correction

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Organigramme / Algorigramme Dossier élève 1 SI

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Corrigé des TD 1 à 5

UE Programmation Impérative Licence 2ème Année

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

Rappels sur les suites - Algorithme

Cours 1 : La compilation

Cours Informatique Master STEP

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

1 Recherche en table par balayage

Introduction à l algorithmique et à la programmation M1102 CM n 3

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

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)

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

Cours d algorithmique pour la classe de 2nde

TD3: tableaux avancées, première classe et chaînes

Créer le schéma relationnel d une base de données ACCESS

Cours 1 : Qu est-ce que la programmation?

MIS 102 Initiation à l Informatique

Cours d Algorithmique et de Langage C v 3.0

TP 1. Prise en main du langage Python

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

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Cours d initiation à la programmation en C++ Johann Cuenin

Initiation à la programmation en Python

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

Cours 7 : Utilisation de modules sous python

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Correction TD algorithmique

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

Initiation à l algorithmique

Initiation à la Programmation en Logique avec SISCtus Prolog

UNIVERSITE DE TOULON UFR FACULTE DE DROIT REGLEMENT D EXAMEN ANNEE 2012/2017 LICENCE DROIT MENTION DROIT GENERAL

Objets Combinatoires élementaires

Algorithmique et structures de données I

Java Licence Professionnelle CISII,

Définitions. Numéro à préciser. (Durée : )

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

Maple: premiers calculs et premières applications

Découverte de Python

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

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Recherche dans un tableau

TP1 : Initiation à Java et Eclipse

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Introduction à MATLAB R

ALGORITHMIQUE ET PROGRAMMATION En C

Algorithme. Table des matières

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Représentation d un entier en base b

Tp 1 correction. Structures de données (IF2)

S LICENCE INFORMATIQUE Non Alt Alt SS1 S2 S3 S4 S5 S6 Parcours : IL (Ingénierie Logicielle) SRI (Systèmes et Réseaux Informatiques)

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Microprocesseur + Logiciel

Initiation à LabView : Les exemples d applications :

SCIENCES - TECHNOLOGIES - SANTE. STIC : Sciences et Technologies de l Information et de la Communication. Parcours Informatique

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

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

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Algorithmique avec Algobox

Calcul Formel et Numérique, Partie I

ACTIVITÉ DE PROGRAMMATION

Premiers Pas en Programmation Objet : les Classes et les Objets

Utilisation d objets : String et ArrayList

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Licence Sciences et Technologies Examen janvier 2010

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

INF 321 : mémento de la syntaxe de Java

2 Comment fonctionne un ordinateur, dans les grandes lignes

Python - introduction à la programmation et calcul scientifique

V- Manipulations de nombres en binaire

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Adama MBODJI MBODJ.SYSTEM

Année Universitaire ère année de Master Droit Mention Droit Privé 1 er semestre. 1 er SEMESTRE 8 matières CM TD COEFF ECTS.

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

I. Introduction aux fonctions : les fonctions standards

Cours 02 : Problème général de la programmation linéaire

Polynômes à plusieurs variables. Résultant

Probabilités sur un univers fini

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

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


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

sous réserve de validation des modifications DROIT ECONOMIE GESTION SCIENCES DU MANAGEMENT FINANCE

Transcription:

LIFAP1 : ALGORITHMIQUE ET PROGRAMMATION RECURSIVE Présentation de l UE Modalités de Contrôle des Connaissances

PRÉSENTATION DE L UE LIFAP2 Responsable de l UE Marie Lefevre marie.lefevre@liris.cnrs.fr Responsables d amphi Marie Lefevre bâtiment Nautibus Nathalie Guin bâtiment Nautibus Site Web de l UE http://liris.cnrs.fr/marie.lefevre/ens/lifap2/ Planning (salles, horaires) Supports des CMs, TDs et TPs et corrigés des TPs Modalité de Contrôle des Connaissances 2

CONTENU Notions : récursivité, programmation fonctionnelle Mémorisation, structure de données (listes, arbres) Complémentaire à l UE LIFAP1 Programmation impérative et itérative Utile dans la suite des UE d algorithmique et programmation (LIFAP3, LIFAP4) Afin de choisir entre une approche impérative et une approche récursive pour résoudre un problème 3

ORGANISATION Volume horaire 9h de CM (séance d 1h30) 9h de TD (séance d 1h30) 18h de TP (séance de 3h) Plan «Réussite en Licence» 1 séance de TD de révisions 1 séance de soutien Sur avis des intervenants de TD-TP Présence obligatoire 4

MODALITÉS DE CONTRÔLE DES CONNAISSANCES Plusieurs épreuves : Interrogations écrites en début de TD - coeff. 20% 4 notes TP noté en conditions d'examen - coeff. 40% TP n 6, 3h, le 24/04/17 Epreuve écrite en amphi - coeff. 40% Session 1 en mai - 90 min Session 2 en juin - 60 min Harmonisation des notes en fin de semestre 5

LIFAP1 : ALGORITHMIQUE ET PROGRAMMATION RECURSIVE Algorithme itératif / récursif Programmation impérative / fonctionnelle

QU EST-CE QU UN ALGORITHME? On souhaite résoudre le problème : Trouver le minimum d une liste de nombres : par exemple (3 6,5 12-2 0 7) Expliquer à une machine comment trouver le minimum de n importe quelle liste de nombres Langage commun entre la machine et nous : Scheme 7

DÉFINITION D UN ALGORITHME Un algorithme est une méthode Suffisamment générale pour pouvoir traiter toute une classe de problèmes Combinant des opérations suffisamment simples pour être effectuées par une machine 8

COMPLEXITÉ D UN ALGORITHME Il faut : que la machine trouve le plus vite possible Complexité en temps qu elle trouve en utilisant aussi peu de place mémoire que possible Complexité en espace 9

RAPPEL : LA MACHINE N EST PAS INTELLIGENTE L exécution d un algorithme ne doit normalement pas impliquer des décisions subjectives, ni faire appel à l utilisation de l intuition ou de la créativité Exemple : une recette de cuisine n est pas un algorithme si elle contient des notions vagues comme «ajouter du sel» 10

MON PREMIER ALGORITHME Déterminer le minimum d une liste de nombres par exemple (3 6,5 12-2 0 7) 11

MÉTHODE ITÉRATIVE Je parcours la liste de gauche à droite, en retenant à chaque pas le minimum provisoire (3 6,5 12-2 0 7) Entre 3 et 6,5, c est 3 Entre 3 et 12, c est 3 Entre 3 et -2, c est -2 Entre -2 et 0, c est -2 etc. 12

DE QUOI AI-JE BESOIN POUR ÉCRIRE L ALGORITHME? (1) La séquence Début Instruction(s) Fin L affectation Variable Expression A 2 BX4 A+2*racine(15) 13

DE QUOI AI-JE BESOIN POUR ÉCRIRE L ALGORITHME? (2) La conditionnelle (1) Si Condition Alors Instruction(s) FinSi Exemple : Si (A > 27) Alors B A*3 FinSi 14

DE QUOI AI-JE BESOIN POUR ÉCRIRE L ALGORITHME? (3) La conditionnelle (2) Si Condition Alors Instruction(s) Sinon Instruction(s) FinSi Exemple : Si ((A<10) et (B > racine(a*5))) Alors Sinon FinSi B A*3 A A+B A A+2 B A*B 15

DE QUOI AI-JE BESOIN POUR ÉCRIRE L ALGORITHME? (4) La condition est : soit une condition élémentaire soit une condition complexe, c est à dire une conjonction, disjonction, ou négation de conditions élémentaires et/ou complexes 16

DE QUOI AI-JE BESOIN POUR ÉCRIRE L ALGORITHME? (5) L itérative, ou boucle TantQue Condition Faire Instruction(s) FinTantQue Exemple : TantQue i<10 Faire a a*i i i+1 FinTantQue 17

OPÉRATEURS BOOLÉENS Pour écrire une conjonction, disjonction, ou négation de conditions, on a besoin des opérateurs booléens ET, OU, NON Une variable booléenne est une variable dont les valeurs peuvent être vrai ou faux Un opérateur booléen est un opérateur dont les arguments sont des variables booléennes et dont le résultat est booléen 18

L OPÉRATEUR ET X Y X ET Y Vrai Vrai Vrai Vrai Faux Faux Faux Vrai Faux Faux Faux Faux 19

L OPÉRATEUR OU X Y X OU Y Vrai Vrai Vrai Vrai Faux Vrai Faux Vrai Vrai Faux Faux Faux 20

L OPÉRATEUR NON X Vrai Faux NON X Faux Vrai 21

ALGORITHME ITÉRATIF Soient L : la liste premier, longueur, ième et écrire : des primitives (i.e. algorithmes déjà définis) Définition de minimum(l) Début min premier(l) i 2 TantQue i <= longueur(l) Faire Si ième(l,i) < min Alors min ième(l,i) FinSi i i+1 FinTantQue Écrire(«Le minimum est») Écrire(min) Fin 22

VOCABULAIRE minimum et écrire sont des procédures, i.e. modifient l environnement premier, longueur et ième sont des fonctions, i.e. retournent une valeur, mais ne modifient pas l environnement L est le paramètre de la procédure minimum i est l indice ou le compteur de la boucle 23

COMPLEXITÉ EN TEMPS DE L ALGORITHME ITÉRATIF DU MINIMUM Définition de minimum(l) Début min premier(l) i 2 TantQue i <= longueur(l) Faire Si ième(l,i) < min Alors min ième(l,i) FinSi i i+1 FinTantQue Écrire(«Le minimum est») Écrire(min) Fin Soit n la longueur de la liste L 1 affectation (initialisation) 1 affectation (initialisation) n comparaisons n-1 comparaisons m affectations n-1 affectation (incrémentation) 1 écriture 1 écriture 24

LE NOMBRE m DÉPEND DE LA LISTE Meilleur cas : m=0 si le premier nombre de la liste est le minimum Pire cas : m=n-1 si les nombres de la liste sont rangés en ordre décroissant Cas moyen : m=(n-1)/2 s ils respectent une distribution parfaitement aléatoire 25

COMPLEXITÉ EN ESPACE DE L ALGORITHME Une variable min pour stocker le minimum provisoire Une variable i pour savoir où on en est dans la liste 26

MÉTHODE RÉCURSIVE (1) Pour trouver le minimum de la liste (3 6,5 12-2 0 7) On suppose le problème résolu pour la liste privée de son premier élément i.e. (6,5 12-2 0 7) Soit min le minimum de cette sous-liste, ici -2 Le minimum de la liste complète s obtient par comparaison entre le premier élément de la liste (ici 3) et min (ici -2) 27

MÉTHODE RÉCURSIVE (2) Comment résout-on le problème pour la sous-liste? Ø En faisant le même raisonnement. C est la récursivité. Quand s arrête-t-on? Ø Quand on ne peut plus parler de sous-liste, i.e. quand la liste a un seul élément. C est alors le minimum. 28

ILLUSTRATION DE LA MÉTHODE Sur quoi faire l appel récursif? Enlever le premier élément (3 6,5 12-2 0 7) minimum (6,5 12-2 0 7) appel récursif minimum -2 Comparer -2 et 3-2 Comment passer du résultat de l appel récursif au résultat qu on cherche? 29

ALGORITHME RÉCURSIF Soient vide?, reste et premier des fonctions primitives Définition de la fonction minimum (L) Si vide?(reste(l)) Alors retourne premier(l) Sinon Si premier(l) < minimum(reste(l)) Alors retourne premier(l) Sinon retourne minimum(reste(l)) FinSi FinSi 30

REMARQUES minimum est ici une fonction, le mot retourne permet de dire quel est son résultat minimum est l appel récursif En programmation fonctionnelle, on n a plus besoin de la séquence En programmation récursive, on n a plus besoin de la boucle 31

ILLUSTRATION DE L ALGORITHME -2 premier élément 3 (3 6,5 12-2 0 7) -2 premier élément -2 6,5 appel récursif (6,5 12-2 0 7) premier élément 12 appel récursif (12-2 0 7) premier élément -2-2 appel récursif (-2 0 7) 0 appel récursif (0 7) premier élément 0 7 (7) appel récursif minimum 32

COMPLEXITÉ EN TEMPS DE L ALGORITHME RÉCURSIF DU MINIMUM Définition de la fonction minimum(l) Si vide?(reste(l)) Alors retourne premier(l) Sinon Si premier(l) < minimum(reste(l)) Alors Sinon FinSi FinSi retourne premier(l) retourne minimum(reste(l)) 1 test 1 comparaison + le nombre de comparaisons de l appel récursif 33

COMPLEXITÉ EN TEMPS DE L ALGORITHME (2) Si n est la longueur de la liste Si C(i) est le nombre de comparaisons de l algorithme pour une liste de longueur i Alors C(n) = 1+C(n-1) = 1+1+C(n-2) =... = 1+1+ +C(1) = 1+1+ +0 = n-1 34

RÉSUMÉ SUR LA COMPLEXITÉ Choisir ce que l on va compter unité de comparaison des algorithmes par exemple le nombre de comparaisons Ce qui importe est l ordre de grandeur de la complexité constant, log n, linéaire, n*log n, n 2, 2 n En LIFAP2 on s intéressera essentiellement au nombre de fois où l on parcourt une structure de donnée (liste, arbre) 35

POUR ÉCRIRE UN ALGORITHME RÉCURSIF Il faut choisir 1. Sur quoi on fait l appel récursif 2. Comment on passe du résultat de l appel récursif au résultat que l on cherche 3. Le cas d arrêt Ø DANS CET ORDRE LÀ!!! 36

STRUCTURE TYPE D UNE FONCTION RÉCURSIVE Si Alors Sinon je suis dans le cas d arrêt voila le résultat le résultat est le résultat de l application d une fonction sur le résultat de l appel récursif 37

LES BUGS Mon algorithme est faux car son résultat n est pas défini si la liste est vide ou si elle contient autre chose que des nombres Pour éviter les bugs il faut : Définir le problème aussi bien que possible C est la spécification Tenter de prouver que son programme répond à la spécification Passer des jeux d essai, aussi divers et tordus que possible 38

POUR RÉSUMER LIFAP1 : Programmation Langage C LIFAP2 : Programmation Impérative Séquence (faire les choses l une après l autre) Fonctionnelle Itérative Boucle (répéter) Récursive Langage Scheme Appliquer une fonction à des arguments pour obtenir un résultat La répétition est assurée par l enchaînement des appels récursifs Composer les fonctions pour enchaîner les traitements Le test de la boucle est remplacé par le cas d arrêt 39

DÉBUTS EN SCHEME Évaluer une expression Définir une fonction

NOTION DE FONCTION Une fonction prend des arguments et retourne un résultat Arguments et résultat peuvent être de n importe quel type : Nombre Booléen Caractère Chaîne de caractères Liste Fonction 41

ÉCRITURE DE L APPEL À UNE FONCTION (1) Syntaxe : Parenthèse ouvrante Nom de la fonction Espace Premier argument Espace Deuxième argument Etc. Parenthèse fermante (NomFct Arg1 Arg2 Argn) 42

ÉCRITURE DE L APPEL À UNE FONCTION (2) Sémantique : il faut donner à la fonction le bon nombre d arguments, et du bon type Exemples : (+ 5 13) retourne 18 (- 10 b) retourne la différence si b a une valeur numérique, une erreur sinon (+ (* 2 5) (- 3 1)) retourne 12 (* 5) n est pas correct (/ 5 "a") non plus 43

ÉVALUATION DE L APPEL À UNE FONCTION Lorsqu on lui fournit un appel de fonction, Scheme Évalue chacun des arguments Regarde s il connaît la fonction, sinon affiche un message d erreur Applique la fonction aux résultats de l évaluation des arguments Affiche le résultat C est un processus récursif 44

EXEMPLES D ERREURS (1 + 2) erreur : 1 n est pas une fonction (toto (1 2 3)) erreur : 1 n est pas une fonction Dans certains cas particuliers, les arguments ne sont pas évalués avant l application de la fonction. On parle alors de forme spéciale plutôt que de fonction 45

LES VARIABLES Dans le langage Scheme, une variable se nomme symbole L affectation revient à attribuer une valeur à un symbole. On utilise pour cela la forme spéciale define Exemples : (define a 5) (define b 2) (+ a b) 7 46

LA FORME SPÉCIALE QUOTE La forme spéciale quote permet d empêcher l évaluation Exemples : (define a 5) a 5 (quote a) a (quote (+ 1 2)) (+ 1 2) '(+ 1 2) (+ 1 2) 47

LA FORME SPÉCIALE EVAL À l inverse de quote, eval force l évaluation Exemples : (eval '(+ 3 2)) 5 (define toto 5) (define tata toto) tata 5 (define titi 'toto) titi toto (eval titi) 5 48

DÉFINITION D UNE FONCTION Syntaxe : (define fonction (lambda liste-des-arguments instructions)) Exemple : Test : (plus-1 3) 4 (define plus-1 (lambda (x) (+ x 1))) 49

SPÉCIFICATION D UNE FONCTION ; description de ce que fait la fonction (define fonction ; type du résultat (lambda liste-des-arguments ; type des arguments instructions)) Exemple : ; ajoute 1 à un nombre (define plus-1 ; un nombre (lambda (x) ; x un nombre (+ x 1))) 50

L ALTERNATIVE L alternative est définie en Scheme par la forme spéciale if Syntaxe : (if condition valeur-si-vrai valeur-si-faux) Exemples : (if (> 3 2) 'yes 'no) yes (if (> 2 3) 'yes 'no) no (if (> 3 2) (- 3 2) (+ 3 2)) 1 51

QUELQUES FONCTIONS PRÉDÉFINIES (1) Opérateurs arithmétiques : +, -, *, /, sqrt, min, max, abs,... (sqrt 9) 3 (min 5 2 1 3) 1 Opérateurs booléens : not, or, and (not #t) #f (and (> 3 2) (> 2 5)) #f (or (> 3 2) (> 2 5)) #t 52

QUELQUES FONCTIONS PRÉDÉFINIES (2) Opérateurs de comparaison : =, <, >, <=, >= pour les nombres eq? pour tout sauf les listes et les chaînes de caractères equal? pour tout y compris les listes Pour tester le type d un objet : boolean?, number?, symbol?, string? modulo : reste de la division entière (modulo 12 5) 2 (modulo 5 12) 5 53

MA PREMIÈRE FONCTION RÉCURSIVE : CHOIX DE LA MÉTHODE On veut écrire une fonction qui étant donné un entier n calcule n! Sur quoi faire l appel récursif? factorielle n -1 n-1 factorielle appel récursif n! n (n-1)! Comment passer du résultat de l appel récursif au résultat qu on cherche? 54

MA PREMIÈRE FONCTION RÉCURSIVE : ÉCRITURE Cas d arrêt : 0! = 1 Récursivité : n! = 1 x 2 x 3 x x n = n x (n-1)! (define factorielle ; entier positif (lambda (n) ; n entier positif (if (= n 0) 1 (* n (factorielle (- n 1)))))) 55

UNE AUTRE FONCTION RÉCURSIVE : CHOIX DE LA MÉTHODE On veut écrire une fonction qui étant donné un nombre x et un entier positif n calcule x n puissance x,n Sur quoi faire l appel récursif? -1 sur n x,n-1 puissance appel récursif x n x x n-1 Comment passer du résultat de l appel récursif au résultat qu on cherche? 56

UNE AUTRE FONCTION RÉCURSIVE : ÉCRITURE Cas d arrêt : x 0 = 1 Récursivité : x n = x x x x x x = x x x (n-1) (define puissance ; nombre (lambda (x n) ; x nombre, n entier positif (if (= n 0) 1 (* x (puissance x (- n 1)))))) 57