La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Mme Ben Attia Imen & Les élèves de la classe 4 Sc.Info 1 Vous souhaite la bien venue.

Présentations similaires


Présentation au sujet: "Mme Ben Attia Imen & Les élèves de la classe 4 Sc.Info 1 Vous souhaite la bien venue."— Transcription de la présentation:

1 Mme Ben Attia Imen & Les élèves de la classe 4 Sc.Info 1 Vous souhaite la bien venue

2 Q Quand peut-on parler dun algorithme récurrent Quelle est la différence entre un algorithme récurrent et un algorithme récursif Quest ce quune matrice Rappel

3 Algorithmes récurrents Un algorithme ou un traitement est dit r rr récurrent sil utilise un procédé i ii itératif ou r rr récursif pour engendrer un résultat qui peut dépendre de p résultats précédents, nous parlons alors dun algorithme ou dun traitement récurrent dordre p. O Ordre 1: Un algorithme récurrent est dit dordre si son résultat dépend d dd du résultat précédent. O Ordre 2: Un algorithme récurrent est dit dordre si son résultat dépend des d dd deux résultats précédents. ….. Ordre p: Un algorithme récurrent est dit dordre p pp p si son résultat dépend des P PP P résultats précédents.

4 Différence entre un algorithme récursif et un algorithme récurrent Dans un Module récurrent on obtient un résultat en fonction dun ou de plusieurs résultats précédents Dépendance entre les résultats Dans un module récursif on obtient un résultat en faisant un ou de plusieurs appel au module lui-même avec changement de paramètres dappel Auto-dépendance du module

5 Soit A une matrice de N lignes et de M colonnes dentiers : N Lignes=5 M colonnes=5 Une matrice est un tableau à deux dimension de N lignes et de M colonnes de type éléments Si M=N on dit quon a une matrice carrée. Chaque ligne de la matrice L peut être assimilée à un tableau unidimensionnel de M cases. Chaque colonne de la matrice C peut être assimilée à un tableau unidimensionnel de N cases. C L

6 spécification du module itératif permettant de chercher le maximum dune ligne de matrice Résultat = maxligne Max Traitement : Initialiser la variable Max à A[L, 1] Utiliser 1 structure itérative complète Pour C De 1 A M Faire Pour chaque itération : tester Si Max < A[L, C] Alors Max A[L, C] Donné = Matrice ( A ) / L,M30

7 0) fonction maxligne(L,M:entier;A:tab):entier 1) Max A[L,1] Pour C de 2 à M faire Si A[L,C]>Max alors Max A[L,C] Finsi 2) Finpour 3) Maxlignemax 4) Fin maxligne Algorithme itératif T.D.Objets Locaux CEntierCompteur sur les colonnes MaxentierVariable temporaire pour garder le maximum 0)procedure maxligne(L,C :entier;A:tab;var max:entier) 1)Si C>1 alors maxligne(L,C-1,A,max) Finsi Si max

8 Algorithme récursif pour la recherche du minimum dune colonne de matrice Algorithme récursif pour la recherche du minimum dune colonne de matrice 0) procedure mincolonne(L,C:entier;A:tab; var min:entier) 1) Si L>1 alors mincolonne(L-1,C,A,min) Finsi 2) Si min>A[L,C] alors Min A[L,C] Finsi 3) Fin mincolonne

9 0)procedure maximum(L,C:entier;A:tab; var max:entier) 1)Si L>1 alors maximum(L-1,C,A,max) Finsi maxligne(L,C,A,max) 2) Fin maximum Algorithme récursif pour chercher le maximum Tableau de codification des objets Locaux ObjetType/NatureRôle MaxligneprocédureCherche le maximum dune ligne

10 1)Debut procedure minimum(L,C:entier;A:tab; var min:entier) 2)Si C>1 alors minimum(L,C-1,A,min) Finsi mincolonne(L,C,A,min) Fin maximum Algorithme récursif pour chercher le minimum Tableau de codification des objets Locaux ObjetType/NatureRôle MincolonneprocédureCherche le minimum dune colonne

11 Réutilisation des modules réalisés Proposer une analyse du programme qui permet de remplir une matrice A de N lignes et de M colonnes puis chercher et afficher son maximum et son minimum en déduire les algorithmes de chaque module.

12 Décomposition Modulaire Prog_Matrice Saisir (Var Valeur) Remplir (Var A ;L,C) Maximum (l,c ;A ;var max) Minimum (l,c ; A ;var min) Remplir_ligne (var A ;L,C) Maxligne (L,C ;A ;var max) Mincolonne (L,C ;A ;var min)

13 Programme principal 0) Début Prog_Matrice 1) Saisir(N) 2) Saisir(M) 3) Remplir(A,N,M) 4) maximum(N,M,A,max) 5) minimum(N,M,A,min) 6) Ecrire("le maximum est :", max, "le minimum est :", min) 7) Fin Prog_Matrice Résultat=Ecrire ("le maximum est :", max, "le minimum est :",min) Traitement : La valeur de Max est déterminée suite à lappel de la procédure maximum(N,M,A,max), La valeur de Min est déterminée suite à lappel de la procédure minimum(N,M,A,max) Appel de la procédure remplir pour saisir les éléments de A Appel de la procédure saisie une fois pour saisir N et une autre fois pour saisie M Donnée : A,N,M AlgorithmeSpécification

14 Chercher le minimum dune matrice procédureMinimum Chercher le maximum dune matrice procédureMaximum Remplir une matrice de N lignes et de M colonnes dentiers procédureRemplir Saisir un entier ProcédureSaisie Variable temporaire pour garder le maximum EntierMax Matrice de N lignes et de M colonnes dentiers TabA Compteurs de lignes et de colonnes entierL, C RôleType/NatureObjet Tableau de codification des objets globaux Tab= tableau de 15 lignes et de 15 colonnes dentiers Tableau de déclaration de nouveaux types

15 La procédure Remplir récursif La procédure Remplir récursif 0) procedure remplir(varA:tab; L,C:entier) 1) Si L>1 alors remplir(A,L-1,C) Finsi 2) remplir_ligne(A,L,C); 3) Fin remplir Résultat = A Traitement : S i L>1 (point dappui) alors faire un appel récursif à la procédure en diminuant le nombre de ligne D ésempiler les appels récursif tout en appelant la procédure remplir_ligne(A,L,C) AlgorithmeSpécification Tableau de codification des objets Locaux ObjetType/NatureRôle Remplir_ligneprocédurePermet de remplir une ligne de la matrice

16 0) procedure remplir_ligne(var A:tab; L,C:Entier) 1) Si C>1 alors Remplir_ligne(A,L,C-1) Finsi 2) Ecrire("A[",L, ",",C, "]="),Lire(A[l,c]); 3) Fin remplir_ligne Résultat = remplir la ligne L Traitement : Si C>1 (point dappui) alors faire un appel récursif à la procédure en diminuant le nombre de colonne Désempiler les appels récursif tout en faisant la saisie dune case Algorithme de la procédure remplir_ligneSpécification de la procédure remplir_ligne

17 0) procedure saisie(var valeur :entier) 1) Ecrire("donner un entier : ") 2) Lire(valeur) 3) Si non(valeur dans [1..15]) alors saisie (valeur) Finsi 1)Fin Saisie Résultat = Valeur Traitement : S aisir une valeur S i cette valeur ne répond pas à la condition faire un appel récursif de la même procédure Donnée : valeur Algorithme de la procédure Saisie Spécification de la procédure Saisie

18 Problème On désire rechercher dans une matrice donnée A de N lignes et de M colonnes les éléments qui sont à la fois un maximum sur leur ligne et un minimum sur leur colonne. Ces éléments sont appelés des points cols. Afficher les positions et les valeurs de tous les points cols trouvés. Proposer une analyse à ce problème en déduire les algorithmes correspondants. Exemples: Les éléments soulignés sont des points cols: Méthode: Établir deux matrices d'aide MMAX et MMIN de même dimensions que A, telles que: 1 si A[L,C] est un maximum sur la ligne i MMAX[i,j] = 0 sinon 1 si A[L,C] est un minimum sur la colonne j MMIN[i,j] = 0 sinon Les points cols sont ceux qui vérifient légalité suivante : MMAX[L,C] = MMIN[L,C]=1

19 Simulation Simulation Simulation Analyse Analyse Analyse

20 Max= Mmax Mmin Max=21Max=32Max=23 Max=8 Min=7Min=8Min=2Min=1Min=5 Matrice qui repère les maximums des lignes Matrice qui repère les minimums des colonnes

21 DECOMPOSITION MODULAIRE Points_cols Remplir Remplir (VAR A ;L,C) Saisie Saisie (VAR valeur) Afficher Afficher (A, N,M) P PP Point point (N,M;A,mmin, mmax) P Remplir_MMax Remplir_MMax (N,M;A;VAR mmax) Remplir_MMin Remplir_MMin (N,M;A;VAR mmin) Maxligne Max (L,C;A;VAR max) Mincolonne Min (L,C;A;VAR min) P P

22 Programme principal Programme principal 0) Debut points_cols 1) saisie(N) 2) saisie(M) 3) remplir(N,M,A) 4) Ecrire("voila la matrice initiale") 5) affiche(N,M,A) 6) Ecrire("voila la matrice qui indique les positions des maximum de chaque ligne") 7) remplir_mmax(N,M,Mmax) 8) Ecrire ("voila la matrice qui indique les positions des minimum de chaque colonne") 9) remplir_mmin(N,M,Mmin) 10)Ecrire ("voila les positions des points cols") 11)point(n,m,A,mmin,mmax) 12)Fin points_cols Résultat : Affichage des points cols Traitement : appel de la procédure point qui cherche et affiche les points cols en parcourant les 2 matrices Mmax et Mmin appel des procédures remplir_mmax et remplir_mmin pour remplir et afficher Mmax et Mmin qui indiquent respectivement les positions des maximum de chaque ligne et les positions des minimum de chaque colonne. Afficher la matrice A grâce à la procédure affiche La matrice A est remplie grâce al a procédure remplir N et M sont saisies par la procédure saisie AlgorithmeSpécification

23 Matrice de N lignes et de M colonnes contenant 1 à la place des minimum dans les colonnes et 0 dans le reste TabMmin Matrice de N lignes et de M colonnes contenant 1 à la place des maximum dans les ligne et 0 dans le reste TabMmax Matrice de N lignes et de M colonnes TabA Nombre de colonnes de la matrice EntierM Nombre de lignes de la matrice N RôleType/NatureObjet Tableau de déclaration des objets globaux Tab= tableau de 15 lignes et de 15 colonnes dentiers Tableau de déclaration de nouveaux types

24 Procédure point 0) Procedure point(N,M:entier;A,Mmin,Mmax:tab) 1) Pour L de 1 à N faire pour C de 1 à M faire si (Mmin[L,C]=1)et(Mmax[L,C]=1) alors Ecrire("A[",L, ",",C, "]= ",A[L,C], " est un point cols") Finsi Finpour Finpour 2) Fin point Résultat= Affichage des points cols Traitement= On parcours les 2 matrices tout en comparant les éléments des matrices pour afficher sauf les éléments répondant à la condition (Mmin[L,C]=1)et(Mmax[L,C]=1) On utilise 2 structures itératives complètes Pour L de 1 à n faire pour C de 1 à m faire AlgorithmeSpécification

25 Tableau de déclaration des objets Locaux ObjetType/NatureRôle LEntierCompteur sur les lignes de la matrice CEntierCompteur sur les colonnes de la matrice

26 procedure remplir_mmax 0) procedure remplir_mmax(N,M:entier;var MMax:tab) 1) Pour i de 1 à N faire Max a[i,1] maxligne(i,2,a,max) pour j de1 à M faire Si A[i,j]=max alors MMax[i,j] 1 sinon MMax[i,j] 0 Finsi Finpour Finpour 2) affiche(N,M,MMax) 3) Fin remplir_mmax Résultat= Remplir et afficher la matrice MMax Traitement= Appel de la procédure affiche pour afficher MMax Parcourir toutes les lignes Pour i de 1 à N faire Pour chaque ligne chercher son maximum oMoMax A[i,1] maxligne(i,2,a,max) oPoParcourir les éléments de la matrice A pour cette ligne pour j de1 à M faire o Pour chaque élément tester Si A[i,j]=max alors MMax[i,j] 1 sinon MMax[i,j] 0 AlgorithmeSpécification

27 Cherche le maximum dune ligne procédureMaxligne Variable de sauvegarde du maximum EntierMax Compteur sur les colonnes de la matrice Entierj Compteur sur les lignes de la matrice i RôleType/NatureObjet Tableau de déclaration des objets Locaux

28


Télécharger ppt "Mme Ben Attia Imen & Les élèves de la classe 4 Sc.Info 1 Vous souhaite la bien venue."

Présentations similaires


Annonces Google