ALGORITHMIQUE
Plan du cours
-Généralités -définition -importance -analyse d’un problème -représentation arborescente
-Algorithmes simples -la séquence -l’alternative -la répétition (boucle itérative) -la récursivité
Plan du cours (suite)
-Algorithmes complexes : les tris -tri par sélection -tri par insertion -tri bulle -évaluation de la complexité d’un tri -tri rapide (quicksort) -tri par fusion
-Structures de données linéaires -les tableaux -les listes chaînées
Plan du cours (suite)
-Structures de données avec embranchement - les arbres
-Méthodes de recherche -séquentielle -dichotomique -par arbre binaire -par table de symboles -par adressage dispersé (hachage)
Généralités
Algorithme = suite d’opérations nécessaires et suffisantes à l’accomplissement d’une tâche
Exemples : -résoudre l’équation du second degré -assembler un produit fini -organiser une expédition
Etapespour résoudre un problème sur ordinateur
1. Analyse du problème (langage courant)
2. Conception de l’algorithme (pseudo-langage ou
organigramme)
3. Ecriture du programme (langage informatique - C, Pascal etc)
Schéma des étapes
Problème à résoudre
Algorithme
Programme source
saisie (clavier)
Analyse du problème à résoudre
Analyse descendante : diviser le problème en éléments simples
Analyse ascendante : composer le problème à partir d’éléments simples
Etapes de l’analyse descendante
-Diviser le problème en sous-problèmes de moindre difficulté
-Continuer la division jusqu’aux opérations élémentaires
-Marquer à chaque division la filiation
Schémad’analysedescendante
1
2
3
1.2.1
1.2.2
1.1
1.2
2.1
2.2
2.1.1
2.1.2
Arbred’analysedescendante
racine (problème posé)
12
3
1.1 1.2
1.2.1 1.2.2
2.1 2.2
2.1.1 2.1.2
Algorithmes simples :
-La séquence
-L’alternative (la sélection)
-La répétition - l’itération - la récursivité
La séquenceSuites d’étapes parcourues successivement
action 1
action 2
action n
organigramme énoncés
énoncé 1
énoncé 2....énonce n
Exemple d’algo séquentiel
Afficher le carré d’un nombre
lire V
P V*V
écrire P
Énoncés:
Var V, P : ENTIERLire VP V*VÉcrire P
= affectation
Etapes de la séquence
1. Étapes traitées une par une.
2. Chaque étape une seule fois (pas de répétitions ou d’omissions).
3. L’ordre d’exécution = l’ordre d’écriture.
4. La dernière étape finit l’algorithme.
Caractéristiques de la séquence
Structure algorithmique primitive : -rigide -déroulement fixe -ne permet pas des choix
La sélection ou l’alternative
Algorithme qui permet une ou plusieurs alternatives
SI « test » vrai
ALORS action 1
SINON action 2
Permet un choix entre les deux actions.
La sélection imbriquée
Si « test 1 »
ALORS « action 1»
SINON SI « test 2 »
ALORS « action 2 »
SINON « action 3 »
Exemple : choix du plus grand nombre
X > Y ?
X > Z ? Y > Z ?
Choisir X Choisir Z Choisir Y Choisir Z
test
testtesttest
si non comparer Y et Zsi oui comparer X et Z
Arbre de raisonnement
Types d’alternatives
à une branche à deux branches à plusieurs branches
test
test 1
test
énoncé
vrai
faux énoncé 1 énoncé 2
action
test 2 test 3
Les boucles itératives
Algorithme répétitif à boucle du type
1. TANT QUE (while)
2.JUSQU’À CE QUE (until)
3.POUR (for)
1&2 : répétitions indéfinies (nombre inconnu de rép.)3 : répétitions définies (nombre connu de répétitions)
Représentations graphiques
test
testénoncé
énoncé
faux
vrai
TANT QUE le test est vrai répéter l’énoncé
(le test AVANT l’énoncé)
répéter l’énoncé
JUSQU’À ce que la condition soit vraie
(le test APRES l’énoncé)
vrai
faux
La boucle « pour » (for)
Répétition gérée par un compteurForme générale: REPETER N fois (N donné) un corps de boucle
Exemple: calcul de la factorielle
var N, F, I, : ENTIERlire N [N >= 0]F 1Si N > 0 alors pour I variant de 1 à N répéter F F*Iécrire F
Algorithmes imbriqués(alternative + répétition)
EX :Nombre de notes supérieures à dix et supérieures à 18 sur un total connu
1. Ecris: « Quel est le nombre total de notes ? » Lis Nombre En SUP10 RANGE 0 //Initialisation EN SUP18 RANGE 0 //des compteurs
2. /*Traitement */ TANT QUE NOMBRE > 0 REPETE (2.1) ECRIS « Tapez une note » LIS NOTE SI NOTE > 10
Suite:
…ALORS (2.1.1) EN SUP10 RANGE (SUP10 + 1) SI NOTE > 18 ALORS (2.1.1.1) EN SUP18 RANGE (SUP18 + 1) SINON RIEN SINON RIEN EN NOMBRE RANGE NOMBRE – 1
3. /* Edition des résultats */ ECRIS « Le nombre de notes supérieures à 10 est », SUP10 ECRIS « Le nombre de notes supérieures à 18 est », SUP18
La récursivité
•Concept fondamental:
• -en mathématique: relation de récurrence
• -en informatique : procédures récursives
•Algorithme récursif:
• -qui s’appelle lui-même
• -appels de plus en plus « simples »
• -le dernier appel a une solution directe
• (=condition d’arrêt)
Exemple: la factorielle
Définition récurrente: N! = N(N – 1)! Pour N>=1 avec 0! = 1
Algorithme récursif:
SI N = 0 ALORS réponse = 1 SINON réponse = N*fact(N – 1)
Exemple: 3!
3 * Fact (2) 3 * 2 = 6
empiler 2 * Fact (1) 2 * 1 = 2 dépiler 1 * Fact (0) 1 * 1 = 2
= 1 retour dans la Pile
Fonctionnement de la pile: LIFO (Last In First Out)
Types de stratégies récursives
-ascendante -descendante -par divisions successives
Exemple: Somme des carrés des nombres de m à nSomme (m, n) = m² + (m+1)² +….+ n²Somme (5, 10) = 5² + 6² + 7² + 8² + 9² + 10²
Algo récursif ascendent
SI l’intervalle m:n comprend plus d’un nombre ALORS ajouter m² à la somme des carrés dans l’intervalle (m+1): nSINON la solution est m²
Somme (5, 10) = 25 + somme (6, 10) 36 + somme (7, 10) empile 49 + somme (8, 10) 64 + somme (9, 10) dépile: 81 + somme (10, 10)100+81+64+49+36+25=355 100
Algo récursif descendant
SI l’intervalle m:n comprend plus d’un nombre ALORS ajouter n² à la somme des carrés dans l’intervalle m: (n-1)SINON la solution est n²
Somme (5, 10) = 100 + somme (5, 9) 81 + somme (5, 8) empile 64 + somme (5, 7) 49 + somme (5, 6) dépile: 36 + somme (5, 5) 25+36+49+64+81+100=355 25
Algorithme récursif par divisions
SI l’intervalle m:n comprend plus d’un nombre ALORS relancer la somme sur les intervalles: m:demi et (demi+1):n avec demi = (m+n)/2SINON la solution est m²
Arbre de l’algo par divisions355
somme (5, 10) 110 245
somme(5, 7) somme(8,10)
61 49 145 110
somme(5,6) somme(7,7) somme(8,9) somme(10,10)
25 36 64 81
somme(5,5) somme(6,6) somme(8,8) somme(9,9)
25 36 49 64 81 100
Inversion de chaîne
Exemple: STAR RATS
L’idée de base:-enlever la première lettre : TAR-inverser le reste du mot : RAT-ajouter la lettre enlevée : RATS
L’algorithme récursif : SI chaîne formée d’une seule lettre ALORS l’écrire SINON ôter première lettre inverser le reste ajouter la lettre ôtée
Etapes de l’inversion
SI « star » contient une lettre ALORS l’écrire SINON ôter « s » on empile « s » inverser « tar »
SI « TAR » contient une lettre ALORS…. SINON ôter « t » on empile « t » inverser « ar » Dépile (LIFO):SI « ar » contient une lettre ALORS… SINON ôter « a » on empile « a » RATS inverser « r »
SI « r » contient une lettre ALORS l’écrire on empile « r »
Les chaînes de caractères
Chaîne = suite de lettres, chiffres ou autres symbolesEx: L’année 2001 espace blanc = caractère
Chaînes constantes: ne peuvent être modifiées (ex: "entrez un nombre" )Chaînes variables : accepte divers contenus (identificateur précédé de #)
Ex: En #SOMME range "5 + 8"
identific chaîne non calculable
Déclaration : Chaîne Somme(3)
Opérations sur les chaînes
-La concatenation (symbole | ) en #CH range #CH1 | #CH2 (CH contient CH1 et CH2 mises bout à bout)
-Traitement des sous-chaînes en #CH1 range #CH2 (5,3) (CH1 contient la sous-chaîne de longueur 3 qui débute au caractère 5 de CH2)
-Comparaison de chaînes (par ordre alphabétique): "beau" < "car" "beau" > "bas"
Les tableauxstructures de données linéaires
1. Les tableaux à une dimension (vecteurs)
Suite d’éléments de même nature ayant un identificateur commun (nom) vecteur Tab (N) tableau à N éléments (Tab = identificateur)Tab = (Tab(1), Tab(2),….,Tab(N) 1, 2, …,N = indices
Exemple: vecteur mois (12)__________________________________________________________|31|_28_|_31_|_30_|_31_|_30_|_31_|_31_|_30_|_31_|_30_|_31_|_______ 1 2 3 4 ……………………………………….. 12 (indices)
mois = (31, 28, 31,……………………31)mois (2) = 28 mois (12) = 31
Comptage des éléments nuls d’un tableau
Analyse1.Lecture des N éléments du tableau2.Commencer par le 1er élément du tableau TANT QUE tous les éléments n’ont pas été examinés Répète (2.1) Si le i-ème élément est nul ALORS (2.1.1) le comptabiliser SINON rien Passer à l’élément suivant
Algorithme1.Préparation ECRIS « Donnez le nombre d’éléments du tableau » LIS N VECTEUR TAB (N) //déclaration du tableau ECRIS « Donnez les éléments du tableau » LIS TAB
Suite de l’algorithme
2. COMPTE 0 //initialisation des variables I 1 //I et COMPTE TANT QUE I <= N REPETE (2.1) SI TAB (I) = 0 ALORS (2.1.1 COMPTE COMPTE + 1 SINON rieN I I + 1
3. ECRIS « Il y a », COMPTE, « éléments nuls »
Tableaux à deux dimensions(matrice)
Eléments de même nature arrangés en lignes et colonnes matrice Mat (L,C)L = nombre de lignesC = nombre de colonnes
Mat (1,1) Mat (1,2) ………….Mat (1,C) Mat (2,1) Mat (2,2)…………..Mat (2,C) Mat (3,1)……….. . . Mat (L, 1)………………………Mat (L,C)
Mat (3,5) = élément de la 3ème ligne et 5ème colonne
Top Related