0% ont trouvé ce document utile (0 vote)
41 vues550 pages

Introduction à l'Algorithmique 2

Transféré par

haytam.bihi.26
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)
41 vues550 pages

Introduction à l'Algorithmique 2

Transféré par

haytam.bihi.26
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

INTRODUCTION À L'ALGORITHMIQUE –2

SMI-3

A.U: 2022 – 2023

DÉPARTEMENT INFORMATIQUE

Pr. Redouan Lahmyed ALGORITHMIQUE 2 1


Procédure du cours

•Présence
• Prises de notes de cours
• Diffusion de l’information:
 Responsable de la section
 facebook : Dept Info FSA
Contact: [Link]@[Link]

Pr. Redouan Lahmyed ALGORITHMIQUE 2 2


References

 Introduction à l’algorithmique. Cours et exercices. Cormen et


al. 2e édition. (EN 3rd Edition)

 Algorithms, FOURTH EDITION, Robert Sedgewick and Kevin


Wayne. Princeton University.

• Algorithmique Raisonner pour concevoir. Christophe HARO.


• Éléments d'algorithmique. D. Beauquier et al.
• Informatique pour tous. P. Chatel.
• Algorithmique, M. El Marraki.

• [Link]

Pr. Redouan Lahmyed ALGORITHMIQUE 2 3


Sommaire

• Rappel
• Tableaux (statiques et dynamiques)
• Pointeurs
• Fonctions et procédures
• La récursivité
• Fichiers, Enregistrements et Structures
• Notions sur des structures de données élementaires
• La complexité
• Preuves d’algorithmes
• Tas et tri par tas ,
• Compression de données

Pr. Redouan Lahmyed ALGORITHMIQUE 2 4


C’est Quoi un Algorithme ?
 Le mot algorithme vient du nom du mathématicien arabe "Al-Khwârizmî“.

Définition 01
• Un algorithme représente une séquence
d’instructions (Actions), logiquement ordonnées, qui
permet de résoudre un problème donné.

Algorithme Problème à
Résoudre
 d’actions (instructions) Résoudre

Pr. Redouan Lahmyed ALGORITHMIQUE 2 5


Analyse et Résolution d’un Problème

Problème Analyser et Etudier le problème à Résoudre

Spécifier le modèle de Résolution : données et les


Modèle
formules mathématiques

Algorithme Écrire l’algorithme

Traduire l’algorithme à un programme


Programme

Exécuter le programme par un ordinateur afin d’obtenir


Résultats
des résultats

Pr. Redouan Lahmyed ALGORITHMIQUE 2 6


Structure D’un Algorithme
Entête
Permet d’identifier l’algorithme avec un nom unique
(Identificateur)
Algorithme
 de Données +  d’instruction Déclarations
On déclare toutes les données (Variables et
Constantes)

Corps (Instructions)
La partie des instructions (Entrées, Traitement et
Sorties)

Modèle d’écriture d’un Algorithme


Algorithme <Ident_Algo>
<Déclarations>
Début
<Instructions>
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 7
Déclaration des variables

Pr. Redouan Lahmyed ALGORITHMIQUE 2 8


Déclaration des variables

• Une variable est caractérisée par :


 Un identificateur (Identif) : qui sert à la désigner
 Un type : définit la nature de l’information qui sera représentée dans la
variable (numériques, caractères…)
 Une valeur : à un instant donné, une variable ne peut contenir qu’une
seule valeur
• La déclaration d’une variable se fait comme suit :
VARIABLE Identif : TYPE
ou
VARIABLES Identif1, Identif2,… : TYPE

Remarques
Les variables doivent être déclarées avant d’être utilisées

Pr. Redouan Lahmyed ALGORITHMIQUE 2 9


Déclaration des variables
Concept d’Identificateur
• Chaque donnée (Variable ou constante) manipulée par un
algorithme est désignées par un nom unique :
IDENTIFICATEUR.
• Identificateur : c’est une chaîne de caractères
alphanumérique (contenant uniquement des caractères
alphabétiques [a-z, A-Z] et numériques [0-9]) en plus du
caractère « _ » (Trait souligné) et qui ne commence pas par
un caractère numérique.

Remarques
 Un identificateur est affecté à un seul objet. On peut jamais utiliser le même identificateur pour deux
variables ou constantes différentes.
 Doit commencer par une lettre alphabétique
 Doit être différent des mots réservés du langage (par exemple en C: int, float, long, else, for, if,
return, …)
 La longueur du nom doit être inférieure à la taille maximale spécifiée par le langage utilisé

Pr. Redouan Lahmyed ALGORITHMIQUE 2 10


Déclaration des variables
Exemple
 Parmi les identificateurs suivants, indiquer ceux qui sont
valides et ceux qui ne le sont pas ?
12x ; Prix Unitaire ; Hauteur-Mur ; a1 ; a?b ;

Pr. Redouan Lahmyed ALGORITHMIQUE 2 11


Déclaration des variables
Exemple
 Parmi les identificateurs suivants, indiquer ceux qui sont
valides et ceux qui ne le sont pas ?
12x ; Prix Unitaire ; Hauteur-Mur ; a1 ; a?b ;

Réponse
• 12x : n’est valide, puisqu’il commence par un caractère numérique.
Doit être : x12
• Prix Unitaire : n’est pas valide, puisqu’il contient un espace. Doit
être : PrixUnitaire ou Prix_Unitaire.
• Hauteur-Mur : n’est pas valide, puisque il contient le signe « -
»(moins). Doit être : Hauteur_Mur.
• a1 : est valide
• a?b : n’est pas valide, puisqu’il contient le caractère « ? ». Doit être
: ab.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 12


Déclaration des variables
Le type d’une variable permet de :

Définir l’ensemble de valeurs que peut prendre la


variable
Fixer la taille, en cases mémoires (octets), de la variable
Définir la nature des opérations autorisées sur la variable

Les types utilisés en langage algorithmique sont :

Type Entier pour représenter les entiers positifs ou négatifs (1, 2,


0, -5…).
Type Réel pour représenter les nombres à virgule (0.5, 2.11, -8.10
…).
Type Caractère pour représenter des caractères (‘a’, ‘A’, ‘b’, ‘B’, …).
Type Chaîne pour représenter des phrases ("FSA", "SMI",
"AGADIR", …).
Type logique (Booléen) pour représenter les valeurs de vérité de
la logique ("Vrai", "Faux").

Pr. Redouan Lahmyed ALGORITHMIQUE 2 13


Déclaration des variables
Exercice:
Donnez le type des données suivantes:

Donnée Type
“ Bienvenue au Maroc ”

-300

“8”

25.68

“@”

Vrai

“Faux”

Pr. Redouan Lahmyed ALGORITHMIQUE 2 14


Déclaration des variables
Exercice:
Donnez le type des données suivantes:

Donnée Type
“ Bienvenue au Maroc ” Chaine de caractères

-300 Entier

“8” Chaine de caractères

25.68 Réel

“@” Chaine de caractères

Vrai Booléen

“Faux” Chaine de caractères

Pr. Redouan Lahmyed ALGORITHMIQUE 2 15


Déclaration des constantes

 Variable: Une donnée dont le contenu peut être modifié par une action durant
l'éxécution d'un algorithme.

 Constante: Une donnée fixe qui ne varie pas durant l'éxécution d'un algorithme.

Syntaxe:
Constante NOM_DE_LA_CONSTANTE = Valeur

Exemple:
Constante PI = 3.14
Constante Nbr_Mois = 12

Pr. Redouan Lahmyed ALGORITHMIQUE 2 16


Les istructions élémentaires

Affectation
Entrées / Sorties (Lire-Ecrire)
Opérateurs arithmétiques (binaires & unaires)
Opérateurs Booléens
Opérateurs relationnels (de comparaison)
Opérateurs sur les chaînes

Pr. Redouan Lahmyed ALGORITHMIQUE 2 17


Affectation

 L'affectation permet d'affecter (attribuer) une valeur à une variable

 Elle est symbolisée en algorithmque par “←”


Expression peut être soit:
Syntaxe:  Identificateur
Variable ← Valeur  Constante
Variable ← Expression
 Expression arithmétique
 Expression logique

Exemple:

A←2 la variable A reçoit la valeur 2


B←A La variable B reçoit le contenu de A
C ← A+B La variable C reçoit le résultat de A plus B
Nom ← "Ali" La variable Nom reçoit la valeur “Ali”

Pr. Redouan Lahmyed ALGORITHMIQUE 2 18


Affectation
Exercice: Déclaration et affectation
Soient trois variables A, B et C tels que:

A est de type entier


B est de type chaine de caractères
C est type logique

1- Cochez ce qui est juste : ?

A←8 B ← "12/09/2022 "

A ← "FSA" C ← 10

B←3 C ← 2<5

B←A C ← 1> -22

Pr. Redouan Lahmyed ALGORITHMIQUE 2 19


Affectation
Exercice: Déclaration et affectation
Soient trois variables A, B et C tels que:

A est de type entier


B est de type chaine de caractères
C est type logique

1- Cochez ce qui est juste : ?

A←8 B ← "12/09/2022 "

A ← "FSA" C ← 10

B←3 C ← 2<5

B←A C ← 1> -22

Pr. Redouan Lahmyed ALGORITHMIQUE 2 20


Affectation
Exercice: Complétez le tableau suivant

Variables
Instructions A B C D

B←2

C ← B +10

A←4

D←A

B← B * D

Pr. Redouan Lahmyed ALGORITHMIQUE 2 21


Affectation
Exercice: Complétez le tableau suivant

Variables
Instructions A B C D

B←2 2

C ← B +10 2 12

A←4 4 2 12

D←A 4 2 12 4

B← B * D 4 8 12 4

Pr. Redouan Lahmyed ALGORITHMIQUE 2 22


Instruction d’écriture
 C’est l’instruction qui permet à l’algorithme d’afficher des
messages ou des résultats de calculs.

Syntaxe:
ECRIRE (Variable)
ECRIRE (" Message")
ECRIRE ("Message" ,
Variable)
De manière générale :
ECRIRE (V1 , V2 , … , Vn)

Exemples :
ECRIRE (A)
ECRIRE (" bonjour " )
ECRIRE (" le périmètre = " , P )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 23
Instruction d’écriture

Exercice: Qu'affichent les instructions suivantes:

Nom ← "Ali"

Ecrire ("Nom")
Ecrire (Nom)
Ecrire ("Nom", Nom)

Pr. Redouan Lahmyed ALGORITHMIQUE 2 24


Instruction d’écriture

Exercice: Qu'affichent les instructions suivantes:

Nom ← "Ali"
 Signifie affiché sur l'écran le message (Nom)
Ecrire ("Nom")  Signifie affiché sur l'écran le contenu de la
Ecrire (Nom) variable Nom (Ali)
Ecrire ("Nom", Nom)  Signifie affiché sur l'écran le message (Nom)
+ le contenu de la variable Nom (Nom Ali)

Pr. Redouan Lahmyed ALGORITHMIQUE 2 25


Instruction de lecture
 L'instruction Lire permet de demander à l'utilisateur de fournir
des informations. Chaque information donnée par l'utilisateur est
stockée dans une variable (attention au type !).

Syntaxe:

LIRE (Variable)

LIRE (Variable1, Variable2, …, VariableN)

Pr. Redouan Lahmyed ALGORITHMIQUE 2 26


Instruction de lecture

Exercice:
Nous voulons écrire un algorithme qui calcule l'aire d'un cercle
1- Donner les instructions de déclaration.
2- Donner les instructions qui demandent à l'utilisateur de taper les valeurs
des données.
3- Donner les instructions de traitement.
4- Donner les instructions qui permettent d'afficher le résultat.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 27


Instruction de lecture
Exercice:
Nous voulons écrire un algorithme qui calcule l'aire d'un cercle
1- Donner les instructions de déclaration.
2- Donner les instructions qui demandent à l'utilisateur de taper les valeurs
des données.
3- Donner les instructions de traitement.
4- Donner les instructions qui permettent d'afficher le résultat.

Algorithme Aire_Cercle
Variables Rayon, Surface : Réel
Constante Pi = 3.14
Début
Ecrire ("Veuillez entrer la valeur du rayon de cercle :")
Lire (Rayon)
Surface ← Rayon * Rayon * Pi
Ecrire ("L'aire de cercle est : ", Surface)
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 28


Les opérateurs arithmétiques
Les opérateurs binaires:
 Ces opérateurs sont dits binaires car ils s’utilisent avec deux
valeurs. Une avant le symbole et une après
+ Addition
- Soustraction
* Multiplication
/ Division
% Modulo (reste de la division euclidienne)
^ Puissance

Rappel:
o La division de deux entiers est un entier. 15/2=7
o Le modulo est le reste d’une division entière. 15%2=1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 29


Les opérateurs arithmétiques
Les opérateurs unaires :
 Ces opérateurs sont dits unaires car ils n’admettent qu’une seule
valeur (++ , --, ….).

Exemple:

o X++ = X+1
o ++X = X+1
o Y-- = Y-1
o --Y = Y-1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 30


Les opérateurs arithmétiques
Exercice:
Qu'affichent les instructions suivantes

Algorithme Unaire
Variables A : Entier

Début
A←1
Ecrire (++A)
Ecrire (A++)
Ecrire (A)
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 31


Les opérateurs arithmétiques
Exercice:
Qu'affichent les instructions suivantes

Algorithme Unaire
Variables A : Entier

Début
A←1 Resultat:
Ecrire (++A)
Ecrire (A++)
2
Ecrire (A)
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 32


Les opérateurs arithmétiques
Exercice:
Qu'affichent les instructions suivantes

Algorithme Unaire
Variables A : Entier

Début
A←1 Resultat:
Ecrire (++A) 2
Ecrire (A++)
Ecrire (A)
2
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 33


Les opérateurs arithmétiques
Exercice:
Qu'affichent les instructions suivantes

Algorithme Unaire
Variables A : Entier

Début
A←1 Resultat:
Ecrire (++A) 2
Ecrire (A++) 2
Ecrire (A)
Fin
3

Pr. Redouan Lahmyed ALGORITHMIQUE 2 34


Les opérateurs logiques
 Les opérateurs logiques sont : ‘NON’, ‘ET’ , ‘OU’, ‘OU exclusif’

On a les tableaux suivants : C1 C2 C1 OU C2


VRAI VRAI VRAI
C1 NON C1
VRAI FAUX VRAI
VRAI FAUX
FAUX VRAI VRAI
FAUX VRAI
FAUX FAUX FAUX

C1 C2 C1 ET C2 C1 C2 C1 OU exclusif C2
VRAI VRAI VRAI VRAI VRAI FAUX
VRAI FAUX FAUX VRAI FAUX VRAI
FAUX VRAI FAUX FAUX VRAI VRAI
FAUX FAUX FAUX FAUX FAUX FAUX

Pr. Redouan Lahmyed ALGORITHMIQUE 2 35


Les opérateurs de comparaison
Opérateur Dénomination Effet Exemple Résultat
(Pour x←3)

= Opérateur d’égalité Compare deux valeur et vérifie x=7 0


leur égalité

< Opérateur Vérifie si une valeur est


d’infériorité stricte strictement inférieure à une x<7 1
valeur
Vérifie si une valeur est
<= Opérateur d’infériorité inférieure ou égale à une x<=3 1
valeur
Vérifie si une valeur est
Opérateur de
> supériorité stricte
strictement supérieure à une x>7 0
valeur
Vérifie si une valeur est
Opérateur de
>= supériorité
supérieure ou égale à une x>=3 1
valeur
Opérateur de Vérifie si une valeur est
!= différence différente d’une autre valeur
x!=3 0

Pr. Redouan Lahmyed ALGORITHMIQUE 2 36


Les opérateurs de comparaison
Exercice:
Qu'affichent les instructions suivantes

Algorithme Comparaison
Variables A , B , C : Entier

Début
A←5
B←5
C ← 10
Ecrire (A = B)
Ecrire (A = C)

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 37


Les opérateurs de comparaison
Exercice:
Qu'affichent les instructions suivantes

Algorithme Comparaison
Variables A , B , C : Entier

Début
A←5
B←5 Resultat:
C ← 10
Ecrire (A = B)
Ecrire (A = C)
1
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 38


Les opérateurs de comparaison
Exercice:
Qu'affichent les instructions suivantes

Algorithme Comparaison
Variables A , B , C : Entier

Début
A←5
B←5 Resultat:
C ← 10
Ecrire (A = B) 1
Ecrire (A = C)
0
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 39


Les opérateurs sur les chaines

 Pour les chaînes, on utilise l’opérateur ‘&’


 Cet opérateur permet de concaténer (agglomérer) deux chaines
de caractères.

Exemples :
A ← " Faculté "
B ← " des sciences"
C←A&B
La variable C vaut : " Faculté des sciences"

Pr. Redouan Lahmyed ALGORITHMIQUE 2 40


Les opérateurs sur les chaines
Exercice:
Qu'affichent les instructions suivantes

Algorithme TXT
Variables txt1 , txt2 , txt3 , txt4 : chaine des caractères

Début
txt1 ← "FSA"
txt2 ← " SMI"
txt3 ← "FSA SMI3"
txt4 ← txt1 & txt2
Ecrire (" txt1 ")
Ecrire (txt4 != txt3)

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 41


Structures élémentaires

Structures élémentaires:
 Structures conditionnelles
 Simple : Si ... Alors ... Fin Si
 Alternative : Si ... Alors ... Sinon ... Fin Si
 Alternative SI imbriquée (plus de deux choix)
 à choix multiples : Selon

 Structures répétitives
 Les boucles Pour
 Les boucles Tant que
 Les boucles répéter... jusqu’à

Pr. Redouan Lahmyed ALGORITHMIQUE 2 42


Structures élémentaires

Structures de contrôle
conditionnelles

Pr. Redouan Lahmyed ALGORITHMIQUE 2 43


Structure conditionnelle simple (choix)

Syntaxe:

SI (condition) Alors
Instructions
FINSI

Si la condition vaut Vrai alors le bloc d'instructions sera exécuté, si non il sera ignoré

Pr. Redouan Lahmyed ALGORITHMIQUE 2 44


Structure conditionnelle simple (choix)
Exemple:

Algorithme Factoriele
Variables F , n , i : Entier

Début
Ecrire (" Veuillez entrer le dividende")
Lire (A)
Ecrire (" Veuillez entrer le diviseur")
Lire (B)
Si B != 0 Alors
Ecrire (" Le résultat est : " , A / B)
Fin Si

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 45


Structure conditionnelle simple (choix)

Exercice:
Ecrire un algorithme qui permet de calculer le maximum de deux nombres
réels saisies par l'utilisateur.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 46


Structure conditionnelle simple (choix)
Exercice:
Ecrire un algorithme qui permet de calculer le maximum de deux nombres réels
saisies par l'utilisateur.

Algorithme Maximum
Variables A , B , Max : Réel

Début
Ecrire (" Entrez les valeurs de A et de B.")
Lire (A , B)
Max ← A
Si Max < B Alors
Max ← B
Fin Si
Ecrire (" la valeur maximale est : " , Max)
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 47


Structure conditionnelle - Structure alternative
(deux choix)

Syntaxe:
Non Condition Oui
SI (Condition) ALORS
bloc 1 d'instructions vérifiée
SINON
bloc 2 d'instructions
Séquence 22
Instructions Instructions
Séquence1 1
FINSI

Si la condition vaut Vrai alors le bloc d'instructions1 sera exécuté, et le bloc


d'instructions2 sera ignoré, sinon le bloc d'instructions2 sera exécuté et le bloc
d'instructions1 sera ignore.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 48


Structure conditionnelle - Structure alternative
(deux choix)
Algorithme division
Variables A , B : Réel

Début
Ecrire (" Veuillez entrer le dividende")
Lire (A)
Ecrire (" Veuillez entrer le diviseur")
Lire (B)
Si B != 0 Alors
Ecrire (" Le résultat est : " , A / B)
Sinon
Ecrire (" La division par 0 est impossible " )

Fin Si

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 49


Structure conditionnelle - Structure alternative
(deux choix)

Exercice:
Ecrire un algorithme qui permet de demander un nombre entier à
l'utilisateur, et l'informe ensuite si ce nombre est pair ou impair.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 50


Structure conditionnelle - Structure alternative
(deux choix)
Exercice:
Ecrire un algorithme qui permet de demander un nombre entier à
l'utilisateur, et l'informe ensuite si ce nombre est pair ou impair.
Algorithme Pair_Impair
Variables A : Entier

Début
Ecrire (" Programme qui détermine la nature d'un nombre : ")
Ecrire (" Veuillez entrer le nombre")
Lire (A)

Si (A % 2 =0) Alors
Ecrire (" Le nombre est pair ")
Sinon
Ecrire (" Le nombre est impair ")
Fin Si
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 51


Structure conditionnelle - Structure alternative
imbriquée (multiple choix)
Syntaxe:

Si (condition1) alors
instructionsA

Sinon
Si (condition2) alors
instructionsB
Sinon
instructionsC
Finsi
Finsi

Pr. Redouan Lahmyed ALGORITHMIQUE 2 52


Structure conditionnelle - Structure alternative
imbriquée (multiple choix)

Exemple:
Ecrire un algorithme qui permet de demander un nombre entier à l'utilisateur, et
l'informe ensuite si ce nombre est positif ou négatif.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 53


Structure conditionnelle - Structure alternative
imbriquée (multiple choix)
Algorithme nature_Nombre
Variables A : Entier

Début
Ecrire (" Programme qui détermine la nature d'un nombre : ")
Ecrire (" Veuillez entrer le nombre")
Lire (A)
Si A > 0 Alors
Ecrire (" Le nombre est positif ")
Sinon
Si A < 0 Alors
Ecrire (" Le nombre est negatif ")
Sinon
Ecrire (" Le nombre est nul ")
Fin Si

Fin Si
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 54
Structure conditionnelle - Structure alternative
imbriquée (multiple choix)

Exercice:
Ecrire un algorithme qui permet de demander un nombre entier entre 0 et 2 à
l'utilisateur, et affiche leur nom.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 55


Structure conditionnelle - Structure alternative
imbriquée (multiple choix)
Algorithme Nom_chiffre
Variables A : Entier
Début
Ecrire ("Donnez votre chiffre entre 0 et 2")
Lire (A)
Si A = 0 Alors
Ecrire (" Zéro")
Sinon
Si A = 1 Alors
Ecrire (" Un ")
Sinon
Si A = 2 Alors
Ecrire (" Deux ")
Sinon
Ecrire (" Erreur de la saisie ")
Fin Si
Fin Si
Fin Si
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 56
Structure à choix multiples : Selon
 Lorsque l'imbrication des alternatives devient importante, l'utilisation de la structure à
choix multiple devient nécessaire.

Syntaxe:
variable
Selon (variable)
Cas val_1 : inst_1
Cas val_2 : inst_2 val_1 val_2 val_n Sinon
... inst_1 inst_2 .... inst_n inst_d
Cas val_n : inst_n
Sinon : inst_d
FinSelon

Pr. Redouan Lahmyed ALGORITHMIQUE 2 57


Structure à choix multiples : Selon

Algorithme Nom_chiffre
Variables n : Entier

Début
Ecrire ("Donnez votre chiffre entre 0 et 2")
Lire (n)

Selon (n)

Cas 0 : Ecrire (" Zéro")


Cas 1 : Ecrire ("Un")
Cas 2 : Ecrire ("Deux")
Sinon : Ecrire ("erreur de la saisie")

Fin Selon

Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 58
Structures élémentaires

Les structures itératives

Pr. Redouan Lahmyed ALGORITHMIQUE 2 59


La boucle Pour
 Utilisée lorsqu’on connait d’avance le nombre de Début de la
Boucle Pour
répétitions.

 Syntaxe : Cpt← Val_initial

Pour Cpt=val_initial à val_final Pas de pas


Faux
Bloc d’instructions Cpt <= Val_final
FinPour
Vrai

instructions

Cpt← Cpt+Pas

Pr. Redouan Lahmyed ALGORITHMIQUE 2 60


La boucle Pour
Exemple:
Ecrire un algorithme qui reçoit en entrée un nombre entier de 1 à 10 et affiche en
sortie la table de multiplication de ce nombre.

Algorithme Table_Multiplication
Variables N , i : Entier

Début
Ecrire (" Saisir un nombre entier")
Lire (N)

Pour i =1 à 10 Pas de 1

Ecrire (i , "x ", N ," = ", i * N)

FinPour

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 61


La boucle Tant que
 Utilisée lorsqu’on ne connait d’avance le nombre de Début de la
répétitions. Boucle Tant que
 Syntaxe :

Faux
Tant que (Condition) Condition
Bloc d’instructions
Vrai
FinTantque
instructions
 La condition est évaluée avant chaque itération;
 Si la condition est vraie, on exécute le bloc
d’instructions puis, on retourne pour re-tester la condition.
Si elle est vraie, on ré-exécute le bloc d’instructions et ainsi de suite;
 Si la condition est fausse, on sort de la boucle sans exécuter le bloc d’instructions.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 62


La boucle Tant que
Exemple:

Problème calcul de S = 1+2+3+…+100.

Algorithme Somme
Variables Somme , i : Entier

Début
i←0
S←0
Tant que ( i <= 100 )
Somme ← Somme + i
i←i+1
FinTantque

Ecrire ("La somme est ", Somme)

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 63


La boucle Répéter…jusqu’à
 Utilisée lorsqu’on ne connait d’avance le nombre de Début de la Boucle
Répéter…jusqu’à
répétitions.
 Syntaxe :
instructions
Répéter
Bloc d’instructions
Vrai
Jusqu’à (Condition) Condition

 Le bloc d’instructions est exécuté;


Faux

 Ensuite la condition est évaluée;


 Si la condition est vraie, on sort de la boucle, sinon si elle
 est fausse on ré-exécute le bloc d’instructions, on réévalue la condition et ainsi de
suite.
Pr. Redouan Lahmyed ALGORITHMIQUE 2 64
La boucle Répéter…jusqu’à
Exemple:
Problème calcul de S = somme de N entiers saisis au clavier, le dernier entier est
zéro.

Algorithme Somme_Clavier
Variables S , Val : Entier

Début
S←0
Répéter
Lire(Val)
S ← S + Val

Jusqu’à (Val != 0)

Ecrire (" La somme est : « , S )

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 65


Structures élémentaires

Les tableaux

Pr. Redouan Lahmyed ALGORITHMIQUE 2 66


Les tableaux

Définition:Un tableau est une suite d'éléments de même type. Il utilise


plusieurs cases mémoire à l'aide d'un seul nom (Identificateur).
Comme toutes les cases portent le même nom, elles se différencient
par un indice

Pr. Redouan Lahmyed ALGORITHMIQUE 2 67


Les tableaux

Tableaux

Déclarer un Accéder à un Afficher les Remplir un


Tableau Élément Éléments Tableau

Pr. Redouan Lahmyed ALGORITHMIQUE 2 68


Les tableaux
Déclaration d'un Tableau

Syntaxe: Tableau Nom_Tab[Taille] : type

Exemple: Déclaration de la variable N  Déclaration: Tableau N [500] : Réel


de l'algorithme note

Pr. Redouan Lahmyed ALGORITHMIQUE 2 69


Les tableaux
Accéder aux éléments d'un Tableau

 Syntaxe d'affectation Nom_Tab [indice] ← Valeur

 Syntaxe lecture Lire (Nom_Tab [indice])

 Syntaxe écriture Ecrire (Nom_Tab [indice])

Exemple:

Pr. Redouan Lahmyed ALGORITHMIQUE 2 70


Les tableaux
Accéder aux éléments d'un Tableau

 Syntaxe d'affectation Nom_Tab [indice] ← Valeur

 Syntaxe lecture Lire (Nom_Tab [indice])

 Syntaxe écriture Ecrire (Nom_Tab [indice])

Exemple:
Affectation de la note 14 à l'étudiant num 1 :

Pr. Redouan Lahmyed ALGORITHMIQUE 2 71


Les tableaux
Accéder aux éléments d'un Tableau

 Syntaxe d'affectation Nom_Tab [indice] ← Valeur

 Syntaxe lecture Lire (Nom_Tab [indice])

 Syntaxe écriture Ecrire (Nom_Tab [indice])

Exemple:
Affectation de la note 14 à l'étudiant num 1 : N [ 0 ] ← 14

Pr. Redouan Lahmyed ALGORITHMIQUE 2 72


Les tableaux
Accéder aux éléments d'un Tableau

 Syntaxe d'affectation Nom_Tab [indice] ← Valeur

 Syntaxe lecture Lire (Nom_Tab [indice])

 Syntaxe écriture Ecrire (Nom_Tab [indice])

Exemple:
Utilisation de la lecture pour saisir la note de
l'étudiant num 2

Pr. Redouan Lahmyed ALGORITHMIQUE 2 73


Les tableaux
Accéder aux éléments d'un Tableau

 Syntaxe d'affectation Nom_Tab [indice] ← Valeur

 Syntaxe lecture Lire (Nom_Tab [indice])

 Syntaxe écriture Ecrire (Nom_Tab [indice])

Exemple:
Utilisation de la lecture pour saisir la note de Lire (N [ 1 ])
l'étudiant num 2

Pr. Redouan Lahmyed ALGORITHMIQUE 2 74


Les tableaux
Accéder aux éléments d'un Tableau

 Syntaxe d'affectation Nom_Tab [indice] ← Valeur

 Syntaxe lecture Lire (Nom_Tab [indice])

 Syntaxe écriture Ecrire (Nom_Tab [indice])

Exemple:
Utilisation de la lecture pour saisir la note du
dernier étudiant :

Pr. Redouan Lahmyed ALGORITHMIQUE 2 75


Les tableaux
Accéder aux éléments d'un Tableau

 Syntaxe d'affectation Nom_Tab [indice] ← Valeur

 Syntaxe lecture Lire (Nom_Tab [indice])

 Syntaxe écriture Ecrire (Nom_Tab [indice])

Exemple:
Utilisation de la lecture pour saisir la note du Lire (N [ 499 ])
dernier étudiant :

Pr. Redouan Lahmyed ALGORITHMIQUE 2 76


Les tableaux
Accéder aux éléments d'un Tableau

 Syntaxe d'affectation Nom_Tab [indice] ← Valeur

 Syntaxe lecture Lire (Nom_Tab [indice])

 Syntaxe écriture Ecrire (Nom_Tab [indice])

Exemple:
Affichage de la note du dernier étudiant de la liste :

Pr. Redouan Lahmyed ALGORITHMIQUE 2 77


Les tableaux
Accéder aux éléments d'un Tableau

 Syntaxe d'affectation Nom_Tab [indice] ← Valeur

 Syntaxe lecture Lire (Nom_Tab [indice])

 Syntaxe écriture Ecrire (Nom_Tab [indice])

Exemple:
Affichage de la note du dernier étudiant de la liste : Ecrire (N [ 499 ])

Pr. Redouan Lahmyed ALGORITHMIQUE 2 78


Les tableaux
Exercice:
o Déclaration d'un tableau nommé T composé de cinq éléments entier :
o Affectation des valeurs aux éléments du tableau T :

T [0] ← 8

T [1] ← T [0] - 3
T [2] ← T [1] * T [0]

T [3] ← 20

T [4] ← T [0] + T [1] + T [2] + T [3]

Pr. Redouan Lahmyed ALGORITHMIQUE 2 79


Les tableaux
Exercice:
o Déclaration d'un tableau nommé T composé de cinq éléments entier :

Tableau T [ 5 ] : entier

Pr. Redouan Lahmyed ALGORITHMIQUE 2 80


Les tableaux
Exercice:
o Déclaration d'un tableau nommé T composé de cinq éléments entier :

Tableau T [ 5 ] : entier

Le tableau est représenté schématiquement dans la mémoire comme


suit :

Pr. Redouan Lahmyed ALGORITHMIQUE 2 81


Les tableaux
Exercice:

o Affectation des valeurs aux éléments du tableau T :

 T [0] ← 8

 T [1] ← T [0] - 3

 T [2] ← T [1] * T [0]

 T [3] ← 20

 T [4] ← T [0] + T [1] + T [2] + T [3]

Pr. Redouan Lahmyed ALGORITHMIQUE 2 82


Les tableaux
Exercice:

o Affectation des valeurs aux éléments du tableau T :

 T [0] ← 8

 T [1] ← T [0] - 3

 T [2] ← T [1] * T [0]

 T [3] ← 20

 T [4] ← T [0] + T [1] + T [2] + T [3]

Pr. Redouan Lahmyed ALGORITHMIQUE 2 83


Les tableaux
Exercice:

o Affectation des valeurs aux éléments du tableau T :

 T [0] ← 8

 T [1] ← T [0] - 3

 T [2] ← T [1] * T [0]

 T [3] ← 20

 T [4] ← T [0] + T [1] + T [2] + T [3]

Pr. Redouan Lahmyed ALGORITHMIQUE 2 84


Les tableaux
Exercice:

o Affectation des valeurs aux éléments du tableau T :

 T [0] ← 8

 T [1] ← T [0] - 3

 T [2] ← T [1] * T [0]

 T [3] ← 20

 T [4] ← T [0] + T [1] + T [2] + T [3]

Pr. Redouan Lahmyed ALGORITHMIQUE 2 85


Les tableaux
Exercice:

o Affectation des valeurs aux éléments du tableau T :

 T [0] ← 8

 T [1] ← T [0] - 3

 T [2] ← T [1] * T [0]

 T [3] ← 20

 T [4] ← T [0] + T [1] + T [2] + T [3]

Pr. Redouan Lahmyed ALGORITHMIQUE 2 86


Les tableaux
Exercice:

o Affectation des valeurs aux éléments du tableau T :

 T [0] ← 8

 T [1] ← T [0] - 3

 T [2] ← T [1] * T [0]

 T [3] ← 20

 T [4] ← T [0] + T [1] + T [2] + T [3]

Pr. Redouan Lahmyed ALGORITHMIQUE 2 87


Les tableaux
Remplir un Tableau

 Syntaxe lecture Lire (Nom_Tab [indice])


Exemple:
o Remplissage de tous les éléments du tableau T avec l'instruction "Lire"

Lire ( T [ 0 ] ) Pour i = 0 à 4 Pas de 1


Lire ( T [ 1 ] )
Lire ( T [ 2 ] ) Lire ( T [ i ] )
Lire ( T [ 3 ] )
Lire ( T [ 4 ] ) FinPour

Pr. Redouan Lahmyed ALGORITHMIQUE 2 88


Les tableaux
Afficher un Tableau

 Syntaxe d’écriture Ecrire (Nom_Tab [indice])


Exemple:
o Affichage des valeurs de tous les éléments du tableau T

Ecrire ( T [ 0 ] ) Pour i = 0 à 4 Pas de 1


Ecrire ( T [ 1 ] )
Ecrire ( T [ 2 ] ) Ecrire ( T [ i ] )
Ecrire ( T [ 3 ] )
Ecrire ( T [ 4 ] ) FinPour

Pr. Redouan Lahmyed ALGORITHMIQUE 2 89


Les tableaux

Exercice:

Écrire un algorithme qui permet de demander à l'utilisateur de


saisir les notes des étudiants (318 étudiants), puis l'algorithme calcule
et affiche la moyenne des notes.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 90


Les tableaux
Algorithme Moyenne_Notes
Variables
Tableau N [318] : Réel
M : Réel
S : Réel
i : Entier

Début
Pour i = 0 à 317 Pas de 1
Ecrire (" Donner la note de l'étudiant num “, i+1 , " : ")
Lire (N [ i ])

FinPour
S <- 0
Pour i = 0 à 317 Pas de 1

S <- S + N [ i ]

FinPour
M <- S / 318
Ecrire (" La moyenne est : “, M)
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 91


Les tableaux: Les tableaux dynamiques

Pr. Redouan Lahmyed ALGORITHMIQUE 2 92


Les tableaux: Les tableaux dynamiques

 L’utilisation d’une taille maximale peut avoir comme problèmes:


Insuffisance de l’espace mémoire réservé
Gaspillage d’espace mémoire (des cases réservées sans
être utilisées)
 Les tableaux dynamiques sont utilisés lorsqu’on ne connaît pas à
l’avance la taille :

Syntaxe: Tableau Nom_Tab[ ] : type

Pr. Redouan Lahmyed ALGORITHMIQUE 2 93


Les tableaux: Les tableaux dynamiques

déclaration d’un tableau dynamique


Tableau Notes[] : Réel
Variables nb : Entier
Début
Ecrire("Combien y a-t-il de notes à saisir ? ")
Lire(nb)
Redim Notes[nb] redimensionnement
… de la taille du
Fin tableau Notes à nb
éléments

Pr. Redouan Lahmyed ALGORITHMIQUE 2 94


Les tableaux à deux dimensions

Exercice:

Ecrire un algorithme qui permet de:


1. Remplir un tableau de N entiers.
2. Afficher le tableau.
3. Compter et éliminer les zéros à partir du tableau.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 95


Les tableaux à deux dimensions

Tableaux

Déclarer un Accéder à un Afficher les Remplir un


Tableau Élément Éléments Tableau

Pr. Redouan Lahmyed ALGORITHMIQUE 2 96


Les tableaux à deux dimensions
Déclaration d'un Tableau

Syntaxe: Tableau Nom_Tab[Lignes] [Colonnes] : type

Pr. Redouan Lahmyed ALGORITHMIQUE 2 97


Les tableaux à deux dimensions

Exemple: Déclaration du tableau notes Tableau Notes [ 5 ] [ 3 ]

Pr. Redouan Lahmyed ALGORITHMIQUE 2 98


Les tableaux à deux dimensions

Exemple: Déclaration du tableau notes Tableau Notes [ 5 ] [ 3 ]

Pr. Redouan Lahmyed ALGORITHMIQUE 2 99


Les tableaux à deux dimensions
Accéder aux éléments d'un Tableau
 Syntaxe d'affectation Nom_Tab [num_lig] [num_col] ← Valeur

Pr. Redouan Lahmyed ALGORITHMIQUE 2 100


Les tableaux à deux dimensions
Accéder aux éléments d'un Tableau
 Syntaxe d'affectation Nom_Tab [num_lig] [num_col] ← Valeur

Exemple: Affectation de la note 15 à l'étudiant


num 5 dans la matière num 2

Pr. Redouan Lahmyed ALGORITHMIQUE 2 101


Les tableaux à deux dimensions
Accéder aux éléments d'un Tableau
 Syntaxe d'affectation Nom_Tab [num_lig] [num_col] ← Valeur

Exemple: Affectation de la note 15 à l'étudiant


num 5 dans la matière num 2

Notes [4] [1] ← 15

Pr. Redouan Lahmyed ALGORITHMIQUE 2 102


Les tableaux à deux dimensions
Accéder aux éléments d'un Tableau
 Syntaxe lecture Lire (Nom_Tab [num_lig] [num_col])

Pr. Redouan Lahmyed ALGORITHMIQUE 2 103


Les tableaux à deux dimensions
Accéder aux éléments d'un Tableau
 Syntaxe lecture Lire (Nom_Tab [num_lig] [num_col])

Exemple: Utilisation de la lecture pour saisir la note


de l'étudiant num 1 dans la matière num 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 104


Les tableaux à deux dimensions
Accéder aux éléments d'un Tableau
 Syntaxe lecture Lire (Nom_Tab [num_lig] [num_col])

Exemple: Utilisation de la lecture pour saisir la note


de l'étudiant num 1 dans la matière num 1

Lire (Notes [0] [0] )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 105


Les tableaux à deux dimensions
Accéder aux éléments d'un Tableau
 Syntaxe écriture Ecrire (Nom_Tab [num_lig] [num_col])

Pr. Redouan Lahmyed ALGORITHMIQUE 2 106


Les tableaux à deux dimensions
Accéder aux éléments d'un Tableau
 Syntaxe écriture Ecrire (Nom_Tab [num_lig] [num_col])

Exemple: Affichage de la note du premier étudiant


de la liste obtenue en troisième matière

Pr. Redouan Lahmyed ALGORITHMIQUE 2 107


Les tableaux à deux dimensions
Accéder aux éléments d'un Tableau
 Syntaxe écriture Ecrire (Nom_Tab [num_lig] [num_col])

Exemple: Affichage de la note du premier étudiant


de la liste obtenue en troisième matière

Ecrire (Notes [0] [2] )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 108


Les tableaux à deux dimensions
Remplir tous les éléments

Pour i = 0 à nb_Lignes - 1 Pas de 1

Pour j = 0 à nb_Colonnes - 1 Pas de 1

Lire ( T [ i ] [ j ] )

FinPour

FinPour

Pr. Redouan Lahmyed ALGORITHMIQUE 2 109


Les tableaux à deux dimensions
Afficher tous les éléments

Pour i = 0 à nb_Lignes - 1 Pas de 1

Pour j = 0 à nb_Colonnes - 1 Pas de 1

Ecrire ( T [ i ] [ j ] )

FinPour

FinPour

Pr. Redouan Lahmyed ALGORITHMIQUE 2 110


Les tableaux à deux dimensions

Exercice:

Écrire un algorithm qui permet de demander à l'utilisateur de saisir


les notes des étudiants ( 5 étudiants ) dans chaque matière
( 3 matières), puis l'algorithme calcule et affiche la moyenne de chaque
étudiant.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 111


INTRODUCTION À L'ALGORITHMIQUE –2
SMI-3

A.U: 2022 – 2023

DÉPARTEMENT INFORMATIQUE

Pr. Redouan Lahmyed ALGORITHMIQUE 2 1


ALGORITHMIQUE – 2: LANGAGE DE
PROGRAMMATION PYTHON
SMI-SMA-2

A.U: 2023 – 2024

DÉPARTEMENT INFORMATIQUE

Pr. Redouan Lahmyed ALGORITHMIQUE 2 1


Plan de cours

 Instructions de base

 Structures conditionnelles

 Structures répétitives

Pr. Redouan Lahmyed ALGORITHMIQUE 2 2


Instructions de base – «Variables»

 Les données représentent des informations


essentielles pour l'exécution d'un programme, et
les variables sont le type de données le plus
couramment utilisé en Python.

 Une variable est une donnée dont le contenu peut


être modifié par une action pendant l'exécution
d'un programme.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 3


Instructions de base – «Variables»

 Dans les langages de programmation, une variable


est définie par :

• Entier
Nom • Réel
Variable Type • Caractère
• Chaîne de caractères
Valeur
• Booléen

Pr. Redouan Lahmyed ALGORITHMIQUE 2 4


Instructions de base – «Variables»
• Entier
Nom • Réel
Variable Type • Caractère
• Chaîne de caractères
Valeur
• Booléen

 Dans Python :

Nom
Variable
Valeur
Pr. Redouan Lahmyed ALGORITHMIQUE 2 5
Instructions de base – «Variables»
 Dans Python :
Syntaxe d'utilisation
Nom d'une variable:

Variable Nom_Variable = Valeur

Valeur

 Python est un langage dit de haut niveau, la simple


instruction A = 10 suffit pour déclarer et
initialiser la variable A.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 6


Instructions de base – «Variables»

 Exemples :
Num_Joueur = 7

Pi = 3.14

Note_Exam = 15

Filière = "SMI"

Est_Valide = True

Pr. Redouan Lahmyed ALGORITHMIQUE 2 7


Instructions de base – «Variables»
 Nommage des variables :
 Les variables peuvent être nommées en utilisant des lettres minuscules
(a à z) ou majuscules (A à Z), des chiffres (0 à 9), ou le caractère de
soulignement (_).

Mais vous devez respecter les règles suivantes:

 Le nom de variable ne doit pas commencer par un nombre.

 Évitez d'utiliser des mots réservés par Python tels que "def",
"and", "try", "print", etc.

 Python est sensible à la casse, ce qui signifie que les variables


"Var", "VAR", et "var" sont considérées comme différentes.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 8


Instructions de base – «Variables»
Affectation à plusieurs variables

 Python vous permet d'affecter des valeurs à plusieurs variables sur


une seule ligne.

 Exemples :

X , Y = 10 , 20

Prenom_1 , Prenom_2 , Prenom_3 = "Ahmed" , "ADIL" , "RACHID"

Pr. Redouan Lahmyed ALGORITHMIQUE 2 9


Instructions de base – «Variables»
 Exercice : Complétez le tableau suivant:

Variables
Instructions W X Y Z
X=4
Y = X + 14
W=4
Z=Y
X=X*W
Y=W+X
W = 10 + Y - Z
Y,Z=2,4

Pr. Redouan Lahmyed ALGORITHMIQUE 2 10


Instructions de base – «Variables»
 Exercice : Complétez le tableau suivant:

Variables
Instructions W X Y Z

X=4 4
Y = X + 14 4 18
W=4 4 4 18
Z=Y 4 4 18 18
X=X*W 4 16 18 18
Y=W+X 4 16 20 18
W = 10 + Y - Z 12 16 20 18
Y,Z=2,4 12 16 2 4

Pr. Redouan Lahmyed ALGORITHMIQUE 2 11


Instructions de base – «Lecture / Ecriture»

 print () : permet d'afficher la valeur d'une expression sur


l'écran. Une éxpression peut être :
 Texte (chaînes de caractères)
 Variable
 Valeur
 Résultat d'une opération entre plusieurs variables
 Syntaxe :

print ( " Message ..... " , Expression , Nombre , Variable , .... )

print
Pr. Redouan Lahmyed ALGORITHMIQUE 2 12
Instructions de base – «Lecture / Ecriture»

 Exemple:

 print ( " FSA AGADIR " ) : Signifie affiché sur l'écran le message suivant:
FSA AGADIR.

 print ( " X = " , X ) : Signifie affiché sur l'écran le contenu de la variable X.

 print ( " L'étudiant " , Prenom , " " , Nom ) : Signifie affiché sur l'écran
le message suivant: L'étudiant suivi du contenu des variables
Prenom et Nom avec un espace entre elles.

print
Pr. Redouan Lahmyed ALGORITHMIQUE 2 13
Instructions de base – «Lecture / Ecriture»
 input () : Permet de demander à l'utilisateur de saisir une valeur.

 Chaque valeur donnée par l'utilisateur est stockée dans une


variable.

 Syntaxe :

Nom_Variable = input ( " message de demande " )

 Exemple :
X = input ( " Saisir une valeur " )

input

Pr. Redouan Lahmyed ALGORITHMIQUE 2 14


Instructions de base – «Lecture / Ecriture»
X = input ( " Saisir une valeur " )

 Quelle que soit la valeur récuperée par print, elle sera


toujours considérée comme une valeur de type " chaînes de
caractères " .
 Pour récupérer des valeurs de types "Entier" et "Réel" :

Nom_Variable = int ( input ( " message de demande " ) )

Nom_Variable = float ( input ( " message de demande " ) )

input

Pr. Redouan Lahmyed ALGORITHMIQUE 2 15


Les expressions en Python

Expressions

 Expressions arithmétiques

 Expressions de comparaisons

 Expressions logiques

Pr. Redouan Lahmyed ALGORITHMIQUE 2 16


Expressions arithmétiques :

 Une expression arithmétique se compose de combinaisons


d'objets numériques (qu'ils soient entiers ou réels) et
d'opérateurs arithmétiques. Le résultat d'une expression
arithmétique est un nombre, et son type dépend des types
d'objets numériques inclus dans l'expression.

 Si l'expression contient des entiers, le résultat sera un entier,


tandis que si elle implique des nombres réels, le résultat sera un
nombre réel.

 Il est important de noter que, dans Python, la division de deux


entiers donne toujours un résultat de type réel, même si les
opérandes sont des entiers.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 17


Expressions arithmétiques :
 Les opérateurs arithmétiques usuels sont :

Opérateurs Signification
+ Addition
- Soustraction
* Multipication
/ Division
// Division entière
% Reste de la division entière
** Puissance

Pr. Redouan Lahmyed ALGORITHMIQUE 2 18


Expressions arithmétiques :
 Exemples :

 A = 10 / 3

 B = 10 // 3

 C = 10 % 3

 D = 10 ** 3

Pr. Redouan Lahmyed ALGORITHMIQUE 2 19


Expressions arithmétiques :
 Exemples :

10 3
 A = 10 / 3
3.3333

10 3
 B = 10 // 3
3

10 3
 C = 10 % 3
1 3

3
 D = 10 ** 3 10 = 1000

Pr. Redouan Lahmyed ALGORITHMIQUE 2 20


Expressions arithmétiques :
 Les opérateurs arithmétiques composés :

Opérateur Opération normale Opération


composée
+= X=X+Y X += Y
-= X=X-Y X -= Y
*= X=X*Y X *= Y
/= X=X/Y X /= Y
%= X=X%Y X %= Y
//= X = X // Y X //= Y
**= X = X ** Y X **= Y

Pr. Redouan Lahmyed ALGORITHMIQUE 2 21


Expressions arithmétiques :
 Exercice :

Instruction W X Y Z
W=3+6
X=W%6
Y=W*X
Z = X ** 2
W -= Z
W +=Y
Y //= W
Y = (W / Z) + X

Pr. Redouan Lahmyed ALGORITHMIQUE 2 22


Expressions arithmétiques :
 Exercice :

Instruction W X Y Z
W=3+6 9
X=W%6 9 3
Y=W*X 9 3 27
Z = X ** 2 9 3 27 9
W -= Z 0 3 27 9
W +=Y 27 3 27 9
Y //= W 27 3 1 9
Y = (W / Z) + X 27 3 6 9

Pr. Redouan Lahmyed ALGORITHMIQUE 2 23


Expression de comparaison :

 Une expression de comparaison produit un résultat booléen, qui


peut être Vrai ou Faux. Les opérateurs de comparaison
couramment utilisés en Python sont les suivants :

<, ==, >, <=, >=, !=.


• < : inférieur à
• == : égal à
• > : supérieur à
• <= : inférieur ou égal à
• >= : supérieur ou égal à
• != : différent de

 Ces opérateurs permettent de comparer des valeurs et de générer


des résultats logiques basés sur ces comparaisons.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 24


Expression de comparaison :
 Exercice : Donner la valeur de la variable X (Booléenne) après
chaque instruction

Instruction Résultat
X=2<8
X = 3 != 7
X = 4 >= 11
X = (12 % 5) <= (5 // 5)

Pr. Redouan Lahmyed ALGORITHMIQUE 2 25


Expression de comparaison :
 Exercice : Donner la valeur de la variable X (Booléenne) après
chaque instruction

Instruction Résultat
X=2<8 True
X = 3 != 7 True
X = 4 >= 11 False
X = (12 % 5) <= (5 // 5) False

Pr. Redouan Lahmyed ALGORITHMIQUE 2 26


Expression logique :

 Une expression logique est formée en combinant des


expressions de comparaisons à l'aide des opérateurs
logiques.

 Une expression logique produit un résultat booléen,


c'est-à-dire vrai ou faux.

 Python met à disposition trois opérateurs logiques :


"et" (représenté par "and"), "ou" (représenté par "or"),
et "non" (représenté par "not").

Pr. Redouan Lahmyed ALGORITHMIQUE 2 27


Expression logique :
 Le tableau ci-dessous présente les différentes valeurs
de vérité obtenues en combinant les valeurs de deux
variables booléennes, X et Y, à l'aide des opérateurs
logiques.

X Y X and Y X or Y not X
True True True True False
True False False True False
False True False True True
False False False False True

Pr. Redouan Lahmyed ALGORITHMIQUE 2 28


Expression logique :
 Exercice: Quelle sera la valeur de chaque variable
logique (A,B et C) dans chacun des cas suivants:

Instruction Résultat
X= 5
Y = 10
A = (X >= 5) and ( Y != 7)
B = ( Y == 10) or (X + Y < 4)
C = not A
D = C or ( A or B)

Pr. Redouan Lahmyed ALGORITHMIQUE 2 29


Expression logique :
 Exercice: Quelle sera la valeur de chaque variable
logique (A,B et C) dans chacun des cas suivants:

Instruction Résultat
X= 5 5
Y = 10 10
A = (X >= 5) and ( Y != 7) True
B = ( Y == 10) or (X + Y < 4) True
C = not A False
D = C or ( A or B) True

Pr. Redouan Lahmyed ALGORITHMIQUE 2 30


Structures Conditionnelles :

 Définition: La structure conditionnelle est une


structure dont les instructions sont exécutées selon
les réponses des conditions.

1- Structure conditionnelle simple (un choix)


2- Structure alternative (deux choix)
3- Structure à multiple choix
4- Structure imbriquée

Pr. Redouan Lahmyed ALGORITHMIQUE 2 31


Structures Conditionnelles :

 1. Structure conditionnelle simple (un choix)

 Syntaxe: if Condition :
Instruction_1
Instruction_2
Instruction_3
......

Instructions_suivantes

Pr. Redouan Lahmyed ALGORITHMIQUE 2 32


Structures Conditionnelles :

 1. Structure conditionnelle simple (un choix)

Identation

 Syntaxe: if Condition :
Instruction_1
Instruction_2
Instruction_3
......

Instructions_suivantes

Pr. Redouan Lahmyed ALGORITHMIQUE 2 33


Structures Conditionnelles :

Identation

Pr. Redouan Lahmyed ALGORITHMIQUE 2 34


Structures Conditionnelles :

 1. Structure conditionnelle simple (un choix)

 Syntaxe: if Condition :
Instruction_1
Instruction_2
Instruction_3
......

Instructions_suivantes

Pr. Redouan Lahmyed ALGORITHMIQUE 2 35


Structures Conditionnelles :

 1. Structure conditionnelle simple (un choix)

X = float ( input ( " Veuillez saisir le dividende : " ) )

Y = float ( input ( " Veuillez saisir le dividende : " ) )

if Y != 0 :
print ( " Le résultat est : " , X / Y )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 36


Structures Conditionnelles :

 1. Structure conditionnelle simple (un choix)


 Exercie: Ecrire un programme qui permet de calculer le
maximum de deux nombres réels saisies par l'utilisateur.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 37


Structures Conditionnelles :

 1. Structure conditionnelle simple (un choix)


 Exercie: Ecrire un programme qui permet de calculer le
maximum de deux nombres réels saisies par l'utilisateur.

X = float ( input ( " Veuillez saisir la valeur de X : " ) )

Y = float ( input ( " Veuillez saisir la valeur de Y : " ) )

MAX = X

if MAX < Y :
MAX = Y
print ( " Le max est : " , MAX )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 38


Structures Conditionnelles :

 2. Structure alternative (deux choix)


Non Condition Oui
vérifiée

 Syntaxe: Instructions 2 Instructions 1

if Condition :
Instructions_1
......

else :
Instructions_2
......

Instructions_suivantes

Pr. Redouan Lahmyed ALGORITHMIQUE 2 39


Structures Conditionnelles :

 2. Structure alternative (deux choix)

X = float ( input ( " Veuillez saisir le dividende : " ) )

Y = float ( input ( " Veuillez saisir le dividende : " ) )

if Y != 0 :
print ( " Le résultat est : " , X / Y )

else :
print ( " La division par 0 est impossible ")

Pr. Redouan Lahmyed ALGORITHMIQUE 2 40


Structures Conditionnelles :

 3. Structure à multiple choix


 Syntaxe:
if Condition_1 :
Instructions_1
......
elif Condition_2 :
Instructions_2
......
elif Condition_3 :
Instructions_3
......
else :
Instructions_2
......

Instructions_suivantes

Pr. Redouan Lahmyed ALGORITHMIQUE 2 41


Structures Conditionnelles :

 3. Structure à multiple choix


 Exercie: Ecrire un programme qui permet de déterminer la
nature d'un nombre saisi par l'utilisateur.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 42


Structures Conditionnelles :

 3. Structure à multiple choix


 Exercie: Ecrire un programme qui permet de déterminer la
nature d'un nombre saisi par l'utilisateur.
A = float ( input ( " Veuillez saisir un nombre : " ) )

if A > 0 :
print ( " Le nombre est positif " )

elif A < 0 :
print ( " Le nombre est négatif " )

else :
print ( " Le nombre est nul " )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 43


Structures Conditionnelles :

 4. Structure imbriquée
 Exercie: Ecrire un programme qui permet de déterminer la
nature d'un nombre saisi par l'utilisateur.
A = float ( input ( " Veuillez saisir un nombre : " ) )

if A > 0 :
print ( " Le nombre est positif " )

else :
if A < 0 :
print ( " Le nombre est négatif " )
else :
print ( " Le nombre est nul " )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 44


Structures Conditionnelles :

 4. Structure imbriquée

 Syntaxe:
if Condition_1 :
Instructions_1
......
else :
if Condition_3 :
Instructions_3
......
else :
Instructions_2
......

Instructions_suivantes

Pr. Redouan Lahmyed ALGORITHMIQUE 2 45


Structures répétitive :

 Définition: Structure répétitive (Boucle) permet


d'exécuter plusieurs fois une séquence d'instructions.

 Dans une boucle, le nombre de répétitions peut


être connu, fixé à l'avance, comme il peut
dépendre d'une condition permettant l'arrêt et
la sortie de cette boucle

Pr. Redouan Lahmyed ALGORITHMIQUE 2 46


Structures répétitive :

 La boucle “for” : Cette boucle permet d'exécuter une


séquence d'instructions un nombre de fois connu et fixé à
l'avance.
 Syntaxe:

for i in Sequence :
Instructions_1
Range ()
Instructions_2
......
Range (n) Range (n , m) Range (n , m , p)
Instructions_suivantes

Pr. Redouan Lahmyed ALGORITHMIQUE 2 47


Structures répétitive :

 La boucle “while” : Cette boucle permet de répéter un bloc


d'instructions tant q'une condition est vraie.

 Syntaxe:
while Condition :
Instructions_1
Instructions_2
......

Instructions_suivantes

Pr. Redouan Lahmyed ALGORITHMIQUE 2 48


Structures répétitive :
Exemple:

Problème calcul de S = 1+2+3+…+100.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 49


Structures répétitive :
Exemple:

Problème calcul de S = 1+2+3+…+100.

Algorithme Somme
Variables S , i : Entier

Début i=0
i←0 S=0
S←0 while i <= 100 :
Tant que ( i <= 100 ) S=S+i
S←S+i i=i+1
i←i+1
FinTantque print ("La somme est ", S)

Ecrire ("La somme est ", S)

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 50


ALGORITHMIQUE – 2: POINTEURS
SMI-3

A.U: 2022 – 2023

DÉPARTEMENT INFORMATIQUE

Pr. Redouan Lahmyed ALGORITHMIQUE 2 1


Les pointeurs

 Définition

 Les pointeurs et les tableaux

 Les pointeurs et les fonctions (Passage par


valeur ET Passage par addressee)

Pr. Redouan Lahmyed ALGORITHMIQUE 2 2


Pointeurs - Définition

Définition: Un pointeur est une variable spéciale qui


peut contenir l'adresse d'une variable

A : entier Adresse 1F04 P : ^entier Adresse 1E00

A8 Nom A P  &A Nom P


valeur 8 valeur 1F04

Syntaxe: Variable Nom_Pointeur : ^Type

Pr. Redouan Lahmyed ALGORITHMIQUE 2 3


Pointeurs - Définition

Adresse 1F04 Adresse 1E00


A : entier P : ^entier
Nom P
A8 Nom A P  &A
valeur 8 valeur 1F04

 Pour acceder à la valeur d’une variable:

Addressage direct Addressage indirect


Accès au contenu d'une
Accès au contenu d'une variable, en passant par un
variable par le nom de la pointeur qui contient
variable. l'adresse de la variable,
utilisant la notation «p^»
Exemple:
Ecrire (A) Ecrire (P^)
A  A+5 P^  P^+5
Pr. Redouan Lahmyed ALGORITHMIQUE 2 4
Pointeurs

Exercice: Écrire un algorithme qui déclare une variable de


type entier et l'initialise par 15

Algorithm: Exercice
Variable X : entier
Debut
X  15
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 5


Pointeurs
Variable X : entier

X  15

Pr. Redouan Lahmyed ALGORITHMIQUE 2 6


Pointeurs
Variable X : entier

X  15

Pr. Redouan Lahmyed ALGORITHMIQUE 2 7


Pointeurs
Variable X : entier

X  15

15

Pr. Redouan Lahmyed ALGORITHMIQUE 2 8


Pointeurs
Variable X : entier
P : ^entier

X  15

15

Pr. Redouan Lahmyed ALGORITHMIQUE 2 9


Pointeurs
Variable X : entier
P : ^entier

X  15
P  &X

15

1B1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 10


Pointeurs
Variable X : entier
P : ^entier

X  15
P  &X
Ecrire ( P )
Ecrire ( P^ ) 15

1B1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 11


Pointeurs
Variable X : entier
P : ^entier

X  15
P  &X
Ecrire ( P ) Affiche l’@ 1B1
Ecrire ( P^ ) Affiche la valeur 15 15

1B1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 12


Pointeurs
Exercice: Donner les valeurs des variables après chaque instructions:

Instruction X Y Z P1 P2
Initialisation 10 20 30 - -
P1 ← &X
P2 ← &Z
P1^ ← (P2^)++
P1 ← P2
P2 ← &Y
P1^ ← P1^ - P2^
++ P2^
P1^ ← P1^ * P2^
X ← ++ P2^ * P1^
P1 ← &X
P2^ ← P1^ / P2^
Pr. Redouan Lahmyed ALGORITHMIQUE 2 13
Pointeurs
Exercice: Donner les valeurs des variables après chaque instructions:

Instruction X Y Z P1 P2
Initialisation 10 20 30 - -
P1 ← &X 10 20 30 &X -
P2 ← &Z 10 20 30 &X &Z
P1^ ← (P2^)++ 30 20 31 &X &Z
P1 ← P2 30 20 31 &Z &Z
P2 ← &Y 30 20 31 &Z &Y
P1^ ← P1^ - P2^ 30 20 11 &Z &Y
++ P2^ 30 21 11 &Z &Y
P1^ ← P1^ * P2^ 30 21 231 &Z &Y
X ← ++ P2^ * P1^ 5082 22 231 &Z &Y
P1 ← &X 5082 22 231 &X &Y
P2^ ← P1^ / P2^ 5082 231 231 &X &Y
Pr. Redouan Lahmyed ALGORITHMIQUE 2 14
Pointeur - Tableau
Exercice:
o Déclaration d'un tableau nommé Tab composé de six éléments entier :

Tableau Tab [ 6 ] : entier

Pr. Redouan Lahmyed ALGORITHMIQUE 2 15


Pointeur - Tableau
Exercice:
o Déclaration d'un tableau nommé Tab composé de six éléments entier :

Tableau Tab [ 6 ] : entier

Tab

Pr. Redouan Lahmyed ALGORITHMIQUE 2 16


Pointeur - Tableau
Exercice:
o Déclaration d'un tableau nommé Tab composé de six éléments entier :

Tableau Tab [ 6 ] : entier

Tab

Pr. Redouan Lahmyed ALGORITHMIQUE 2 17


Pointeur - Tableau
Exercice:
o Déclaration d'un tableau nommé Tab composé de six éléments entier :

Tableau Tab [ 6 ] : entier

Tab

Le nom d'un tableau représente l'adresse de


son premier élément

Pr. Redouan Lahmyed ALGORITHMIQUE 2 18


Pointeur - Tableau
Exercice:
o Déclaration d'un tableau nommé Tab composé de six éléments entier :

Tableau Tab [ 6 ] : entier

Tab

Exemple:

Ecrire ( Tab[ 0 ] )
Ecrire ( Tab )
Ecrire ( &Tab[ 0 ] )
Ecrire( Tab^ )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 19


Pointeur - Tableau
Exercice:
o Déclaration d'un tableau nommé Tab composé de six éléments entier :

Tableau Tab [ 6 ] : entier

Tab

Exemple:
Resultat:
Ecrire ( Tab [ 0 ] ) 8
Ecrire ( Tab ) 1000
Ecrire ( &Tab [ 0 ] ) 1000
Ecrire( Tab^ ) 8
Pr. Redouan Lahmyed ALGORITHMIQUE 2 20
Pointeur - Tableau

variable P : ^ entier
Tab

Pr. Redouan Lahmyed ALGORITHMIQUE 2 21


Pointeur - Tableau

variable P : ^ entier
Tab

Pr. Redouan Lahmyed ALGORITHMIQUE 2 22


Pointeur - Tableau

variable P : ^ entier
Tab
P  Tab // ou P  &Tab[0]

Pr. Redouan Lahmyed ALGORITHMIQUE 2 23


Pointeur - Tableau

variable P : ^ entier
Tab
P  Tab // ou P  &Tab[0]

Ecrire ( Tab[ 0 ] )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 24


Pointeur - Tableau

variable P : ^ entier
Tab
P  Tab // ou P  &Tab[0]

Ecrire ( Tab[ 0 ] )
Ecrire ( P^ )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 25


Pointeur - Tableau

variable P : ^ entier
Tab
P  Tab // ou P  &Tab[0]

Ecrire ( Tab[ 0 ] )
Ecrire ( P^ )
P++

Pr. Redouan Lahmyed ALGORITHMIQUE 2 26


Pointeur - Tableau

variable P : ^ entier
Tab
P  Tab // ou P  &Tab[0]

Ecrire ( Tab[ 0 ] )
Ecrire ( P^ )
P++

Pr. Redouan Lahmyed ALGORITHMIQUE 2 27


Pointeur - Tableau

variable P : ^ entier
Tab
P  Tab // ou P  &Tab[0]

Ecrire ( Tab[ 0 ] )
Ecrire ( P^ )
P++
Ecrire ( P^ )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 28


Pointeur - Tableau

variable P : ^ entier
Tab
P  Tab // ou P  &Tab[0]

Ecrire ( Tab[ 0 ] )
Ecrire ( P^ )
P++
Ecrire ( P^ )
PP+3

Pr. Redouan Lahmyed ALGORITHMIQUE 2 29


Pointeur - Tableau

variable P : ^ entier
Tab
P  Tab // ou P  &Tab[0]

Ecrire ( Tab[ 0 ] )
Ecrire ( P^ )
P++
Ecrire ( P^ )
PP+3

Pr. Redouan Lahmyed ALGORITHMIQUE 2 30


Pointeur - Tableau

variable P : ^ entier
Tab
P  Tab // ou P  &Tab[0]

Ecrire ( Tab[ 0 ] )
Ecrire ( P^ )
P++
Ecrire ( P^ )
PP+3
Ecrire ( P^ )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 31
Pointeur - Tableau

P variable P : ^ entier

P  Tab // ou P  &Tab[0]

Tab

Pr. Redouan Lahmyed ALGORITHMIQUE 2 32


Pointeur - Tableau

P variable P : ^ entier

P  Tab // ou P  &Tab[0]

Tab

Régles: Régles:

Tab : l'adresse de Tab [ 0 ] P : Pointe sur Tab [ 0 ]


Tab + i : l'adresse de Tab [ i ] P + i : Pointe sur Tab [ i ]
(Tab + i )^ : Le contenu de Tab [ i ] (P + i )^ : Le contenu de Tab [ i ]

Pr. Redouan Lahmyed ALGORITHMIQUE 2 33


Pointeur - Tableau

P variable P : ^ entier

P  Tab // ou P  &Tab[0]

Tab
Exemple:

( Tab + 1 ) ^  4
P++
( Tab + 3 ) ^  11
P^  P^ + 5
PP+2

Pr. Redouan Lahmyed ALGORITHMIQUE 2 34


Pointeur - Tableau

P variable P : ^ entier

P  Tab // ou P  &Tab[0]

Tab
Exemple:

( Tab + 1 ) ^  4
P++
( Tab + 3 ) ^  11
P^  P^ + 5
PP+2

Pr. Redouan Lahmyed ALGORITHMIQUE 2 35


Pointeur - Tableau

P variable P : ^ entier

P  Tab // ou P  &Tab[0]

Tab
Exemple:

( Tab + 1 ) ^  4
P++
( Tab + 3 ) ^  11
P^  P^ + 5
PP+2

Pr. Redouan Lahmyed ALGORITHMIQUE 2 36


Pointeur - Tableau

P variable P : ^ entier

P  Tab // ou P  &Tab[0]

Tab
Exemple:

( Tab + 1 ) ^  4
P++
( Tab + 3 ) ^  11
P^  P^ + 5
PP+2

Pr. Redouan Lahmyed ALGORITHMIQUE 2 37


Pointeur - Tableau

P variable P : ^ entier

P  Tab // ou P  &Tab[0]

Tab
Exemple:

( Tab + 1 ) ^  4
P++
( Tab + 3 ) ^  11
P^  P^ + 5
PP+2

Pr. Redouan Lahmyed ALGORITHMIQUE 2 38


Pointeur - Tableau

P variable P : ^ entier

P  Tab // ou P  &Tab[0]

Tab
Exemple:

( Tab + 1 ) ^  4
P++
( Tab + 3 ) ^  11
P^  P^ + 5
PP+2

Pr. Redouan Lahmyed ALGORITHMIQUE 2 39


Pointeur - Tableau

P variable P : ^ entier

P  Tab // ou P  &Tab[0]

Tab
Exemple:

( Tab + 1 ) ^  4
P++
( Tab + 3 ) ^  11
P^  P^ + 5
PP+2

Pr. Redouan Lahmyed ALGORITHMIQUE 2 40


Pointeur - Tableau

P variable P : ^ entier

P  Tab // ou P  &Tab[0]

Tab
Exemple:

( Tab + 1 ) ^  4
P++
( Tab + 3 ) ^  11
P^  P^ + 5
PP+2

Pr. Redouan Lahmyed ALGORITHMIQUE 2 41


Pointeur - Tableau

P variable P : ^ entier

P  Tab // ou P  &Tab[0]

Tab
Exemple:

( Tab + 1 ) ^  4
P++
( Tab + 3 ) ^  11
P^  P^ + 5
PP+2

Pr. Redouan Lahmyed ALGORITHMIQUE 2 42


Pointeur - Tableau

P variable P : ^ entier

P  Tab // ou P  &Tab[0]

Tab
Exemple:

( Tab + 1 ) ^  4
P++
( Tab + 3 ) ^  11
P^  P^ + 5
PP+2

Pr. Redouan Lahmyed ALGORITHMIQUE 2 43


Pointeur - Tableau

P variable P : ^ entier

P  Tab // ou P  &Tab[0]

Tab
Exemple:

( Tab + 1 ) ^  4
P++
( Tab + 3 ) ^  11
P^  P^ + 5
PP+2

Pr. Redouan Lahmyed ALGORITHMIQUE 2 44


Pointeur - Tableau

Résumé:
• Le nom d'un tableau représente l'adresse de son premier élément

• Si T un tableau et i un index de ses éléments, alors :

T : l'adresse de T [ 0 ]
T + i : l'adresse de T [ i ]
(T + i )^ : Le contenu de T [ i ]

Si P  T , alors
P : Pointe sur T [ 0 ]
P + i : Pointe sur T [ i ]
(P + i )^ : Le contenu de T [ i ]

Pr. Redouan Lahmyed ALGORITHMIQUE 2 45


Arithmétique des pointeurs

Toutes les opérations avec des pointeurs prennent automatiquement


en compte le type et la valeurs des objets (variables) pointés.

Décrémentation
Soustraction

Incrémentation Addition
Comparaison

Pr. Redouan Lahmyed ALGORITHMIQUE 2 46


Arithmétique des pointeurs - Incrémentation

Ptr variable Ptr : ^ entier

Ptr  T // ou Ptr  &T[0]

Ptr++

Pr. Redouan Lahmyed ALGORITHMIQUE 2 47


Arithmétique des pointeurs - Incrémentation

Ptr variable Ptr : ^ entier

Ptr  T // ou Ptr  &T[0]

Ptr++ // Equivalent à Ptr  Ptr + 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 48


Arithmétique des pointeurs - Incrémentation

Ptr variable Ptr : ^ entier

Ptr  T // ou Ptr  &T[0]

Ptr++ // Equivalent à Ptr  Ptr + 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 49


Arithmétique des pointeurs - Incrémentation

Ptr variable Ptr : ^ entier

Ptr  T // ou Ptr  &T[0]

Ptr++ // Equivalent à Ptr  Ptr + 1

Ecrire ( Ptr^)
Ecrire ( Ptr )
Ptr^ ++
Ecrire ( Ptr^)
Ecrire ( Ptr )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 50
Arithmétique des pointeurs - Incrémentation

Ptr variable Ptr : ^ entier

Ptr  T // ou Ptr  &T[0]

Ptr++ // Equivalent à Ptr  Ptr + 1

Ecrire ( Ptr^)
Ecrire ( Ptr )
Ptr^ ++
Ecrire ( Ptr^)
Ecrire ( Ptr )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 51
Arithmétique des pointeurs - Incrémentation

Ptr variable Ptr : ^ entier

Ptr  T // ou Ptr  &T[0]

Ptr++ // Equivalent à Ptr  Ptr + 1


Resultat:
Ecrire ( Ptr^) 2
Ecrire ( Ptr )
Ptr^ ++
Ecrire ( Ptr^)
Ecrire ( Ptr )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 52
Arithmétique des pointeurs - Incrémentation

Ptr variable Ptr : ^ entier

Ptr  T // ou Ptr  &T[0]

Ptr++ // Equivalent à Ptr  Ptr + 1


Resultat:
Ecrire ( Ptr^) 2
Ecrire ( Ptr )
Ptr^ ++
Ecrire ( Ptr^)
Ecrire ( Ptr )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 53
Arithmétique des pointeurs - Incrémentation

Ptr variable Ptr : ^ entier

Ptr  T // ou Ptr  &T[0]

Ptr++ // Equivalent à Ptr  Ptr + 1


Resultat:
Ecrire ( Ptr^) 2
Ecrire ( Ptr ) 1004
Ptr^ ++
Ecrire ( Ptr^)
Ecrire ( Ptr )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 54
Arithmétique des pointeurs - Incrémentation

Ptr variable Ptr : ^ entier

Ptr  T // ou Ptr  &T[0]

Ptr++ // Equivalent à Ptr  Ptr + 1


Resultat:
Ecrire ( Ptr^) 2
Ecrire ( Ptr ) 1004
Ptr^ ++
Ecrire ( Ptr^)
Ecrire ( Ptr )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 55
Arithmétique des pointeurs - Incrémentation

Ptr variable Ptr : ^ entier

Ptr  T // ou Ptr  &T[0]

Ptr++ // Equivalent à Ptr  Ptr + 1


Resultat:
Ecrire ( Ptr^) 2
Ecrire ( Ptr ) 1004
Ptr^ ++
Ecrire ( Ptr^)
Ecrire ( Ptr )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 56
Arithmétique des pointeurs - Incrémentation

Ptr variable Ptr : ^ entier

Ptr  T // ou Ptr  &T[0]

Ptr++ // Equivalent à Ptr  Ptr + 1


Resultat:
Ecrire ( Ptr^) 2
Ecrire ( Ptr ) 1004
Ptr^ ++
Ecrire ( Ptr^)
Ecrire ( Ptr )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 57
Arithmétique des pointeurs - Incrémentation

Ptr variable Ptr : ^ entier

Ptr  T // ou Ptr  &T[0]

Ptr++ // Equivalent à Ptr  Ptr + 1


Resultat:
Ecrire ( Ptr^) 2
Ecrire ( Ptr ) 1004
Ptr^ ++
Ecrire ( Ptr^) 3
Ecrire ( Ptr )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 58
Arithmétique des pointeurs - Incrémentation

Ptr variable Ptr : ^ entier

Ptr  T // ou Ptr  &T[0]

Ptr++ // Equivalent à Ptr  Ptr + 1


Resultat:
Ecrire ( Ptr^) 2
Ecrire ( Ptr ) 1004
Ptr^ ++
Ecrire ( Ptr^) 3
Ecrire ( Ptr )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 59
Arithmétique des pointeurs - Incrémentation

Ptr variable Ptr : ^ entier

Ptr  T // ou Ptr  &T[0]

Ptr++ // Equivalent à Ptr  Ptr + 1


Resultat:
Ecrire ( Ptr^) 2
Ecrire ( Ptr ) 1004
Ptr^ ++
Ecrire ( Ptr^) 3
Ecrire ( Ptr ) 1004
Pr. Redouan Lahmyed ALGORITHMIQUE 2 60
Arithmétique des pointeurs - Décrémentation

Ptr

Ptr--

Pr. Redouan Lahmyed ALGORITHMIQUE 2 61


Arithmétique des pointeurs - Décrémentation

Ptr

Ptr-- // Equivalent à Ptr  Ptr - 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 62


Arithmétique des pointeurs - Décrémentation

Ptr

Ptr-- // Equivalent à Ptr  Ptr - 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 63


Arithmétique des pointeurs - Décrémentation

Ptr

Ptr-- // Equivalent à Ptr  Ptr - 1

Ecrire ( Ptr^)
Ecrire ( Ptr )
Ptr^ --
Ecrire ( Ptr^)
Ecrire ( Ptr )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 64
Arithmétique des pointeurs - Décrémentation

Ptr

Ptr-- // Equivalent à Ptr  Ptr - 1

Ecrire ( Ptr^)
Ecrire ( Ptr )
Ptr^ --
Ecrire ( Ptr^)
Ecrire ( Ptr )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 65
Arithmétique des pointeurs - Décrémentation

Ptr

Ptr-- // Equivalent à Ptr  Ptr - 1


Resultat:
Ecrire ( Ptr^) 6
Ecrire ( Ptr )
Ptr^ --
Ecrire ( Ptr^)
Ecrire ( Ptr )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 66
Arithmétique des pointeurs - Décrémentation

Ptr

Ptr-- // Equivalent à Ptr  Ptr - 1


Resultat:
Ecrire ( Ptr^) 6
Ecrire ( Ptr )
Ptr^ --
Ecrire ( Ptr^)
Ecrire ( Ptr )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 67
Arithmétique des pointeurs - Décrémentation

Ptr

Ptr-- // Equivalent à Ptr  Ptr - 1


Resultat:
Ecrire ( Ptr^) 6
Ecrire ( Ptr ) 1012
Ptr^ --
Ecrire ( Ptr^)
Ecrire ( Ptr )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 68
Arithmétique des pointeurs - Décrémentation

Ptr

Ptr-- // Equivalent à Ptr  Ptr - 1


Resultat:
Ecrire ( Ptr^) 6
Ecrire ( Ptr ) 1012
Ptr^ --
Ecrire ( Ptr^)
Ecrire ( Ptr )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 69
Arithmétique des pointeurs - Décrémentation

Ptr

Ptr-- // Equivalent à Ptr  Ptr - 1


Resultat:
Ecrire ( Ptr^) 6
Ecrire ( Ptr ) 1012
Ptr^ --
Ecrire ( Ptr^)
Ecrire ( Ptr )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 70
Arithmétique des pointeurs - Décrémentation

Ptr

Ptr-- // Equivalent à Ptr  Ptr - 1


Resultat:
Ecrire ( Ptr^) 6
Ecrire ( Ptr ) 1012
Ptr^ --
Ecrire ( Ptr^)
Ecrire ( Ptr )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 71
Arithmétique des pointeurs - Décrémentation

Ptr

Ptr-- // Equivalent à Ptr  Ptr - 1


Resultat:
Ecrire ( Ptr^) 6
Ecrire ( Ptr ) 1012
Ptr^ --
Ecrire ( Ptr^) 5
Ecrire ( Ptr )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 72
Arithmétique des pointeurs - Décrémentation

Ptr

Ptr-- // Equivalent à Ptr  Ptr - 1


Resultat:
Ecrire ( Ptr^) 6
Ecrire ( Ptr ) 1012
Ptr^ --
Ecrire ( Ptr^) 5
Ecrire ( Ptr )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 73
Arithmétique des pointeurs - Décrémentation

Ptr

Ptr-- // Equivalent à Ptr  Ptr - 1


Resultat:
Ecrire ( Ptr^) 6
Ecrire ( Ptr ) 1012
Ptr^ --
Ecrire ( Ptr^) 5
Ecrire ( Ptr ) 1012
Pr. Redouan Lahmyed ALGORITHMIQUE 2 74
Arithmétique des pointeurs - Addition

Ptr variable Ptr : ^ entier

Ptr  T // ou Ptr  &T[0]

Ecrire ( Ptr + 3)
Ecrire ( Ptr^ + 3 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 75


Arithmétique des pointeurs - Addition

Ptr variable Ptr : ^ entier

Ptr  T // ou Ptr  &T[0]

Ecrire ( Ptr + 3)
Ecrire ( Ptr^ + 3 ) Ptr + 3 ↔ & T [ 3 ]

Ptr^ + 3 ↔ T [ 3 ] + 3
Pr. Redouan Lahmyed ALGORITHMIQUE 2 76
Arithmétique des pointeurs - Soustraction

p q

variable p , q : ^ entier

p  T + 1 // ou Ptr  &T[0]
q  T + 3 // ou Ptr  &T[3]

Pr. Redouan Lahmyed ALGORITHMIQUE 2 77


Arithmétique des pointeurs - Soustraction

p q

variable p , q : ^ entier q-p ↔ Distance entre p et q


p  T + 1 // ou Ptr  &T[0]
@𝒒 −@𝒑
q  T + 3 // ou Ptr  &T[3] q-p ↔
𝑻𝒂𝒊𝒍𝒍𝒆_𝑬𝒍𝒎𝒕_𝑻𝒂𝒃

Pr. Redouan Lahmyed ALGORITHMIQUE 2 78


Arithmétique des pointeurs - Comparaison

p q

La comparaison de deux pointeurs qui pointent dans le


même tableau est équivalente à la comparaison des
indices correspondants

Pr. Redouan Lahmyed ALGORITHMIQUE 2 79


Arithmétique des pointeurs - Comparaison

p q

Exemple:

Ecrire ( q = p )
Ecrire ( q >= p )
Ecrire ( p < q )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 80


Arithmétique des pointeurs - Comparaison

p q

Exemple:

Ecrire ( q = p )
Ecrire ( q >= p )
Ecrire ( p < q )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 81


Arithmétique des pointeurs - Comparaison

p q

Exemple:
Resultat:
Ecrire ( q = p ) 0
Ecrire ( q >= p )
Ecrire ( p < q )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 82


Arithmétique des pointeurs - Comparaison

p q

Exemple:
Resultat:
Ecrire ( q = p ) 0
Ecrire ( q >= p )
Ecrire ( p < q )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 83


Arithmétique des pointeurs - Comparaison

p q

Exemple:
Resultat:
Ecrire ( q = p ) 0
Ecrire ( q >= p )
1
Ecrire ( p < q )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 84


Arithmétique des pointeurs - Comparaison

p q

Exemple:
Resultat:
Ecrire ( q = p ) 0
Ecrire ( q >= p ) 1
Ecrire ( p < q )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 85


Arithmétique des pointeurs - Comparaison

p q

Exemple:
Resultat:
Ecrire ( q = p ) 0
Ecrire ( q >= p ) 1
Ecrire ( p < q ) 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 86


ALGORITHMIQUE – 2: POINTEURS
SMI-3

A.U: 2022 – 2023

DÉPARTEMENT INFORMATIQUE

Pr. Redouan Lahmyed ALGORITHMIQUE 2 1


ALGORITHMIQUE – 2: FONCTIONS ET PROCÉDURES
SMI-3

A.U: 2022 – 2023

DÉPARTEMENT INFORMATIQUE

Pr. Redouan Lahmyed ALGORITHMIQUE 2 1


Fonctions - Procédures

Exercice: Écrire un algorithme qui calcule


la factorielle d'une valeur saisie par
l’utilisateur.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 2


Fonctions - Procédures
Algorithme Factorielle
Variables F , n , i : Entier

Début
Ecrire (" Veuillez saisir un entier")
Lire (n)
F←1
Si n = 0 Alors

Ecrire (" La factorielle est :" , F )

Sinon
Pour i =1 à n Pas de 1
F←F*i
FinPour

Ecrire (" La factorielle est :" , F )

Fin Si
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 3
Fonctions - Procédures

Exercice: Écrire un algorithme qui calcule


la factorielle de deux valeurs saisies
successivement par l’utilisateur

Pr. Redouan Lahmyed ALGORITHMIQUE 2 4


Fonctions - Procédures
Algorithme Factorielle
Variables F1, F2 , n1 , n2 , i : Entier

Début
Ecrire (" Veuillez saisir le premier entier") Ecrire (" Veuillez saisir le deuxième entier ")
Lire (n1) Lire (n2)
F1 ← 1 F2 ← 1
Si n1 = 0 Alors Si n2 = 0 Alors

Ecrire (" La factorielle est :" , F1 ) Ecrire (" La factorielle est :" , F2 )

Sinon Sinon
Pour i =1 à n1 Pas de 1 Pour i =1 à n2 Pas de 1
F1 ← F1 * i F2 ← F2 * i
FinPour FinPour
Ecrire (" La factorielle est :" , F1 ) Ecrire (" La factorielle est :" , F2 )

Fin Si Fin Si

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 5


Fonctions - Procédures
Algorithme Factorielle
Variables F1, F2 , n1 , n2 , i : Entier

Début
Ecrire (" Veuillez saisir le premier entier") Ecrire (" Veuillez saisir le deuxième entier ")
Lire (n1) Lire (n2)
F1 ← 1 F2 ← 1
Si n1 = 0 Alors Si n2 = 0 Alors

Ecrire (" La factorielle est :" , F1 ) Ecrire (" La factorielle est :" , F2 )

Sinon Sinon
Pour i =1 à n1 Pas de 1 Pour i =1 à n2 Pas de 1
F1 ← F1 * i F2 ← F2 * i
FinPour FinPour
Ecrire (" La factorielle est :" , F1 ) Ecrire (" La factorielle est :" , F2 )

Fin Si Fin Si

Fin

1ère valeur 2ème valeur


Pr. Redouan Lahmyed ALGORITHMIQUE 2 6
Fonctions - Procédures

Pr. Redouan Lahmyed ALGORITHMIQUE 2 7


Fonctions - Procédures

Pr. Redouan Lahmyed ALGORITHMIQUE 2 8


Fonctions - Procédures
Sous-algorithmes

Pr. Redouan Lahmyed ALGORITHMIQUE 2 9


Fonctions

Définition: Qu'est ce qu'une fonction ?

I- Une fonction est une suite d'instructions regroupées sous


un nom; elle prend en entrée des paramètres (arguments) et
retourne une résultat.

Une fonction est écrite séparément du coprs de l'algorithme


principal et sera appelée par celui-ci lorsque cela sera
nécessaire.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 10


Fonctions

Pr. Redouan Lahmyed ALGORITHMIQUE 2 11


Fonctions

Arguments
de fonction

Traitement
Nom de fonction
* Type de retour

Résultat retourné
Pr. Redouan Lahmyed ALGORITHMIQUE 2 12
Fonctions

Syntaxe:
Fonction Nom_Fonction (arg1 : Type1 , arg2 : Type2 , ....) : Type de retour

Variables
variable 1 : type_var1
variable 2 : type_var2
….
Début

Instructions

Retourne résulat_retour

Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 13
Fonctions
Arguments de fonction Type résultat retourné
Syntaxe: Nom de fonction

Fonction Nom_Fonction (arg1 : Type1 , arg2 : Type2 , ....) : Type de retour

Variables
variable 1 : type_var1
Variables locales
variable 2 : type_var2
….
Début

Instructions Traitements

Retourne résulat_retour Résultat retourné

Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 14
Fonctions - Procédures
Exemple: Écrire une fonction qui calcule la factorielle d'un entier

Pr. Redouan Lahmyed ALGORITHMIQUE 2 15


Fonctions - Procédures
Exemple: Écrire une fonction qui calcule la factorielle d'un entier

Fonction Factorielle ( N: Entier ) : Entier

Variables

Début

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 16


Fonctions - Procédures
Exemple: Écrire une fonction qui calcule la factorielle d'un entier

Fonction Factorielle ( N: Entier ) : Entier

Variables
F , i : Entier

Début
F←1
Si N = 0 Alors
Retourne F

Sinon
Pour i =1 à N Pas de 1
F←F*i
FinPour

Retourne F
Fin Si
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 17


Fonctions - Procédures

Exercice: Écrire une fonction qui calcule la puissance d'un entier

Pr. Redouan Lahmyed ALGORITHMIQUE 2 18


Fonctions - Procédures
Exercice : Écrire une fonction qui calcule la puissance d'un entier

Fonction Puissance ( X: Entier , n: Entier) : Entier

Variables
P : Entier

Début
P X^n
Retourne P

Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 19
Fonctions

Appel de la fonction

Méthode 1: Nom_Variable  Nom_Fonction (arg1 , arg2 , ....)

Méthode 2: Nom_Variable2  Nom_Variable1 Ope_Calcul Nom_Fonction (arg1 , arg2 , ....)

Méthode 3: Ecrire ( Nom_Fonction (arg1 , arg2 , ....) )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 20


Fonctions
Algorithme Nom_Algorithm

Variable

Début

Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 21
Fonctions
Algorithme Nom_Algorithm

Fonction Nom_Fonction1 (arg11 : Type11 , arg12 : Type12 , ....) : Type de retour

Fonction Nom_Fonction2 (arg21 : Type21 , arg22 : Type22 , ....) : Type de retour


………… Déclaration
Fonction Nom_FonctionN (argN1 : TypeN1 , argN2 : TypeN2 , ....) : Type de retour des fonctions
Variable

Début

Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 22
Fonctions
Algorithme Nom_Algorithm

Fonction Nom_Fonction1 (arg11 : Type11 , arg12 : Type12 , ....) : Type de retour

Fonction Nom_Fonction2 (arg21 : Type21 , arg22 : Type22 , ....) : Type de retour


………… Déclaration
Fonction Nom_FonctionN (argN1 : TypeN1 , argN2 : TypeN2 , ....) : Type de retour des fonctions
Variable
Identif1 : TYPE_1
Identif2 : TYPE_2
……
IdentifN : TYPE_N

Début

Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 23
Fonctions
Algorithme Nom_Algorithm

Fonction Nom_Fonction1 (arg11 : Type11 , arg12 : Type12 , ....) : Type de retour

Fonction Nom_Fonction2 (arg21 : Type21 , arg22 : Type22 , ....) : Type de retour


………… Déclaration
Fonction Nom_FonctionN (argN1 : TypeN1 , argN2 : TypeN2 , ....) : Type de retour des fonctions
Variable
Identif1 : TYPE_1
Identif2 : TYPE_2
……
IdentifN : TYPE_N

Début

Nom_Fonction1 (arg11 , arg12 , ....)


Nom_Fonction2 (arg21 , arg22 , ....) Appel des
fonctions
....
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 24
Fonctions - Procédures
Algorithme Factorielle
Variables F1, F2 , n1 , n2 , i : Entier

Début
Ecrire (" Veuillez saisir le premier entier") Ecrire (" Veuillez saisir le deuxième entier ")
Lire (n1) Lire (n2)
F1 ← 1 F2 ← 1
Si n1 = 0 Alors Si n2 = 0 Alors

Ecrire (" La factorielle est :" , F1 ) Ecrire (" La factorielle est :" , F2 )

Sinon Sinon
Pour i =1 à n1 Pas de 1 Pour i =1 à n2 Pas de 1
F1 ← F1 * i F2 ← F2 * i
FinPour FinPour
Ecrire (" La factorielle est :" , F1 ) Ecrire (" La factorielle est :" , F2 )

Fin Si Fin Si

Fin

1ère valeur 2ème valeur


Pr. Redouan Lahmyed ALGORITHMIQUE 2 25
Fonctions
Algorithme Ex_Factorielle
Variable

Début

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 26


Fonctions
Algorithme Ex_Factorielle
Fonction Factorielle ( N: Entier ) : Entier Variable
Variables Début
F , i : Entier

Début
F←1
Si N = 0 Alors
Retourne F

Sinon
Pour i =1 à N Pas de
1
F←F*i
FinPour

Retourne F
Fin Si Fin
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 27


Fonctions
Algorithme Ex_Factorielle
Fonction Factorielle ( N: Entier ) : Entier Variable n1 , n2 : Entier

Variables Début
F , i : Entier

Début
F←1
Si N = 0 Alors
Retourne F

Sinon
Pour i =1 à N Pas de 1
F←F*i
FinPour

Retourne F
Fin Si
Fin Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 28


Fonctions
Algorithme Ex_Factorielle
Fonction Factorielle ( N: Entier ) : Entier Variable n1 , n2 : Entier

Variables Début
F , i : Entier
Ecrire (" Veuillez saisir le premier entier")
Début
Lire (n1)
F←1 Ecrire (" La factorielle est :" , Factorielle (n1))
Si N = 0 Alors
Retourne F

Sinon
Pour i =1 à N Pas de 1
F←F*i
FinPour

Retourne F
Fin Si
Fin Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 29


Fonctions
Algorithme Ex_Factorielle
Fonction Factorielle ( N: Entier ) : Entier Variable n1 , n2 : Entier

Variables Début
F , i : Entier
Ecrire (" Veuillez saisir le premier entier")
Début
Lire (n1)
F←1 Ecrire (" La factorielle est :" , Factorielle (n1))
Si N = 0 Alors
Retourne F
Ecrire (" Veuillez saisir le deuxième entier")
Sinon Lire (n2)
Pour i =1 à N Pas de 1
Ecrire (" La factorielle est :" , Factorielle (n2))
F←F*i
FinPour

Retourne F
Fin Si
Fin Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 30


Fonctions
Algorithme Ex_Puissance

Variable

Début

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 31


Fonctions
Algorithme Ex_Puissance
Fonction Puissance ( X: Entier , n: Entier) : Entier

Variables Déclaration
P : Entier de la fonction

Début
P X^n
Retourne P

Fin
Variable

Début

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 32


Fonctions
Algorithme Ex_Puissance
Fonction Puissance ( X: Entier , n: Entier) : Entier

Variables Déclaration
P : Entier de la fonction

Début
P X^n
Retourne P

Fin
Variable A , B : Entier

Début
Ecrire ( " Veuillez saisir un nombre et leur puissance : " )
Appel de la
Lire (A , B)
fonction
Ecrire ( " Résultat est : " , Puissance ( A , B ) )
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 33


Fonctions
Appel de la fonction
Soient quatre variables A, B, C et D et deux fonctions fct1 et fct 2 tels que:

-A, B sont de type entier


-C est de type chaine de caractères
-D est type logique
-Fonction fct1 ( X: Entier , Y: Entier) : Entier
-Fonction fct2 ( X: Entier , Y: Boolean) : Entier

1- Cochez ce qui est juste : ?

Fct2 ( A , B ) Ecrire ( fct1 ( B , B ) )

A ← fct2 ( B , D ) Ecrire ( fct2 ( B , D , A ) )

C ← fct1 ( B , B ) A ← A + fct1 ( A , A )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 34


Fonctions
Appel de la fonction
Soient quatre variables A, B, C et D et deux fonctions fct1 et fct 2 tels que:

-A, B sont de type entier


-C est de type chaine de caractères
-D est type logique
-Fonction fct1 ( X: Entier , Y: Entier) : Entier
-Fonction fct2 ( X: Entier , Y: Boolean) : Entier

1- Cochez ce qui est juste : ?

Fct2 ( A , B ) Ecrire ( fct1 ( B , B ) )

A ← fct2 ( B , D ) Ecrire ( fct2 ( B , D , A ) )

C ← fct1 ( B , B ) A ← A + fct1 ( A , A )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 35


Fonctions
Exercice
Ecrire un algorithme qui permet de définir et d'appeler une fonction
Minimum qui renvoie le plus petit de deux nombres différents.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 36


Fonctions
Algorithme Ex_Min
Fonction Minimum ( A: Entier , B: Entier) : Entier

Variables
Min : Entier Déclaration
Début de la fonction
Min ← A
Si Min > B Alors
Min ← B
Fin Si
Retourne Min
Fin
Variable V1 , V2 : Entier

Début
Ecrire ( " Veuillez saisir deux nombres : " )
Appel de la
Lire (V1 , V2)
fonction
Ecrire ( " La valeur minimale est : " , Minimum ( V1 , V2 ) )
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 37


Procédures

Définition: Qu'est ce qu'une procédure ?

I- Une procédure est une suite d'instructions regroupées


sous un nom; elle prend en entrée des paramètres
(arguments) mais qui ne retourne rien.

Une procédure est écrite séparément du coprs de


l'algorithme principal et sera appelée par celui-ci lorsque
cela sera nécessaire.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 38


Procédures

Syntaxe:
Procedure Nom_Procedure (arg1 : Type1 , arg2 : Type2 , ....)

Variables
variable 1 : type_var1
variable 2 : type_var2
….
Début

Instructions

Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 39
Procédures
Arguments de procédure
Syntaxe: Nom de procédure

Procedure Nom_Procedure (arg1 : Type1 , arg2 : Type2 , ....)

Variables
variable 1 : type_var1
Variables locales
variable 2 : type_var2
….
Début

Instructions Traitements

Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 40
Fonctions - Procédures
Exercice : Écrire une procédure qui calcule la puissance d'un entier

Pr. Redouan Lahmyed ALGORITHMIQUE 2 41


Fonctions - Procédures
Exercice : Écrire une procédure qui calcule la puissance d'un entier

Fonction Puissance ( X: Entier , n: Entier) : Entier

Variables
P : Entier

Début
P X^n
Retourne P

Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 42
Fonctions - Procédures
Exercice : Écrire une procédure qui calcule la puissance d'un entier

Procedure Puissance ( X: Entier , n: Entier)

Variables
P : Entier

Début
P X^n
Ecrire ( " Résultat est : " , P )

Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 43
Procédures

Appel de la procédure

Méthode :

Nom_Procedure (arg1 , arg2 , ....)

Pr. Redouan Lahmyed ALGORITHMIQUE 2 44


Procédures
Algorithme Ex_Puissance
Procedure Puissance ( X: Entier , n: Entier)

Variables Déclaration
P : Entier de la
procédure
Début
P X^n
Ecrire ( " Résultat est : " , P )

Fin
Variable A , B : Entier

Début
Ecrire ( " Veuillez saisir un nombre et leur puissance : " )
Appel de la
Lire (A , B)
procédure
Puissance ( A , B )
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 45


Procédures
Exercice: Ecrire une procédure qui permet de lire deux nombres, calculer
le produit et affiche si ce dernier est positif ou négatif.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 46


Procédures
Exercice: Ecrire une procédure qui permet de lire deux nombres, calculer
le produit et affiche si ce dernier est positif ou négatif.
Procedure Signe_Produit ( X: Entier , Y: Entier)

Variables
Pr : Entier

Début
Pr  X * Y
Si Pr > 0 Alors
Ecrire (" Le produit est positif ")
Sinon
Si Pr < 0 Alors
Ecrire (" Le produit est negatif ")
Sinon
Ecrire (" Le produit est nul ")
Fin Si

Fin Si
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 47


Fonctions
Algorithme Ex_Min
Procedure Signe_Produit ( X: Entier , Y: Entier)

Variables
Pr : Entier

Début
Pr  X * Y
Déclaration de
Si Pr > 0 Alors la procédure
Ecrire (" Le produit est positif ")
Sinon
Si Pr < 0 Alors
Ecrire (" Le produit est negatif ")
Sinon
Ecrire (" Le produit est nul ")
Fin Si

Fin Si
Fin

Variable V1 , V2 : Entier
Début
Ecrire ( " Veuillez saisir deux nombres : " )
Lire (V1 , V2) Appel de la
Signe_Produit (V1 , V2) procédure
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 48
Fonctions – Procédures (paramètres d’appels)

• Il y a deux types de passage de paramètres, le passage


par valeur et le passage par adresse.
• Passage par valeur :
 le paramètre d’appel est considéré comme une variable locale,

 toutes les modifications se feront dans une case mémoire


temporaire dans laquelle est rangée la valeur du paramètre
d’appel.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 49


Fonctions – Procédures (paramètres d’appels)
Exercice: Ecrire une procédure qui échange le contenu des deux variables.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 50


Fonctions – Procédures (paramètres d’appels)
Exercice: Ecrire une procédure qui échange le contenu des deux variables.

Procedure Echange_valeurs ( X: Entier , Y: Entier)

Variables
Temp : Entier

Début
Temp  X
X Y
Y  Temp

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 51


Fonctions – Procédures (paramètres d’appels)
Exercice: Ecrire une procédure qui échange le contenu des deux variables.
Algorithme Echange
Procedure Echange_valeurs ( X: Entier , Y: Entier)

Variables
Temp : Entier

Début
Temp  X
X Y
Y  Temp

Fin
Variable A , B : Entier
Début
Ecrire ( " Veuillez saisir deux nombres : " )
Lire (A , B)
Ecrire ( " Avant l’echange : A =" , A , " B = " , B )
Echange_valeurs (A , B)
Ecrire (" Apres l’echange : A =" , A , " B = " , B )
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 52
Fonctions – Procédures (paramètres d’appels)
Algorithme Echange
Procedure Echange_valeurs ( X: Entier , Y: Entier)

Variables
Temp : Entier

Début
Temp  X
X Y
Y  Temp

Fin
Variable A , B : Entier
Début
Ecrire ( " Veuillez saisir deux nombres : " )
Lire (A , B)
Ecrire ( " Avant l’echange : A =" , A , " B = " , B )
Echange_valeurs (A , B)
Ecrire (" Apres l’echange : A =" , A , " B = " , B )
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 53


Fonctions – Procédures (paramètres d’appels)
Algorithme Echange
Procedure Echange_valeurs ( X: Entier , Y: Entier)

Variables
Temp : Entier

Début
Temp  X
X Y
Y  Temp

Fin
Variable A , B : Entier
Début
Ecrire ( " Veuillez saisir deux nombres : " )
Lire (A , B)
Ecrire ( " Avant l’echange : A =" , A , " B = " , B )
Echange_valeurs (A , B)
Ecrire (" Apres l’echange : A =" , A , " B = " , B )
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 54


Fonctions – Procédures (paramètres d’appels)
Algorithme Echange
Procedure Echange_valeurs ( X: Entier , Y: Entier)

Variables
Temp : Entier

Début
Temp  X
X Y
Y  Temp 2
Fin
Variable A , B : Entier
Début
Ecrire ( " Veuillez saisir deux nombres : " )
3
Lire (A , B)
Ecrire ( " Avant l’echange : A =" , A , " B = " , B )
Echange_valeurs (A , B)
Ecrire (" Apres l’echange : A =" , A , " B = " , B )
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 55


Fonctions – Procédures (paramètres d’appels)
Algorithme Echange
Procedure Echange_valeurs ( X: Entier , Y: Entier)

Variables
Temp : Entier 3 2
Début
Temp  X
X Y
Y  Temp 2
Fin
Variable A , B : Entier
Début
Ecrire ( " Veuillez saisir deux nombres : " )
3
Lire (A , B)
Ecrire ( " Avant l’echange : A =" , A , " B = " , B )
Echange_valeurs (A , B)
Ecrire (" Apres l’echange : A =" , A , " B = " , B )
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 56


Fonctions – Procédures (paramètres d’appels)
Algorithme Echange
Procedure Echange_valeurs ( X: Entier , Y: Entier)

Variables
Temp : Entier 3 2
Début
Temp  X
X Y
Y  Temp 2
Fin
Variable A , B : Entier
Début
Ecrire ( " Veuillez saisir deux nombres : " )
3
Lire (A , B)
Ecrire ( " Avant l’echange : A =" , A , " B = " , B )
Echange_valeurs (A , B)
Ecrire (" Apres l’echange : A =" , A , " B = " , B )
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 57


Fonctions – Procédures (paramètres d’appels)
Algorithme Echange
Procedure Echange_valeurs ( X: Entier , Y: Entier)

Variables
Temp : Entier 3 2
Début
Temp  X
X Y
Y  Temp 2
Fin
Variable A , B : Entier
Début
Ecrire ( " Veuillez saisir deux nombres : " )
3 3
Lire (A , B)
Ecrire ( " Avant l’echange : A =" , A , " B = " , B )
Echange_valeurs (A , B)
Ecrire (" Apres l’echange : A =" , A , " B = " , B )
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 58


Fonctions – Procédures (paramètres d’appels)
Algorithme Echange
Procedure Echange_valeurs ( X: Entier , Y: Entier)

Variables
Temp : Entier 2 2
Début
Temp  X
X Y
Y  Temp 2
Fin
Variable A , B : Entier
Début
Ecrire ( " Veuillez saisir deux nombres : " )
3 3
Lire (A , B)
Ecrire ( " Avant l’echange : A =" , A , " B = " , B )
Echange_valeurs (A , B)
Ecrire (" Apres l’echange : A =" , A , " B = " , B )
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 59


Fonctions – Procédures (paramètres d’appels)
Algorithme Echange
Procedure Echange_valeurs ( X: Entier , Y: Entier)

Variables
Temp : Entier 2 3
Début
Temp  X
X Y
Y  Temp 2
Fin
Variable A , B : Entier
Début
Ecrire ( " Veuillez saisir deux nombres : " )
3 3
Lire (A , B)
Ecrire ( " Avant l’echange : A =" , A , " B = " , B )
Echange_valeurs (A , B)
Ecrire (" Apres l’echange : A =" , A , " B = " , B )
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 60


Fonctions – Procédures (paramètres d’appels)
 Fonctions – Procédures: Passage par adresse

Procedure Echange_valeurs ( P1: ^Entier , P2 : ^Entier)

Variables
Temp : Entier

Début
Temp  P1^
P1^  P2^
P2^  Temp

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 61


Fonctions – Procédures (paramètres d’appels)
Algorithme Echange

Procedure Echange_valeurs ( P1: ^Entier , P2: ^Entier)

Variables
Temp : Entier

Début
Temp  P1^
P1^  P2^
P2^  Temp

Fin
Variable A , B : Entier
Début
Ecrire ( " Veuillez saisir deux nombres : " )
Lire (A , B)
Ecrire ( " Avant l’echange : A =" , A , " B = " , B )
Echange_valeurs (&A , &B)
Ecrire (" Apres l’echange : A =" , A , " B = " , B )
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 62
Fonctions – Procédures (paramètres d’appels)
Algorithme Echange
Procedure Echange_valeurs ( P1: ^Entier , P2: ^Entier)

Variables
Temp : Entier

Début
Temp  P1^
P1^  P2^
P2^  Temp

Fin
Variable A , B : Entier
Début
Ecrire ( " Veuillez saisir deux nombres : " )
Lire (A , B)
Ecrire ( " Avant l’echange : A =" , A , " B = " , B )
Echange_valeurs (&A , &B)
Ecrire (" Apres l’echange : A =" , A , " B = " , B )
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 63


Fonctions – Procédures (paramètres d’appels)
Algorithme Echange
Procedure Echange_valeurs ( P1: ^Entier , P2: ^Entier)

Variables
Temp : Entier

Début
Temp  P1^
P1^  P2^
P2^  Temp 2
Fin
Variable A , B : Entier
Début
Ecrire ( " Veuillez saisir deux nombres : " )
3
Lire (A , B)
Ecrire ( " Avant l’echange : A =" , A , " B = " , B )
Echange_valeurs (&A , &B)
Ecrire (" Apres l’echange : A =" , A , " B = " , B )
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 64


Fonctions – Procédures (paramètres d’appels)
Algorithme Echange
Procedure Echange_valeurs ( P1: ^Entier , P2: ^Entier)

Variables
Temp : Entier 1B3 1B2
Début
Temp  P1^
P1^  P2^
P2^  Temp 2
Fin
Variable A , B : Entier
Début
Ecrire ( " Veuillez saisir deux nombres : " )
3
Lire (A , B)
Ecrire ( " Avant l’echange : A =" , A , " B = " , B )
Echange_valeurs (&A , &B)
Ecrire (" Apres l’echange : A =" , A , " B = " , B )
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 65


Fonctions – Procédures (paramètres d’appels)
Algorithme Echange
Procedure Echange_valeurs ( P1: ^Entier , P2: ^Entier)

Variables
Temp : Entier 1B3 1B2
Début
Temp  P1^
P1^  P2^
P2^  Temp 2
Fin
Variable A , B : Entier
Début
Ecrire ( " Veuillez saisir deux nombres : " )
3
Lire (A , B)
Ecrire ( " Avant l’echange : A =" , A , " B = " , B )
Echange_valeurs (&A , &B)
Ecrire (" Apres l’echange : A =" , A , " B = " , B )
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 66


Fonctions – Procédures (paramètres d’appels)
Algorithme Echange
Procedure Echange_valeurs ( P1: ^Entier , P2: ^Entier)

Variables
Temp : Entier 1B3 1B2
Début
Temp  P1^
P1^  P2^
P2^  Temp 2
Fin
Variable A , B : Entier
Début
Ecrire ( " Veuillez saisir deux nombres : " )
3 3
Lire (A , B)
Ecrire ( " Avant l’echange : A =" , A , " B = " , B )
Echange_valeurs (&A , &B)
Ecrire (" Apres l’echange : A =" , A , " B = " , B )
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 67


Fonctions – Procédures (paramètres d’appels)
Algorithme Echange
Procedure Echange_valeurs ( P1: ^Entier , P2: ^Entier)

Variables
Temp : Entier 1B3 1B2
Début
Temp  P1^
P1^  P2^
P2^  Temp 2
Fin
Variable A , B : Entier
Début
Ecrire ( " Veuillez saisir deux nombres : " )
2 3
Lire (A , B)
Ecrire ( " Avant l’echange : A =" , A , " B = " , B )
Echange_valeurs (&A , &B)
Ecrire (" Apres l’echange : A =" , A , " B = " , B )
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 68


Fonctions – Procédures (paramètres d’appels)
Algorithme Echange
Procedure Echange_valeurs ( P1: ^Entier , P2: ^Entier)

Variables
Temp : Entier 1B3 1B2
Début
Temp  P1^
P1^  P2^
P2^  Temp 3
Fin
Variable A , B : Entier
Début
Ecrire ( " Veuillez saisir deux nombres : " )
2 3
Lire (A , B)
Ecrire ( " Avant l’echange : A =" , A , " B = " , B )
Echange_valeurs (&A , &B)
Ecrire (" Apres l’echange : A =" , A , " B = " , B )
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 69


Fonctions Prédéfinies
 Les Fonctions mathématiques

Fonction Description Exemple Résultat

Abs (nombre) Retourne la valeur absolue d'un X  Abs ( -12 ) X = 12


nombre.
Ent (nombre) Retourne la partie entière d'un X  Ent ( 12.6 ) X = 12
nombre.
Cos (angle) Retourne une valeur spécifiant le X  Cos (0) X=1
cosinus d'un angle.
Sin (angle) Retourne une valeur spécifiant le X  Sin (0) X=0
sinus d'un angle.
Tan (angle) Retourne une valeur contenant la X  Tan (0) X=0
tangente d'un angle.
Sqrt (nombre) Retourne une valeur spécifiant la X  Sqrt (4) X=2
Racine (nombre) racine carré d'un nombre.

Alea () Retourne un nombre aléatoire X  Alea () 0 <= X < 1


compris entre 0 (inclus) et 1 (exclus)

Pr. Redouan Lahmyed ALGORITHMIQUE 2 70


Fonctions Prédéfinies
 Les Fonctions mathématiques

Exemple : Générer un nombre aléatoire X compris entre 5 et 10

La fonction Alea renvoie un nombre réel aléatoire compris entre 0 et 1. Pour obtenir une
valeur entière comprise entre min et max (avec min < max) on utilise la formule suivante :

Ent ( ( max – min + 1 ) * Alea () + min )

Solution:
X  Ent ( 6 * Alea () + 5 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 71


Fonctions Prédéfinies
 Les Fonctions de chaînes de caractères

• Len(chaine) : renvoie le nombre de caractères d’une chaine


• Comp (ch1,ch2) : compare deux chaînes de caractères
• Concat (ch1,ch2) : retourne une chaîne formée par la concaténation de ch1 et ch2
• Mid(chaine,pos,lg) : renvoie un extrait de la chaine, commençant au caractère pos et
faisant lg caractères de long. (commence à 0)
• Left(chaine,n) : renvoie les n caractères les plus à gauche dans chaine.
• Right(chaine,n) : renvoie les n caractères les plus à droite dans chaine
• Find(chaine1,chaine2) :
• Renvoie la position de chaine2 dans chaine1,
• Commence par 0,
• Si chaine2 n’est pas comprise dans chaine1, la fonction renvoie -1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 72


Fonctions Prédéfinies
 Les Fonctions de chaînes de caractères

• Exemples:

Len("Bonjour") vaut 7
Len("") vaut 0
Mid("Ahmed is back", 3, 7) vaut "ed is b"
Mid("Ahmed is back", 11, 1) vaut "c"
Left("Et pourtant…", 8) vaut "Et pourt"
Right("Et pourtant…", 4) vaut "t…"
Find("Un pur bonheur", "pur") vaut 3
Find(" Dans la vie ", "bonheur ") vaut -1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 73


Fonctions Prédéfinies
 Les Fonctions de chaînes de caractères

Exercice : Ecrire un programme qui :


• Lit deux chaînes de caractères
• Affiche la taille de chaque chaine.
• Vérifie si la deuxième est une sous chaîne de la première ou non.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 74


Fonctions / Procédures (L . P . Python)

Syntaxe:

def Nom_Fonction (arg1 , arg2 , ....) : def Procedure (arg1 , arg2 , ....) :

# Traitement # Traitement
Instruction 1 Instruction 1

Instruction 2 Instruction 2

……… ………

return résulat_retour

Pr. Redouan Lahmyed ALGORITHMIQUE 2 75


Fonctions / Procédures (L . P . Python)

Exemple : Fonction qui calcule la somme de deux nombres.

def Somme_Fct (X , Y ) :

# Traitement
Z=X+Y

return Z

def Somme_Proce ( X , Y ) :

# Traitement
Z=X+Y

print ( " X + Y = " , Z )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 76


Fonctions / Procédures (L . P . Python)

Exemple : Fonction qui calcule la somme de deux nombres.

def Somme_Fct (X , Y ) :
A = int ( input ( " Veillez saisir la valeur de A" ) )
# Traitement
B = int ( input ( " Veillez saisir la valeur de B" ) )
Z=X+Y
C = Somme_Fct (A , B )
return Z
print ( " A + B = “ , C )

A = int ( input ( " Veillez saisir la valeur de A" ) )


# Appel_Fonction B = int ( input ( " Veillez saisir la valeur de B" ) )

print ( " A + B = “ , Somme_Fct (A , B ) )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 77


Fonctions / Procédures (L . P . Python)

Exemple : Fonction qui calcule la somme de deux nombres.

# Appel_Procedure

A = int ( input ( " Veillez saisir la valeur de A" ) )

B = int ( input ( " Veillez saisir la valeur de B" ) )


def Somme_Proce ( X , Y ) : Somme_Proce (A , B )

# Traitement
Z=X+Y

print ( " X + Y = " , Z )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 78


ALGORITHMIQUE – 2: LA RÉCURSIVITÉ
SMI-3

A.U: 2022 – 2023

DÉPARTEMENT INFORMATIQUE

Pr. Redouan Lahmyed ALGORITHMIQUE 2 1


Récursivité
Exercice: Écrire une fonction qui calcule la factorielle d'une valeur saisie par
l’utilisateur.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 2


Récursivité
Exercice: Écrire une fonction qui calcule la factorielle d'une valeur saisie par
l’utilisateur.
Fonction Factorielle ( N: Entier ) : Entier Ecrire (" La factorielle est :" , Factorielle (N))
Variables
F , i : Entier

Début Appel de
F←1
Si N < 2 Alors la fonction
Retourne F

Sinon
Pour i =2 à N Pas de
1
F←F*i Déclaration de
FinPour la fonction
Retourne F
Fin Si
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 3
Récursivité
Exercice: Écrire une fonction qui calcule la factorielle d'une valeur saisie par
l’utilisateur.
Fonction Factorielle ( N: Entier ) : Entier Ecrire (" La factorielle est :" , Factorielle (N))
Variables
F , i : Entier

Début
F←1
Si N < 2 Alors Solution itérative
Retourne F

Sinon
Pour i =2 à N Pas de
1
F←F*i
FinPour

Retourne F
Fin Si
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 4
Récursivité
Exercice: Écrire une fonction qui calcule la factorielle d'une valeur saisie par
l’utilisateur.
Fonction Factorielle ( N: Entier ) : Entier Ecrire (" La factorielle est :" , Factorielle (5))
Variables
F , i : Entier
Solution itérative
Début
F←1
Si N < 2 Alors
Retourne F
État initial:

Sinon
Pour i =2 à N Pas de
1
F←F*i
FinPour Itérations:
Retourne F
Fin Si
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 5
Récursivité
Exercice: Écrire une fonction qui calcule la factorielle d'une valeur saisie par
l’utilisateur.
Fonction Factorielle ( N: Entier ) : Entier Ecrire (" La factorielle est :" , Factorielle (5))
Variables
F , i : Entier
Solution itérative
Début
F←1
Si N < 2 Alors
Retourne F
État initial: F=1

Sinon F=2*1=2
Pour i =2 à N Pas de
1 F=3*2=6
F←F*i
FinPour Itérations: F = 4 * 6 = 24
Retourne F F = 5 * 24 = 120
Fin Si
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 6
Récursivité

Fonction Factorielle

Pr. Redouan Lahmyed ALGORITHMIQUE 2 7


Récursivité

Fonction Factorielle

Factorielle ( 1 ) = 1
Factorielle ( 2 ) = 2 * 1
Factorielle ( 3 ) = 3 * 2 * 1
Factorielle ( 4 ) = 4 * 3 * 2 * 1
Factorielle ( 5 ) = 5 * 4 * 3 * 2 * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 8


Récursivité

Fonction Factorielle

Factorielle ( 1 ) = 1
Factorielle ( 2 ) = 2 * 1
Factorielle ( 3 ) = 3 * 2 * 1
Factorielle ( 4 ) = 4 * 3 * 2 * 1
Factorielle ( 5 ) = 5 * 4 * 3 * 2 * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 9


Récursivité

Fonction Factorielle

Factorielle ( 1 ) = 1
Factorielle ( 2 ) = 2 * Factorielle ( 1 )
Factorielle ( 3 ) = 3 * 2 * 1
Factorielle ( 4 ) = 4 * 3 * 2 * 1
Factorielle ( 5 ) = 5 * 4 * 3 * 2 * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 10


Récursivité

Fonction Factorielle

Factorielle ( 1 ) = 1
Factorielle ( 2 ) = 2 * Factorielle ( 1 )
Factorielle ( 3 ) = 3 * 2 * 1
Factorielle ( 4 ) = 4 * 3 * 2 * 1
Factorielle ( 5 ) = 5 * 4 * 3 * 2 * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 11


Récursivité

Fonction Factorielle

Factorielle ( 1 ) = 1
Factorielle ( 2 ) = 2 * Factorielle ( 1 )
Factorielle ( 3 ) = 3 * Factorielle ( 2 )
Factorielle ( 4 ) = 4 * 3 * 2 * 1
Factorielle ( 5 ) = 5 * 4 * 3 * 2 * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 12


Récursivité

Fonction Factorielle

Factorielle ( 1 ) = 1
Factorielle ( 2 ) = 2 * Factorielle ( 1 )
Factorielle ( 3 ) = 3 * Factorielle ( 2 )
Factorielle ( 4 ) = 4 * 3 * 2 * 1
Factorielle ( 5 ) = 5 * 4 * 3 * 2 * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 13


Récursivité

Fonction Factorielle

Factorielle ( 1 ) = 1
Factorielle ( 2 ) = 2 * Factorielle ( 1 )
Factorielle ( 3 ) = 3 * Factorielle ( 2 )
Factorielle ( 4 ) = 4 * Factorielle ( 3 )
Factorielle ( 5 ) = 5 * 4 * 3 * 2 * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 14


Récursivité

Fonction Factorielle

Factorielle ( 1 ) = 1
Factorielle ( 2 ) = 2 * Factorielle ( 1 )
Factorielle ( 3 ) = 3 * Factorielle ( 2 )
Factorielle ( 4 ) = 4 * Factorielle ( 3 )
Factorielle ( 5 ) = 5 * 4 * 3 * 2 * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 15


Récursivité

Fonction Factorielle

Factorielle ( 1 ) = 1
Factorielle ( 2 ) = 2 * Factorielle ( 1 )
Factorielle ( 3 ) = 3 * Factorielle ( 2 )
Factorielle ( 4 ) = 4 * Factorielle ( 3 )
Factorielle ( 5 ) = 5 * Factorielle ( 4 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 16


Récursivité

Fonction Factorielle

Factorielle ( 5 ) = 5 * Factorielle ( 4 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 17


Récursivité

Fonction Factorielle

Factorielle ( 5 ) = 5 * Factorielle ( 4 )
Factorielle ( 4 ) = 4 * Factorielle ( 3 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 18


Récursivité

Fonction Factorielle

Factorielle ( 5 ) = 5 * Factorielle ( 4 )
Factorielle ( 4 ) = 4 * Factorielle ( 3 )
Factorielle ( 3 ) = 3 * Factorielle ( 2 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 19


Récursivité

Fonction Factorielle

Factorielle ( 5 ) = 5 * Factorielle ( 4 )
Factorielle ( 4 ) = 4 * Factorielle ( 3 )
Factorielle ( 3 ) = 3 * Factorielle ( 2 )
Factorielle ( 2 ) = 2 * Factorielle ( 1 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 20


Récursivité

Fonction Factorielle

Factorielle ( 5 ) = 5 * Factorielle ( 4 )
Factorielle ( 4 ) = 4 * Factorielle ( 3 )
Factorielle ( 3 ) = 3 * Factorielle ( 2 )
Factorielle ( 2 ) = 2 * Factorielle ( 1 )
Factorielle ( 1 ) = 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 21


Récursivité

Fonction Factorielle

Factorielle ( 5 ) = 5 * Factorielle ( 4 )
Factorielle ( 4 ) = 4 * Factorielle ( 3 )
Factorielle ( 3 ) = 3 * Factorielle ( 2 ) Solution
récursive
Factorielle ( 2 ) = 2 * Factorielle ( 1 )
Factorielle ( 1 ) = 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 22


Récursivité
Fonction Factorielle

Factorielle ( 5 ) = 5 * Factorielle ( 4 )
Solution
Factorielle ( 4 ) = 4 * Factorielle ( 3 )
récursive
Factorielle ( 3 ) = 3 * Factorielle ( 2 )
Factorielle ( 2 ) = 2 * Factorielle ( 1 )
Factorielle ( 1 ) = 1

• En informatique, la récursivité est un des concepts de programmation les plus importants.

• Permet de résoudre des problèmes complexes en le décomposant en problèmes plus petits.

• Une procédure (ou fonction) est dite récursive lorsqu'elle fait appel à elle même.
• C’est l’équivalent de la récurrence en mathématique.
• La programmation récursive sert à remplacer les boucles (Pour , tant que,
Répéter .. jusqu'à).
Pr. Redouan Lahmyed ALGORITHMIQUE 2 23
Récursivité
Solution itérative Solution récursive

Fonction Factorielle ( N: Entier ) : Entier Fonction Factorielle ( N: Entier ) : Entier

Variables
F , i : Entier Début
Si N < 2 Alors
Début Retourne 1
F←1
Si N < 2 Alors Sinon
Retourne F
Retourne N * Factorielle ( N -
Sinon 1)
Pour i =2 à N Pas de 1
Fin Si

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 24


Récursivité
Solution récursive

Fonction Factorielle ( N: Entier ) : Entier

Début
Si N < 2 Alors
Retourne 1

Sinon

Retourne N * Factorielle ( N -
1)

Fin Si

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 25


Récursivité
Solution récursive

Fonction Factorielle ( N: Entier ) : Entier

Début
Si N < 2 Alors
Retourne 1

Sinon

Retourne N * Factorielle ( N -
1)

Fin Si

Cas récursif
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 26


Récursivité
Solution récursive

Fonction Factorielle ( N: Entier ) : Entier

Début
Si N < 2 Alors
Retourne 1

Sinon

Retourne N * Factorielle ( N -
1)

Fin Si

Cas récursif
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 27


Récursivité
Solution récursive

Cas de base
Fonction Factorielle ( N: Entier ) : Entier

Début
Si N < 2 Alors
Retourne 1

Sinon

Retourne N * Factorielle ( N -
1)

Fin Si

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 28


Récursivité
Solution récursive

Cas de base
Fonction Factorielle ( N: Entier ) : Entier

Début
Si N < 2 Alors
Retourne 1

Sinon

Retourne N * Factorielle ( N -
1)

Fin Si

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 29


Récursivité
Solution récursive

Cas de base
Fonction Factorielle ( N: Entier ) : Entier

Début
Si N < 2 Alors
Retourne 1

Sinon

Retourne N * Factorielle ( N -
1)

Fin Si

Cas récursif
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 30


Récursivité

Exercice: Écrire une fonction récursive qui calcule la puissance d'un


entier

Fonction Puissance ( X: Entier , n: Entier) : Entier

Variables
P : Entier

Début
P X^n
Retourne P

Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 31
Récursivité

Fonction Puissance

Puissance ( X , 0 ) = 1
Puissance ( X , 1 ) = X * 1
Puissance ( X , 2 ) = X * X * 1
Puissance ( X , 3 ) = X * X * X * 1
……….
Puissance ( X , N ) = X * X * … * X * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 32


Récursivité

Fonction Puissance

Puissance ( X , 0 ) = 1
Puissance ( X , 1 ) = X * 1
Puissance ( X , 2 ) = X * X * 1
Puissance ( X , 3 ) = X * X * X * 1
……….
Puissance ( X , N ) = X * X * … * X * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 33


Récursivité

Fonction Puissance

Puissance ( X , 0 ) = 1
Puissance ( X , 1 ) = X * Puissance ( X , 0 )
Puissance ( X , 2 ) = X * X * 1
Puissance ( X , 3 ) = X * X * X * 1
……….
Puissance ( X , N ) = X * X * … * X * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 34


Récursivité

Fonction Puissance

Puissance ( X , 0 ) = 1
Puissance ( X , 1 ) = X * Puissance ( X , 0 )
Puissance ( X , 2 ) = X * X * 1
Puissance ( X , 3 ) = X * X * X * 1
……….
Puissance ( X , N ) = X * X * … * X * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 35


Récursivité

Fonction Puissance

Puissance ( X , 0 ) = 1
Puissance ( X , 1 ) = X * Puissance ( X , 0 )
Puissance ( X , 2 ) = X * Puissance ( X , 1 )
Puissance ( X , 3 ) = X * X * X * 1
……….
Puissance ( X , N ) = X * X * … * X * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 36


Récursivité

Fonction Puissance

Puissance ( X , 0 ) = 1
Puissance ( X , 1 ) = X * Puissance ( X , 0 )
Puissance ( X , 2 ) = X * Puissance ( X , 1 )
Puissance ( X , 3 ) = X * X * X * 1
……….
Puissance ( X , N ) = X * X * … * X * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 37


Récursivité

Fonction Puissance

Puissance ( X , 0 ) = 1
Puissance ( X , 1 ) = X * Puissance ( X , 0 )
Puissance ( X , 2 ) = X * Puissance ( X , 1 )
Puissance ( X , 3 ) = X * Puissance ( X , 2 )
……….
Puissance ( X , N ) = X * X * … * X * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 38


Récursivité

Fonction Puissance

Puissance ( X , 0 ) = 1
Puissance ( X , 1 ) = X * Puissance ( X , 0 )
Puissance ( X , 2 ) = X * Puissance ( X , 1 )
Puissance ( X , 3 ) = X * Puissance ( X , 2 )
……….
Puissance ( X , N ) = X * X * … * X * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 39


Récursivité

Fonction Puissance

Puissance ( X , 0 ) = 1
Puissance ( X , 1 ) = X * Puissance ( X , 0 )
Puissance ( X , 2 ) = X * Puissance ( X , 1 )
Puissance ( X , 3 ) = X * Puissance ( X , 2 )
……….
Puissance ( X , N ) = X * Puissance ( X , N - 1 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 40


Récursivité

Fonction Puissance
Cas de base
Puissance ( X , 0 ) = 1
Puissance ( X , 1 ) = X * Puissance ( X , 0 )
Puissance ( X , 2 ) = X * Puissance ( X , 1 )
Puissance ( X , 3 ) = X * Puissance ( X , 2 )
……….
Puissance ( X , N ) = X * Puissance ( X , N - 1 )
Cas récursif

Pr. Redouan Lahmyed ALGORITHMIQUE 2 41


Récursivité
Solution récursive

Fonction Puissance (X: Entier , N: Entier ) : Entier

Début
Si N = 0 Alors
Retourne 1

Sinon

Retourne X * Puissance ( X , N - 1)

Fin Si

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 42


Récursivité
Résumé

 Qu'est-ce que la récursivité ?

Une fonction récursive est une fonction qui s'appelle elle-même.

 Définir une fonction récursive

 Au moins un cas de base et,


 Au moins un cas récursif (cas général).

Pr. Redouan Lahmyed ALGORITHMIQUE 2 43


Récursivité
Exercice: Ecrire un algorithme qui demande à l'utilisateur de taper un entier
positif n Ensuite, à l'aide d'une fonction récursive, l'algorithme
calcule et affiche tous les terms de la suite de Fibonacci, inférieurs
ou égaux à n.

La suite de Fibonacci est définie comme :

Pr. Redouan Lahmyed ALGORITHMIQUE 2 44


Récursivité
Exercice: Ecrire un algorithme qui demande à l'utilisateur de taper un entier
positif n Ensuite, à l'aide d'une fonction récursive, l'algorithme
calcule et affiche tous les terms de la suite de Fibonacci, inférieurs
ou égaux à n.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 45


Récursivité

Pr. Redouan Lahmyed ALGORITHMIQUE 2 46


Récursivité terminale
Défnition
Une définition de fonction f est récursive terminale quand tout appel
récursif est de la forme return f(...); La valeur retournée est
directement la valeur obtenue par un appel récursif, sans qu’il n’y ait
aucune opération sur cette valeur.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 47


Récursivité terminale
Défnition
Une définition de fonction f est récursive terminale quand tout appel
récursif est de la forme return f(...); La valeur retournée est
directement la valeur obtenue par un appel récursif, sans qu’il n’y ait
aucune opération sur cette valeur.

Fonction Somme (A: Entier , B: Entier ) : Entier Exemple:

Début Somme ( 4 , 3 ) = Somme ( 5 , 2 )


Si B = 0 Alors
Retourne A = Somme ( 6 , 1 )
Sinon
Retourne Somme ( A + 1 , B - 1) = Somme ( 7 , 0 )
Fin Si
=7
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 48


Récursivité non-terminale
Défnition
L’appel récursif n’est pas la dernière instruction et/ou elle n’est pas
isolée (fait partie d’une expression).

Pr. Redouan Lahmyed ALGORITHMIQUE 2 49


Récursivité non-terminale
Défnition
L’appel récursif n’est pas la dernière instruction et/ou elle n’est pas
isolée (fait partie d’une expression).

Fonction Somme (A: Entier , B: Entier ) : Entier Exemple:

Début Somme ( 4 , 2 ) = 1 + Somme ( 4 , 1 )


Si B = 0 Alors
Retourne A = 1 + 1 + Somme ( 4 , 0 )
Sinon
Retourne 1 + Somme ( A , B - 1) =1+1+4
Fin Si
=6
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 50


La recette de récursivité
 S’assurer que le problème peut se décomposer en un ou plusieurs
sous-problèmes de même nature.

 Identifier le cas de base qui est le plus petit problème qui ne se


décompose pas en sous-problèmes

 Résoudre(P) =

 si P est un cas de base, le résoudre directement

 sinon
• décomposer P en sous-problèmes P1, P2,...
• résoudre récursivement P1, P2,...
• combiner les résultats pour obtenir la solution pour P

Pr. Redouan Lahmyed ALGORITHMIQUE 2 51


Récursivité (L . P . Python)
 En Python, l’implémentation d’une fonction récursive est semblable à
celle des autres fonctions, à ceci près qu’une fonction récursive doit
impérativement contenir un retour avec le mot clé return pour faire
les appels récursifs.

 Méthode :

 Lorsque l’on écrit une fonction récursive en Python, on peut partager


son code en deux parties.

• Cas de Base : Une condition d’arrêt pour stopper les appels récursifs.

• Cas récursif : Les appels récursifs.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 52


Récursivité (L . P . Python)

Exemple : En Python, la fonction puissance( X , n) implémente le calcul de 𝑋 𝑛 (pour


X un nombre et n un entier positif)

def puissance( X , n ) :
if n == 0:
return 1
else:
return X * puissance( X , n-1 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 53


ALGORITHMIQUE – 2: LA COMPLEXITÉ
SMI-3

A.U: 2022 – 2023

DÉPARTEMENT INFORMATIQUE

Pr. Redouan Lahmyed ALGORITHMIQUE 2 1


Complexité

Exercice:
“ Proposer un algorithme le plus efficace pour trier les éléments de ce tableau T. "

• Plusieurs algorithmes permettent de résoudre un même problème.

• Pour trier les éléments d'un tableau il y a différents algorithmes :

• Tri par sélection


• Tri à bulle
• Tri par insertion
Pr. Redouan Lahmyed ALGORITHMIQUE 2 2
Complexité
• Tri par sélection
Principe

On cherche le plus petit élément du tableau et on le place à la


première position
Après, on cherche le plus petit élément dans les (N-1) qui restent
et on le place en deuxième position, et ainsi de suite

Pr. Redouan Lahmyed ALGORITHMIQUE 2 3


Complexité
• Tri par sélection

Pour i=0 à N-2


posmin ← i
Pour j=i à N-1
Si (T[j] <T[posmin]) alors
posmin ← j
Finsi
FinPour
z ← T[posmin]
T[posmin] ← T[i]
T[i] ← z
FinPour

Pr. Redouan Lahmyed ALGORITHMIQUE 2 4


Complexité
• Tri à bulle

Principe

• Parcourir les éléments du tableau de gauche à droite:


 Dès que l'on rencontre deux éléments consécutifs qui ne sont pas
dans le bon ordre (T[i] > T[i+1]), on les échange
 Recommencer tant qu’il y a un changement d’éléments à
effectuer

Pr. Redouan Lahmyed ALGORITHMIQUE 2 5


Complexité
• Tri à bulle

Répéter
np ← 0
Pour i=0 à N-2
Si (T[i] > T[i+1]) alors
z ← T[i]
T[i] ← T[i+1]
T[i+1] ← z
np ← np + 1
Finsi
FinPour
Jusqu’à (np=0)

Pr. Redouan Lahmyed ALGORITHMIQUE 2 6


Complexité
• Tri par insertion

Principe T[i]

• Parcourir le tableau T de gauche à droite.


Partie
• A l’itération N° i+1 : Partie triée
non triée
 La partie du tableau à gauche de T[i] est triée.

 La partie du tableau à droite de T[i] n’est pas triée.

 l’élément T[i] est inséré dans la partie gauche :

 A la position d’indice i, si T[i] >= T[i-1]

 A la position d’indice j, tel que : T[j-1] <= T[i] et T[i] < T[j+1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 7


Complexité
• Tri par insertion

Pour i=1 à N-1


x ← T[i]
j ← i
TantQue (j>0 et T[j-1]>x)
T[j] ← T[j-1]
j ← j-1
FinTantQue
T[j] ← x
FinPour
Pr. Redouan Lahmyed ALGORITHMIQUE 2 8
Complexité

• Pour trier les éléments d'un tableau il y a différents algorithmes :

• Tri par sélection


• Tri à bulle
• Tri par insertion

• Comment évaluer les performances d’un algorithme?

• Sur quel critère il faut se baser pour choisir le meilleur algorithme?

Pr. Redouan Lahmyed ALGORITHMIQUE 2 9


Complexité

Exemple:

Pr. Redouan Lahmyed ALGORITHMIQUE 2 10


Complexité

Exemple:

Pr. Redouan Lahmyed ALGORITHMIQUE 2 11


Complexité

Exemple:

Pr. Redouan Lahmyed ALGORITHMIQUE 2 12


Complexité

Exemple:

15 + 20 = 35 m

30 m

Pr. Redouan Lahmyed ALGORITHMIQUE 2 13


Complexité

Exemple:

15 + 20 = 35 m

30 m

Pr. Redouan Lahmyed ALGORITHMIQUE 2 14


Complexité

Pr. Redouan Lahmyed ALGORITHMIQUE 2 15


Complexité
 La complexité d'un algorithme est une évaluation du coût de
l’algorithme en termes de:

 temps d'exécution (complexité temporelle) ou


 d'espace mémoire (complexité spatiale, encombrement en
mémoire des données).

 On va traiter dans la suite la complexité temporelle. Les mêmes notions


permettent de traiter la complexité spatiale.

“Le temps est beaucoup plus important que l'espace.”

 La complexité permet de déterminer si un algorithme A et meilleur qu’un


algorithme B.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 16


Complexité
Complexité temporelle

 Complexité temporelle est définie en fonction de la taille


d'entrée n en utilisant la notation grand O.

 Nous utilisons la notation grand O pour classer les algorithmes en


fonction de leur temps d'exécution au fur et à mesure que la taille
d'entrée n augmente.

 La fonction O est le taux de croissance dans le pire des cas en


fonction de la taille d'entrée n.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 17


Complexité

Types de complexité
Le tableau suivant donne les types de complexité habituellement rencontrés :

Notation grand O Nom


O(1) Complexité constante
O ( log n ) Complexité logarithmique
O(n) Complexité linéaire
O ( n log n ) Complexité quasi-linéaire
O ( n2 ) Complexité quadratique
O ( 2n ) Complexité exponentielle
O(n!) Complexité factorielle

Pr. Redouan Lahmyed ALGORITHMIQUE 2 18


Complexité

Types de complexité
• Si le temps d'exécution d'une instruction est de 10 nanosecondes (1 / 1000000000 de
secondes), le tableau suivant indique le temps d'exécution de chaque type de complexité.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 19


Complexité

Types de complexité
• Si le temps d'exécution d'une instruction est de 10 nanosecondes (1 / 1000000000 de
secondes), le tableau suivant indique le temps d'exécution de chaque type de complexité.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 20


Complexité

Types de complexité

Pr. Redouan Lahmyed ALGORITHMIQUE 2 21


Complexité

Types de complexité

Pr. Redouan Lahmyed ALGORITHMIQUE 2 22


Complexité

Règles de calcul de la complexité

 L'évaluation exacte du temps de calcul dépend de


nombreux paramètres:

1. le langage utilisé pour coder l'algorithme (compile ou interprété).

2. le compilateur utilisé.

3. l'ordinateur sur lequel va tourner le programme (sa rapidité).

4. taille et structure de données.

5. …..

Pr. Redouan Lahmyed ALGORITHMIQUE 2 23


Complexité

Règles de calcul de la complexité

Pr. Redouan Lahmyed ALGORITHMIQUE 2 24


Complexité

Règles de calcul de la complexité


Pour calculer la complexité grand O d'un algorithme il faut
compter le nombre d'opération de base qu'il effectue comme :

Opération arithmétique ou logique ( + , * , ET , OU , ...)

Opération d'affectation ( X ← 10 )
Vérification d'une condition ( X > 0 )

Opération d'entrée / Sortie ( Ecrire ou Lire )

La complexité de chaque opération de base est constante ou O ( 1 )


Pr. Redouan Lahmyed ALGORITHMIQUE 2 25
Complexité

Règles de calcul de la complexité


La boucle d'une boucle est la complexité du bloc interne dans
la boucle multipliée par le nombre que le bloc interne est répété.
Exemple

Pour i = 1 à n Pas de 1

Ecrire ( " Saisir un nombre " )


Lire ( A )
Ecrire ( " i x A : ", i * A)

FinPour

Pr. Redouan Lahmyed ALGORITHMIQUE 2 26


Complexité

Règles de calcul de la complexité


La boucle d'une boucle est la complexité du bloc interne dans
la boucle multipliée par le nombre que le bloc interne est répété.
Exemple
Affectation : O ( 1 )

Pour i = 1 à n Pas de 1

Ecrire ( " Saisir un nombre " )


Lire ( A )
Ecrire ( " i x A : ", i * A)

FinPour

Pr. Redouan Lahmyed ALGORITHMIQUE 2 27


Complexité

Règles de calcul de la complexité


La boucle d'une boucle est la complexité du bloc interne dans
la boucle multipliée par le nombre que le bloc interne est répété.
Exemple
Affectation : O ( 1 )

Pour i = 1 à n Pas de 1 Condition : O ( 1 )

Ecrire ( " Saisir un nombre " )


Lire ( A )
Ecrire ( " i x A : ", i * A)

FinPour

Pr. Redouan Lahmyed ALGORITHMIQUE 2 28


Complexité

Règles de calcul de la complexité


La boucle d'une boucle est la complexité du bloc interne dans
la boucle multipliée par le nombre que le bloc interne est répété.
Exemple
Affectation : O ( 1 )

Pour i = 1 à n Pas de 1 Condition : O ( 1 )

Ecrire ( " Saisir un nombre " ) Écriture : O(1)


Lire ( A )
Ecrire ( " i x A : ", i * A)

FinPour

Pr. Redouan Lahmyed ALGORITHMIQUE 2 29


Complexité

Règles de calcul de la complexité


La boucle d'une boucle est la complexité du bloc interne dans
la boucle multipliée par le nombre que le bloc interne est répété.
Exemple
Affectation : O ( 1 )

Pour i = 1 à n Pas de 1 Condition : O ( 1 )

Ecrire ( " Saisir un nombre " ) Écriture : O(1)


Lire ( A )
Ecrire ( " i x A : ", i * A) Lecture : O(1)

FinPour

Pr. Redouan Lahmyed ALGORITHMIQUE 2 30


Complexité

Règles de calcul de la complexité


La boucle d'une boucle est la complexité du bloc interne dans
la boucle multipliée par le nombre que le bloc interne est répété.
Exemple
Affectation : O ( 1 )

Pour i = 1 à n Pas de 1 Condition : O ( 1 )

Ecrire ( " Saisir un nombre " ) Écriture : O(1)


Lire ( A )
Ecrire ( " i x A : ", i * A) Lecture : O(1)
Écriture : O(1)
FinPour

Pr. Redouan Lahmyed ALGORITHMIQUE 2 31


Complexité

Règles de calcul de la complexité


La boucle d'une boucle est la complexité du bloc interne dans
la boucle multipliée par le nombre que le bloc interne est répété.
Exemple
Affectation : O ( 1 )

Pour i = 1 à n Pas de 1 Condition : O ( 1 )

Ecrire ( " Saisir un nombre " ) Écriture : O(1)


Lire ( A )
Ecrire ( " i x A : ", i * A) Lecture : O(1)
Écriture : O(1)
FinPour
Opération arithmétique : O ( 1 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 32


Complexité

Règles de calcul de la complexité


La boucle d'une boucle est la complexité du bloc interne dans
la boucle multipliée par le nombre que le bloc interne est répété.
Exemple
Affectation : O ( 1 )

Pour i = 1 à n Pas de 1 Condition : O ( 1 )

Ecrire ( " Saisir un nombre " ) Écriture : O(1)


Lire ( A )
Ecrire ( " i x A : ", i * A) Lecture : O(1)
Écriture : O(1)
FinPour
Opération arithmétique : O ( 1 )
Incrémentation : O(2)

Pr. Redouan Lahmyed ALGORITHMIQUE 2 33


Complexité

Règles de calcul de la complexité


La boucle d'une boucle est la complexité du bloc interne dans
la boucle multipliée par le nombre que le bloc interne est répété.
Exemple
Affectation : O ( 1 )

Pour i = 1 à n Pas de 1 Condition : O ( 1 )

Ecrire ( " Saisir un nombre " ) Écriture : O(1)


Lire ( A )
Ecrire ( " i x A : ", i * A) Lecture : O(1)
x(n–1+1)
Écriture : O(1)
FinPour
Opération arithmétique : O ( 1 )
Incrémentation : O ( 2 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 34


Complexité

Règles de calcul de la complexité


La boucle d'une boucle est la complexité du bloc interne dans
la boucle multipliée par le nombre que le bloc interne est répété.
Exemple
Affectation : O ( 1 )

Pour i = 1 à n Pas de 1 Condition : O ( 1 )

Ecrire ( " Saisir un nombre " ) Écriture : O(1)


Lire ( A )
Ecrire ( " i x A : ", i * A) Lecture : O(1)
x n
Écriture : O(1)
FinPour
Opération arithmétique : O ( 1 )
Incrémentation : O ( 2 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 35


Complexité

Règles de calcul de la complexité


La boucle d'une boucle est la complexité du bloc interne dans
la boucle multipliée par le nombre que le bloc interne est répété.
Exemple

La complexité de la boucle Pour :


Pour i = 1 à n Pas de 1

Ecrire ( " Saisir un nombre " ) O(1)+nxO(7)=O ( 7n + 1 )


Lire ( A )
Ecrire ( " i x A : ", i * A)

FinPour

Pr. Redouan Lahmyed ALGORITHMIQUE 2 36


Complexité

Règles de calcul de la complexité


Boucle Pour Boucle Tant que

Pour i = 1 à n Pas de 1 i←1


Tant que (i <= n)
Ecrire ( " Saisir un nombre " )
Lire ( A ) Ecrire ( " Saisir un nombre " )
Ecrire ( " i x A : ", i * A) Lire ( A )
Ecrire ( " i x A : ", i * A)
FinPour i←i+1
FinTantque

Pr. Redouan Lahmyed ALGORITHMIQUE 2 37


Complexité

Règles de calcul de la complexité


Boucle Pour Boucle Tant que

Pour i = 1 à n Pas de 1 i←1


Tant que (i <= n)
Ecrire ( " Saisir un nombre " )
Lire ( A ) Ecrire ( " Saisir un nombre " )
Ecrire ( " i x A : ", i * A) Lire ( A )
Ecrire ( " i x A : ", i * A)
FinPour i←i+1
FinTantque

𝑛
Complexité = O ( 1 ) + ( O(1)+O(1)+O(1)+O(2)+O(2))
𝑖=1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 38


Complexité

Règles de calcul de la complexité


Boucle Pour Boucle Tant que

Pour i = 1 à n Pas de 1 i←1


Tant que (i <= n)
Ecrire ( " Saisir un nombre " )
Lire ( A ) Ecrire ( " Saisir un nombre " )
Ecrire ( " i x A : ", i * A) Lire ( A )
Ecrire ( " i x A : ", i * A)
FinPour i←i+1
FinTantque

𝑛
Complexité = O ( 1 ) + ( O(1)+O(1)+O(1)+O(2)+O(2))
𝑖=1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 39


Complexité

Règles de calcul de la complexité


Boucle Pour Boucle Tant que

Pour i = 1 à n Pas de 1 i←1


Tant que (i <= n)
Ecrire ( " Saisir un nombre " )
Lire ( A ) Ecrire ( " Saisir un nombre " )
Ecrire ( " i x A : ", i * A) Lire ( A )
Ecrire ( " i x A : ", i * A)
FinPour i←i+1
FinTantque

𝑛
Complexité = O ( 1 ) + ( O(1)+O(1)+O(1)+O(2)+O(2))
𝑖=1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 40


Complexité

Règles de calcul de la complexité


Boucle Pour Boucle Tant que

Pour i = 1 à n Pas de 1 i←1


Tant que (i <= n)
Ecrire ( " Saisir un nombre " )
Lire ( A ) Ecrire ( " Saisir un nombre " )
Ecrire ( " i x A : ", i * A) Lire ( A )
Ecrire ( " i x A : ", i * A)
FinPour i←i+1
FinTantque

𝑛
Complexité = O ( 1 ) + ( O(1)+O(1)+O(1)+O(2)+O(2))
𝑖=1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 41


Complexité

Règles de calcul de la complexité


Boucle Pour Boucle Tant que

Pour i = 1 à n Pas de 1 i←1


Tant que (i <= n)
Ecrire ( " Saisir un nombre " )
Lire ( A ) Ecrire ( " Saisir un nombre " )
Ecrire ( " i x A : ", i * A) Lire ( A )
Ecrire ( " i x A : ", i * A)
FinPour i←i+1
FinTantque

𝑛
Complexité = O ( 1 ) + ( O(1)+O(1)+O(1)+O(2)+O(2))
𝑖=1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 42


Complexité

Règles de calcul de la complexité


Boucle Pour Boucle Tant que

Pour i = 1 à n Pas de 1 i←1


Tant que (i <= n)
Ecrire ( " Saisir un nombre " )
Lire ( A ) Ecrire ( " Saisir un nombre " )
Ecrire ( " i x A : ", i * A) Lire ( A )
Ecrire ( " i x A : ", i * A)
FinPour i←i+1
FinTantque

𝑛
Complexité = O ( 1 ) + ( O(1)+O(1)+O(1)+O(2)+O(2))
𝑖=1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 43


Complexité

Règles de calcul de la complexité


Boucle Pour Boucle Tant que

Pour i = 1 à n Pas de 1 i←1


Tant que (i <= n)
Ecrire ( " Saisir un nombre " )
Lire ( A ) Ecrire ( " Saisir un nombre " )
Ecrire ( " i x A : ", i * A) Lire ( A )
Ecrire ( " i x A : ", i * A)
FinPour i←i+1
FinTantque

𝑛
Complexité = O ( 1 ) + ( O(1)+O(1)+O(1)+O(2)+O(2))
𝑖=1
= O ( 1 ) + ( n – 1 + 1) x O ( 7 ) = O ( 1 ) + O ( 7n )
=O ( 7n + 1 )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 44
Complexité

Règles de calcul de la complexité


La complexité de la structure Si / Sinon correspond à la complexité
de la condition ( O ( 1 ) ) plus la complexité la plus grande entre " alors
" et " sinon ".
Exemple:

Si i < 2 Alors
Ecrire ( " i : " , i )

Sinon
Ecrire ( " Saisir un nombre" )
Lire ( A )
Ecrire ( " Le résultat est : " , i x A )
Fin Si
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 45


Complexité

Règles de calcul de la complexité


La complexité de la structure Si / Sinon correspond à la complexité
de la condition ( O ( 1 ) ) plus la complexité la plus grande entre " alors
" et " sinon ".
Exemple:

Si i < 2 Alors
Ecrire ( " i : " , i )

Sinon
Ecrire ( " Saisir un nombre" )
Lire ( A )
Ecrire ( " Le résultat est : " , i x A )
Fin Si
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 46


Complexité

Règles de calcul de la complexité


La complexité de la structure Si / Sinon correspond à la complexité
de la condition ( O ( 1 ) ) plus la complexité la plus grande entre " alors
" et " sinon ".
Exemple:
• Vérification de la condition : O (1)
Si i < 2 Alors
Ecrire ( " i : " , i )

Sinon
Ecrire ( " Saisir un nombre" )
Lire ( A )
Ecrire ( " Le résultat est : " , i x A )
Fin Si
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 47


Complexité

Règles de calcul de la complexité


La complexité de la structure Si / Sinon correspond à la complexité
de la condition ( O ( 1 ) ) plus la complexité la plus grande entre " alors
" et " sinon ".
Exemple:
• Vérification de la condition : O (1)
Si i < 2 Alors
Ecrire ( " i : " , i ) • Si la condition est vraie :
Écriture : O ( 1 )
Sinon
Ecrire ( " Saisir un nombre" )
Lire ( A )
Ecrire ( " Le résultat est : " , i x A )
Fin Si
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 48


Complexité

Règles de calcul de la complexité


La complexité de la structure Si / Sinon correspond à la complexité
de la condition ( O ( 1 ) ) plus la complexité la plus grande entre " alors
" et " sinon ".
Exemple:
• Vérification de la condition : O (1)
Si i < 2 Alors
Ecrire ( " i : " , i ) • Si la condition est vraie :
Écriture : O ( 1 )
Sinon
Ecrire ( " Saisir un nombre" ) • Si la condition est fausse :
Lire ( A )
Ecrire ( " Le résultat est : " , i x A ) Écriture : O ( 1 )
Fin Si Lecture : O ( 1 )
Fin Écriture : O ( 1 )
Opération arithmétique : O ( 1 )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 49
Complexité

Règles de calcul de la complexité


La complexité de la structure Si / Sinon correspond à la complexité
de la condition ( O ( 1 ) ) plus la complexité la plus grande entre " alors
" et " sinon ".
Exemple:
• Vérification de la condition : O (1)
Si i < 2 Alors
Ecrire ( " i : " , i ) • Si la condition est vraie : O(1)

Sinon
Ecrire ( " Saisir un nombre" ) • Si la condition est fausse : O(4)
Lire ( A )
Ecrire ( " Le résultat est : " , i x A )
Fin Si
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 50


Complexité

Règles de calcul de la complexité


La complexité de la structure Si / Sinon correspond à la complexité
de la condition ( O ( 1 ) ) plus la complexité la plus grande entre " alors
" et " sinon ".
Exemple:
• Vérification de la condition : O (1)
Si i < 2 Alors
Ecrire ( " i : " , i ) • Si la condition est vraie : O(1)

Sinon
Ecrire ( " Saisir un nombre" ) • Si la condition est fausse : O(4)
Lire ( A )
Ecrire ( " Le résultat est : " , i x A ) La complexité de la structure Si / Sinon :
Fin Si O ( 1 ) + Max ( O ( 1 ) , O ( 4 ) ) = O ( 1 ) + O ( 4 )
Fin =O (5)

Pr. Redouan Lahmyed ALGORITHMIQUE 2 51


Complexité
Règles de calcul de la complexité
La complexité d'une séquence de deux blocs d'instructions est
égale à la somme des complexités de deux blocs.
Pour i = 1 à n Pas de 1

Ecrire ( " Saisir un nombre " )


Lire ( A )
Ecrire ( " i x A : ", i * A)

FinPour

Si i < 2 Alors
Ecrire ( " i : " , i )

Sinon
Ecrire ( " Saisir un nombre" )
Lire ( A )
Ecrire ( " Le résultat est : " , i x A )
Fin Si
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 52
Complexité
Règles de calcul de la complexité
La complexité d'une séquence de deux blocs d'instructions est
égale à la somme des complexités de deux blocs.
Pour i = 1 à n Pas de 1

Ecrire ( " Saisir un nombre " )


Lire ( A )
Ecrire ( " i x A : ", i * A)

FinPour

Si i < 2 Alors
Ecrire ( " i : " , i )

Sinon
Ecrire ( " Saisir un nombre" )
Lire ( A )
Ecrire ( " Le résultat est : " , i x A )
Fin Si
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 53
Complexité
Règles de calcul de la complexité
La complexité d'une séquence de deux blocs d'instructions est
égale à la somme des complexités de deux blocs.
Pour i = 1 à n Pas de 1

Ecrire ( " Saisir un nombre " )


Lire ( A ) O ( 7n + 1 )
Ecrire ( " i x A : ", i * A)
O(5)
FinPour

Si i < 2 Alors
Ecrire ( " i : " , i )

Sinon
Ecrire ( " Saisir un nombre" )
Lire ( A )
Ecrire ( " Le résultat est : " , i x A )
Fin Si
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 54
Complexité
Règles de calcul de la complexité
La complexité d'une séquence de deux blocs d'instructions est
égale à la somme des complexités de deux blocs.
Pour i = 1 à n Pas de 1

Ecrire ( " Saisir un nombre " )


Lire ( A ) O ( 7n + 1 )
Ecrire ( " i x A : ", i * A)
O(5)
FinPour

Si i < 2 Alors
La complexité de cette séquence :
Ecrire ( " i : " , i )
O ( 7n + 1 ) + O ( 5 ) = O ( 7n + 6 )
Sinon
Ecrire ( " Saisir un nombre" )
Lire ( A )
Ecrire ( " Le résultat est : " , i x A )
Fin Si
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 55
Complexité
Règles de calcul de la complexité
 La complexité d'un algorithme est un calcul de ses performances
asymptotiques dans le pire des cas

• Asymptotique nous nous interessons aux données très volumineuses car les petites
valeurs ne sont pas assez informatives.

Les constantes multiplicatives sont remplacées par 1.

Les constantes additives sont annulées.

Le terme le plus élevé est conservé.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 56


Complexité
Règles de calcul de la complexité
Les constantes multiplicatives sont remplacées par 1.

Les constantes additives sont annulées.

Le terme le plus élevé est conservé.

Exemple:

• O ( 6n2 + 4n + 7 )

• O ( 2n + 4n3 + 11n2 )

• O ( 6n + 13log n + 17 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 57


Complexité
Règles de calcul de la complexité
Les constantes multiplicatives sont remplacées par 1.

Les constantes additives sont annulées.

Le terme le plus élevé est conservé.

Exemple:

• O ( 6n2 + 4n + 7 ) O ( 1n2 + 1n + 1 ) O ( 1n2 + 1n ) O ( 1n2 ) O ( n2 )


• O ( 2n + 4n3 + 11n2 ) O ( 2n + 1n3 + 1n2 ) O ( 2n )
• O ( 6n + 13log n + 17 ) O ( 1n + 1log n + 1 ) O ( 1n ) O(n)

Pr. Redouan Lahmyed ALGORITHMIQUE 2 58


Complexité
Exemple 1 : Calculer la complexité de l'algorithme suivant :

Algorithme Comparaison
Variables A , B , C : Entier

Début
A←5
B←5
C ← 10
Ecrire (A = B)
Ecrire (A = C)

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 59


Complexité
Exemple 1 : Calculer la complexité de l'algorithme suivant :

Algorithme Comparaison
Variables A , B , C : Entier

Début
A←5 O(1)
B←5
C ← 10
Ecrire (A = B)
Ecrire (A = C)

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 60


Complexité
Exemple 1 : Calculer la complexité de l'algorithme suivant :

Algorithme Comparaison
Variables A , B , C : Entier

Début
A←5 O(1)
B←5 O(1)
C ← 10
Ecrire (A = B)
Ecrire (A = C)

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 61


Complexité
Exemple 1 : Calculer la complexité de l'algorithme suivant :

Algorithme Comparaison
Variables A , B , C : Entier

Début
A←5 O(1)
B←5 O(1)
C ← 10 O(1)
Ecrire (A = B)
Ecrire (A = C)

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 62


Complexité
Exemple 1 : Calculer la complexité de l'algorithme suivant :

Algorithme Comparaison
Variables A , B , C : Entier

Début
A←5 O(1)
B←5 O(1)
C ← 10 O(1)
Ecrire (A = B) O(2)
Ecrire (A = C)

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 63


Complexité
Exemple 1 : Calculer la complexité de l'algorithme suivant :

Algorithme Comparaison
Variables A , B , C : Entier

Début
A←5 O(1)
B←5 O(1)
C ← 10 O(1)
Ecrire (A = B) O(2)
Ecrire (A = C) O(2)

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 64


Complexité
Exemple 1 : Calculer la complexité de l'algorithme suivant :

Algorithme Comparaison
Variables A , B , C : Entier

Début
A←5 O(1)
B←5 O(1)
C ← 10 O(1)
Ecrire (A = B) O(2)
Ecrire (A = C) O(2)

Fin

Complexité = O ( 1 ) + O ( 1 ) + O ( 1 ) + O ( 2 ) + O ( 2 ) =O(7) O(1)

Alors la complexité de cet algorithme est : O (1)


Pr. Redouan Lahmyed ALGORITHMIQUE 2 65
Complexité
Exemple 2 :Calculer la complexité de l'algorithme suivant :
Algorithme Affichage
Variables i , N : Entier

Début
Ecrire ( " Saisir un nombre " )
Lire ( N )
Si N < 2 Alors
Ecrire ( N )
Sinon
Pour i = N+10 à N+20 Pas de 1

Ecrire ( i )

FinPour
Fin Si
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 66


Complexité
Exemple 2 :Calculer la complexité de l'algorithme suivant :
Algorithme Affichage
Variables i , N : Entier

Début
Ecrire ( " Saisir un nombre " ) O(1)
Lire ( N ) O(1)
Si N < 2 Alors
Ecrire ( N )
Sinon
Pour i = N+10 à N+20 Pas de 1

Ecrire ( i )

FinPour
Fin Si
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 67


Complexité
Exemple 2 :Calculer la complexité de l'algorithme suivant :
Algorithme Affichage
Variables i , N : Entier

Début
Ecrire ( " Saisir un nombre " ) O(1)
Lire ( N ) O(1)
Si N < 2 Alors  complexité de la structure Si / Sinon
Ecrire ( N )
O(1)
Sinon
Pour i = N+10 à N+20 Pas de 1 • Si la condition est vraie :

Ecrire ( i )
• Si la condition est fausse :
FinPour
Fin Si
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 68


Complexité
Exemple 2 :Calculer la complexité de l'algorithme suivant :
Algorithme Affichage
Variables i , N : Entier

Début
Ecrire ( " Saisir un nombre " ) O(1)
Lire ( N ) O(1)
Si N < 2 Alors  complexité de la structure Si / Sinon
Ecrire ( N )
O(1)
Sinon
Pour i = N+10 à N+20 Pas de 1 • Si la condition est vraie :

O(1)
Ecrire ( i )
• Si la condition est fausse :
FinPour
Fin Si
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 69


Complexité
Exemple 2 :Calculer la complexité de l'algorithme suivant :
Algorithme Affichage
Variables i , N : Entier

Début
Ecrire ( " Saisir un nombre " ) O(1)
Lire ( N ) O(1)
Si N < 2 Alors  complexité de la structure Si / Sinon
Ecrire ( N )
O(1)
Sinon
Pour i = N+10 à N+20 Pas de 1 • Si la condition est vraie :

O(1)
Ecrire ( i )
• Si la condition est fausse :
FinPour O(2)+ 𝑵+𝟐𝟎
𝒊=𝐍+𝟏𝟎 (O (2)+O(1)+O(2))
Fin Si
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 70


Complexité
Exemple 2 :Calculer la complexité de l'algorithme suivant :
Algorithme Affichage
Variables i , N : Entier

Début
Ecrire ( " Saisir un nombre " ) O(1)
Lire ( N ) O(1)
Si N < 2 Alors  complexité de la structure Si / Sinon
Ecrire ( N )
O(1)
Sinon
Pour i = N+10 à N+20 Pas de 1 • Si la condition est vraie :

O(1)
Ecrire ( i )
• Si la condition est fausse :
FinPour O(2)+ 𝑵+𝟐𝟎
𝒊=𝐍+𝟏𝟎 (O (2)+O(1)+O(2))
Fin Si
Fin = O ( 2 ) + ( ( N+ 20 ) – (N+10) + 1 ) x O ( 5 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 71


Complexité
Exemple 2 :Calculer la complexité de l'algorithme suivant :
Algorithme Affichage
Variables i , N : Entier

Début
Ecrire ( " Saisir un nombre " ) O(1)
Lire ( N ) O(1)
Si N < 2 Alors  complexité de la structure Si / Sinon
Ecrire ( N )
O(1)
Sinon
Pour i = N+10 à N+20 Pas de 1 • Si la condition est vraie :

O(1)
Ecrire ( i )
• Si la condition est fausse :
FinPour O(2)+ 𝑵+𝟐𝟎
𝒊=𝐍+𝟏𝟎 (O (2)+O(1)+O(2))
Fin Si
Fin = O ( 2 ) + ( ( N+ 20 ) – (N+10) + 1 ) x O ( 5 )
= O ( 2 ) + O ( 55 ) = O ( 57 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 72


Complexité
Exemple 2 :Calculer la complexité de l'algorithme suivant :
Algorithme Affichage
Variables i , N : Entier

Début
Ecrire ( " Saisir un nombre " ) O(1)
Lire ( N ) O(1)
Si N < 2 Alors complexité de la structure Si / Sinon
Ecrire ( N )
O ( 1 ) + Max ( O ( 1 ) , O ( 57 ) ) = O ( 57 )
Sinon
Pour i = N+10 à N+20 Pas de 1

Ecrire ( i )

FinPour
Fin Si
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 73


Complexité
Exemple 2 :Calculer la complexité de l'algorithme suivant :
Algorithme Affichage
Variables i , N : Entier

Début O(1)
Ecrire ( " Saisir un nombre " )
Lire ( N ) O(1)
Si N < 2 Alors complexité de la structure Si / Sinon
Ecrire ( N )
O ( 1 ) + Max ( O ( 1 ) , O ( 57 ) ) = O ( 1 ) + O ( 57 )
Sinon
Pour i = N+10 à N+20 Pas de 1

Ecrire ( i ) Complexité = O ( 2 ) + O ( 1 ) + O ( 57 ) = O ( 60 )

FinPour
Fin Si Alors la complexité de cet algorithme est : O ( 1 )
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 74


Complexité
Exemple 3 :Calculer la complexité de l'algorithme suivant :

Algorithme Remplissage_Matrice
Variables i , N : Entier
Tableau T[100][100] : Entier

Début
Ecrire ( " Saisir la dimension du tableau " )
Lire ( N )

Pour i = 0 à N Pas de 1
Pour j = 0 à N Pas de 1

Lire ( i )

FinPour
FinPour
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 75


Complexité
Exemple 3 :Calculer la complexité de l'algorithme suivant :

Algorithme Remplissage_Matrice
Variables i , N : Entier
Tableau T[100][100] : Entier

Début La complexité : O ( 4n2 + 12n + 11 )


Ecrire ( " Saisir la dimension du tableau " )
Lire ( N )
Alors la complexité de cet algorithme est :
Pour i = 0 à N Pas de 1 O ( n2 )
Pour j = 0 à N Pas de 1

Lire ( i )

FinPour
FinPour
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 76


Complexité
Exemple 4 :Calculer la complexité de l'algorithme suivant :

Algorithme Affichage
Variables i , N : Entier
Tableau T[100][100] : Entier

Début
Ecrire ( " Saisir un nombre " )
Lire ( N )

Pour i = 0 à N Pas de i * 2

Ecrire ( i )
FinPour

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 77


Complexité
Exemple 4 :Calculer la complexité de l'algorithme suivant :

Algorithme Affichage
Variables i , N : Entier
Tableau T[100][100] : Entier

Début
Ecrire ( " Saisir un nombre " ) O(1)
Lire ( N )

Pour i = 0 à N Pas de i * 2

Ecrire ( i )
FinPour

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 78


Complexité
Exemple 4 :Calculer la complexité de l'algorithme suivant :

Algorithme Affichage
Variables i , N : Entier
Tableau T[100][100] : Entier

Début
Ecrire ( " Saisir un nombre " ) O(1)
Lire ( N ) O(1)
Pour i = 0 à N Pas de i * 2

Ecrire ( i )
FinPour

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 79


Complexité
Exemple 4 :Calculer la complexité de l'algorithme suivant :

Algorithme Affichage
Variables i , N : Entier
Tableau T[100][100] : Entier

Début
Ecrire ( " Saisir un nombre " ) O(1)
Lire ( N ) O(1)

Pour i = 0 à N Pas de i * 2

Ecrire ( i )
FinPour

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 80


Complexité
Exemple 4 :Calculer la complexité de l'algorithme suivant :
Si N vaut 10
Ité. 1 : i vaut 1
Algorithme Affichage Ité. 2 : i vaut 2
Variables i , N : Entier Ité. 3 : i vaut 4
Tableau T[100][100] : Entier Ité. 4 : i vaut 8

Début
Ecrire ( " Saisir un nombre " ) O(1)
Lire ( N ) O(1)

Pour i = 0 à N Pas de i * 2

Ecrire ( i )
FinPour

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 81


Complexité
Exemple 4 :Calculer la complexité de l'algorithme suivant :
Si N vaut 10
Ité. 1 : i vaut 1
Algorithme Affichage Ité. 2 : i vaut 2
Variables i , N : Entier Ité. 3 : i vaut 4
Tableau T[100][100] : Entier Ité. 4 : i vaut 8

Début
Si N vaut 300
Ecrire ( " Saisir un nombre " ) O(1)
Ité. 1 : i vaut 1
Lire ( N ) O(1) Ité. 2 : i vaut 2
Ité. 3 : i vaut 4
Pour i = 0 à N Pas de i * 2
Ité. 4 : i vaut 8
Ité. 5 : i vaut 16
Ecrire ( i )
Ité. 6 : i vaut 32
FinPour
Ité. 7 : i vaut 64
Ité. 8 : i vaut 128
Fin
Ité. 9 : i vaut 256

Pr. Redouan Lahmyed ALGORITHMIQUE 2 82


Complexité
Exemple 4 :Calculer la complexité de l'algorithme suivant :
1 + log2 (10) Si N vaut 10
Ité. 1 : i vaut 1
Algorithme Affichage 1 + 3.3 = 4.3 Ité. 2 : i vaut 2
Variables i , N : Entier Ité. 3 : i vaut 4
Tableau T[100][100] : Entier ≈4 Ité. 4 : i vaut 8

Début
Si N vaut 300
Ecrire ( " Saisir un nombre " ) O(1)
Ité. 1 : i vaut 1
Lire ( N ) O(1) Ité. 2 : i vaut 2
Ité. 3 : i vaut 4
Pour i = 0 à N Pas de i * 2
Ité. 4 : i vaut 8
Ité. 5 : i vaut 16
Ecrire ( i )
Ité. 6 : i vaut 32
FinPour
Ité. 7 : i vaut 64
Ité. 8 : i vaut 128
Fin
Ité. 9 : i vaut 256

Pr. Redouan Lahmyed ALGORITHMIQUE 2 83


Complexité
Exemple 4 :Calculer la complexité de l'algorithme suivant :
1 + log2 (10) Si N vaut 10
Ité. 1 : i vaut 1
Algorithme Affichage 1 + 3.3 = 4.3 Ité. 2 : i vaut 2
Variables i , N : Entier Ité. 3 : i vaut 4
Tableau T[100][100] : Entier ≈4 Ité. 4 : i vaut 8

Début
Si N vaut 300
Ecrire ( " Saisir un nombre " ) O(1)
Ité. 1 : i vaut 1
Lire ( N ) O(1) Ité. 2 : i vaut 2
Ité. 3 : i vaut 4
Pour i = 0 à N Pas de i * 2
Ité. 4 : i vaut 8
x 1 + log2 (n) Ité. 5 : i vaut 16
Ecrire ( i )
Ité. 6 : i vaut 32
FinPour
Ité. 7 : i vaut 64
Ité. 8 : i vaut 128
Fin
Ité. 9 : i vaut 256

Pr. Redouan Lahmyed ALGORITHMIQUE 2 84


Complexité
Exemple 4 :Calculer la complexité de l'algorithme suivant :

Algorithme Affichage
Variables i , N : Entier
Tableau T[100][100] : Entier

Début
Ecrire ( " Saisir un nombre " ) O(1)
Lire ( N ) O(1)

Pour i = 0 à N Pas de i * 2 • Complexité ( Pour) :

Ecrire ( i ) O(1)+ (O(1)+O(1)+O(2))


FinPour

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 85


Complexité
Exemple 4 :Calculer la complexité de l'algorithme suivant :

Algorithme Affichage
Variables i , N : Entier
Tableau T[100][100] : Entier

Début
Ecrire ( " Saisir un nombre " ) O(1)
Lire ( N ) O(1)

Pour i = 0 à N Pas de i * 2 • Complexité ( Pour) :

Ecrire ( i ) O(1)+ (O(1)+O(1)+O(2))


FinPour = O ( 1 ) + ( 1 + log2 (n) ) x O ( 4 )
= O ( 1 ) + O ( 4 + 4log2 (n) )
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 86


Complexité
Exemple 4 :Calculer la complexité de l'algorithme suivant :

Algorithme Affichage
Variables i , N : Entier
Tableau T[100][100] : Entier

Début
Ecrire ( " Saisir un nombre " ) O(1)
Lire ( N ) O(1)

Pour i = 0 à N Pas de i * 2 • Complexité ( Pour) :

Ecrire ( i ) O(1)+ (O(1)+O(1)+O(2))


FinPour = O ( 1 ) + ( 1 + log2 (n) ) x O ( 4 )
= O ( 1 ) + O ( 4 + 4log2 (n) )
Fin
= O ( 5 + 4log2 (n) )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 87


Complexité
Exemple 4 :Calculer la complexité de l'algorithme suivant :

Algorithme Affichage
Variables i , N : Entier
Tableau T[100][100] : Entier
 Complexité de l’algorithme :
Début
Ecrire ( " Saisir un nombre " ) O ( 1 ) + O ( 1 ) + O ( 5 + 4log2 (n) )
Lire ( N )
= O ( 7 + 4log2 (n) )
Pour i = 0 à N Pas de i * 2
Alors la complexité de cet algorithme est :
Ecrire ( i )
FinPour O ( log (n) )

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 88


Complexité
Exercice : Si n est la taille de l'entrée (positive), laquelle des boucles suivantes est la plus
efficace ?
Pour i = 1 à N Pas de 1
………
FinPour

Pour i = 1 à N Pas de 2
………
FinPour

Pour i = 1 à N Pas de i *2
………
FinPour

Pour i = N à -1 Pas de i /2
………
FinPour

Pr. Redouan Lahmyed ALGORITHMIQUE 2 89


Complexité
Exercice : Si n est la taille de l'entrée (positive), laquelle des boucles suivantes est la plus
efficace ?
Pour i = 1 à N Pas de 1
………
FinPour
O(n)

Pr. Redouan Lahmyed ALGORITHMIQUE 2 90


Complexité
Exercice : Si n est la taille de l'entrée (positive), laquelle des boucles suivantes est la plus
efficace ?

Pour i = 1 à N Pas de 2
……… O(n/2) O(n )
FinPour

Pr. Redouan Lahmyed ALGORITHMIQUE 2 91


Complexité
Exercice : Si n est la taille de l'entrée (positive), laquelle des boucles suivantes est la plus
efficace ?

Pour i = 1 à N Pas de i *2
……… O ( log (n) )
FinPour

Pr. Redouan Lahmyed ALGORITHMIQUE 2 92


Complexité
Exercice : Si n est la taille de l'entrée (positive), laquelle des boucles suivantes est la plus
efficace ?

Pour i = N à -1 Pas de i /2
……… Boucle infinie
FinPour

Pr. Redouan Lahmyed ALGORITHMIQUE 2 93


Complexité
Exercice : Si n est la taille de l'entrée (positive), laquelle des boucles suivantes est la plus
efficace ?
Pour i = 1 à N Pas de 1
……… O(n)
FinPour

Pour i = 1 à N Pas de 2
……… O(n )
FinPour

Pour i = 1 à N Pas de i *2
……… O ( log (n) )
FinPour

Pour i = N à -1 Pas de i /2
……… Boucle infinie
FinPour

Pr. Redouan Lahmyed ALGORITHMIQUE 2 94


Complexité
Exercice : Si n est la taille de l'entrée (positive), laquelle des boucles suivantes est la plus
efficace ?
Pour i = 1 à N Pas de 1
……… O(n)
FinPour

Pour i = 1 à N Pas de 2
……… O(n )
FinPour

Pour i = 1 à N Pas de i *2
……… O ( log (n) )
FinPour

Pour i = N à -1 Pas de i /2
……… Boucle infinie
FinPour

Pr. Redouan Lahmyed ALGORITHMIQUE 2 95


Complexité
Exemple 5 :Calculer la complexité de l'algorithme suivant :

…….
Début
Ecrire ( " Saisir un nombre " )
Lire ( N )
Pour i = 1 à N Pas de 1
Pour j = 1 à N Pas de i * 4

Ecrire ( i )
FinPour

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 96


Complexité
Exemple 5 :Calculer la complexité de l'algorithme suivant :

…….
Début
Ecrire ( " Saisir un nombre " )
Lire ( N )
Pour i = 1 à N Pas de 1
Pour j = 1 à N Pas de i * 4
Alors la complexité de cet algorithme est :
Ecrire ( i ) O ( n log (n) )
FinPour

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 97


Complexité
Exemple 4 :Calculer la complexité de la fonction récursive suivante

Fonction Fn ( N: Entier ) : Entier

Début
Si N <= 0 Alors
Retourne 1

Sinon

Retourne Fn ( N - 1) + Fn ( N - 2)

Fin Si

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 98


Complexité
Exemple 4 :Calculer la complexité de la fonction récursive suivante

Fonction Fn ( N: Entier ) : Entier Si n vaut 1 → 3 appels Si n vaut 2 → 5 appels


Si n vaut 3 → 9 appels Si n vaut 4 → 15 appels
Début
Si N <= 0 Alors
Retourne 1

Sinon

Retourne Fn ( N - 1) + Fn ( N - 2)

Fin Si

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 99


Complexité
Exemple 4 :Calculer la complexité de la fonction récursive suivante

Fonction Fn ( N: Entier ) : Entier Si n vaut 1 → 3 appels Si n vaut 2 → 5 appels


Si n vaut 3 → 9 appels Si n vaut 4 → 15 appels
Début
Si N <= 0 Alors
Retourne 1
3
Sinon
5
Retourne Fn ( N - 1) + Fn ( N - 2)
9
Fin Si
15
25
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 100


Complexité
Exemple 4 :Calculer la complexité de la fonction récursive suivante

Fonction Fn ( N: Entier ) : Entier Si n vaut 1 → 3 appels Si n vaut 2 → 5 appels


Si n vaut 3 → 9 appels Si n vaut 4 → 15 appels
Début
Si N <= 0 Alors
Retourne 1
21 + 1= 3
Sinon
22 + 1= 5
Retourne Fn ( N - 1) + Fn ( N - 2)
23 + 1= 9
Fin Si
24 - 1= 15
25 - 7= 25
Fin
2n + C

Pr. Redouan Lahmyed ALGORITHMIQUE 2 101


Complexité
Exemple 4 :Calculer la complexité de la fonction récursive suivante

Fonction Fn ( N: Entier ) : Entier Si n vaut 1 → 3 appels Si n vaut 2 → 5 appels


Si n vaut 3 → 9 appels Si n vaut 4 → 15 appels
Début
Si N <= 0 Alors
Retourne 1
21 + 1= 3
Sinon
22 + 1= 5
Retourne Fn ( N - 1) + Fn ( N - 2)
23 + 1= 9
Fin Si
24 - 1= 15
25 - 7= 25
Fin
2n + C
Alors la complexité de cet algorithme est :O ( 2n )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 102
ALGORITHMIQUE – 2: STRUCTURES - FICHIERS
SMI-3

A.U: 2022 – 2023

DÉPARTEMENT INFORMATIQUE

Pr. Redouan Lahmyed ALGORITHMIQUE 2 1


Structure - Introduction
 Une structure est une collection d’une ou plusieurs variables, généralement,
ayant des types différents.

 Les structures permettent d’organiser les données compliquées. Les variables liées
sont groupés en seule entité au lieu des entités séparées.

 Exemple-1, un employé peut être d´ecrit par:


• Nom,
• Prénom.
• SOM.
• Salaire.
• Adresse.
• ....

 Exemple-2, un point est une paire de coordonnées, un rectangle est une paire de points, ...etc.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 2


Définition d’une structure

 Le langage algorithmique permet au programmeur de construire ses propres types


de données agrégées.

 Pour cela, le programmeur doit préciser :

 Le nom donné au type;


 La composition du type, c'est à dire le nom et la nature des données qu’il contient.

 La syntaxe de définition d'un type nommé Nom_structure est:


Struct Nom_structure
Début
Champ 1 : Type 1  Les variables nommées dans la structure
Champ 2 : Type 2 sont appelées les “membres” ou “champs”
... de la structure.
Champ n : Type n
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 3
Définition d’une structure

Exemple: Un point d’un plan 2-D est caractérisé par ses coordonnées X et Y.
Supposant que les coordonnées sont des entiers, la structure décrivant
un point est déclarée en langage algorithmique par:

Pr. Redouan Lahmyed ALGORITHMIQUE 2 4


Définition d’une structure

Exemple: Un point d’un plan 2-D est caractérisé par ses coordonnées X et Y.
Supposant que les coordonnées sont des entiers, la structure décrivant
un point est déclarée en langage algorithmique par:

Struct Point
Début
X : Entier
Y : Entier
Fin

o Le mot-clé struct peut être suivi d’un nom qu’on souhaite attribuer à la structure.
Dans ce cas, “ Struct Point ”. Ce nom sera utilisé par la suite pour se référer à la
structure (déclaration des variables de ce type).

Pr. Redouan Lahmyed ALGORITHMIQUE 2 5


Définition d’une structure

Exemple:

Struct Complex Struct Date


Début Début

Fin
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 6


Définition d’une structure

Exemple:

Struct Complex Struct Date


Début Début
Real : Entier Jour : Entier
Imaginary : Entier Mois : Entier
Fin Annee : Entier
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 7


Structure - Déclaration
 Définition de la structure Struct Point (le nouveau type) :
Struct Point
Début
X : Entier
Y : Entier
Fin

 Déclaration d’une variable de type Struct Point :


/* une variable simple de la structure */
variable P1 : Struct Point

/* un tableau de 20 elements de la structure */


Tableau Tab_Points [20] : Struct Point

/* un pointeur de la structure */
variable P2 : ^Struct Point

Pr. Redouan Lahmyed ALGORITHMIQUE 2 8


Initialisation, accès aux membres
Algorithme: Initialisation_Points
• Les membres peuvent être
Struct Point initialisées après de la déclaration
Début de la variable de type structure
X : Entier
Y : Entier
Fin • Les valeurs d’initialisation sont
fournies entre " { " et " } " .
Variables:
Pt1 , Pt2 : Struct Point

Début • L’affectation des initialisations suit


l’ordre d’apparition des champs dans
la structure.
Pt1 ← { 7 , 2 } La Nième valeur est affectée au champ
introduit à la Nième position dans
définition de la structure.
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 9


Initialisation, accès aux membres
Algorithme: Initialisation_Points
• Les membres peuvent être
Struct Point initialisées après de la déclaration
Début de la variable de type structure
X : Entier
Y : Entier
Fin • Les valeurs d’initialisation sont
fournies entre " { " et " } " .
Variables:
Pt1 , Pt2 : Struct Point

Début • L’affectation des initialisations suit


l’ordre d’apparition des champs dans
Pt1 ← { 7 , 2 } la structure.
La Nième valeur est affectée au champ
Pt2 ← { 4 , 3 } introduit à la Nième position dans
définition de la structure.
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 10


Initialisation, accès aux membres
Algorithme: Initialisation_Points

Struct Point
Début
X : Entier
Y : Entier
Fin
Exemple: dans Pt1 = { 7 , 2 };
Variables: X reçoit 7 et Y reçoit 2.
Pt1 , Pt2 : Struct Point

Début

Pt1 ← { 7 , 2 }
Pt2 ← { 4 , 3 }

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 11


Initialisation, accès aux membres

• L’accès aux champs d’une structure, diffère selon le moyen utilisé :

 Variable structure
 Variable pointeur

Variable structure: L'accès aux champs d’une structure en la manipulant directement,


se fait en utilisant le nom de la variable suivi du point “.”, suivi du champ en
question.

Variable pointeur: On peut aussi accéder aux champs d’une variable structure en
utilisant un pointeur approprié (du même type).
•Une fois la variable est pointée, on peut y accéder via ce pointeur en utilsant
le nom du pointeur, suivi d’une flèche “”, suivi du champ en question.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 12


Initialisation, accès aux membres
Variable structure: L'accès aux champs d’une structure en la manipulant directement,
se fait en utilisant le nom de la variable suivi du point “.”, suivi du champ en
question. Algorithme: Initialisation_Points
Algorithme: Initialisation_Points
Struct Point
Struct Point Début
Début X : Entier
X : Entier Y : Entier
Y : Entier Fin
Fin
Variables:
Variables: Pt1 : Struct Point
Pt1 : Struct Point
Début
Début
Pt1.X ← 7
Pt1 ← { 7 , 2 } Pt1.Y ← 2
Fin Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 13


Initialisation, accès aux membres
Exercice
Écrire un algorithme qui :
- définit une structure "Complex" qui contient deux champs : reel , et imaginaire.
- déclare deux variables ‘C1’ et ‘C2’ de type Complex.
-Écrire un script permettant de calculer la somme de C1 et C2.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 14


Initialisation, accès aux membres
Algorithme: Operations_Complex
Ecrire (“Saisir le nombre réel de la deuxième valeur
Struct Complex complexe”)
Début Lire ( [Link] )
reel : Entier
imaginaire : Entier Ecrire (“Saisir le nombre imaginaire de la deuxième
Fin valeur complexe”)
Lire ( [Link] )
Variables:
/* Affichage */
C1 , C2 , C3 : Struct Complex
Ecrire (“La première valeur complexe :” ,
Début [Link] , “+” , [Link] , “i”)
Ecrire (“Saisir le nombre réel de la première Ecrire (“La deuxième valeur complexe :” ,
valeur complexe”) [Link] , “+” , [Link] , “i”)
Lire ( [Link] )
/* La somme */
Ecrire (“Saisir le nombre imaginaire de la [Link] ← [Link] + [Link]
première valeur complexe”) C3. imaginaire ← C1. imaginaire + C2. imaginaire
Lire ( [Link] )
Ecrire (“La somme est :” , [Link] , “+” , [Link] , “i”)

Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 15
Initialisation, accès aux membres
Variable pointeur: On peut aussi accéder aux champs d’une variable structure en
utilisant un pointeur approprié (du même type).
•Une fois la variable est pointée, on peut y accéder via ce pointeur en utilsant
le nom du pointeur, suivi d’une flèche “”, suivi du champ en question.
Algorithme: Initialisation_Points Algorithme: Initialisation_Points

Struct Point Struct Point


Début Début
X : Entier X : Entier
Y : Entier Y : Entier
Fin Fin
Variables: Variables:
Pt1 : Struct Point Pt1 : ^Struct Point

Début Début
Pt1.X ← 7
Pt1.Y ← 2
Fin Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 16


Initialisation, accès aux membres
Variable pointeur: On peut aussi accéder aux champs d’une variable structure en
utilisant un pointeur approprié (du même type).
•Une fois la variable est pointée, on peut y accéder via ce pointeur en utilsant
le nom du pointeur, suivi d’une flèche “”, suivi du champ en question.
Algorithme: Initialisation_Points Algorithme: Initialisation_Points

Struct Point Struct Point


Début Début
X : Entier X : Entier
Y : Entier Y : Entier
Fin Fin
Variables: Variables:
Pt1 : Struct Point Pt1 : ^Struct Point

Début Début
Pt1.X ← 7 Pt1X ← 7
Pt1.Y ← 2
Fin Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 17


Initialisation, accès aux membres
Variable pointeur: On peut aussi accéder aux champs d’une variable structure en
utilisant un pointeur approprié (du même type).
•Une fois la variable est pointée, on peut y accéder via ce pointeur en utilsant
le nom du pointeur, suivi d’une flèche “”, suivi du champ en question.
Algorithme: Initialisation_Points Algorithme: Initialisation_Points

Struct Point Struct Point


Début Début
X : Entier X : Entier
Y : Entier Y : Entier
Fin Fin
Variables: Variables:
Pt1 : Struct Point Pt1 : ^Struct Point

Début Début
Pt1.X ← 7 Pt1X ← 7
Pt1.Y ← 2 Pt1  Y ← 2
Fin Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 18


Initialisation, accès aux membres
Exercice: Déclaration et affectation
Soit la structure suivante :

Struct Couleur
Début
R : Entier
G : Entier
B : ^Entier
Fin

Variables
Col1: Struct Couleur
Col2: ^Struct Couleur

1- Cochez ce qui est juste : ?

Pr. Redouan Lahmyed ALGORITHMIQUE 2 19


Initialisation, accès aux membres
Exercice: Déclaration et affectation
Soit la structure suivante :

Struct Couleur
Début
R : Entier
G : Entier
B : ^Entier
Fin

Variables
Col1: Struct Couleur
Col2: ^Struct Couleur

1- Cochez ce qui est juste : ?

Col1.R ← 81 Col1.B ← 12 Col1.G ← Col1.B^

Col2.G← 100 Col2←R← 255 Col2B^ ← 0

Pr. Redouan Lahmyed ALGORITHMIQUE 2 20


Initialisation, accès aux membres
Exercice: Déclaration et affectation
Soit la structure suivante :

Struct Couleur
Début
R : Entier
G : Entier
B : ^Entier
Fin

Variables
Col1: Struct Couleur
Col2: ^Struct Couleur

1- Cochez ce qui est juste : ?

Col1.R ← 81 Col1.B ← 12 Col1.G ← Col1.B^

Col2.G← 100 Col2←R← 255 Col2B^ ← 0

Pr. Redouan Lahmyed ALGORITHMIQUE 2 21


Structure imbriquée : Accès aux champs

 Une structure peut comporter parmi ses champs d'autres structures.

 Pour accéder aux champs d’une structure imbriquée, on est obligé d’utiliser deux
indexations.

Exemple
un rectangle peut être représenté par deux points (coins opposés diagonalement).

Pr. Redouan Lahmyed ALGORITHMIQUE 2 22


Structure imbriquée : Accès aux champs

Struct Point
Début
X : Entier
Y : Entier
Fin

Struct Rectangle
Début
Pt1 : Struct Point
Pt2 : Struct Point
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 23


Structure imbriquée : Accès aux champs

Variables Rect1 : Struct Rectangle

9 7

3 4

Pr. Redouan Lahmyed ALGORITHMIQUE 2 24


Structure imbriquée : Accès aux champs

Variables Rect1 : Struct Rectangle

/* Rectangle Rect1*/ 9 7
Rect1.Pt1.X ← 3
Rect1.Pt1.Y ← 4

Rect1.Pt2.X ← 9
Rect1.Pt2.Y ← 7
3 4

Pr. Redouan Lahmyed ALGORITHMIQUE 2 25


Structure imbriquée : Accès aux champs

Variables Rect2 : ^Struct Rectangle

9 7

3 4

Pr. Redouan Lahmyed ALGORITHMIQUE 2 26


Structure imbriquée : Accès aux champs

Variables Rect2 : ^Struct Rectangle

/* Rectangle Rect2*/ 9 7
Rect2Pt1.X ← 3
Rect2Pt1.Y ← 4

Rect2Pt2.X ← 9
Rect2Pt2.Y ← 7
3 4

Pr. Redouan Lahmyed ALGORITHMIQUE 2 27


Structure imbriquée : Accès aux champs
Exercice: Déclaration de la structure pixel

Pr. Redouan Lahmyed ALGORITHMIQUE 2 28


Structure imbriquée : Accès aux champs
Exercice: Déclaration de la structure pixel
Début
Algorithm: Pixel /* Position du pixel*/
Ecrire (“Saisir Num de ligne”)
Struct Couleur Lire (Pix.X)
Début
R : Entier Ecrire (“Saisir Num de colonne”)
G : Entier Lire (Pix.Y)
B : Entier
Fin /* Couleur du pixel*/

Struct Pixel Ecrire (“Saisir la valeur de la couleur rouge”)


Début Lire ([Link].R)
X : Entier
Y : Entier Ecrire (“Saisir la valeur de la couleur verte”)
Col : Couleur Lire ([Link].G)
Fin
Variables: Ecrire (“Saisir la valeur de la couleur bleue”)
Pix : Struct Pixel Lire ([Link].B)
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 29
Structures & fonctions

 Une structure peut être utilisée comme argument ou résultat d’une fonction.

 Trois possibilités pour le passage des structures aux functions:


 Passer les champs (membres) séparement;
 Passer la structure entière;

 Passer un pointeur sur la structure.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 30


Structures & fonctions
Exemple: Déclaration d'une procédure qui affiche les coordonnées d'un point

Pr. Redouan Lahmyed ALGORITHMIQUE 2 31


Structures & fonctions
Exemple: Déclaration d'une procédure qui affiche les coordonnées d'un point

Procedure Affichage_Point ( A: Entier , B: Entier)


Variables pt : Struct Point
Début .....
Ecrire (" (" , A " , " B , " ) " ) Début
Affichage_Point ( pt.X , pt.Y)
Fin Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 32


Structures & fonctions
Exemple: Déclaration d'une procédure qui affiche les coordonnées d'un point

Procedure Affichage_Point ( A: Entier , B: Entier)

Début

Ecrire (" (" , A " , " B , " ) " )

Fin
Procedure Affichage_Point ( P: Struct Point)
Variables pt : Struct Point
Début .....
Début
Ecrire (" (" , P.X " , " P.Y , " ) " )
Affichage_Point ( pt )
Fin
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 33


Structures & fonctions
Exemple: Déclaration d'une procédure qui affiche les coordonnées d'un point

Procedure Affichage_Point ( A: Entier , B: Entier)

Début

Ecrire (" (" , A " , " B , " ) " )

Fin
Procedure Affichage_Point ( P: Struct Point)

Début

Ecrire (" (" , P.X " , " P.Y , " ) " )

Fin
Procedure Affichage_Point ( P: ^Struct Point) Variables pt : ^Struct Point
.....
Début Début
Ecrire (" (" , PX " , " PY , " ) " ) Affichage_Point ( pt^ )
Fin
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 34
Structures & fonctions
Exercice: Écrire un algorithme qui permet de :
- Définir un tableau permettant de stocker 10 points.
- Écrire une fonction qui renvoie la distance du point par rapport à l'origine.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 35


Structures & fonctions
Exercice: Écrire un algorithme qui permet de :
- Définir un tableau permettant de stocker 10 points.
- Écrire une fonction qui renvoie la distance du point par rapport à l'origine.
Algorithme: Tableau_Points Début

Struct Point
Début
X : Entier
Y : Entier
Fin

Variables:

Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 36
Structures & fonctions
Fonction Distance_Origine ( X: Entier , Y: Entier) : Réel

Début
Retourne sqrt ( X * X + Y * Y )
Fin
y2 + x2
Fonction Distance_Origine ( P: Struct Point) :
Réel

Début 0 0
Retourne sqrt ( P.X * P.X + P.Y * P.Y )
Fin
Fonction Distance_Origine ( P: ^Struct Point) :
Réel

Début
Retourne sqrt ( PX * PX + PY * PY )
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 37


Structures & fonctions
Exercice: Écrire un algorithme qui permet de :
- Définir un tableau permettant de stocker 10 points.
- Écrire une fonction qui renvoie la distance du point par rapport à l'origine.
Algorithme: Tableau_Points Début
/* Remplissage du tableau*/
Pour i = 0 à 9 Pas de 1
Struct Point
Ecrire (" Donner les coordonnées du Point num “,
Début
i+1 , " : ")
X : Entier
Lire ( Tab_Pt [ i ].X , Tab_Pt [ i ].Y)
Y : Entier
Fin
FinPour
Fonction Distance_Origine ( P: Struct Point) : Réel
/* Distance Par rapport à l’origine*/
Début
Retourne sqrt ( P.X * P.X + P.Y * P.Y ) Pour i = 0 à 9 Pas de 1
Ecrire (" La distance du Point num “, i+1 , " Par
Fin
rapport à l’origine: " , Distance_Origine (Tab_Pt [ i ] ))
Variables:
Tableau Tab_Pt [ 10 ] : Struct Point FinPour
i : Entier

Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 38
Organisation des champs
• Les champs sont organisés dans l'ordre de leurs déclarations dans la structure.

• L’adresse d’une structure = l’adresse de son premier champ.


Exemple
Algorithme: Addresse_Structure

Struct Ma_Str
Début
A : Entier
B : Caractère
C : Réel
Fin
Variables:
Var1 : Struct Ma_Str
Sortie
Début
Ecrire ( & Var1.A) 0xbfc98bb4
Ecrire ( & Var1.B)
0xbfc98bb8
Ecrire ( & Var1.C)
Ecrire ( & Var1)
0xbfc98bbc
Fin 0xbfc98bb4
Pr. Redouan Lahmyed ALGORITHMIQUE 2 39
Organisation des champs (Alignement des champs)
 La taille de la structure dépend du Nombre, le type et l’ordre de ses champs.

Exemple

Struct Ma_Str1 Struct Ma_Str2


Début Début
a : Caractère a : Entier
b : Entier b : Caractère
c : Caractère c : Caractère
d : Caractère d : Caractère
Fin Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 40


Organisation des champs (Alignement des champs)
 La taille de la structure dépend du Nombre, le type et l’ordre de ses champs.

Exemple

Struct Ma_Str1
Début
a : Caractère
b : Entier
c : Caractère
d : Caractère
Fin

La taille de la structure : 3 x 4 = 12 Octets

Pr. Redouan Lahmyed ALGORITHMIQUE 2 41


Organisation des champs (Alignement des champs)
 La taille de la structure dépend du Nombre, le type et l’ordre de ses champs.

Exemple

Struct Ma_Str2
Début
a : Entier
b : Caractère
c : Caractère
d : Caractère
Fin

La taille de la structure : 2 x 4 = 8 Octets

Pr. Redouan Lahmyed ALGORITHMIQUE 2 42


Organisation des champs (Alignement des champs)
 La taille de la structure dépend du Nombre, le type et l’ordre de ses champs.

Exemple

Struct Ma_Str1 Struct Ma_Str2


Début Début
a : Caractère a : Entier
b : Entier b : Caractère
c : Caractère c : Caractère
d : Caractère d : Caractère
Fin Fin

Taille ( Ma_Str1): 12 Octets Taille ( Ma_Str1): 8 Octets

Pr. Redouan Lahmyed ALGORITHMIQUE 2 43


Fichiers
 Un fichier est une séquence d'octets dont le rôle est de stocker, traiter et
transmettre des informations.

 On distingue entre plusieurs types de fichiers et le critère important qui


différencie les fichiers est la façon dont les informations sont organisées sur ces
derniers.

Exemple

Pr. Redouan Lahmyed ALGORITHMIQUE 2 44


Fichiers
 Un fichier est une séquence d'octets dont le rôle est de stocker, traiter et
transmettre des informations.

 On distingue entre plusieurs types de fichiers et le critère important qui


différencie les fichiers est la façon dont les informations sont organisées sur ces
derniers.

Exemple
 Fichier texte

- Formé de caractère ASCII


- Organisé en lignes
- Chacune se termine par un caractère
de contrôle de fin de ligne.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 45


Fichiers
 Un fichier est une séquence d'octets dont le rôle est de stocker, traiter et
transmettre des informations.

 On distingue entre plusieurs types de fichiers et le critère important qui


différencie les fichiers est la façon dont les informations sont organisées sur ces
derniers.

Exemple
 Fichier binaire

- Contient des données non textuelles


- N’est pas organisé sous forme
d’enregistrement
…...

Pr. Redouan Lahmyed ALGORITHMIQUE 2 46


Fichiers

Traitement séquentiel des fichiers texte

 Ouvrir un fichier

 Fermer un fichier

 Lire et écrire dans un fichier

Pr. Redouan Lahmyed ALGORITHMIQUE 2 47


Traitement séquentiel des fichiers texte

 Ouvrir un fichier

• Lorsqu'on désire à accéder à un fichier, il est nécessaire avant tout accès,


d'ouvrir le fichier.

 Syntaxe :

Ouvrir Nom_du_fichier en Num_Canal en Mode

Pr. Redouan Lahmyed ALGORITHMIQUE 2 48


Traitement séquentiel des fichiers texte

 Ouvrir un fichier

• Lorsqu'on désire à accéder à un fichier, il est nécessaire avant tout accès,


d'ouvrir le fichier.

 Syntaxe :

Ouvrir Nom_du_fichier en Num_Canal en Mode

 Nom_du_fichier: C'est le nom physique du fichier.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 49


Traitement séquentiel des fichiers texte

 Ouvrir un fichier

• Lorsqu'on désire à accéder à un fichier, il est nécessaire avant tout accès,


d'ouvrir le fichier.

 Syntaxe :

Ouvrir Nom_du_fichier en Num_Canal en Mode

 Num_Canal: C'est le nom logique du fichier. Pour ouvrir un fichier, il faut lui allouer un
numéro du canal valide et disponible.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 50


Traitement séquentiel des fichiers texte

 Ouvrir un fichier

• Lorsqu'on désire à accéder à un fichier, il est nécessaire avant tout accès,


d'ouvrir le fichier.

 Syntaxe :

Ouvrir Nom_du_fichier en Num_Canal en Mode

 Mode: Il existe trois modes d'ouverture du fichier :


 Lecture : Permet d'ouvrir le fichier en lecture seul.
• Écriture : Indique son accès en écriture.
• Ajout : Permet d'ajouter des données à un fichier séquentiel existant en
conservant le contenu précédent.
Pr. Redouan Lahmyed ALGORITHMIQUE 2 51
Traitement séquentiel des fichiers texte
Exemple: Écrire les instructions convenables pour ouvrir deux fichiers :
"[Link]" (Mode d'ajout) , et
"[Link]" (Mode de lecture).

Pr. Redouan Lahmyed ALGORITHMIQUE 2 52


Traitement séquentiel des fichiers texte
Exemple: Écrire les instructions convenables pour ouvrir deux fichiers :
"[Link]" (Mode d'ajout) , et
"[Link]" (Mode de lecture).

Ouvrir " [Link] " en 1 en Ajout

Ouvrir " [Link] " en 2 en Lecture

Pr. Redouan Lahmyed ALGORITHMIQUE 2 53


Traitement séquentiel des fichiers texte

 Fermer un fichier

 Une fois qu'on a terminé avec un fichier, il ne faut pas oublier de le fermer.
On libère ainsi le canal qu'il occupait

 Syntaxe :

Fermer ( Nom_du_Fichier )

Ou bien

Fermer ( Nom_du_Canal )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 54


Traitement séquentiel des fichiers texte
Exemple: - Écrire les instructions convenables pour ouvrir deux fichiers :
"[Link]" (Mode d'ajout) , et
"[Link]" (Mode de lecture).
- Écrire les instructions convenables pour fermer

Ouvrir " [Link] " en 1 en Ajout

Ouvrir " [Link] " en 2 en Lecture

……..

Fermer ( " [Link] " ) Ou bien Fermer ( 1 )

Fermer ( " [Link] " ) Ou bien Fermer ( 2 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 55


Traitement séquentiel des fichiers texte

 Lire et écrire dans un fichier

Pour écrire dans un fichier :

EcrireFichier Num_Canal , “ Donnée”

Ou bien
Nom_Variable ← Donnée

EcrireFichier Num_Canal , Nom_Variable

Pr. Redouan Lahmyed ALGORITHMIQUE 2 56


Traitement séquentiel des fichiers texte
Exemple: - Enregistrer la valeur ‘5’ dans le fichier “ [Link] “

Pr. Redouan Lahmyed ALGORITHMIQUE 2 57


Traitement séquentiel des fichiers texte
Exemple: - Enregistrer la valeur ‘5’ dans le fichier “ [Link] “

…… ……
Ouvrir " [Link] " en 1 en Écriture Ouvrir " [Link] " en 1 en Écriture
EcrireFichier 1 , “ 5” X←5
Fermer (1 ) EcrireFichier 1 , X
Fermer (1 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 58


Traitement séquentiel des fichiers texte

Pr. Redouan Lahmyed ALGORITHMIQUE 2 59


Traitement séquentiel des fichiers texte
Écrire un algorithme qui permet de :
Exercice:
- Définir un tableau permettant de stocker 10 points.
- Écrire un script permettant de créer un fichier «[Link] »
puis saisir les informations du tableau dans ce fichier

Pr. Redouan Lahmyed ALGORITHMIQUE 2 60


Traitement séquentiel des fichiers texte
Exercice:

Algorithme: Tableau_Points Début


/* Remplissage du tableau*/
Pour i = 0 à 9 Pas de 1
Struct Point
Ecrire (" Donner les coordonnées du Point num “, i+1 ,
Début
X : Entier " : ")
Lire ( Tab_Pt [ i ].X , Tab_Pt [ i ].Y)
Y : Entier
Fin FinPour

/* Fichier [Link]*/
Variables: Ouvrir " [Link] " en 1 en Écriture
Tableau Tab_Pt [ 10 ] : Struct Point
i : Entier Pour i = 0 à 9 Pas de 1
EcrireFichier 1 , Tab_Pt [ i ]
FinPour

Fermer ( 1 )

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 61


Traitement séquentiel des fichiers texte

Pr. Redouan Lahmyed ALGORITHMIQUE 2 62


Traitement séquentiel des fichiers texte

 Lire et écrire dans un fichier

 Pour une operation de lecture, il suffit de recopier un enregistrement dans une


variable et d’écrire le syntaxe suivant:

LireFichier Num_Canal , Nom_Variable

Pr. Redouan Lahmyed ALGORITHMIQUE 2 63


Traitement séquentiel des fichiers texte

Exemple 1:

Pr. Redouan Lahmyed ALGORITHMIQUE 2 64


Traitement séquentiel des fichiers texte

Exemple 1:

……
Ouvrir " [Link] " en 1 en Lecture
LireFichier 1 , A
Fermer (1 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 65


Traitement séquentiel des fichiers texte

Exemple 2:

Pr. Redouan Lahmyed ALGORITHMIQUE 2 66


Traitement séquentiel des fichiers texte

Exemple 2:

……
Ouvrir " [Link] " en 1 en Lecture
Tantque Non EOF(1)

LireFichier 1 , Tab_Point [ i ]
Fin Tantque
Fermer (1 )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 67
ALGORITHMIQUE – 2: STRUCTURES - FICHIERS
SMI-3

A.U: 2022 – 2023

DÉPARTEMENT INFORMATIQUE

Pr. Redouan Lahmyed ALGORITHMIQUE 2 1

Vous aimerez peut-être aussi