Cours de Langage C Récursivité. Objectifs de la séance 11 Connaître la récursivité. Mesurer un temps d’exécution. 2.

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.c
Les fonctions A quoi ça sert ?
Algorithmes et structures de données Cours 9 Patrick Reuter
5. Les structures répétitives
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Calcul et programmation au lycée avec Scilab
Récursivité.
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Programme de baccalauréat en informatique Algorithmique et programmation IFT-1001 Thierry EUDE Hatem Mahbouli Laboratoire #12 Département dinformatique.
Récursivité Définition récursive d’un problème. Critère d’arrêt et convergence. Performance des algorithmes récursifs. Résolution d’un problème à l’aide.
Introduction à l’algorithmique
1 La récursion. Nous avons vu qu'un programme est constitué d'un ensemble de fonctions. Il est possible pour une fonction donnée d'appeler une autre fonction.
Analyse des algorithmes: une introduction. La question abord é e dans ce chapitre est la suivante: Comment choisir parmi les diff é rentes approches pour.
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
PHP 2° PARTIE : FONCTIONS ET FORMULAIRE
Les tests.
Les types composés Les enregistrements.
Les algorithmes recursifs
Introduction à la récursivité
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
La récursivité Mireille Goud HEG Vd AlgSD - Résurisivité.
CPI/BTS 2 Algorithmique & Programmation La récursivité Algo – Prog CPI/BTS2 – M. Dravet – 14/09/2003 Dernière modification: 14/09/2003.
Scripts et fonctions Instructions de contrôle
Variables : notion Une variable permet de stocker/manipuler une donnée dans un programme avec un nom explicite Caractériser par son type (entier, flottant,...)
Page 1 Algorithmes en Seconde A la rencontre de quelques structures Voir les documents sur le site académique
Design Patterns.  SIDAOUI Abdelfahem  
Introduction à la programmation
Le passage à l’abstrait dans l’apprentissage des mathématiques au cycle intermédiaire Alain Girouard Enseignant 7 e et 8 e année
1 ALGORITHMIQUE AVANCEE IUT Vélizy – RT2 FA Laurent Marsan.
Introduction à la Programmation Orientée Objet H.GATI.
IFT359 – Programmation fonctionnelle Thème #6 Appel terminaux 1.
Informatique 1A Langage C 6 ème séance 1. Objectifs de la séance 6  Allocation dynamique de mémoire  Application à la création de tableaux 2.
Informatique 2A Langage C 3 ème séance.
Cours de Langage C Les structures
 a été réalisé et optimisé pour Microsoft Office PowerPoint L’utilisation d’une version inférieure supprime les effets visuels.  correspond aux.
M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner.
Seconde 8 Module 12 M. FELT 08/12/ Module 12: Algorithmique #3  Objectif:  Instruction conditionnelle 2.
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Un Algorithme , c'est Quoi ?
LES TABLEAUX EN JAVA.
Algorithmique AU El harchaoui noureddine
DEFINITION DU CONCEPT DE MODÈLE DE PERFORMANCE
Architecture de machines Le microprocesseur
Programmation Impérative II
Coding party Écrire un programme qui élève un nombre au carré Écrire un programme qui teste si un nombre est pair Écrire un programme qui calcule la factorielle.
Coding party Écrire un programme qui élève un nombre au carré Écrire un programme qui teste si un nombre est pair Écrire un programme qui calcule la factorielle.
Évaluations par compétences
Automatismes 3.
Le programme informatique L’algorithme Le codage
Chapter 11: Récursivité Java Software Solutions Second Edition
Connaître les tables d’addition de 0 à 5
Multiplier ou diviser un décimal par 10, 100
Mathématiques – Calcul mental CM2
Ajouter un entier à un décimal
Mathématiques – Calcul mental CM2
Combien de fois un nombre est contenu dans un autre
Mathématiques – Calcul mental CM1
Mathématiques – Calcul mental CM2
Connaître les tables de multiplication de 0 à 7
Mathématiques – Calcul mental CM1
Connaître les tables de multiplication de 0 à 8
Mathématiques – Calcul mental CM1
Mathématiques – Calcul mental
Mathématiques – Calcul mental CM2
Connaître les tables de multiplication de 0 à 3
Multiplier ou diviser un décimal par 10, 100, 1 000
Combien de fois un nombre est contenu dans un autre
Mathématiques – Calcul mental CM2
Multiplier ou diviser par 10, 100, 1 000
Transcription de la présentation:

Cours de Langage C Récursivité

Objectifs de la séance 11 Connaître la récursivité. Mesurer un temps d’exécution. 2

Récursivité et récurrence Deux notions très proches : -mathématiques : récurrence -informatique : récursivité Une fonction récursive est une fonction qui s’appelle elle-même. Intérêts : -permet de résoudre des problèmes simplement -la récursivité est utilisée pour les structures de données autoréférencées (listes chaînées …) 3

Exemple : la fonction factorielle 4 n! = n x (n-1) x….x 2 x 1 = n x (n-1)! Algorithme de la fonction Fact : Entrée : un entier positif n Sortie : factorielle de n si n = 0 retourner 1=> condition de sortie de la boucle sinon retourner n x Fact(n-1) La condition de sortie de la boucle (où l’on ne fait pas d’appel récursif) est obligatoire pour éviter d’avoir une boucle infinie

Exemple : la fonction factorielle 5 int fact(int n) { if (n == 0) return 1; else return n*fact(n-1); }

Exemple : la fonction factorielle 6 int fact(int n) { if (n == 0) return 1; else return n*fact(n-1); } Comment se déroule l’exécution de la fonction ? Appel à fact(4). 4*fact(3) = ?. Appel à fact(3).. 3*fact(2) = ?.. Appel à fact(2)... 2*fact(1) = ?... Appel à fact(1).... 1*fact(0) = ?.... Appel à fact(0).... Retour de la valeur *1... Retour de la valeur *1.. Retour de la valeur 2.. 3*2. Retour de la valeur 6. 4*6 Retour de la valeur 24

Quelques mots sur la librairie time.h clock_t est un type entier permettant de représenter un temps suivant un codage dépendant de l’implémentation (format ld sur vos machines). CLOCKS_PER_SEC est une constante symbolique qui sert à définir l’unité de temps et représente le nombre d’unités contenues dans une seconde. La fonction clock_t clock(void) permet de connaître le nombre de fractions de temps machine écoulées depuis le début du programme. La valeur retournée peut être convertie en secondes en la divisant par CLOCKS_PER_SEC. Elle peut servir à évaluer l'espace de temps entre deux évènements. 7

Exemple d’utilisation de fonctions temporelles 8 int main() {clock_t t1, t2; int i; int a = 0; /* Récupération du temps initial en "clock ticks" */ t1 = clock(); /* réalisation du calcul */ for ( i = 0; i < ; i++) a++; /* Récupération du temps final en "clock ticks" */ t2 = clock(); /* Affichage des différents temps */ printf("Nb ticks/seconde = %ld\n", CLOCKS_PER_SEC); printf("Nb ticks depart : %ld\n",t1); printf("Nb ticks final :%ld\n",t2); printf("Temps consomme (en s):%lf \n", (double)(t2-t1)/CLOCKS_PER_SEC); return 0; }