Algorithmique 1re anne SMI 20062007 Semestre 2 Rsum
- Slides: 46
Algorithmique 1ère année SMI 2006/2007, Semestre 2 Résumé du cours 2006/2007 Module I 2, 1ère année SMI 1
Cycle de vie d’un programme 2006/2007 Module I 2, 1ère année SMI 2
Méthodologie d’algorithmique l 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 sousproblèmes, et appliquer, pour chacun, la méthodologie simple ‘fonctions et procédures) l l 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 2006/2007 Module I 2, 1ère année SMI 3
Structure d’un algorithme 2006/2007 Module I 2, 1ère année SMI 4
Les catégories d’ordres l l l 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 2006/2007 Module I 2, 1ère année SMI 5
Algorithmique Les testes 2006/2007 Module I 2, 1ère année SMI 6
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_par 3 Variable n : entier Début Ecrire " 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") Finsi Fin 2006/2007 Module I 2, 1ère année SMI 7
Tests imbriqués Variables copies : entier prix : réel Début Ecrire ("Nombre de photocopies : ") Lire (copies) Si copies < 10 Alors prix ← copies*0. 5 Sinon Si copies < 20 prix ← copies*0. 4 Sinon prix ← copies*0. 3 Finsi Ecrire (“Le prix à payer est : ”, prix) Fin 2006/2007 Module I 2, 1ère année SMI 8
Algorithmique Les boucles 2006/2007 Module I 2, 1ère année SMI 9
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 : entier Debut i ← 0 som← 0 Tant. Que (som <=100) i ← i+1 som ← som+i Fin. Tant. Que Ecrire (" La valeur cherchée est N= ", i) Fin 2006/2007 Module I 2, 1ère année SMI 10
La boucle Pour Calcule de x puissance n Variables x, puiss : réel n, i : entier Debut Ecrire (" Entrez respectivement les valeurs de x et n ") Lire (x, n) puiss ← 1 Pour i allant de 1 à n puiss← puiss*x Fin. Pour Ecrire (x, " à la puissance ", n, " est égal à ", puiss) Fin 2006/2007 Module I 2, 1ère année SMI 11
Possibilité de choix entre les boucles Pour et Tantque Calcule de la fonction factoriel Algorithme / tantque Algorithme / Pour Calcul factorielle 1 Variables i, f, n : Naturel Début i ← 1 f ← 1 tant que (i < n) i ← i+1 f ← f * i Fin de tant que écrire (f) Fin Calcul factorielle 2 Variables i, f, n : Naturel Début f ← 1 pour i variant de 2 à n f ← f * i Fin pour écrire (f) Fin 2006/2007 Module I 2, 1ère année SMI 12
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 : entier Debut som ← 0 i ← 0 Répéter i ← i+1 som ← som+i Jusqu'à ( som > 100) Ecrire (" La valeur cherchée est N= ", i) Fin 2006/2007 Module I 2, 1ère année SMI 13
Choix de la boucle l 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 l 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 Tant. Que ou répéter jusqu'à l Pour le choix entre Tant. Que et jusqu'à : • Si on doit tester la condition de contrôle avant de commencer les instructions de la boucle, on utilisera Tant. Que • 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 2006/2007 Module I 2, 1ère année SMI 14
Algorithmique Fonctions et procédures 2006/2007 Module I 2, 1ère année SMI 15
Exemple de programme / fonction 2006/2007 Module I 2, 1ère année SMI 16
Subdivision d’un problème en un ensemble de fonctions l 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 est. Premier • (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 2006/2007 Module I 2, 1ère année SMI 17
La fonction de recherche des nombres premiers Fonction est. Premier Fonction est-premier (m : entier) : booléen Pour i : = 2 à ENT(m/2) Faire Si m mod i = 0 alors // i divise m Retourne (Faux) Finde. Pour Retourne (Vrai) Fin. Fonction est-premier 2006/2007 Module I 2, 1ère année SMI 18
Entrée: Un entier positif m Entrée: Un entier positif n Sortie: Vrai si m est premier, Faux si non. Sortie: Le plus petit nb premier m > n Fonction est-premier (m) Algorithme premier-plus-grand (n) Pour i : = 2 à ENT(m/2) Faire Si m mod i = 0 alors // i divise m m : = n+1; Tant que est-premier(m) est Faux Faire m : = m+1; Retourne (Faux) Retourne (Vrai) Retourne(m) Fin est-premier Trace de premier-plus-grand pour n=8: m = 9 m = 10 Trace de est-premier pour m=9: Trace de est-premier pour m=11: Trace de est-premier pour m=10: i=2 i=3 i=5 11 mod 2 = 1 9 mod 2 = 1 10 mod 2 = 0 9 mod 3 = 0 11 mod 5 = 1 m = 11 2006/2007 Module I 2, 1ère année SMI 19
Transmission des paramètres Procédure incrementer 1 ( x : entier par valeur, Procédure par valeur, y : entier par adresse) par adresse x ← x+1 y ← y+1 Fin. Procédure Algorithme Test_incrementer 1 Algorithme Test_incrementer variables n, m : entier Début n ← 3 m ← 3 incrementer 1(n, m) écrire (" n= ", n, " et m= ", m) Fin résultat : n=3 et m=4 Remarque : l'instruction x ← x+1 n'a pas de sens avec un passage par valeur l'instruction 2006/2007 Module I 2, 1ère année SMI 20
Algorithmique La Récursivité 2006/2007 Module I 2, 1ère année SMI 21
Itération et Récursivité l Calcul de factoriel : Version itérative 2006/2007 Calcul fact, Variables N, f : entier Debut f 1 tantque (n > 1) f f * (n− 1); fintantque Ecrire(f) End; Module I 2, 1ère année SMI 22
Itération et Récursivité Version récursive Fonction fact (n : entier ) : entier Fonction Si (n=0) alors retourne ( retourne 1) Sinon retourne ( retourne n*fact(n-1)) (n-1) Finsi Fin. Fonction l Un module (fonction ou procédure) peut s'appeler luimême: on dit que c'est un module récursif l Tout module récursif doit posséder un cas limite (cas trivial) qui arrête la récursivité 2006/2007 Module I 2, 1ère année SMI 23
Algorithmique Les tableaux 2006/2007 Module I 2, 1ère année SMI 24
Tableaux l Pour le calcul du nombre d'étudiants ayant une note supérieure à 10 avec les tableaux, on peut écrire : Variables i , nbre : entier tableau notes[30] : réel ] : Début nbre ← 0 Pour i allant de 0 à 29 Si ( Si notes[i] >10) alors notes[i] nbre ←nbre+1 Fin. Si Fin. Pour écrire ("le nombre de notes supérieures à 10 est : ", nbre) Fin 2006/2007 Module I 2, 1ère année SMI 25
Tableaux : saisie et affichage l Procédures qui permettent de saisir et d'afficher les éléments d'un tableau : Procédure Saisie. Tab (n : entier par valeur, tableau T : réel par référence ) tableau Procédure variable i: entier Pour i allant de 0 à n-1 Pour écrire ("Saisie de l'élément ", i + 1) lire (T[i] ) Fin. Pour Fin Procédure Affiche. Tab (n : entier par valeur, tableau T : réel par valeur ) tableau variable i: entier Pour i allant de 0 à n-1 Pour écrire ("T[", i, "] =", T[i]) Fin. Pour Fin Procédure 2006/2007 Module I 2, 1ère année SMI 26
Tableaux : 2 problèmes classiques l Recherche d’un élément dans un tableau • • l Recherche séquentielle Recherche dichotomique Tri d'un tableau • • 2006/2007 Tris élémentaires Tri avancées Module I 2, 1ère année SMI 27
Recherche séquentielle l Recherche de la valeur x dans un tableau T de N éléments : Vers Fonction Vers normal Variables i: entier, Trouvé : booléen i← 0 , Trouvé ← Faux Tant. Que (i < N) ET (Trouvé=Faux) Si (T[i]=x) alors Trouvé ← Vrai Sinon i←i+1 Fin. Si Fin. Tant. Que 2006/2007 Fonction Recherche(x : réel, N: entier, tableau T : réel ) : booléen Variable i: entier Pour i allant de 0 à N-1 Si (T[i]=x) alors retourne (Vrai) Fin. Si Fin. Pour retourne (Faux) Fin. Fonction Module I 2, 1ère année SMI 28
Recherche dichotomique inf← 0 , sup←N-1, Trouvé ← Faux Tant. Que (inf <=sup) ET (Trouvé=Faux) milieu←(inf+sup)div 2 Si (x=T[milieu]) alors Trouvé ← Vrai Sinon. Si (x>T[milieu]) alors inf←milieu+1 Sinon sup←milieu-1 Fin. Si Fin. Tant. Que Si Trouvé alors écrire ("x appartient au tableau") Sinon écrire ("x n'appartient pas au tableau") Fin. Si 2006/2007 Module I 2, 1ère année SMI 29
Algorithmique Les méthodes de Tris 2006/2007 Module I 2, 1ère année SMI 30
Les algorithmes de Tri • Tris élémentaires • Le tri par sélection • Le tri par insertion • Le tri à bulles • Tris avancées • Tri rapide • …. . 2006/2007 Module I 2, 1ère année SMI 31
Tri par sélection 2006/2007 Module I 2, 1ère année SMI 32
Tri par sélection : algorithme l Supposons que le tableau est noté T et sa taille N Pour i allant de 0 à N-2 Pour indice ← i Pour j allant de i + 1 à N-1 Pour Si T[j] <T[indice] alors Si indice ← j Finsi Fin. Pour Réservation de la case Recherche de l’élément concerné Permutation des deux valeurs temp ← T[indice] ← T[i] ← temp Appliquer la méthode ci-dessus sur le Fin. Pour tableau T=[5, 9, 3, 4, 2]. 2006/2007 Module I 2, 1ère année SMI 33
Tri par insertion 2006/2007 Module I 2, 1ère année SMI 34
Tri par insertion : algorithme Appliquer la méthode ci-dessus sur le tableau T=[5, 9, 3, 4, 2]. 2006/2007 Module I 2, 1ère année SMI 35
Tri à bulles 2006/2007 Module I 2, 1ère année SMI 36
Tri à bulles : algorithme Appliquer la méthode ci-dessus sur le tableau T=[5, 9, 3, 4, 2]. 2006/2007 Module I 2, 1ère année SMI 37
Tri rapide l 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) l 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 seul élément 2006/2007 Module I 2, 1ère année SMI 38
Tri Rapide 2006/2007 Module I 2, 1ère année SMI 39
Procédure Tri rapide Procédure Tri. Rapide(tableau T : réel par adresse, p, r: entier par valeur) Procédure p, r variable q: entier Si p <r alors Si Partition(T, p, r, q) Tri. Rapide(T, p, q-1) Tri. Rapide(T, q+1, r) Fin. Si 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 2006/2007 Module I 2, 1ère année SMI 40
Procédure de partition Procédure Partition(tableau T : réel par adresse, p, r: entier par valeur, Procédure p, r q: entier par adresse ) Variables i, j: entier pivot: réel pivot← T[p], i←p+1, j ← r Tant. Que (i<=j) Tant. Que (i<=r et T[i] <=pivot) i ← i+1 Fin. Tant. Que et Tant. Que (j>=p et T[j] >pivot ) j ← j-1 Fin. Tant. Que et Si i <j alors Si Echanger(T[i], T[j]), i ← i+1, j ← j-1 Fin. Si Fin. Tant. Que Echanger(T[j], T[p]) q ← j Fin Procédure 2006/2007 41 Module I 2, 1ère année SMI
Tri Rapide : Exemple Partage avec pivot = 3 2 4 1 7 3 2 3 6 2 2 1 7 3 4 3 6 < 3 ³ 3 2 2 1 3 3 4 7 6 Suite du tri TRI 1 2 2 3 3 4 6 7 2006/2007 Appliquer la méthode cidessus sur le tableau T=[5, 9, 3, 4, 2]. Module I 2, 1ère année SMI 42
Exemple de problème Enoncé: Ecrire une procédure Déterminer. Sequences, 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> l l Le nombres de sous sequences est : 6 et la plus grande sous sequences est : <4, 7, 24, 28, 32> 2006/2007 Module I 2, 1ère année SMI 43
Procédure Déterminer. Séquences Procedures Déterminer. Séquences (T: Tableau [1. . N] de entier, nombre. Séquence, début, fin : Naturel) Variables debutcourant, i : naturel Début debutcourant 1 i 1 nombre. Séquence 1 Debut 1 Fin 1 Tantque i < N faire Si T[i] > T[i+1] alors nombre. Séquence + 1 si (i – debutcourant) > (fin –debut) alors debutcourant fin i fsi debutcourant i+1 fsi i i+1 ftq 44
Procédure Déterminer. Séquences : suite si (N – debutcourant) > (fin- debut) alors debut courant fin N fsi Fin de procedure 45
fin 2006/2007 Module I 2, 1ère année SMI 46
- An electronic résumé is a plain looking document
- Rsum
- Algorithmique
- Exercices et problèmes d'algorithmique helen kassel
- Helen kassel
- Logique algorithmique
- 10 semestre
- Que se ve en el primer semestre de derecho
- Semestre avanzado universidad de cundinamarca
- Rapport semestre 1
- Smi future
- Smi meaning in supply chain
- Smi conductor
- Smi intranet
- S.i.smi.ca
- Scammon curve
- What is smi in networking
- Smi protocol
- Smi 4
- Smi reservas
- Plmc maroc
- Vmi smi
- Anne coe
- Anne luik
- Anne pexsters
- Spiegeling wiskunde
- Anne luther bagby
- Anne vakkuri
- Barbara ledermann
- Anne davies triangulation
- Queen anne's war
- Anne frank
- Anne marie wolff
- Anne sofie rolfsjord
- Claire tougui
- Anne arundel county fire department
- Anne varden
- Anne girouard
- Mary anne tongue necklace
- Anne stine skogvang
- Anne bastrup
- Teoria de anne roe
- Anne-marie cortez
- Tkukoulu wilma
- Annie sullivan's brother
- Jon kinderlerer
- Anne knisely