Algorithme Et Programmation en Python
Algorithme Et Programmation en Python
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.
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 :
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
6
Correction En python :
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 :
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
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 :
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
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 :
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
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)
nomsous-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 :
16
Enfin, pour traduire x ∈ ] [ − ∞,0 ∪[1,−2[[on écrit : (x < 0) OU ((x >= 1) ET (x < 2)).
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é
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
c2CHR (ORD (c1) – 32)
Sinon
c2 c1
Fin Si
Ecrire (c2)
Fin inconnue
Exercice :
Ecrire un programme qui permet de vérifier la parité d'un entier (utilisant la forme
alternative).
Correction en python :
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
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 :
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)
F1
Pour i de 1 à n faire
FF*i
Fin Pour
Ecrire (‘la factorielle de ’, n, ‘est :’, F)
Fin Factorielle
Correction en python :
24
Le nombre des voyelles = 13
Le nombre des consonnes = 17
Correction python :
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 :
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
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.
Correction en python :
31
Correction en python :
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.
Type
Nom_de_type =tableau de taille de type
Objet Type
Nom_de_tableau Nom_de_type
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 :
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.
Il est possible d’ajouter des éléments à la fin d’une liste avec la fonction append().
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 :
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
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
42
Exécution :
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
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
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
…
…
…
……
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).
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 :
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 :
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 :
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
Objet Type
I Entier
54
Fonction vérif (D :tab ; n : entier) : booléen
Début
ValideVrai
Pour i de 2 à n-1 (pas +2) faire
Si D[i-1] # D[i] alors
Validefaux
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
Sous-programme séquences :
répéter
ji
ch’(‘ +convch(T[j])
57
Tantque j<n-1 et T[j+1]>T[j] faire
Carc conch(T[j+1])
Chch+’,’+carc
jj+1
Fin Tantque
Ecrire(ch)
ij
ii+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
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
Sous-programme saisie :
62
Sous-programme remplir :
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
j0
Testfaux
Répéter
jj+1
Jusqu’a ((T[j]=ch) ou (j=indice))
Si T[j] = ch alors
TestVrai
Fin si
Retourner (Test)
Fin
Objet Type
T Tab1
N Entier
I Entier
Existe Fonction
Ch Chaine
Test Booléen
j, indice Entier
63
Sous-programme remplir_com :
TDOL
Objet Type
I Entier
Message Chaine
Num Entier
64
Sous-programme Rechercher :
Sous-programmes inactifs :
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).
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.
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 :
En python :
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 :
Etape 2 :
On a 1 < 5 : on échange donc 1 et 5 et le tableau devient.
Etape 3 :
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 :
Tri en algorithme :
Début
Pour i de 1 à n-1 faire
75
VideT[i]
ji-1
Tantque (j>= 0) et T[j]>vide faire
T[j+1]T[j]
jj-1
Fin Tantque
T[j+1]T[i]
Fin pour
Fin
En python :
76
Fonction recherche_séq (T : Tab ; n : entier ; v : entier) : booléen
Début
i0
TrouveFaux
Tantque (i<n) et (Trouve=Faux) faire
Si T[i]=v alors
TrouveVrai
Fin si
ii+1
Fin Tantque
Retourner (Trouve)
Fin
En python :
77
d0
fn-1
Tanque (d<f) et (Trouve = False) faire
m(d+f)/2
Si T[m]<v alors
dm+1
sinon si T[m]>v alors
fm-1
sinon
TrouveVrai
Fin si
Fin Tantque
Retourner (Trouve)
Fin
En python :
78
79
VII.
80