1 / 46

Algorithmique

Algorithmique. 1ère année SMI 2006/2007, Semestre 2 Résumé du cours. Cycle de vie d’un programme. Méthodologie d’algorithmique. Méthodologie simple : 1. Définir clairement le problème 2. Chercher une méthode de résolution (formules…)

michon
Télécharger la présentation

Algorithmique

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Algorithmique 1ère année SMI 2006/2007, Semestre 2 Résumé du cours Module I2, 1ère année SMI

  2. Cycle de vie d’un programme Module I2, 1ère année SMI

  3. Méthodologie d’algorithmique • Méthodologie simple : 1. Définir clairement le problème 2. Chercher une méthode de résolution (formules…) 3. Définir les entrées nécessaires et les résultats obtenus 4. Écrire l'algorithme (langage algorithmique) • Analyse méthodique descendante Si le problème est trop complexe, le décomposer en sous-problèmes, et appliquer, pour chacun, la méthodologie simple ‘fonctions et procédures) • Décomposition du problème = description de + en + détaillée du problème = ensemble d'opérations élémentaires traductibles en langage de programmation Module I2, 1ère année SMI

  4. Structure d’un algorithme Module I2, 1ère année SMI

  5. Les catégories d’ordres • Les variables et leurs affectation • la lecture / écriture • les tests • Les structures conditionnel et les boucles • Les tableaux et les matrices • La recherche d’un élément ds un tableau • Le tris d’un tableaux Module I2, 1ère année SMI

  6. Algorithmique Les testes Module I2, 1ère année SMI

  7. Si…Alors…Sinon Ecrire un algorithme qui demande un nombre entier à l'utilisateur, puis qui teste et affiche s'il est divisible par 3 Algorithme Divsible_par3 Variable n : entier DébutEcrire" Entrez un entier : " Lire (n) Si (n%3=0) alors    Ecrire (n," est divisible par 3") Sinon    Ecrire (n," n'est pas divisible par 3") FinsiFin Module I2, 1ère année SMI

  8. Tests imbriqués Variables copies : entier prix : réelDébutEcrire ("Nombre de photocopies : ") Lire (copies)Si copies < 10 Alors      prix ← copies*0.5 Sinon Si copies < 20     prix ← copies*0.4Sinon     prix ← copies*0.3Finsi FinsiEcrire (“Le prix à payer est : ”, prix) Fin Module I2, 1ère année SMI

  9. Algorithmique Les boucles Module I2, 1ère année SMI

  10. La boucle Tant que Un algorithme qui détermine le premier nombre entier N tel que la somme de 1 à N dépasse strictement 100 Variables som, i : entierDebut i ← 0 som← 0 TantQue (som <=100)      i ← i+1 som ← som+i FinTantQueEcrire (" La valeur cherchée est N= ", i) Fin Module I2, 1ère année SMI

  11. La boucle Pour Calcule de x puissance n Variables x, puiss : réel n, i : entier DebutEcrire (" Entrez respectivement les valeurs de x et n ") Lire (x, n) puiss ← 1 Pour i allant de 1 à n puiss← puiss*x FinPour Ecrire (x, " à la puissance ", n, " est égal à ", puiss) Fin Module I2, 1ère année SMI

  12. Possibilité de choix entre les boucles Pour et Tantque Calcule de la fonction factoriel Module I2, 1ère année SMI

  13. Boucle Répéter jusqu’à Un algorithme qui détermine le premier nombre entier N tel que la somme de 1 à N dépasse strictement 100 (version avec répéter jusqu'à) Variables som, i : entierDebutsom ← 0 i ← 0Répéter      i ← i+1 som ← som+i Jusqu'à ( som > 100) Ecrire (" La valeur cherchée est N= ", i) Fin Module I2, 1ère année SMI

  14. Choix de la boucle • Si on peut déterminer le nombre d'itérations avant l'exécution de la boucle, il est plus naturel d'utiliser la boucle Pour • S'il n'est pas possible de connaître le nombre d'itérations avant l'exécution de la boucle, on fera appel à l'une des boucles TantQue ou répéter jusqu'à • Pour le choix entre TantQue et jusqu'à : • Si on doit tester la condition de contrôle avant de commencer les instructions de la boucle, on utilisera TantQue • Si la valeur de la condition de contrôle dépend d'une première exécution des instructions de la boucle, on utilisera répéter jusqu'à ou faire tanque Module I2, 1ère année SMI

  15. Algorithmique Fonctions et procédures Module I2, 1ère année SMI

  16. Exemple de programme / fonction Module I2, 1ère année SMI

  17. Subdivision d’un problème en un ensemble de fonctions • Problème: Trouver le plus petit nombre premier strictement supérieur à un entier positif donné n • Utiliser l’algorithme qu’on a déjà fait estPremier (le plus petit nombre premier p supérieur à un entier n) en tant que fonction. • Fait appel a cette fonction a l’intérieur de l’algorithme premier-plus-grand Module I2, 1ère année SMI

  18. La fonction de recherche des nombres premiers Module I2, 1ère année SMI

  19. Entrée: Un entier positif m Sortie: Vrai si m est premier, Faux si non. Fonctionest-premier (m) Pouri := 2àENT(m/2)Faire Si m mod i = 0alors // i divise m Retourne(Faux) Retourne(Vrai) Finest-premier Entrée: Un entier positif n Sortie: Le plus petit nb premier m > n Algorithmepremier-plus-grand (n) m := n+1; Tant que est-premier(m) est Faux Faire m := m+1; Retourne(m) Finest-premier Trace de premier-plus-grand pour n=8: Trace de est-premierpour m=9: Trace de est-premierpour m=11: Trace de est-premierpour m=10: i=2 11 mod 2 = 1 10 mod 2 = 0 9 mod 2 = 1 m = 9 i=3 9 mod 3 = 0 i=5 11 mod 5 = 1 m = 10 m = 11

  20. Transmission des paramètres Procédure incrementer1 (x : entier par valeur, y : entier par adresse) x ← x+1 y ← y+1 FinProcédure Algorithme Test_incrementer1 variables n, m : entier Début n ← 3 m ← 3 incrementer1(n, m) résultat : écrire (" n= ", n, " et m= ", m) n=3 et m=4 Fin Remarque : l'instruction x ← x+1 n'a pas de sens avec un passage par valeur Module I2, 1ère année SMI

  21. Algorithmique La Récursivité Module I2, 1ère année SMI

  22. Itération et Récursivité • Calcul de factoriel : Calcul fact, Variables N,f : entier Debut f 1 tantque (n > 1) f  f * (n−1); fintantque Ecrire(f) End; Version itérative Module I2, 1ère année SMI

  23. Itération et Récursivité • Un module (fonction ou procédure) peut s'appeler lui-même: on dit que c'est un module récursif • Tout module récursif doit posséder un cas limite (cas trivial) qui arrête la récursivité Fonction fact (n : entier ) : entier Si (n=0) alors retourne (1) Sinon retourne (n*fact(n-1)) Finsi FinFonction Version récursive Module I2, 1ère année SMI

  24. Algorithmique Les tableaux Module I2, 1ère année SMI

  25. Tableaux • Pour le calcul du nombre d'étudiants ayant une note supérieure à 10 avec les tableaux, on peut écrire : Variables i ,nbre : entier tableaunotes[30] : réel Début nbre ← 0 Pouri allant de 0 à 29 Si (notes[i] >10) alors nbre ←nbre+1 FinSi FinPour écrire ("le nombre de notes supérieures à 10 est : ", nbre) Fin Module I2, 1ère année SMI

  26. Tableaux : saisie et affichage • Procédures qui permettent de saisir et d'afficher les éléments d'un tableau : Procédure SaisieTab (n : entier par valeur, tableau T : réel par référence ) variable i: entier Pour i allant de 0 à n-1     écrire ("Saisie de l'élément ", i + 1)      lire (T[i] ) FinPour Fin Procédure Procédure AfficheTab (n : entier par valeur, tableau T : réel par valeur ) variable i: entier Pour i allant de 0 à n-1     écrire ("T[",i, "] =", T[i]) FinPour Fin Procédure Module I2, 1ère année SMI

  27. Tableaux : 2 problèmes classiques • Recherche d’un élément dans un tableau • Recherche séquentielle • Recherche dichotomique • Tri d'un tableau • Tris élémentaires • Tri avancées Module I2, 1ère année SMI

  28. Recherche séquentielle Recherche de la valeur x dans un tableau T de N éléments : Variables i: entier, Trouvé : booléen i←0 , Trouvé ← FauxTantQue (i < N) ET (Trouvé=Faux)Si (T[i]=x) alorsTrouvé ← VraiSinon i←i+1     FinSiFinTantQue Vers Fonction Vers normal Fonction Recherche(x : réel, N: entier, tableau T : réel ) : booléen Variable i: entier Pour i allant de 0 à N-1Si (T[i]=x) alors          retourne (Vrai) FinSi FinPour retourne (Faux) FinFonction Module I2, 1ère année SMI

  29. Recherche dichotomique inf←0 , sup←N-1, Trouvé ← Faux TantQue (inf <=sup) ET (Trouvé=Faux) milieu←(inf+sup)div2 Si (x=T[milieu]) alors Trouvé ← Vrai SinonSi (x>T[milieu]) alors          inf←milieu+1 Sinon sup←milieu-1     FinSiFinSi FinTantQue Si Trouvé alors écrire ("x appartient au tableau") Sinon écrire ("x n'appartient pas au tableau") FinSi Module I2, 1ère année SMI

  30. Algorithmique Les méthodes de Tris Module I2, 1ère année SMI

  31. Les algorithmes de Tri • Tris élémentaires • Le tri par sélection • Le tri par insertion • Le tri à bulles • Tris avancées • Tri rapide • ….. Module I2, 1ère année SMI

  32. Tri par sélection Module I2, 1ère année SMI

  33. Tri par sélection : algorithme • Supposons que le tableau est noté T et sa taille N Pour i allant de 0 à N-2 indice ← i       Pour j allant de i + 1 à N-1Si T[j] <T[indice] alors              indice ← jFinsiFinPour temp ← T[indice]  T[indice] ← T[i]  T[i] ← temp FinPour Réservation de la case Recherche de l’élément concerné Permutation des deux valeurs Appliquer la méthode ci-dessus sur le tableau T=[5,9,3,4,2]. Module I2, 1ère année SMI

  34. Tri par insertion Module I2, 1ère année SMI

  35. Tri par insertion : algorithme Appliquer la méthode ci-dessus sur le tableau T=[5,9,3,4,2]. Module I2, 1ère année SMI

  36. Tri à bulles Module I2, 1ère année SMI

  37. Tri à bulles : algorithme Appliquer la méthode ci-dessus sur le tableau T=[5,9,3,4,2]. Module I2, 1ère année SMI

  38. Tri rapide • Le tri rapide est un tri récursif basé sur l'approche "diviser pour régner" (consiste à décomposer un problème d'une taille donnée à des sous problèmes similaires mais de taille inférieure faciles à résoudre) • Description du tri rapide : • 1) on considère un élément du tableau qu'on appelle pivot • 2) on partitionne le tableau en 2 sous tableaux : les éléments inférieurs ou égaux à pivot et les éléments supérieurs à pivot. on peut placer ainsi la valeur du pivot à sa place définitive entre les deux sous tableaux • 3) on répète récursivement ce partitionnement sur chacun des sous tableaux crées jusqu'à ce qu'ils soient réduits à un à un seul élément Module I2, 1ère année SMI

  39. Tri Rapide Module I2, 1ère année SMI

  40. Procédure Tri rapide Procédure TriRapide(tableau T : réel par adresse, p,r: entier par valeur) variable q: entier Si p <r alors     Partition(T,p,r,q) TriRapide(T,p,q-1) TriRapide(T,q+1,r) FinSi Fin Procédure A chaque étape de récursivité on partitionne un tableau T[p..r] en deux sous tableaux T[p..q-1] et T[q+1..r] tel que chaque élément de T[p..q-1] soit inférieur ou égal à chaque élément de A[q+1..r] . L'indice q est calculé pendant la procédure de partitionnement Module I2, 1ère année SMI

  41. Procédure de partition Procédure Partition(tableau T : réel par adresse, p,r: entier par valeur, q: entier par adresse ) Variables i, j: entier pivot: réel pivot← T[p], i←p+1, j ← r TantQue (i<=j) TantQue (i<=r et T[i] <=pivot) i ← i+1 FinTantQue TantQue (j>=p et T[j] >pivot ) j ← j-1 FinTantQue Si i <j alors Echanger(T[i], T[j]), i ← i+1, j ← j-1 FinSi FinTantQue Echanger(T[j], T[p]) q ← j Fin Procédure Module I2, 1ère année SMI

  42. Partage avec pivot = 3 2 2 1 2 2 4 2 2 1 1 2 1 3 7 7 3 3 3 3 3 2 4 4 4 6 3 7 3 6 7 6 6 ³ 3 < 3 Suite du tri TRI TRI Tri Rapide : Exemple Appliquer la méthode ci-dessus sur le tableau T=[5,9,3,4,2]. Module I2, 1ère année SMI

  43. Exemple de problème Enoncé:Ecrire une procédure DéterminerSequences, qui à partir d’un tableau d’entiers T, fournit le nombre de sous-sequences strictement croissantes de ce tableau, ainsi que les indices de debut et de fin de la plus grande sous séquence. Exemple : Soit T un tableau de 15 éléments : 1, 2, 5, 3, 12, 25, 13, 8, 4, 7, 24, 28, 32, 11, 14 • Les séquences strictement croissantes sont : <1, 2, 5>; <3, 12, 25>; <13>; <4, 7, 24, 28, 32>; <11, 14> • Le nombres de sous sequences est : 6 et la plus grande sous sequences est : <4, 7, 24, 28, 32> Module I2, 1ère année SMI

  44. fin Module I2, 1ère année SMI

More Related