Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Cours 3 SI

Télécharger au format docx, pdf ou txt
Télécharger au format docx, pdf ou txt
Vous êtes sur la page 1sur 32

_____ Cours Version 1.

3ème * Sciences Informatiques

ALGORITHMIQUE & PROGRAMMATION

Leçon 1
Les structures de données Et les structures simples

Abassi rim

Lycée Ibn rachik Ezzahra

2021 - 2022

1
1. L’algorithmique et la programmation
1.1 - L’algorithme
Un algorithme est une suite finie (enchainement , liste) ordonné (et logique)
d’opérations (d'instructions / actions) permettant de résoudre un problème.

Autrement dit :
L’algorithme est la solution d’un problème informatique dans un langage naturel. Cette
solution n’est pas compréhensible par l’ordinateur. Pour cela elle doit être traduite en
un langage de programmation, ce qui donne un programme.

Pour écrire un algorithme il faut respecter la convention suivante :

Si condition Alors
Lire Traitement1
Ecrire Sinon
 Traitement 2
Finsi
Pour Compteur de Début à Fin (Pas) Faire
Traitement
Fin Pour
Tant que condition(s) Faire
Traitement
... Fin Tant que

Entier
Réel
Booléen
Caractère
Chaine
Tableau

1.2 - La programmation
la programmation, appelée aussi codage, est l'ensemble des activités qui permettent
l'écriture des programmes informatiques en utilisant un langage de programmation.
Exemples de langage de programmation : Pascal, C++, Python
2
2. Les opérations élémentaires simples

Opération En algorithmique
Entrée Lire(objet)
Sortie Ecrire("Message",Objet, Expression)
Affectation Objet  Expression

3. Les structures de données

3.1- Les variables


Une variable est « boîte » conçue pour contenir une information. Chaque variable doit
avoir un nom pour qu’elle soit repérée par le programme. Il y a plusieurs types de
variables :
• numérique : entier (int) , réel (float)
• texte : caractère, chaîne (string)
• logique : booléen (bool) ne peut prendre que deux valeurs : vrai ou faux

- En Python, on n’a pas besoin de faire une déclaration des variables avant de les
utiliser, le type d’une variable est déduit suivant la valeur qu’elle reçoit. il est parfois
nécessaire de modifier en cours de route le type d’une variable. Pour déclarer une
variable, rien de plus simple, il suffit de lui donner un nom et de lui affecter une
valeur. Par exemple, je déclare la variable x et je lui affecte le nombre entier 13  x
= 13
- Exemples de déclarations
 x = int() #déclaration d’une variable de type entier
 y = float() #déclaration d’une variable de type réel
 z = bool() #déclaration d’une variable de type booléen

- Le langage Python est sensible à la casse, c’est à dire que x est différente de X.
- Le symbole # est utilisé pour un commentaire en Python

3.2- Les opérateurs

Pour agir sur les variables, on peut utiliser des opérateurs qui dépendent du type de
variables.

Il existe 3 types d’opérateurs :

3
Opérateurs arithmétiques

Opération En Algorithmique En Python


Addition + +
Soustraction - -
Multiplication * *
Division réelle / /
Division entière div //
Rester de la division mod %
entière
Exponentiation ^ **

Opérateurs de comparaison

Opération En Algorithmique En Python


Egal = ==
Diffèrent ≠ !=
Strictement supérieur > >
Strictement inferieur < <
Supérieur ou égal ≥ >=
Inférieur ou égal ≤ <=
Appartient ∈ in
N’appartient pas ∉ not in

Opérateurs logiques
Opération Opérateur
Négation Non
Conjonction Et
Disjonction Ou
Disjonction exclusive Ouex

Il faut faire attention et bien distinguer l’instruction d’affectation = du symbole de


comparaison ==.

4
3.3- Types de variables en Python
3.3.1 Les nombres

Il y a trois types numériques en Python :


 Le type entier int permet de représenter n’importe quel nombre entier, peu importe
sa taille.
 Le type flottant float permet de représenter des nombres comportant une partie
décimale (comme 3.14 ou 2.1e − 23), compris entre 10−324 et 10308.
 Le type complexe complex permet de représenter des nombres complexes, où le
nombre imaginaire se note j (par exemple 3.1+5.2j)

Les fonctions mathématiques & les nombres aléatoires

Algorithmique Rôle
Arrondi (x) Retourne l’entier le plus proche de la valeur de x.
RacineCarré (x) Retourne la racine carrée d’un nombre x positif.
Aléa (vi, vf) Retourne un entier aléatoire (au hasard) de l’intervalle [vi, vf].
Ent (x) Retourne la partie entière de x.

3.3.2 Les booléens


Les variables de type booléen peuvent prendre deux valeurs : faux et vrai, en Python
False, True.

3.3.3 Les caractères

Un caractère peut être un alphabet, un chiffre ou un symbole. Il est présenté entre


guillemets (simples ou doubles). Les caractères sont ordonnés selon leurs codes ascii.

Algorithmique Rôle Exemple

Retourne le code ascii du Xord(‘‘A’’)


Ord(c) contenu de la variable c de type
X= 65
caractère

Retourne le caractère dont le Ychr(65)


code ascii est d
Chr(d) Y= “A”

3.3.4 Les chaînes de caractères


 Présentation
Une chaîne de caractères est une séquence de caractères entre guillemets (simples ou
doubles).
En Python, les éléments d’une chaîne sont indexés à partir de 0 et non de 1.
5
-On peut accéder au ième caractère d’une chaîne de caractères.

Exemple :
>>> s = 'Anis ELBAHI'
>>> print(s[0]) Ce bloc affiche le caractère A

Une chaîne de caractères est un objet immuable, c'est-à-dire ses caractères ne peuvent
pas être modifiés par une affectation et sa longueur est fixe.

 Manipulation d’une chaine


On peut extraire une sous-chaîne en déclarant l’indice de début (inclus) et l’indice de fin
(exclu), séparés par deux points : s[i:j], ou encore une sous-chaîne en déclarant l’indice
de début (inclus), l’indice de fin (exclu) et le pas, séparés par des deux-points : s[i:j:k].

Algorithmique Rôle
Long (ch) Retourne le nombre de caractères de la chaîne ch.
Retourne la première position de la chaîne ch1 dans la chaîne
Pos (ch1, ch2)
ch2.
Retourne la conversion d’un nombre x en une chaîne de
Convch (x)
caractères.
Retourne Vrai si la chaîne ch est convertible en une valeur
Estnum (ch)
numérique, elle retourne Faux sinon.
Retourne la conversion d’une chaîne ch en une valeur
Valeur (ch)
numérique, si c’est possible.
Retourne une partie de la chaîne ch à partir de la position d
Sous_chaine (ch, d, f)
jusqu’à la position f (f exclue).
Efface des caractères de la chaîne ch à partir de la position d
Effacer (ch, d, f)
jusqu’à la position f (f exclue).
Majus (ch) Convertit la chaîne ch en majuscules.
Les fonctions sur les caractères et les chaines

NB : On utilise l’opérateur + pour concaténer deux chaînes.


L’indice du premier élément d’une chaîne est 0.

6
Traduction en Python

En algorithmique En Python
Types numériques
Racinecarré (a) sqrt(a)
ent(a) trunc (a)
Arrondi(a) round(a,b)
Aléa(a,b) randint(a,b)
Type caractère

ord ( c ) ord ( c )
chr ( x ) chr ( x )
Type chaine de caractères

Long ( ch ) len ( ch )
Pos ( ch1 , ch2 ) ch2.find ( ch1 )
Convch ( x ) str ( d )
Estnum ( ch ) ch.isdigit() ou ch.isnumeric()
Valeur ( ch ) int ( ch ) ou float ( ch )
Sous-chaine ( ch , d , f ) ch [ d : f ]
Effacer ( ch , d ,f ) ch = ch [ : d ] + ch [ f : ]
Majus ( ch ) ch.upper ( )

Affectation, Saisie et Affichage


Syntaxe Rôle
x=12.5 Affecter la valeur 12.5 dans la variable x
x=y Affecter la valeur de de la variable y dans la
variable x
x,y=1.4, 3.65 Affecter simultanément la valeur 1.4 dans la
variable x et la valeur 3.65 dans la variable y
(x=1.4 et y =3.65)
n=int(input(" saisir n")) Demande à l’utilisateur de saisir un entier, attendre
la saisie et affecte la donnée dans la variable n.
n=float(input(" saisir n")) Demande à l’utilisateur de saisir un réel, attendre
la saisie et affecte la donnée dans la variable n.
ch=input(" saisir une chaine") Demande à l’utilisateur de saisir une chaine,
attendre la saisie et affecte la donnée dans la
variable ch
n=eval(input(" saisir n")) Demande à l’utilisateur de saisir une expression
valide, attendre la saisie et affecte le résultat de
cette évaluation dans la variable n.
Print(m) Affiche dans la console la valeur de la variable m
7
Print("message") Affiche dans la console la chaine de caractère
message

3ème * Sciences Informatiques

ALGORITHMIQUE & PROGRAMMATION

Leçon 2
Les structures de contrôles conditionnelles

8
Les structures conditionnelles

Les structures conditionnelles permettent de faire un choix parmi plusieurs,


On peut distinguer 3 formes différentes :
 Quand utiliser les structures conditionnelles ?

Une structure de contrôle conditionnelle peut être utilisée si on est obligé à tester une
condition pour exécuter un traitement.
Pour certains cas, on associe à chaque traitement une condition particulière, si la
condition est vrai le traitement sera exécutée et dans le cas contraire le traitement sera
ignoré.

 Indentation

En Python, c’est l’indentation (les espaces en début de chaque ligne) qui détermine les
blocs d’instructions (structures conditionnelles, boucles, etc.).

a. La structure de contrôle conditionnelle simple


Si Condition Alors
Traitement
FinSi

b. La structure de contrôle conditionnelle complète


Si Condition Alors
Traitement1
Sinon
Traitement2
FinSi

c. La structure de contrôle conditionnelle généralisée


Si Condition1 Alors
Traitement1
Sinon Si Condition2 Alors
Traitement2
Sinon Si Condition3 Alors
Traitement3
Sinon ……………………………………………………………………………
Sinon Si conditionN-1 Alors
TraitementN-1
[Sinon TraitementN]
FinSi

9
NB : On pourrait utiliser la structure de contrôle conditionnelle à choix multiples
Selon <Expression>
Valeur1, Valeur2, … : instruction(s)
Valeur3 : instruction(s)
……………………………………………..
[Sinon
TraitementN]
Fin Selon

pseudocodes
Python Algorithme
if condition : Si condition alors
instruction (s) instruction (s)
finsi
if condition : si condition alors
instruction (s)1 instruction (s)1
else : sinon
instruction (s)2 instruction (s)2
finsi
if condition1 : si condition1 alors
instruction (s)1 instruction (s)1
elif condition2 : sinon si condition2 alors
instruction (s)2 instruction (s)2
else : sinon :
instruction (s)3 instruction (s)3
finsi

match selecteur : selon selecteur :


Case [valeur1, valeur2] : ins1 valeur1, valeur2 : ins1
Case valeur3 : ins (s)2 valeur(s)3 : ins (s)2
Case valeurn : ins (s)n valeur(s)n : ins (s)n
Case _ :ins0 autres :ins0
finselon

10
3ème * Sciences Informatiques

ALGORITHMIQUE & PROGRAMMATION

Leçon 3
Les structures de contrôles itératives

11
Les structures itératives

Les structures itératives ou structures répétitives ou boucles permettent de


répéter un traitement un certain nombre de fois.

connu à l'avance Pour


nombre de répétitions
non connu à l'avance Tant que

Répeter
a. La structure de contrôle itérative complète
La boucle pour ... faire est utilisée lorsqu’on souhaite répéter un bloc
d’instructions un nombre déterminé de fois.
Pour Compteur de Début à Fin [Pas = valeur_pas] Faire
Traitement
Fin Pour
NB : La valeur du pas de la structure itérative complète peut être positive ou négative.
Par défaut, elle est égale à 1.
 compteur : variable compteur
 Début : valeur initiale
 Fin : valeur finale
 Le nombre de répétition est connu
 La boucle s’arrête si le compteur atteint la valeur finale

 Traduction en Python
for compteur in range(début, fin, p) :

NB: compteur variant entre [début ..fin-1] avec pas p

Exemple1

for i in range(2) :
print(i)

le programme affiche :

1
12
Exemple2

for i in range(1,10,2) :
print(i)

le programme affiche :

b. La structure de contrôle itérative à condition d'arrêt


• Première formulation
Tant que condition Faire

Traitement
Fin Tant que
• Deuxième formulation
Répéter
Traitement
Jusqu'à condition

 Traduction en Python

Les boucles
Syntaxe Python Rôle
While condition : Exécuter en boucle la (ou les) instructions tant que
instruction (s) la condition est vérifiée
For variable in range (n) : Exécuter en boucle la (ou les) instructions pour
instruction (s) une variable allant de 0 à n-1

For variable in range (n,m) : Exécuter en boucle la (ou les) instructions pour
instruction (s) une variable allant de n à m-1

For variable in range (n,m,k) : Exécuter en boucle la (ou les) instructions pour
instruction (s) une variable allant de n à m-1 avec un pas égal à k

Break : sortie immédiate


Continue : itération suivante

13
3ème * Sciences Informatiques

ALGORITHMIQUE & PROGRAMMATION

Leçon 4
Les tableaux

14
I. Introduction

a-Les tableaux à une dimension

Un tableau est une structure de données qui permet de ranger un ensemble de


valeurs de même type.

Déclaration1
Tableau de
Déclaration des objets (TDO)
Objet Type / Nature

Nom_tableau Tableau de N Type _élément

Déclaration2
Tableau de création des nouveaux types (TDNT)
Nouveau type
Nom_type = Tableau de N Type _élément

Tableau de
Déclaration des objets (TDO)
Objet Type / Nature

Nom_tableau Nom type

15
b-Les tableaux à deux dimension

Un tableau à deux dimensions a la forme d'une matrice composée de lignes et de


colonnes. Toutes les cases de ce tableau auront le même type.

L'accès à une case de ce tableau s'effectue par conséquent grâce à deux indices

comme suit M [i,j] où i représente l'indice de la ligne et j celui de la colonne.

Déclaration1

Tableau de
Déclaration des objets (TDO)
Objet Type / Nature
Tableau de N lignes * M colonnes
Nom_tableau
Type _élément

Déclaration2

Tableau de création des nouveaux types (TDNT)


Nouveau type
Nom_type = Tableau de N lignes * M colonnes
Type _élément

16
Tableau de
Déclaration des objets (TDO)
Objet Type / Nature

Nom_tableau Nom type

3ème * Sciences Informatiques

ALGORITHMIQUE & PROGRAMMATION

17
Leçon 5
Les sous programmes

I. Introduction

1-Analyse modulaire

L’analyse modulaire consiste à diviser un problème en sous problèmes de difficultés


moindres. Ces derniers sont aussi soumis à cette division jusqu'à ce qu’on arrive à un niveau
abordable de difficulté.

 Un sous-programme est un ensemble d’instructions, déclaré dans un programme ou


dans un sous-programme.
 Il peut être une fonction ou une procédure.
 Un sous-programme peut être exécuté plusieurs fois grâce à des appels (il permet d’éviter
la redondance des programmes).

Sprg1 Sprg11
Programme

principal
Sprg n Sprg1n

Prg appelant Prg appelé

( et appelant vis-à-vis des Ssprg..)


18
2- Intérêts

 Présenter des solutions claires en évitant la redondance des codes dans un programme
 Simplifier la résolution du problème initial en supposant que les différents modules prévus
sont déjà implémentés
 Se concentrer sur la résolution d'un sous problème à la fois.
 Détecter facilement les parties à consulter ou à modifier.

II. Les fonctions

Une fonction est un sous-programme qui retourne un seul résultat de type simple (entier, réel,
booléen, caractère ou chaine de caractères).

Syntaxe d’appel d’une fonction En Algorithme:


Variable  nom-fonction (paramètres effectifs) # affectation
Ecrire (nom-fonction (paramètres effectifs)) # Affichage
Si (nom-fonction (paramètres effectifs)) = valeur) alors … # Condition

Syntaxe de la définition (déclaration) d’une fonction

 En algorithmique une fonction est déclarée en utilisant la syntaxe suivante :

Fonction nom-fonction (parf1 :type1, parf2 :type2,..,parfn :typen) : type du résultat

Début
Instruction 1
Instruction 2

Instruction n
Retourner Resultat_calculé
Fin

 En Python une fonction est déclarée en utilisant la syntaxe suivante :

def nom-fonction (parf1, parf2,..,parfn) :


En python
Instruction 1
Instruction 2

Instruction n
return Resultat

Paramètres formels :
Définition de la fonction Les objets nécessaires pour
19 que la fonction puisse faire
sa tâche (son travail).
def nom_fonction (parameters):
Instructions_1
L’entête de la fonction Instructions_2

Le corps de la fonction Instructions_3 Les valeurs retournées par
return valeurs la fonction

Remarques
1- Pour exécuter une fonction, il faut l’appeler.
2- Toutes les instructions qui suivent l’instruction return constitue un code mort c'est-à-dire
non exécutable par la fonction.
3- Une fonction peut ne pas avoir de paramètres au moment de la définition, dans ce cas il
ne faut pas oublier les deux parenthèses ().
4- Une fonction peut renvoyer une ou plusieurs valeurs de types différents dans la même
instruction return.

Objets globaux et objet locaux


Un Objet Global est tout objet déclaré dans le programme principal (PP), il est utilisable par
les instructions du PP et par les instructions des différents sous-programmes
Un Objet Local est tout objet déclaré à l’intérieur d’un sous-programme.
Un objet local ne peut pas être utilisé en dehors du sous-programme où il est déclaré

Paramètres effectifs et paramètres formels


Les paramètres formels sont des variables utilisées dans le corps du sous-programme, ils
figurent dans l'entête de la déclaration d’un sous-programme. Les paramètres formels sont
des objets locaux
Les paramètres effectifs sont des variables (ou valeurs) fournies lors de l'appel d'un sous-
programme, ils figurent dans l’instruction d'appel du sous-programme, au niveau du
programme appelant (Programme principal). Les paramètres effectifs sont des objets globaux

Remarques

 Il faut respecter le nombre, l'ordre et les types des paramètres effectifs par rapport aux
paramètres formels. Leurs noms peuvent être différents.
 Au moment de l'appel, les paramètres formels seront remplacés par les paramètres
effectifs lors de l'exécution du sous-programme

III. Les procédures

Une procédure est un sous-programme (ensembles d'instructions) qui peut produire Zéro ou
plusieurs résultats. Dans une procédure, il faut ajouter le symbôle @ avant chaque objet
résultat.

 Syntaxe de la définition (déclaration) d’une procédure

 En algorithmique une procédure est déclarée en utilisant la syntaxe suivante :

20
Procédure nom-Procédure (liste des paramètres formels : type de chaque paramètre)
Début
Instruction 1
Instruction 2

Instruction n
Fin

Syntaxe de l’appel d’une procédure


L’appel de la procédure se fait en utilisant simplement le nom de la procédure suivi d'une
liste de paramètres (les paramètres effectifs).

En algorithme
Nom-procédure (paramètres effectifs)

 Mode de passage

Le passage de paramètres par valeur

Dans ce mode de passage, le programme appelant (principal) transmet une valeur au


programme appelé (procédure). Toute modification de la valeur de ce paramètre par le
programme appelé ne sera pas transmise au programme appelant.

Le passage de paramètres par adresse

Dans ce mode de passage le programme appelant (principal) et le programme appelé


(procédure) font un échange de données. En effet tout changement de la valeur d'un
paramètre formel sera transmis au paramètre effectif correspondant pendant et après
l'exécution du programme appelé.
Dans le mode passage par adresse, on fait précéder les paramètres formels par le
symbole @, dans l'entête de la procédure.
Exemple1 : Mode de passage par adresse
Dans le programme principal l’appel de la procédure saisir se fait comme suit :
Algorithme exemple
Début
saisir (a , b)
Fin

Algorithme de la procédure Saisir


Procédure Saisir ( @ a1 : entier ; @ b1 : entier)
Début
Répéter
Ecrire ("Donner un entier : "), Lire (a1)
Jusqu’à (a1>=1)
Répéter
Ecrire ("Donner un entier : "), Lire (b1)

21
Jusqu’à (b1>=a1)
Fin

NB : a1 et b1 contiendront les 2 valeurs résultats de la procédure Saisir, pour le


mentionner, nous devons les faire précéder dans l'entête par le symbole @, nous parlons
alors de mode de passage des paramètres par adresse (ou par référence)

Exemple2 : Mode de passage par valeur

Algorithme principal Algorithme de la procédure P1


Algorithme exemple Procédure P1 ( x, y : Entier)
Début
Lire (a) Début
Lire (b) Traitement
P1 (a , b) Fin
Fin

Au moment de l'appel de la procédure P1 dans le programme principal, les paramètres


effectifs (a et b) passeront leurs valeurs aux paramètres formels (x et y).
Conclusion

 Dans une fonction, on n’a que le mode de passage par valeur


 Dans une procédure, on peut avoir le mode de passage par valeur et par adresse

3ème * Sciences Informatiques

ALGORITHMIQUE & PROGRAMMATION

Leçon 6
22
Les méthodes de tri et de recherche

A. Présentation des algorithmes de tri

Un algorithme de tri est une suite finie d’instructions servant à réordonner une
séquence d’éléments suivant un critère fixé à priori.
Il existe plusieurs méthodes de tri, on cite par exemple :
• La méthode de tri par sélection
• La méthode de tri à bulles
Remarque : Dans tout ce qui suit, on suppose que l'on trie des nombres entiers par
ordre croissant et que ceux-ci se trouvent dans un tableau T.

B. Les Méthodes de tri

1. Tri par sélection


o Principe
L'algorithme de tri par sélection consiste à :
1- Trouver la position posmin de l'élément le plus petit du tableau
2- Une fois cette position posmin trouvée, on compare les éléments T[0] et
T[posmin], s’ils sont différents on fait leur permutation.
3- On recommence ces opérations sur la suite (T[1], T[2], …, T[N-1]), ainsi on
recherche le plus petit élément de cette nouvelle suite et on l'échange avec T[1]. Et

23
ainsi de suite jusqu'au moment où on n'a plus qu'une suite composée d'un seul
élément T[N-1].

o Exemple n=6
T
17 5 8 12 5 13
0 1 2 3 4 5
 i=0, posmin=0
17 5 8 12 5 13
0 1 2 3 4 5
Chercher posmin (1..5)

Posmin=1
T[0] ≠ T[1] Permutation
5 17 8 12 5 13
0 1 2 3 4 5
 i=1, posmin=1
5 17 8 12 5 13
0 1 2 3 4 5
Chercher posmin (2..5)

Posmin=4
5 5 8 12 17 13
T[1] ≠ T[4] Permuter

0 1 2 3 4 5
 i=2, posmin=2
5 5 8 12 17 13
0 1 2 3 4 5
Chercher posmin (3..5)

Posmin=2
T[2] = T[2] Pas de Permutation

 i=3, posmin=3
5 5 8 12 17 13
0 1 2 3 4 5
Chercher posmin (4..5)

Posmin=3
T[3] =T[3] Pas de Permutation
5 5 8 12 17 13
0 1 2 3 4 5
 i=4, posmin=4
5 5 8 12 17 13
0 1 2 3 4 5
24
Chercher posmin (5) posmin=5
T[4] ≠ T[5] Permutation
5 5 8 12 13 17
0 1 2 3 4 5

Procédure tri_selection (n:entier, @ T:tab) TDOL


Debut
Pour i de 0 à n-2 faire
posmin i O T/N
pour j de i+1 à n-1 faire i Entier
si T[j] < T[posmin] alors j Entier
posmin  j posmin Entier
fin si aux Entier
fin pour
Si (T[posmin] ≠ T[i]) Alors
aux  T[posmin]
T[posmin]  T[i]
T[i]  aux
Finsi
Fin Pour
Fin

2. Tri à bulles

o Principe :

L'algorithme du tri à bulles consiste à comparer les différentes valeurs


consécutives du tableau T et à les permuter s'ils ne sont pas dans le bon ordre.

1. Comparer les deux premiers éléments du tableau, si le premier est supérieur


au second, une permutation est effectuée.
2. Ensuite, sont comparées et éventuellement permutées les valeurs d’indices 1
et 2, 2 et 3 jusqu'à (n-2) et (n-1)
3. Une fois cette étape achevée, il est certain que le dernier élément du tableau
est le plus grand. L'algorithme reprend donc pour classer les (n-1) éléments
qui précèdent.
4. L'algorithme se termine quand il n'y a plus de permutations possibles.

o Exemple n=6
Etape1 T
17 5 8 12 5 13
0 1 2 3 4 5
 I=0,Permuter=faux
25
17 5 8 12 5 13
0 1 2 3 4 5
T[0] > T[1] donc Permutation et Permuter=vrai
5 17 8 12 5 13
0 1 2 3 4 5
 i=1,Permuter=vrai
T[1] > T[2] donc Permutation et Permuter=vrai
5 8 17 12 5 13
0 1 2 3 4 5
 i=2,Permuter=vrai
T[2] > T[3] donc Permutation et Permuter=vrai
5 8 12 17 5 13
0 1 2 3 4 5
 i=3,Permuter=vrai
T[3] > T[4] donc Permutation et Permuter=vrai
5 8 12 5 17 13
0 1 2 3 4 5
 i=4,Permuter=vrai
T[4] > T[5] donc Permutation et Permuter=vrai
5 8 12 5 13 17
0 1 2 3 4 5
Remarque : Après le premier parcours, le plus grand élément étant à sa
position définitive, il n'a plus à être traité.

Etape2

 i=0,Permuter=faux
T[0] < T[1] donc pas de Permutation
5 8 12 5 13 17
0 1 2 3 4 5

 i=1,Permuter=faux
T[1] < T[2] donc pas de Permutation
5 8 12 5 13 17
0 1 2 3 4 5
 i=2,Permuter=faux
T[2] > T[3] donc Permutation ,permuter=vrai
5 8 5 12 13 17
0 1 2 3 4 5
 i=3,Permuter=vrai
T[3] < T[4] donc pas de Permutation
5 8 5 12 13 17
0 1 2 3 4 5
 i=4,Permuter=vrai

26
T[4] < T[5] donc pas de Permutation

5 8 5 12 13 17
0 1 2 3 4 5
Etape3

 i=0,Permuter=faux
T[0] < T[1] donc Pas de Permutation

5 8 5 12 13 17
0 1 2 3 4 5

 i=1,Permuter=faux
T[1] > T[2] donc Permutation ,permuter=vrai

5 5 8 12 13 17
0 1 2 3 4 5
 i=2,Permuter=vrai
T[2] < T[3] donc Pas de Permutation
 i=3,Permuter=vrai
T[3] < T[4] donc Pas de Permutation

 i=4,Permuter=vrai
T[4] < T[5] donc Pas de Permutation

Etape4

 i=0,Permuter=faux
T[0] = T[1] donc Pas de Permutation

5 5 8 12 13 17
0 1 2 3 4 5
 i=1,2 ,3,4 Permuter=faux on sort avec un tableau trié

o Algorithme de la procédure Tri_bulles dans un tableau T

Procedure tri_bulles ( n:entier, @ T : Tab) TDOL


Début
répéter
permuter  faux
27
Pour i de 0 à n -2 faire O T/N
si (T[i] > T[i+1]) alors permuter Booleen
aux  T[i] i Entier
T[i]  T[i+1] aux Entier
T[i+1]  aux
permuter  vrai
Finsi
Fin pour
Jusqu'à (permuter = faux)
Fin

C. Les algorithmes de recherche

Un algorithme de Rechercher revient à vérifier l’existence d’un élément E dans un


ensemble. Il existe deux méthodes de recherche :
• La méthode de recherche séquentielle
• La méthode de recherche dichotomique

1. La méthode de recherche séquentielle

o Principe
La méthode de recherche séquentielle d’un élément dans un ensemble consiste à
parcourir l’ensemble élément par élément en les comparant avec l’élément à
chercher jusqu’à trouver ce dernier ou achever l’ensemble.

o Algorithme de la fonction recherche_sequentielle d’un entier x dans un


tableau t (méthode 1)

28
Fonction recherche_sequentielle (x : entier ; n : entier ; t : tab) : booléen
Fonction
Début recherche_dichotomique ( x :entier ;n :entier;t:tab :tab ) :booléen
Debuttrouve  faux
i 
trouve 0 faux
d 0répéter
fn-1 si t[i] = x alors
répéter trouve vrai
milieu(d+f) div 2
sinon
Sii x= i+1
t[milieu] alors
finsi trouve vrai
Sinon (trouve=vrai)
jusqu'à si x < t[milieu]oualors
(i=n)
f 
retourner trouve milieu -1
Fin Sinon
d milieu +1
TDOL Finsi
jusqu’à (trouve) O ou (f<d) T/N
Retourner trouve trouve Booléen
Fin i Entier

o Algorithme de la fonction recherche séquentielle d’un entier x dans un tableau t


(méthode 2)

Fonction recherche_sequentielle (x : entier ; n : entier ; t : tab) : booléen


Début
trouve  faux TDOL

i0 O T/N
répéter trouve Booléen
trouve t[i] = x i Entier
i  i+1
jusqu'à (trouve=vrai) ou (i=n)
retourner trouve
Fin

Activité3 29

Ecrire l’algorithme principal d’un programme qui permet de


o Algorithme de la procédure tri_selection dans un tableau T

30
0
30

Vous aimerez peut-être aussi