0% ont trouvé ce document utile (0 vote)
183 vues81 pages

Algorithme Et Programmation en Python

Transféré par

ucome7456
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
183 vues81 pages

Algorithme Et Programmation en Python

Transféré par

ucome7456
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 81

Algorithme et programmation en

python
TABLE DES MATIÈRES
I. Introduction
II. Les structures simples
III. Les structures des données
1. Les constants et les variables
2. Les types numériques
3. Le type booléen
4. Le type caractère
5. Le type chaîne de caractères
IV. Les structures conditionnelles
V. Les structures de contrôle itératives
VI. Les tableaux
1. Les tableaux à une dimension
2. Les tableaux à deux dimensions (les matrices)
VII. Les sous programmes
VIII. Les algorithmes de tri et de recherche
IX. Les algorithmes récurrents
X. Les algorithmes arithmétiques
XI. Les algorithmes d'approximations
XII. Fichiers et enregistrements

2
I. INTRODUCTION
Un algorithme est composé d'instructions et d'opérations réalisées, dans un ordre précis, sur
des données afin de produire un résultat, et souvent résoudre un problème plus ou moins
complexe :
1. Analyse du problème
2. Conception d’une solution : algorithmique
 Choix de la représentation des données
 Choix de la méthode utilisée
3. Développement : programmation
 Choix du langage de programmation (python)
 Choix de la machine utilisée
4. Tests
 Pourquoi Python ???
Python est un langage de programmation interprété, interactif, orienté objet et de haut
niveau à usage général. Selon l'ingénieur Venkatesan , Python est aujourd'hui le langage de
programmation le plus populaire. Comparé à plusieurs langages de programmation
actuellement disponibles, Python est de loin le plus facile à étudier. La syntaxe des lignes
de code présente une certaine clarté, ce qui en facilite la lecture et la compréhension, même
si vous n'êtes pas un expert en Python. Venkatesan soutient que l'apprentissage et
l'enseignement de Python à travers des cas pratiques constituent une très bonne approche,
car la syntaxe de Python obéit à moins de règles par rapport à d'autres langages. En effet,
l'accent est principalement mis sur l'objectif à atteindre en exécutant votre code.

3
II. LES STRUCTURES SIMPLES
Une structure simple peut être soit :
1. Une instruction de lecture (entrée, saisie) de données
L’instruction qui permet à l’utilisateur d’entrer (lire ou saisir) des valeurs au clavier (entrée
Standard) (ou autre source d’entrée) s’appelle opération de lecture (ou d’entrée).
Syntaxe en algorithme Syntaxe en python
Ecrire (‘donner un variable’), lire(variable) Variable = input (‘donner un variable’)

Remarques : Dès que le compilateur rencontre une instruction de lecture, l’exécution s’arrête
en attendant que l’utilisateur saisisse une valeur pour la variable puis il valide la saisie par la
touche Entrée. Après la validation, le compilateur passe à l’instruction suivante.

2. Une instruction d’écriture (sortie, affichage) de résultat


L’instruction qui permet d’afficher (d’écrire ou de sortir) des résultats (texte ou des valeurs) à
l’écran (sortie standard) (ou autre périphérique de sortie) s’appelle opération de sortie.
Syntaxe en algorithme Syntaxe en python
Ecrire (‘texte’) print (‘texte’)
Ecrire (variable) print (variable)
Ecrire (‘texte’, variable) print (‘texte’, variable)

Remarques : On peut afficher le résultat d’une expression par : Ecrire (expression).


Exemples : Ecrire (x/2-1), Ecrire (X>Y) …

3. Une affectation (modification du contenu d’une variable)


L’affectation est l’instruction qui permet d’attribuer (affecter) une valeur à une variable ou de
modifier la valeur qu’elle a déjà. Sa syntaxe est :

Syntaxe en algorithme Syntaxe en python


Variable  valeur Variable = valeur

Remarque : Il doit y avoir une comptabilité entre le type de la variable et celui de l’expression.

4
III. Les structures des données
1. Les constantes et les variables
Les constantes : Une constante est une donnée connue. Sa valeur reste inchangée tout le long
d’un programme (ou d’un algorithme).
La valeur de la constante nous renseigne sur son type : réel, entier, booléen, …
On utilise les constantes pour rendre le programme plus lisible et plus facilement modifiable
Exemple : Déclarer un constant message de valeur "Bonne chance"
En python :

Les variables : Une variable est un objet dont la valeur est susceptible d’être modifiée dans le
temps. Elle est caractérisée par :
(1) Son nom : un identificateur unique
(2) Son type
(3) Son contenu
Déclaration en algorithme :

Objet Type/Nature Rôle


Nom de variable Type de variable Rôle de variable

2. Les types numériques


Le type entier :
Si une variable est déclarée sous un type entier cela signifie que ses valeurs possibles sont les
entiers appartenant à un certain intervalle [Minint, Maxint]. L’ensemble des entiers appartient
à l’intervalle [-32768, 32767]. Il existe des sous types du type entier : entier court, entier long,

Le type entier en python : int ()
Les opérateurs arithmétiques qu’on peut appliquer sur une variable de type entier sont :
l’addition (+), la soustraction (-), la multiplication (*), la division entière (div), le reste de la
division entière (mod) et le changement de signe (-).
Les opérateurs relationnels sont : <, >, ≤, ≥, ≠, =
Le Type réel :

5
Comme pour les entiers, l’ensemble des nombres réels informatiques n’est pas ℝ, c’est un
ensemble fini. Les valeurs d’une variable de type réel sont donc délimitées par un intervalle de
validité (correspondant cette fois à un espace de 8 octets).
Le type réel en python : float ()
Remarque : Les opérateurs arithmétiques qu’on peut appliquer sur une variable de type réel
sont : l’addition (+), la soustraction (-), la multiplication (*), la division (/) et le changement de
signe (-).
Les opérateurs relationnels sont : <, >, ≤, ≥, ≠, =
Tableau de déclaration des opérateur arithmétique, relationnels et logique.
Les opérateur Syntaxe en algorithme Syntaxe en python
L’addition (+) +
La soustraction (-) -
La multiplication (*) *
La division (/) /
La division entière Div //
Le reste de la division entière Mod %
Strictement supérieur > >
Strictement inférieur < <
Supérieur ou égale >= >=
Inférieur ou égale <= <=
Affectation  =
Différent ≠ !=
La comparaison = ==
Et Et And
Ou Ou Or

Exercice d’application : Saisir un entier composé de 2 chiffres et calculer la somme de ses


chiffres.
Correction algorithme :
Début chiffres
Ecrire (’donner un entier de deux chiffres’)
Lire(n) Stocker le quotient de division
euclidienne de (n sur 10) dans une
d n div 10 variable d.
un mod 10 Stocker le reste de division euclidienne
somme  d + u de (n sur 10) dans une variable u.

Ecrire (‘la somme des chiffres’, d, ’et’, u, ‘est’, somme)


Fin chiffres

Exercice 1 : saisir un entier de 3 chiffres et calculer la somme de ses chiffres.

6
Correction En python :

T.D.O (Tableau de déclaration des objets) en algorithme.


Objet Type/Nature Rôle
N Entier Donnée
C Entier Centaine
D Entier Dizaine
U Entier Unité
S Entier Somme des chiffres

Les fonctions arithmétiques standards :


Fonction En python Rôle Exemple
Tronc (x) Le module qui gère Trunc en Extraire la partie Tronc (3.14) = 3
python est le module math : entière de x Tronc(3 .6) = 3
from math import * (supprime la partie
print (trunc(x)) décimale)

Arrondi (x) round (x) Arrondir une valeur Arrondi (9.499) = 9


réelle à l’entier le Arrondi (2.5) = 3
plus proche.
Abs (x) Abs(x) Donner la valeur abs (-5) = 5
absolue de x
Racine carrée from math import * Donner la racine Racine carre (16) =
(x) print(sqrt(12.5)) carrée de x (si x est 4.0
positif)
Carrée (x) x ** 2 Donne le carré de x Carre (5) = 25
Alea(1,99) from random import * Donne un nombre Alea(1,99)=35
print(randint(1,99)) aléatoirement entre 1
et 99.

7
Exercice d’application :
Écrire un algorithme qui permet de faire la racine carrée d'un réel x.
Correction en algorithme :
Début racine
Ecrire (''Donner un réel '')
Lire(x)
Ecrire (''La racine carrée est ='', racine_carrée(x))
Fin Si
Fin racine

En python :

Exercice 2 : saisir 5 nombres puis afficher leur moyenne.


Python :

Exercice 3 : Ecrire un programme en python qui permet de convertir un temps donné en


secondes en heures, minutes et secondes.
Exemple : Si temps = 3674 alors le programme affichera : 3674 s = 1 h : 1 min : 14 s

8
Correction :

Exercice 4 :
Ecrire un programme en python qui permet de calculer et d’afficher la distance entre deux
points dont les coordonnées sont données.
Soit les points M (a, b) et N (c, d) ; la distance entre eux est donnée par la formule suivante :

𝑑(𝑀, 𝑁) = √(𝑎 − 𝑐)² + (𝑏 − 𝑑)²

Correction en python :

3. Le type booléen
Une variable déclarée sous le type booléen est dite « booléenne ». Elle ne peut prendre que
deux valeurs possibles : vrai (True) ou faux (False).
Les opérateurs possibles applicables sur les variables booléennes sont :

9
La négation NON (NOT)
La conjonction ET (AND)
La disjonction OU (OR)
Le OU exclusif OU ex (XOR)
Déclaration en algorithme
Objet Type/Nature Rôle
Nom de la variable Booléen Rôle de la variable

La déclaration en python :

4. Le type caractère
Une variable de type caractère a comme valeur un des 256 caractères connus : lettres
minuscules, lettres majuscules, lettres accentuées, chiffres, caractères spéciaux ($, %, …). La
valeur d’une variable de type caractère est donnée par le caractère lui-même encadré par deux
guillemets en algorithme et par deux apostrophes en python.
Chaque caractère possède un code appelé : Code ASCII (American Standard Code for
Information Interchange)
(2) Le caractère "" est un caractère (caractère vide)
(3) Une variable de type caractère ne peut contenir qu’un seul caractère
(4) Les caractères sont classés selon leurs codes ASCII. ("A"<"B"<"C"<"D"<"E"<…<"Z")
(5) Exemple : Code ("A") = 65, Code ("a") =97
(6) Les opérateurs relationnels sur les caractères sont : <, >, ≤, ≥, =, ≠

Déclaration en algorithme
Objet Type/Nature Rôle
Nom de la variable Caractère Rôle de la variable

Le type caractère en python str ().


Fonctions ord et chr :
En Python, la fonction prédéfinie ord associe au caractère qu'on lui passe en paramètre le
numéro associé à ce caractère. Par exemple, le programme :

10
Affiche à l'écran les trois nombres 32, 65 et 97.

Inversement, la fonction chr associe à l'entier (compris entre 0 et 255) qu'on lui passe en
paramètre le caractère ayant pour numéro cet entier. Le programme :

Affiche le code ascii de z est 122 et le caractère z.

Les opérateurs =, <, <=, > et >= permettent de comparer deux caractères.
Exercice d’application :
Ecrire un programme en python permet de déterminer et d’afficher le successeur et le
prédécesseur d’un caractère c donnée.

Correction en algorithme :
Début caractère
Ecrire (‘donner une caractère’)
Lire(c)
Ecrire (‘le prédécesseur de ’, c,’ est ‘, chr(ord(c)-1),’et le successeur est ’, chr(ord(c)+1))
Fin caractère

5. Les types chaine de caractères


Les chaînes de caractères sont des séquences finies de caractères. Le nombre de caractères
composant une chaîne de caractères est la longueur de cette chaîne.

11
Une chaîne de longueur nulle ne comprend aucun caractère : c'est la chaîne vide.
En Python, les chaînes de caractères forment le type str ().
Déclaration en algorithme
Objet Type/Nature Rôle
Nom de la variable Chaine de caractère Rôle de la variable

Notation indicielle :
L’outil ch[i] tel que les i sont indices des caractères numérotés de 0 à long (ch) – 1, nous permet
d’accéder en mode lecture à chaque caractère de la chaine.
Si ch est une chaîne, alors ch[i] est un caractère.

Exemple :

Afficher le premier caractère est h.

Remarque : ch [-1] donne le dernier caractère ‘o’.


Extraction d’une sous chaîne en python :
ch[id : if ]
id : indice de début
if : indice de fin – 1
ch = ’python’
ch[0 : 3] donne ’ pyt ’
ch[2 :] donne ’ thon ’
ch[-2 :]  donne ’ on’
ch[: :2] donne ’ pto ’
ch[: :- 2]  donne ’ nhy ’
Concaténation et multiplication :
’ formation ’+’ python ’ donne ’ formationpython ’
Ch = ’ a ’ * 5  donne ch = ’aaaaa’

12
Les fonctions prédéfinies sur les chaînes :
ord(x) Code ASCII du caractère x ord (’A’)  donne 65
ord (’a’)  donne 97
chr(x) Caractère dont le code ASCII est chr(65)  ’A’
x chr(97)  ’a’
len (ch) Taille de la chaîne len (’python’)  donne 6
int (ch) Convertir une chaîne en un int(’120’)  donne 120
nombre entier
float(ch) Convertir une chaîne en un int(’12.50’)  donne 12.50
nombre réel
str (objet) Convertir l’objet en une chaîne str (120)  donne ’120’
str (12.50)  donne ’12.50’
max (ch) Caractère ayant le code ASCII le max (’python’)  donne ’y’
min (ch) plus élevé ou le plus faible
ch.upper() Convertir ch en majuscule ’python’.upper()  donne
’PYTHON’
ch.lower() Convertir ch en miniscule ’PYTHON’.lower()  donne
’python’
ch.capitalize() Convertir le 1 caractère de ch ’python’.capitalize()  donne
er

en majuscule ’Python’
ch.title() Convertir le 1er caractère de ’formation python’.title() 
chaque mot de ch en majuscule donne ’Formation Python’
ch.center(n,ch Centrer ch dans une chaîne de n ’python’.center(10,’*’)  donne
) caractère car ’ **python** ’
Ch.replace(ch Remplace tous le n occurrence ’informatique’.replace(’i’,’I’) 
1 de ch1 par ch2 dans la chaîne ch donne ’InformatIque’
,ch2,n) ’informatique’.replace(’i’,’I’,1)
 donne ’Informatique’
ch.count(ch1, Compter le nombre ’informatique’.count(’i’) 
d,f) d’occurrence de ch1 dans ch donne 2
dans un intervalle des caractères ’informatique’.count(’i’,0,4) 
[d,f-1] donne 1
ch.find(ch1,d,f Retourne la 1ère position de ch1 ’informatique’.find (’i’)  donne
) dans une portion de caractère de 0
ch ’informatique’.find (’i’,1,10) 
donne 8
’informatique’.find (’I’)  donne
-1
ch.strip() Enlever les espaces avant et ’ python ’.strip  donne
après ’python’
Méthodes de ch.isupper(), ch.islower(), ’12.20’.isdecimal()  donne
verification ch.isalpha(), ch.isalnum(), faux
ch.isdecimal() : sont des fonctions ’python’.isalpha()  donne vrai
booléens ’PYTHON’.isupper()  donne
ch.digits() :verifier si le chaine vrai
contient des nombres ou non ’Python’.islower()  donne faux

13
’PYTHON3x’.isalnum()  donne
vrai
‘1234567890’.isdigits()donne
vrai

Les méthodes entre algorithme et python :

Algorithme Code en Python Rôle Exemples


Concat(ch1,ch3,…,chn) Ch1 + ch2 + … + chn Permet la Ch1 = ’2020’
ou concaténation d’un Ch2 = ’/’
Ch1 + ch2 + … +chn ensemble de chaînes Ch3=’2021’
de caractères Ch = concat(ch1, ch2, ch3)
’2020/2021’
Pos(ch1,ch2) Ch2.find(ch1) Retourne la première Ch1=’2’
position de la chaîne Ch2 = ’2020’
ch1 dans la chaîne ch2 Pos (ch1,ch2) = 0
Convch (n) Ch = str (n) Convertir le nombre n Ch = Convch(2020)
en une chaîne de Ch = ’2020’
caractères
Valeur (ch) n = int (ch) Convertir une chaîne ch = ’2020’
Ou de caractère en une n = valeur (ch)
Val(ch) n = float (ch) valeur numérique n = 2020
si ch contient un (sinon erreur) Str (12.50)  donne
réel ’12.50’
Ch= ’2info2’
n = valeur (ch)
n = erreur

Sous_chaîne (ch,id,if) Ch [id :if] Retourne une partie de ch = 'informatique'


id : indice de début la chaîne ch à partir dech2 = ch[2:5]
if : indice de fin -1 print(ch2)
la position id jusqu’à la
position if -1 le programme affiche :
for
Effacer (ch, id, if) Ch[n :] Effacer n caractères du ch = 'informatique'
début de la chaîne ch ch2 = ch[5:]
print (ch2)
le programme affiche :
matique

ch = 'informatique'
ch2 = ch[:-8]
Ch [:-n]

14
Effacer n caractères à print (ch2)
partir de la fin de la le programme affiche :
chaîne ch info

Exercice application :
Soit à écrire un programme intitulé invitation qui permet de :
 Saisir un nom d’une personne.
 Saisir un prénom d’une personne.
 Ajouter un espace à la fin du nom.
 Concaténer le nom et le prénom dans ch3
 Inviter cette personne à un rendez-vous.
Exemple : Nom ← "Ali" Prénom ← " Ayari " Ch3 ← "Ali Ayari" Le programme affiche :
Ali Ayari, vous êtes invités à un rendez-vous le 02/12/2021 à 21h.

Correction :

Exercice :
Ecrire un programme qui permet de saisir une adresse mail de la façon suivante :
pré[email protected], Et affiche chaque partie seule
Exemple :
[email protected]
Prénom = formakt
Nom = bac
Serveur = gmail
Extension = com

15
Correction :
Début Ex_mail
Ecrire (‘’Donner votre email’’)
lire (ch)
prenom sous-chaine(ch,0,pos(‘’.’’,ch))
Ecrire(‘le prenom est :’,prenom)
nomsous-chaine(ch,pos(‘.’,ch)+1,pos(‘@’,ch))
Ecrire(‘le nom est :’,nom)
ch2 Effacer (ch , 0 , pos(‘’@’’,ch) +1 )
Ecrire(ch2)
serveur  sous-chaîne ( ch2,0,pos(‘’.’’,ch2) )
Ecrire(serveur)
extension  sous-chaîne (ch2, pos (‘’.’’, ch2) +1, long (ch2))
Ecrire(extension)
Fin Ex_mail
Correction en python :

IV. Les structures conditionnelles


1. La structure conditionnelle simple
Définition : Une structure de contrôle conditionnelle a une forme simple réduite si on se
restreint (on se limite) à l’exécution d’un traitement quand une condition est vraie. Elle a la
forme générale suivante : Si condition Alors Traitement.
Les opérateurs de comparaison sont : <, ≤, >, ≥, =, ≠
La condition x∈ ]-∞ , 0[U] 0, + ∞ [s’écrit : (x < 0) OU (x > 0), ou plus simplement x ≠ 0

16
Enfin, pour traduire x ∈ ] [ − ∞,0 ∪[1,−2[[on écrit : (x < 0) OU ((x >= 1) ET (x < 2)).

Syntaxe en algorithme Syntaxe en python


Si Condition Alors if condition :
Traitement traitement
Fin Si

Exercice d’application :
Écrire un programme qui permet de vérifier la parité d'un entier donné (en utilisant la forme
simple réduite).

Début parité

Ecrire (''Donner un entier ''), lire (n)


message ← ''Pair''
Si n mod 2 ≠ 0 alors
message ← ''impair''
Fin Si
Ecrire (n, " est ", message)
Fin parité

Autre méthode avec python :

2. La structure conditionnelle alternative


Définition : Une structure de contrôle conditionnelle a une forme alternative, si selon la
valeur d’une condition, on exécute soit un traitement 1 ou un traitement 2.
Déclaration en algorithme et en python

Syntaxe en algorithme Syntaxe en python


Si Condition Alors if condition :
Traitement 1 Traitement1
Sinon else :
Traitement 2 Traitement2
Fin Si

17
Exercice d’application :
Soit l’algorithme suivant :

Début inconnu
Ecrire (˝Tapez un caractère : ˝), lire (c1)
Si ( (ORD (c1) ≥ 97) et (ORD (c1) ≤ 122) )Alors
c2CHR (ORD (c1) – 32)

Sinon
c2 c1
Fin Si
Ecrire (c2)
Fin inconnue

a-Traduire cet algorithme en Python.


b-Que fait cet algorithme ? (Ecrire la réponse comme commentaire à la fin du programme).

Exercice :
Ecrire un programme qui permet de vérifier la parité d'un entier (utilisant la forme
alternative).

Correction en python :

3. La structure conditionnelle généralisé


Définition : Cette structure est utilisée lorsqu’on a plus qu’une condition. Sa syntaxe est :

Syntaxe en algorithme Syntaxe en python


Si Condition 1 Alors if condition 1:
Traitement 1 Traitement1
Sinon Si Condition 2 Alors elif condition 2 :
Traitement 2 Traitement 2
Sinon Si Condition 3 Alors elif condition 3 :
Traitement3 … Traitement 3
Sinon Si Condition N Alors elif condition N :

18
Traitement N Traitement N
Sinon else :
Traitement N+1 Traitement N+1
Fin Si

Exercice d’application :
Écrire un programme qui permet de saisir une moyenne (moy) puis affiche la décision
correspondante :
ADMIS Si moy >=10
CONTROLE Si 9<=moy <10
REDOUBLE Si moy<9
Correction :

Début décision
Écrire (''Donner une moyenne'')
lire(Moy)
Si 0<=Moy<=20 alors
Si moy>=10 alors
message ← ''ADMIS''
Sinon Si moy>=9 alors
message ← ''CONTROLE''
Sinon
message ← ''REDOUBLE''
Fin Si
Fin Si
Ecrire(message)
Sinon

Ecrire (‘erreur, le moyenne ∈ [0 …20] !!!’)

Fin si
Fin décision

Correction en python :

19
Exercice 1 :
Ecrire un programme qui permet de saisir le sexe (M/F), la taille (cm), et le poids (kg) d’une
personne et d’afficher :
1. PI, le poids idéal d’une personne, sachant que ce poids théorique est donné par la formule
de Lorenz comme suit :
· Pour un homme : PI = (taille – 100) – (taille – 150) / 4
· Pour une femme : PI = (taille -100) – (taille – 120) /4
2. BMI, l’indicateur d’obésité (Body Mass Index) où BMI = poids / taille² avec taille en mètre
3. Si une personne est considérée comme : Normale (BMI <= 27), ou obèse (BMI > 27) ou
Malade (BMI >= 32)
Correction en python :

20
Exercice 2 :
Écrire un programme python qui permet de saisir un entier N contenant 3 chiffres puis affiche
si le nombre cubique ou pas
Un nombre est dit cubique s’il est égal à la somme des cubes de ses chiffres
Exemple : 153 est cubique car 1**3 + 5**3 + 3**3 = 153

Correction :

Exercice 3 :
Ecrire un programme python qui permet de saisir un entier N contenant minimum 4 chiffres
qui affiche s’il est magique ou non.
Un nombre est dit magique si la somme des deux premiers chiffres est égale au produit des
deux derniers chiffres.
Exemple : N = 32451  N est magique car 3+2 =5*1
Correction :

21
V. Les structures de contrôle itératives
1. Boucle Pour…faire :
Cette structure exprime la répétition d'un traitement un nombre fini de fois connu à l’avance.
Syntaxe en algorithme et en python :
Syntaxe en algorithme Syntaxe en python
Pour compteur de Vi à Vf faire for compteur in range(Vi, Vf) :
Instruction… Instruction…
Fin pour

Compteur est une variable du type scalaire, qui compte le nombre de répétition du traitement.
Vi : La valeur initiale du compteur
Vf : La valeur finale du compteur
La valeur du pas (l’avancement du compteur) est égale à 1 par défaut.

Exercice 1:
Calculer la somme de 5 entiers donnés

Exercice 2 :
Donner la somme des chiffres d'un entier quelconque (sans mod et div)
Correction en python :

22
Exercice 3 :
Calculer le nombre d'espace dans une chaine donnée
Exemple : ch = ‘Salut tout le monde’, on aura Le nombre d'espace est 3.
Correction :

Exercice Nombre de diviseur:


Afficher les diviseurs d’un entier donné :

Puis calculer la somme.

23
Exercice Factorielle :
Ecrire l'analyse, l'algorithme et la traduction en python d'un programme intitulé
FACTORIELLE, qui permet de lire un entier n positif puis de calculer et afficher son factoriel.
Exemple : 5 ! = 1 * 2 * 3 * 4 * 5 = 120 alors le programme doit afficher 5 ! = 120.
Correction algorithme :
Début Factorielle
Ecrire (‘donner un nombre positif :’)
Lire(n)
F1
Pour i de 1 à n faire
FF*i
Fin Pour
Ecrire (‘la factorielle de ’, n, ‘est :’, F)
Fin Factorielle

Correction en python :

Exercice nombre de lettres :


Ecrire un programme qui permet de calculer et d'afficher le nombre des voyelles et des
consonnes dans une chaine donne.
Exemple : Le programme affiche (AIUOYE)
Pour Ch = ''STRUCTURE ITERATIVE COMPLETE POUR''

24
Le nombre des voyelles = 13
Le nombre des consonnes = 17

Correction python :

Modification de la valeur d'une chaine de caractères


En python, une chaîne de caractères est un objet de la catégorie des séquences (collections
ordonnées d'éléments) non modifiables (on dit aussi non mutable). Contrairement à d'autres
langages, en Python, on ne peut donc pas modifier directement un caractère individuel dans
une chaîne. Le seul moyen de modifier une variable de ce type sera de la redéfinir (création
d'une nouvelle variable de même nom qui écrase l'ancienne ou chaine copie).

Exercice modifier :
Changement du caractère espace par son nombre d'occurrence
Exemple : ch = 'Salut tout le monde', on aura ch : 'Salut1tout2le3monde'.
Correction Python :

25
Exercice sur les caractères :
Ecrire un programme Python qui permet de transformer la chaîne de caractères donnée en
majuscule sans utiliser la fonction c.upper() ou ch.upper().
Indication : le code ASCII de 'a' est 97 et le code ASCII de 'A' est 65.
Correction Python :

Exercice Premier :
Vérifier si un nombre n, est premier ou non tel qu’un nombre entier naturel (supérieur ou égal
à 2) est un nombre premier s'il admet exactement 2 diviseurs : 1 et lui-même.

26
2. Boucle Répéter...Jusqu’à :
Cette structure permet de répéter un traitement une ou plusieurs fois et de s'arrêter sur une
condition. En effet, lorsque la condition est vérifiée, la boucle s'arrête, si non elle ré exécute le
traitement.

27
Syntaxe en algorithme et en python :
Syntaxe en algorithme Syntaxe en python
Répéter
Instruction 1
Instruction 2

Instruction n
Jusqu’à (condition d’arrêt)

Remarques :
 Cette structure est utilisée lorsque le nombre de répétitions à effectuer n’est pas connu
à l’avance.
 Dans cette boucle, le traitement (instruction1, instruction 2, …, instruction n) est
exécuté au moins une fois avant l'évaluation de la condition d'arrêt.
 Exemple : Lecture d’un entier n > 0
Répéter
Ecrire ("entrer un entier : ")
Lire (n)
Jusqu’à n > 0
Exercice :
Saisir une chaîne de caractère CH qui commence par un caractère alphabétique majuscule.
Correction en algorithme Correction en python
Répéter
Ecrire (‘donner une chaine de
caractère’)
Lire(ch)
Jusqu’à (ch [1] dans {‘A’…’Z’})

Exercice PGCD :
Écrire un programme qui permet de calculer le pgcd de 2 entiers a et b par la méthode de
différence.
Exemple : a=15 b =27
pgcd(15,27) =>pgcd(15 , 27-15 )
=>pgcd(15 , 12) =>pgcd(15-12 ,12)
=>pgcd(3 , 12) =>pgcd(3 , 12 -3)
=>pgcd(3 , 9 ) =>pgcd(3 , 9-3)
=>pgcd(3 , 6) =>pgcd(3 , 6-3)=>pgcd(3 , 3) → a=b donc pgcd(a, b)=>a=b=>3

28
Correction en python :

3. Boucle Tant que… Faire :


Cette structure permet de répéter le traitement zéro ou plusieurs fois et de s'arrêter lorsque la
condition d'exécution n'est plus vérifiée. En effet, lorsque la condition d'exécution est vérifiée,
le traitement est exécuté, si non elle s'arrête.

29
Syntaxe en algorithme et en python
Syntaxe en algorithme Syntaxe en python
…… {initialisations}
Tant Que (condition d’exécution) Faire
Instruction 1
Instruction 2 Traitement

Instruction n
Fin Tant Que

Remarques :
 Cette structure est utilisée lorsque le nombre de répétitions à effectuer n’est pas connu
à l’avance.
 Dans cette boucle, le traitement peut ne pas être exécuté aucune fois, c'est lorsque la
condition d'exécution est à faux dès le départ.
 Les paramètres de la condition d’exécution doivent être initialisés par lecture ou par
affectation avant la boucle.
Exemple : Lecture d’un entier n > 0

Exemple en algorithme Exemple en python


Ecrire ("entrer un entier : ")
Lire (n)
Tant Que n <= 0 Faire
Ecrire ("entrer un entier : ")
Lire (n)
Fin Tant Que

Exemple PGCD avec (tant que)


Correction en python :

30
Exercice Convertir :
Pour convertir un nombre entier positif N de la base décimale à la base binaire, il faut opérer
par des divisions successives du nombre N par 2. Les restes des divisions constituent la
représentation binaire.

Ecrire un script python pour convertir un nombre décimal n en binaire.

Correction en python :

Exercice Nombre parfait :


Un entier naturel est dit parfait s’il est égal à la somme de tous ses diviseurs autres que lui-
même.
Exemple : 6 est dit un nombre parfait car il vérifie 6 = 1 + 2 + 3 où 1,2 et 3 sont les diviseurs
de 6 autres que 6.
On se propose de chercher tous les entiers parfaits compris entre deux valeurs données m et n
telles que 2<m<n.

31
Correction en python :

Problème de nombre Amis :


Ecrire un algorithme « Amis » qui permet de saisir deux entiers positifs M et N formé chacun
de trois chiffres, de déterminer et d’afficher si ces deux entiers sont amis ou ne sont pas
amis.
NB : Deux entiers (M, N) sont dits amis si et seulement si :
M = sdn et N = sdm
 sdm désigne la somme des diviseurs de M sauf lui-même
 sdn désigne la somme des diviseurs de N sauf lui-même

Exemple 1 :
M=220 et N = 284 sont deux entiers amis, en effet :
Diviseurs de M (220) sont : {1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110, 220} Diviseurs de N 284
sont : {1, 2, 4, 71, 142, 284}
 Sdm (220) = 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284 = N
 Sdn (284) = 1+ 2 + 4 + 71 + 142 = 220 = M
Alors le programme affichera : (284, 220) sont amis
Exemple 2 :
M=220 et N = 101 Alors le programme affichera : (220, 101) ne sont pas amis

32
Correction en python :

33
IV. Les Tableaux
1. Les tableaux à une dimension :
Un tableau unidimensionnel (ou vecteur) est une structure de données permettant de
ranger(regrouper) un nombre fini d’éléments de même type.

Un vecteur est caractérisé par :


 Son nom (un identificateur unique. Exemple : T, V, U, …)
 Sa taille (nombre d’éléments. Exemple : 20, 30, 100, …)
 Son type (le type des éléments qu’il contient. Exemple : entier, réel, caractères,
…)

Syntaxe en algorithme et en python :


En algorithme :
Tableau de déclaration de nouveau type (T.D.N.T)

Type
Nom_de_type =tableau de taille de type

Tableau de déclaration d’objet

Objet Type
Nom_de_tableau Nom_de_type

1.1 -En python :


Les deux méthodes les plus couramment utilisées pour déclarer un tableau en Python sont
list et numpy module.
Déclaration de Tableau comme list :

T = []  initialisation d’un tableau(list) vide


Ou
T= [0] *taille  initialisation d’un tableau(list) remplir avec zéro

Déclaration de tableau avec le module numpy

from numpy import *


T=array([type_de_donner] *taille)

34
A-Définition d’une liste :
C’est un nouveau type de variable qui peut contenir des entiers, des flottants, des chaînes
de caractères voire des listes. Il est naturellement intégré dans python.
Une liste est une collection ordonnée d’objets python. De même que pour les chaînes de
caractères, la fonction print () permet d’afficher la liste. Voici un exemple de liste :

Accès à ses éléments, indexation et longueur :


On appelle un élément de cette liste d’après son numéro (ou indice) pris dans l’ordre en
commençant par 0 pour le premier élément.

Pour connaître le nombre éléments d’une liste, on dispose de la fonction len() :

35
Comme pour les chaines de caractères et avec la même syntaxe, il est possible de ne
sélectionner qu’une partie de liste. Ne pas oublier que le premier indice vaut 0.

Opérations sur les listes :


Comme pour les chaînes de caractères, il est possible de concaténer des listes, c’est à dire de
les juxtaposer avec la fonction "+".

Il est possible d’ajouter des éléments à la fin d’une liste avec la fonction append().

B-Définition d’un tableau :


Un tableau est une liste ordonnée de nombres uniquement (flottants, entiers, complexes voire
booléens codés en binaire). Les tableaux sont accessibles à partir de la librairie Numpy qui doit
être préalablement chargée. Pour des raisons de simplicité évidentes, nous chargerons la
libraire Scipy qui contient Numpy. Pour plus de détails, on pourra se reporter à la
documentation de Numpy p.7-11.
Construction et affichage :
Il est possible de construire un tableau (=``array``) de manière explicite. Comme les listes, il
s’agit d’un nouveau type de variable.

36
Accès à ses éléments, indexation et longueur :
L’indexation, l’accès à ses éléments et la longueur d’un tableau (fonction len()) sont les
commandes identiques aux listes.

Comme pour les listes et avec la même syntaxe, il est possible de ne sélectionner qu’une partie
d’un tableau. Ne pas oublier que le premier indice vaut 0.
Création de tableaux particuliers
Avec la bibliothèque numpy, il est possible de créer des tableaux particuliers, utiles pour
certains calculs.
Par exemple T est un tableau de 5 cases vide de type entier.

37
Remplissage du tableau en théorique :
Début Remplissage
Répéter
Ecrire (‘’Donner la taille du tableau’’)
Lire (n)
Jusqu’à (n >= 2) et (n <= 10)
Pour i de 0 à n-1 faire
Ecrire (‘’Donner un élément’’)
Lire (T[i])
Fin pour
Fin remplissage
La 2ème méthode du remplissage est plus proche de l’écriture en théorique.

Avec list :

38
Avec numpy :

1.2 – des exercices sur Tableau :


Exercice 1 :
Soit un tableau T1 de N1 éléments (1<N1<100). Les éléments de T1 sont des entiers naturels
de trois chiffres.
On se propose de remplir et afficher un tableau T2 de la façon suivante :
T2[i] est égal à la somme des carrés des chiffres de T1[i].
Solution en algorithme :
Début ex1
################saisie taille du tableau ##############
Répéter
Ecrire (‘donner la taille de tableau’)
Lire(N1)
Jusqu’à (1<N1<100)
################remplir T1################
Pour i de 0 à N1-1 faire
Répéter
Ecrire (‘donner la valeur de case’, i,’ :’)

39
Lire(T1[i])
Jusqu’à (100<=T1[i]<=999)
Fin pour
###########remplir T2##########
Pour i de 0 à N1-1 faire
T2[i](T1[i]div100)**2+((T1[i]%100)//10)**2+(T1[i]%10)**2
Fin pour
#########afichage############
Pour i de 0 à N1-1 faire
Ecrire(T2[i])
Fin pour
Fin ex1
Tableau de déclaration de nouveau type (T.D.N.T)
Type
Tab=tableau de 100 entiers

Tableau de déclaration d’objet (T.D.O)


Objet Type
N1 Entier
T1 Tab
T2 Tab
I Entier

Le maximum et minimum dans un tableau :


Solution en python :

40
Exercice longueur maximale des chaînes :
Élaborer un programme qui permet de saisir un vecteur T par n chaînes de caractères (4< n
<20), cherche et affiche la longueur de la chaîne la plus longue puis affiche toutes les chaînes
ayant cette longueur.
Solution :

41
Exercice :

Ecrire un programme Python qui fait le traitement ci-dessus pour un tableau T de n (2 <n < 20)
entiers positifs non nuls et détermine et affiche le nombre d’éléments différents de T.

Solution :
Saisie et remplir le tableau T

Garder et regrouper le tableau T dans T1 :

42
Exécution :

2. Les tableaux à deux dimensions (les matrices) :


Une matrice est une structure de donnée où on peut manipuler des informations dans un tableau
bidimensionnel contenant des cases mémoires en horizontal et en verticale (des colonnes et des
lignes) comme suivant :

On peut accéder aux cases de la matrice M par l’instruction M[i,j] où i désigne le numéro de la
ligne et j désigne le numéro de la colonne. Pour affecter une valeur à cette case on écrit :
M[i,j] ←une valeur
Ou le saisie s’écrit : lire (M[i,j])

43
Déclaration en algorithme et en python :
En algorithme :
Tableau de déclaration de nouveau type(TDNT)

Type
Matrice : Tableau de taille de type

Tableau de déclaration d’objet TDO

Objet Type
Nom_du_matrice Matrice

En python :

Remarques :
Sur les éléments d’un tableau, on peut effectuer les mêmes opérations et exécuter les mêmes
instructions que sur n’importe quelle variable du même type :
Lire : Ecrire ("entrer coordonnées"), Lire (M [1,1])
Ecrire : Ecrire (M [1,3])
Affecter : M [1,2] 1.6
Effectuer un calcul : trace  M [1,1] +M [2,2] + M [3,3]
Comparer : Si M [1,3] = M [2,3] Alors …

Exercice 1 :

44
Solutions :

45
Exercice 2 :

Solution :

46
Exercice 3 :
Remplir une matrice de Taille 5 sur 5 de façons suivantes :

1 3 5 2 1
1 1+3=4 4+5=9 9+2=11 1
1 5 14 25 1
1 6 20 45 1
1 7 27 72 1

4=M [1][0] + M [0][1]


9= M [1][1] +M [0][2] Saisie par l’utilisateur

11=M [1][2] +M [0][3]


Solution :

47
V. Les sous-programmes
L’analyse modulaire a pour objectif de décomposer le problème en sous problèmes (sous
programmes, les sous programmes en d’autres sous programmes plus simples et ainsi de suite
jusqu’à ce qu’on obtienne des sous programmes élémentaires. On distingue deux types de
sous programmes : Les procédures et les fonctions.

1- Les procédures :
Une procédure est un sous-programme qui permet la résolution d’un problème
donné et qui peut avoir plusieurs résultats à partir d’un ou plusieurs paramètres
donnés.

Syntaxe en algorithme

Procédure nom_procédure (Liste et type des paramètres)




……
Fin nom_procédure

Syntaxe en python :

Remarques :
 La définition d’une procédure (ou d’une fonction) se fait toujours dans la partie
déclarative du programme principal.
 Le programme principal appelle (utilise) les sous programmes définis dans sa partie
déclarative : il est dit programme appelant et les sous programmes sont dits programmes
appelés.
 Les paramètres utilisés au moment de la définition d’un sous-programme sont appelés
des paramètres formels (fictifs).
 Les paramètres utilisés au moment de l’appel d’un sous-programme par le programme
principal (ou par un autre sous-programme) sont appelés des paramètres effectifs
(réels).

48
 Les variables locales sont des variables déclarées et utilisée uniquement par le sous-
programme où elles sont déclarées.
 Les variables globales sont des variables déclarées par le programme principal et
utilisées par n’importe quel sous-programme.
 La substitution des paramètres effectifs aux paramètres formels s’appelle transmission
des paramètres.
 L’appel d’une procédure respecte la syntaxe suivante : Nom_procédure (parmeffect 1,
parameffect 2, …, parameffect n).

Passage des paramètres


Suivant la façon dont on veut qu’il soient passés depuis le corps du programme principal, on
peut dans l’entête de la procédure annoncer les paramètres de deux manières :

 Passage par valeurs :


C’est le processus par défaut :
Lorsqu’un paramètre est passé par valeurs, le compilateur crée une variable locale du même
type et lui affecte la valeur du paramètre. Ainsi une modification dans le corps de la procédure
n’affecte que cette variable locale, la modification ne se répercutant pas à l’extérieur de la
procédure sur le paramètre passé.

 Passage par variable (ou par référence) :


Dans ce mode de passage, le programme appelé et le programme appelant font un échange de
données. En effet, toute modification de la valeur d’un paramètre au sein du programme appelé
doit être communiquée au programme appelant. Dans ce mode de passage, on précède le
paramètre à transmission par variable par le mot @.

2- Les fonctions :
Une fonction est un sous-programme qui retourne un résultat unique de type simple (entier,
réel, booléen, caractère, chaîne de caractères).

Syntaxe en algorithme :

Fonction Nom_Fonction (Liste et type des paramètres) : Type_résultat




……
Retourner(Nom_Fonction)
Fin Nom_Fonction

49
Syntaxe en python :

Remarques :
 Les paramètres d’un sous-programme ne sont pas des variables, il ne faut donc
pas les déclarer.
 L’appel d’une fonction peut apparaître partout :
i. Dans une affectation : x =max (a, b) ;
ii. Dans une comparaison : if pair (a) : …
iii. Dans un affichage : print (‘Le maximum est : ‘, max (a, b))
 Il est possible (mais déconseillé) d’utiliser l’identificateur du paramètre d’une
fonction pour nommer une variable globale.
 Pour le choix d'un nom de fonction il faut respecter les mêmes règles que celles
pour les noms de variables.
 Le type de fonction est le type du résultat retourné (Entier, réel, booléen, etc.)
 L'instruction retourner sert à retourner la valeur du résultat
 Une fonction peut avoir de 0 à N paramètres
 Param1, param2, …, sont appelés paramètres(Arguments) : ce sont des
variables qui
 Permettent à la fonction de communiquer avec l’extérieur.
 Ces paramètres déclarés lors de la définition de la fonction sont appelés
paramètres formels.

Exercice d’application 1 :

50
Ecrire une fonction nommée maximum qui calcule et renvoie le plus grand de deux entiers A
et B.

Solution en algorithme :

Fonction maximum (A : entier, B : entier) : entier


Début
Si A>B alors
Max  A
Sinon
Max  B
Fin Si
Retourner max
Fin

L’APPEL D’UNE FONCTION :


Pour exécuter une fonction, il suffit de faire appel à elle en écrivant son nom suivi des
paramètres effectifs dans le programme principal.
Le résultat d'une fonction étant une valeur, devra être affecté à une variable où être utilisé dans
une expression, calcul, affichage, test, …etc.
Appel de la fonction maximum qui renvoie le maximum deux nombres.

Algorithme maximum_deux_nombre
Début :
Ecrire ("saisir une valeur de A ") Lire(A)
Ecrire ("saisir une valeur de B ") Lire(B)
//Appel de la fonction maximum ()
Max maximum (A, B)
Ecrire ("Le maximum est : ", max)
Fin

51
Exercice d’application 2 :
Appel de la procédure permuter qui prend en paramètres deux nombres A et B de type entier
puis affiche le résultat de permutation.

Solution en algorithme :

Procédure permute (@A : entier, @B : entier)


Début
Vide A
AB
B Vide
Ecrire ("La nouvelle valeur de A :", A)
Ecrire ("La nouvelle valeur de B :", B)
Fin

 Contrairement à l'appel d'une fonction, on ne peut pas affecter la procédure


appelée ou l'utiliser dans une expression. L'appel d'une procédure est une instruction
autonome.

Algorithme permuter_deux_nombre
//Algorithme principal
Début
Ecrire ("saisir une valeur de A ") Lire(A)
Ecrire ("saisir une valeur de B ") Lire(B)
//Appel de la procédure permuter ()
Permuter (A, B)

Fin

52
Problème :

Programme principale
Début suite_dominos
Procédure saisie(n)
Procédure remplir (D, n)
Si verif (D, n) =Vrai alors
Ecrire (‘la suite de dominos est valide’)
Sinon
Ecrire (‘Non valide’)

53
Fin si
Fin suite_dominos

Tableau de déclaration de nouveau type (TDNT)


Type
Tab=tableau de 56 entiers
Tableau de déclaration d’objet globaux
Objet Type
N Entier
D Tab
Saisie Procédure
Remplir Procédure
Verif Fonction

Procédure saisie (@n :entier)


Début
Répéter
Ecrire(‘donner un entier n=’)
Lire(n)
Jusqu’à (4<=n<=56) et (n mod 2=0)
Fin saisie

Procédure remplir (@D :tab ; n : entier)


Début
Pour i de 0 à n-1 faire
Répéter
Ecrire (‘donner une valeur dans case’, i,’ :’)
Lire(D[i])
Jusqu’à (0<=D[i]<=6)
Fin pour
Fin remplir

Objet Type
I Entier

54
Fonction vérif (D :tab ; n : entier) : booléen
Début
ValideVrai
Pour i de 2 à n-1 (pas +2) faire
Si D[i-1] # D[i] alors
Validefaux
Fin si
Fin pour
Retourner (valide)
Fin vérif
Tableau de déclaration d’objet locaux
Objet Type
Valide Booléen
I Entier

Correction en python :

55
Programme principale en python :

56
Exercice de séquences :
Ecrire un programme qui permet de remplir un tableau T par n entiers positifs (6<n<=30) puis
trouver et afficher les séquences trier dans l’ordre croissant.
Exemple :
N=7

2 3 5 1 4 8 6

Résultat : afficher les trois séquences suivantes.


(2,3,5)
(1,4,8)
(6)
Correction en algorithme :

 Sous-programme séquences :

Procédure séquences (T : Tab ; n : entier ; @ch : chaine)


Début
i0

répéter
ji
ch’(‘ +convch(T[j])

57
Tantque j<n-1 et T[j+1]>T[j] faire
Carc conch(T[j+1])
Chch+’,’+carc
jj+1
Fin Tantque
Ecrire(ch)
ij
ii+1
Jusqu’a (i=n)
Fin procédure

Correction python :
Saisie et remplir tableau T :

Procédure séquences :

58
Programme principale :

59
Problème :

60
Travail à demander :
1)Analyser le problème en le décomposant en modules.
2) Ecrire les algorithmes et les tableaux de déclarations relatives aux modules envisagés.

Correction :
1-Analyse programme principale :

Algorithme commentaire
Début
Procédure saisie (Na, Nm)
Procédure remplir (A, Na)
Procédure remplir_com (M, Nm, Na, Occ)
Procédure rechercher (M, A, Nm, Na)
Procédure inactifs (Occ, A, Na)
Fin

Tableau de déclaration de nouveau type (TDNT)

Type
Tab1=tableau de 50 chaines
Tab2=tableau de 100 chaines
Tab3=tableau de 50 entiers

61
Tableau de déclaration d’objet globaux (TDOG)

Objet Type
Na Entier
Nm Entier
A Tab1
M Tab2
Occ Tab3
Saisie Procédure
Remplir Procédure
Remplir_com Procédure
Rechercher Procédure
Inactifs Procédure

2) les algorithmes des modules relatives :

 Sous-programme saisie :

Procédure saisie (@ Na : entier, @Nm : entier)


Début
Répéter
Ecrire (‘donner la taille du tableau de membres :’)
Lire (Na)
Ecrire (‘donner la taille du tableau de commentaires :’)
Lire (Nm)
Jusqu’à (5<Na<=50) et (2<Nm<=100)
Fin

62
 Sous-programme remplir :

Procédure remplir (@ T : Tab1 ; n : entier)


Début
Pour i de 1 à n faire

Répéter
Ecrire (‘Donner le nom de l’adhérent num :’ ,i, ‘ :’)
Lire(T[i])
Jusqu’à (long(T[i])>=3) et (T[i][0] dans [‘A’ ..’Z’]) et (i=1 ou existe(T[i], T, i)=Faux
Fin pour
Fin
Fonction existe (ch : chaine ; T : Tab1 ; indice : entier) : booléen
Début
j0
Testfaux
Répéter
jj+1
Jusqu’a ((T[j]=ch) ou (j=indice))
Si T[j] = ch alors
TestVrai
Fin si
Retourner (Test)
Fin

Tableau de déclaration d’objet locaux (TDOL)

Objet Type
T Tab1
N Entier
I Entier
Existe Fonction
Ch Chaine
Test Booléen
j, indice Entier

63
 Sous-programme remplir_com :

Procédure remplir_com (A : Tab1 ; @M : Tab2 ; Nm : entier ; @ Occ : Tab3, Na : entier)


Début
Pour i de 0 à Na-1 faire
Occ[i]0
Fin pour
Pour i de 0 à Nm-1 faire
Ecrire (‘donner le commentaire’)
Lire(message)
Répéter
Ecrire (‘donner le numéro de l’émetteur’)
Lire(num)
Jusqu’à (1<=num <=Na)
M[i]concate (convch(num),’#’, message)
Occ[num-1]Occ[num-1] + 1
Fin pour
Fin

TDOL

Objet Type
I Entier
Message Chaine
Num Entier

64
 Sous-programme Rechercher :

Procédure Rechercher (M : Tab 2 ; A : Tab1 ; Na, Nm : entier)


Début
Ecrire (‘donner le commentaire à chercher :’)
Lire(com)
Pour i de 0 à Nm-1 faire
Si (sous-chaine(M[i], pos(‘#’, M[i])+1,long(M[i])) = com) alors
NumE Valeur(sous-chaines(M[i],0, pos (‘#’, M[i]) -1))
Ecrire(A[numE-1])
Fin si
Fin pour
Fin

 Sous-programmes inactifs :

Procédure Inactifs (Occ : Tab2 ; A : Tab1 ; Na : entier)


Ecrire (‘La liste de adhérents inactifs est :’)
Pour i de 0 à Na-1 faire
Si (Occ[i]=0) alors
Ecrire (A[i])
Fin si
Fin pour
Fin

TDOL

Objet Type
I Entier

65
VI. Les méthodes de tri et de recherche dans un tableau
 Les algorithmes de tri :
Le tri d’un tableau consiste à réordonner ses éléments dans l’ordre croissant ou décroissant. On
distingue plusieurs méthodes de tri (sélection, bulles, insertion, Shell…). La plupart des
algorithmes de tri sont basés sur deux opérations essentielles : La comparaison et l’échange
(permutation).

A. Tri par sélection :


Cette méthode de tri consiste à :
1. Se pointer à la 1 ère case du tableau T et de parcourir la totalité du tableau pour repérer
l’indice de la première position du minimum,
2. Comparer ce minimum avec T [1]. S’ils sont différents on les permute,
3. Le sous tableau de T allant de 2 à n est à priori non trié, on applique l’étape 1 et 2 et ainsi de
suite jusqu’à l’avant dernier élément (n-1).

Exemple :
Soit un tableau T contenant les dix éléments suivants :

Etape 1 :
Parcourir la totalité du tableau pour repérer le minimum (indice de la première position du
minimum) et le comparer avec T [1]

On obtient :

66
Le sous tableau allant de 2 à n est à priori non trié, on applique l’étape 1 et 2 et ainsi de suite
jusqu’à l’avant dernier élément (n-1).
Etape 2 :

On obtient :

Etape3 :

On obtient :

67
Etape 4 :

On obtient :

Etape 5 :

On obtient :

68
Etape 6 :

On obtient :

Etape 7 :

On obtient :

Etape 8 :

69
On obtient :

Etape 9 :

On obtient :

Remarque :
On est arrivé à l’élément numéro n-1, alors arrêt du traitement. Nous n’avons pas besoin de
traiter le dernier élément, puisque si les neuf premiers éléments sont triés alors
automatiquement le dernier sera le plus grand et par conséquent il se trouve à la bonne position.

Sous-programme tri sélection :

Procédure tri_sélection (@T : Tab ; n : entier)


Début
Pour i de 0 à n-2 faire
Posmini
Pour j de (i+1) à n-1 faire
Si T[Posmin]>T[j] alors
Posminj
Fin si
Fin pour
VideT[i]
T[i]T[Posmin]

70
T[Posmin]vide
Fin pour
Fin

En python :

B. Tri à bulle :
Cette méthode de tri consiste à :
1. Comparer les éléments du tableau T deux à deux,
2. Permuter les contenus lorsque l’ordre n’est pas respecté,
3. Refaire les actions 1 et 2 et ainsi de suite jusqu’à avoir finalement un tableau trié.

Exemple :
Soit un tableau T contenant les dix éléments suivants :

Soit une variable booléenne test initialisée à vrai et qui devienne faux à chaque permutation.

71
 Puisqu’on a atteint la fin du tableau et le contenu de la variable test est Faux, alors on
doit recommencer un nouveau passage et ainsi de suite jusqu'à ce qu’on fasse un
passage complet du tableau sans modifier le contenu de test (Vrai).

72
Sous-programme tri à bulle :

Procédure tri_bulle (@T : Tab ; n : entier)


Début
Répéter
Tri=vrai
Pour i de 0 à n-2 faire
Si T[i]>T[i+1] alors
Vide T[i]
T[i]T[i+1]
T[i+1]vide
Tri faux
Fin si
Fin pour
Jusqu’à (Tri = vrai)
Fin

En python :

C. Tri par insertion :


Soit T un tableau de taille n. On considère que le tableau trié initiale est le tableau constitué du
seul élément T[1]. On insère ensuite l’élément T[2] puis T[3] et ainsi de suite. Lorsque les (k
– 1) premiers éléments du tableau sont triés, il suffit pour insérer le kième élément de parcourir

73
le tableau [T[1], T[2], …, T[k]] de droite à gauche (ordre décroissant) et d’échanger notre
élément avec les éléments rencontrés tant que ceux-ci sont plus grands.
Exemple : On considère le tableau T, non trié, ci-dessous :

Etape 1 :

On a 3 < 5 : on échange donc 3 et 5 et le tableau devient.

Etape 2 :
On a 1 < 5 : on échange donc 1 et 5 et le tableau devient.

On a 1 < 3 : on échange donc 1 et 3 et le tableau devient.

Etape 3 :
On a 2< 5 : on échange donc 2 et 5 et le tableau devient.

On a 2< 5 : on échange donc 2 et 5 et le tableau devient.

74
On a 1 < 2 : Fin de l’insertion.
Etape 4 :

On a 4< 5 : on échange donc 4 et 5 et le tableau devient.

On a 4< 5 : on échange donc 4 et 5 et le tableau devient.

Tri en algorithme :

Procédure tri_sélection (@T :tab ; n : entier)

Début
Pour i de 1 à n-1 faire

75
VideT[i]
ji-1
Tantque (j>= 0) et T[j]>vide faire
T[j+1]T[j]
jj-1
Fin Tantque
T[j+1]T[i]
Fin pour
Fin

En python :

 Les algorithmes de recherche :


Recherche séquentielle dans une structure non triée :
En algorithme :

76
Fonction recherche_séq (T : Tab ; n : entier ; v : entier) : booléen
Début
i0
TrouveFaux
Tantque (i<n) et (Trouve=Faux) faire
Si T[i]=v alors
TrouveVrai
Fin si
ii+1
Fin Tantque
Retourner (Trouve)
Fin

En python :

Recherche dichotomique dans une structure triée :


En algorithme :

Fonction recherche_dicho (T : Tab ; n : entier ; v : entier) : booléen


Début

77
d0
fn-1
Tanque (d<f) et (Trouve = False) faire
m(d+f)/2
Si T[m]<v alors
dm+1
sinon si T[m]>v alors
fm-1
sinon
TrouveVrai
Fin si
Fin Tantque
Retourner (Trouve)
Fin

En python :

78
79
VII.

80

Vous aimerez peut-être aussi