0% ont trouvé ce document utile (0 vote)
6 vues211 pages

Algorithmiques

Le cours d'algorithmique vise à familiariser les étudiants avec les méthodes de résolution de problèmes informatiques et les principes de l'algorithmique. Il couvre des sujets tels que les structures de contrôle, les tableaux, et les algorithmes de tri, tout en incluant une évaluation basée sur des examens et des projets. L'enseignement est structuré en plusieurs chapitres, allant de l'introduction à l'algorithmique à la création de programmes et à la gestion des variables et constantes.

Transféré par

fengxiue14
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)
6 vues211 pages

Algorithmiques

Le cours d'algorithmique vise à familiariser les étudiants avec les méthodes de résolution de problèmes informatiques et les principes de l'algorithmique. Il couvre des sujets tels que les structures de contrôle, les tableaux, et les algorithmes de tri, tout en incluant une évaluation basée sur des examens et des projets. L'enseignement est structuré en plusieurs chapitres, allant de l'introduction à l'algorithmique à la création de programmes et à la gestion des variables et constantes.

Transféré par

fengxiue14
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

Université de L’Unité Africaine/ IAM OUAGA

Algorithmique
Olivier ZONGO, Ingénieur de Conception – MTDPCE/SPIVTEN
Doctorant en Intelligence Artificielle – UNB/LAMDI
Tel : 65 08 58 71, Email : olzoolivier659@[Link]

Licence 1 Informatique de Gestion & Réseaux et Télécoms


Année Académique 2024-2025 1
A propos du cours
Objectifs

✓ Se familiariser avec les méthodes de résolution de problèmes avec


l’outil informatique ;
✓ Comprendre la démarche algorithmique et apprendre les principes de
l’algorithmique ;
✓ Connaître les règles générales concernant l’écriture et l’analyse d’un
algorithme

Volume horaire (CM-TD-TP) : 40 h

Evaluation
2 examens Théorique individuel : 70%
Projet, contrôles continus : 30%

2
Plan du cours
Chapitre 1 : Introduction, histoire et notions de base sur l’algorithmique
Chapitre 2 : Structures élémentaires l’algorithmique
Chapitre 3 : Les structures de contrôle conditionnelles, les structures de contrôle répétitives
Chapitre 4 : Les tableaux
Chapitre 5 : Procédures et fonctions
Chapitre 6 : Les enregistrements
Chapitre 7 : Les algorithmes de tri
Chapitre 8 : Les chaînes de caractères
Chapitre 9 : Notion de pointeurs, initiation aux listes et aux arbres binaires

3
Avant-Propos
Les 10 meilleurs metiers selon World Report en 2023

1- Sofware Developper 6- Physiotherapeute

2- Infirmière Praticienne 7- Directeur Financier

3- Responsable des services médicaux et de 8- Responsable Informatique

santé 9- Developpeur Web

4- Assistant Medical 10- Dentiste

5- Analyste en Securité de l’information

4
Chapitre 1 : Introduction, histoire et
notions de base sur l’algorithmique

5
Qu'est-ce qu'un algorithme ?

L'algorithmique est une discipline fondamentale en


informatique qui consiste à étudier les algorithmes. Un
algorithme est une séquence finie d'instructions
permettant de résoudre un problème donné de manière
systématique.
Exemples dans la vie courante :
• Une recette de cuisine.
• Les étapes pour assembler un meuble.
6
Qu'est-ce qu'un algorithme ?

Définition d’un algorithme


Un algorithme est une méthode formelle, bien définie, qui permet
de résoudre un problème spécifique à partir d'un ensemble
d'entrées et en produisant des sorties. Il doit être :
• Fini : Il doit se terminer après un nombre limité d’étapes.
• Défini : Chaque étape doit être claire et non ambiguë.
• Efficace : Il doit résoudre le problème de manière optimale, en
utilisant un nombre minimal de ressources (temps, espace).

7
Qu'est-ce qu'un algorithme ?

Objectifs de l’algorithmique
▪ Résolution de problèmes : Décomposer une tâche
complexe en étapes simples.
▪ Efficacité : Trouver des solutions optimales en
termes de temps et de ressources.
▪ Généralisation : Concevoir des solutions
applicables à plusieurs cas.

8
Histoire de l'Algorithmique
Antiquité et Moyen Âge
Les premiers algorithmes remontent à l'Antiquité. Par exemple, Euclide,
dans son ouvrage "Les Éléments" (~300 avant J.-C.), a présenté un
algorithme pour trouver le plus grand commun diviseur (PGCD) de deux
nombres.

Al-Khwarizmi (9e siècle)


L'algorithme tire son nom de Al-Khwarizmi, un mathématicien persan,
dont le livre "Al-Kitab al-Mukhtasar fi Hisab al-Jabr wal-Muqabala"
introduit des méthodes pour résoudre des équations quadratiques. Le
terme "algorithme" est dérivé de son nom latinisé, "Algoritmi".
9
Histoire de l'Algorithmique

XVIIIe et XIXe siècles


Au XVIIIe siècle, les mathématiciens comme Joseph Marie Jacquard et
Charles Babbage ont posé les bases de la programmation. Babbage a conçu la
machine analytique, un précurseur des ordinateurs modernes, capable d’exécuter
des algorithmes.

XXe siècle
L'algorithmique moderne prend forme avec l'invention des premiers ordinateurs
et des langages de programmation. Les pionniers comme Alan Turing, John
von Neumann, et Kurt Gödel ont contribué à formaliser les concepts
algorithmiques, en introduisant des notions comme la machine de Turing et les
théories de la calculabilité. 10
Les Phases de Création d’un Programme

Phase 1 : Compréhension du Problème


Avant de créer un programme, il est crucial de bien comprendre le problème à
résoudre. Cela inclut l’identification des entrées et des sorties, ainsi que la
définition du comportement attendu.

Phase 2 : Conception de l'Algorithme


À cette étape, l’algorithmicien doit concevoir un algorithme efficace. Cette phase
implique :
• La création d’une description en pseudocode ou un diagramme de flux
pour rendre l’algorithme plus compréhensible.
• Le choix de la bonne structure de données et des bons paradigmes de calcul.
11
Les Phases de Création d’un Programme

Phase 3 : Implémentation
Une fois l’algorithme conçu, il doit être traduit en un langage
de programmation (Python, Java, C++, etc.). Cette phase
implique la rédaction du code qui implémente l’algorithme.

Phase 4 : Test et Débogage


Le programme doit être testé avec plusieurs cas d'entrée pour
s'assurer qu'il fonctionne correctement et qu'il répond aux
attentes. Le débogage consiste à identifier et corriger les
erreurs dans le code. 12
Les Phases de Création d’un Programme
Phase 5 : Optimisation
Une fois que le programme est fonctionnel, il peut être
optimisé pour améliorer ses performances (réduction du
temps d’exécution, de l’utilisation mémoire, etc.).

Phase 6 : Maintenance
Un programme doit être maintenu à travers le temps,
pour corriger des bugs, améliorer des fonctionnalités ou
le rendre compatible avec de nouvelles technologies.
13
Compilation & interprétation
❑ Les programmes écrits par les programmeurs
sont appelés PROGRAMMES SOURCES car rédigés
dans des langages de programmation
❑ Ces programmes sources sont ensuite :
➢ soit traduits en PROGRAMMES
EXECUTABLES pour pouvoir être exécutés par
les ordinateurs, après une succession de
traitements
➢ soit directement fournis à des
INTERPRETEURS
14
Production du code exécutable
❑ Le processus de production d’un code exécutable
(code binaire) est généralement employé quand :
➢ les programmes correspondants sont de grande
taille
➢ on souhaite que le temps d’exécution soit petit
➢on ne désire pas mettre le code source du
programme à la disposition de l’utilisateur final
❑ Les exécutions ne nécessitent plus aucune
traduction car se faisant à partir du code exécutable
15
Interprétation
❑ Le processus d’interprétation est employée
lorsque
➢ l’utilisateur souhaite écrire rapidement un petit
programme jetable (maquette)
➢ le source peut sans aucun problème être
communiqué à l’utilisateur
❑ A chaque exécution du programme, chacune des
instructions est analysée et traduite avant exécution,
et le résultat de cette traduction n’est pas conservée
dans un fichier exécutable
16
Phases du développement de programmes

Édition de texte
Débogage

Chargement et exécution

Édition de liens

17
Édition de texte
❑ Éditeur de texte = programme de
[Link] saisie de texte par l’utilisateur sans mise
en forme. Ce texte va correspondre à un
programme écrit dans un langage de
[Link] programmation (respect de la syntaxe
d’écriture du programme et des
instructions)
[Link]
❑ Un fichier source résulte de cette
opération et porte un nom dont
tata.c l’extension rappelle le langage de
programmation employé
18
Compilation
❑ Compilateur = programme
lisant un programme écrit dans
un premier langage – langage
[Link] source – et le traduisant en un
programme équivalent écrit dans
un autre langage – langage cible
ou objet -
Compilateur ❑ Lors de ce processus les
erreurs rencontrées sont
signalées à l’utilisateur dans un
fichier d’erreurs de syntaxe
❑ A chaque langage de
[Link]
programmation est associé un
[Link] compilateur.
19
Édition de liens ❑ Tous les liens irrésolus
(variables, étiquettes, fonctions
Biblio1
connues ailleurs que dans le
programme compilé) sont
[Link] Biblio2 traités, grâce à l’utilisation des
bibliothèques et autres fichiers
renfermant du code objet
fourni à l’éditeur de liens qui
Éditeur de liens est un programme
❑ Le fichier exécutable
résultant contient le
Autres fichiers [Link] programme traduit en langage
(map, err, …) machine (code binaire)
20
Chargement et exécution
❑ Chargeur = programme ayant pour rôle d’installer
en mémoire centrale le code exécutable d’un
programme dont on connaît le nom : trouver la place,
copier le code en mémoire centrale avec les
adaptations liées aux translations, préparer le
contexte d’exécution
❑ Un programme exécutable  un nom de fichier
renfermant du code exécutable
❑ Lorsque le processeur sera attribué au processus
correspondant au programme chargé, celui-ci
s’exécutera et produira des résultats
21
Débogage
❑ Débogueur = programme ayant pour rôle d’aider à
la mise au point d’un autre programme en cours de
développement (détection des erreurs de logique
appelés en anglais « bugs »), en fournissant la
possibilité de suivre pas à pas
➢ le déroulement de chacune des instructions
constituant le programme testé
➢ l’évolution du contenu des variables, des
structures de données et autres zones en mémoire
centrale employées dans le programme

22
Introduction à l’algorithmique

❑ Il existe des environnements de développement


intégrés EDI où tous ces outils (éditeurs de texte,
compilateurs, éditeurs de liens, chargeurs,
débogueurs, gestionnaire de dépendances) sont
mis à la disposition des programmeurs pour leur
faciliter le travail
❑ Exemples : Microsoft Visual C++, Borland
Jbuilder, CodeBlocks, etc.

23
Chapitre 2 : Structures élémentaires
l’algorithmique

24
Notion de variable (1/6)
• Une variable  une boîte ou un récipient
• Cette boîte est caractérisée par au moins :
- un nom ou une étiquette ou un identificateur
- un contenu ou une valeur rangée dans la boîte
- un emplacement ou une adresse

Empla-
cement A Empla-
cement B

Nom Valeur (contenu)


(contenant) 25
Notion de variable (2/6)
• Le nom
- est défini selon une syntaxe correspondant à
un ensemble de règles (caractères
alphanumériques, insensibilité par rapport à la
casse, début du nom avec une lettre, non usage
du caractère blanc « espace » et des lettres
accentuées, usage du « souligné », etc.)
- est lisible et facilement interprétable
- permet en général de repérer ou faire référence
au contenu correspondant
26
Notion de variable (3/6)
• Le contenu
- est une valeur appartenant à un ensemble
connu appelé TYPE en mesure de supporter
un ensemble donné d’opérations
- est susceptible d’évoluer/varier au cours de
l’algorithme, une caractéristique expliquant le
nom de variable

27
Notion de variable (4/6)
• Deux catégories de TYPES :
- Types scalaires ou non structurés : ils ne sont
plus décomposables car élémentaires. Ils sont soit
prédéfinis (entiers naturels, entiers relatifs, réels,
booléens, caractères, etc.), soit construits par le
programmeur par énumération des valeurs
(ensembles, intervalles, chaînes de caractères)
- Types structurés : construits à partir des types
scalaires grâce à des constructeurs de type
(exemple : tableau, enregistrement ou article, liste)
28
Notion de variable (5/6)
ATTENTION !!! Il y a deux différences majeures entre les variables
en mathématiques et celles en informatique.

En général x, y, a, b ....... désignent des variables en


Le nom mathématiques.
En informatique, il sera préférable de donner à
chaque variable un nom significatif ou évocateur.

Une variable informatique ne peut contenir


qu’une seule valeur à un moment donné,
Le contenu alors qu’en mathématiques le contenu peut
correspondre à plusieurs valeurs (ex. : x la
racine d’un polynôme du 2nd degré)
29
Notion de variable (6/6)
Exemples
Surface est de type réel, correspond à la superficie d’un rectangle ;
Age est de type entier, correspond à l’âge d’une personne ;
Rayon est de type réel, correspond au rayon d’un cercle :
AnneeNaiss est de type réel, correspond à l’année de naissance de
l’utilisateur ;
Utilisateur est de type chaîne de caractères, correspond au nom
complet de l’utilisateur ;
Nom est de type chaîne de caractères, correspond au nom de
l’utilisateur ;
Prenom est de type chaîne de caractères, correspond au prénom de
l’utilisateur ;
Reponse est de type de caractère, correspond à la réponse de
l’utilisateur valant « o/O » pour OUI et « n/N » pour NON ;
30
Notion de constante (1/3)
• Une constante
- est une valeur particulière d’un type donné,
valeur pas susceptible d’être modifiée au sein
de l’algorithme
- porte un nom évocateur ou symbolique
permettant de référencer la valeur associée
- est un moyen pour améliorer la lisibilité et la
maintenabilité des algorithmes
- est utilisable dans les expressions et
instructions portant sur des objets de son type
31
Notion de constante (2/3)

Principaux types de constantes

⚫ Entier naturel
⚫ Entier relatif
⚫ Réel
⚫ Logique (booléen)
⚫ Caractère
⚫ Chaîne de caractères

32
Notion de constante (3/3)

Exemples

Constantes PI←3,1415 ;
IndicatifTelPays ← 226 ;
baseSysteme ← 16 ;
nomPays ← “Burkina Faso” ;
Separateur ← '/' ;
Trouve ← Faux ;
TaillePage ← 90.
33
Portée des variables et constantes (1/6)
• Une variable ou une constante est définie/déclarée dans un bloc
et n’est visible/manipulable qu’au sein de ce bloc (portée)

Bloc vert Bloc rouge


a Bloc blanc
b
c

La variable a est déclarée dans le bloc vert, et du coup est connue


dans le bloc rouge et le bloc blanc
34
Portée des variables et constantes (2/6)
• Une variable ou une constante est définie/déclarée dans un bloc
et n’est visible/manipulable qu’au sein de ce bloc (portée)

Bloc vert Bloc rouge


a Bloc blanc
b
c

La variable b est déclarée dans le bloc rouge, n’est pas connue dans
le bloc vert mais est connue dans le bloc blanc
35
Portée des variables et constantes (3/6)
• Une variable ou une constante est définie/déclarée dans un bloc
et n’est visible/manipulable qu’au sein de ce bloc (portée)

Bloc vert Bloc rouge


a Bloc blanc
b
c

La variable c est déclarée dans le bloc blanc, n’est connue ni dans


le bloc rouge ni dans le bloc vert
36
Portée des variables et constantes (4/6)
• Une variable ou une constante est définie/déclarée dans un bloc
et n’est visible/manipulable qu’au sein de ce bloc (portée)

Bloc vert Bloc rouge


a Bloc blanc
b
b

La variable b du bloc rouge n’est pas accessible dans le bloc blanc


du fait qu’une autre variable de même nom y est déclarée. On dit que la
variable b du bloc blanc rend invisible celle du bloc rouge
37
Portée des variables et constantes (4/6)
• Exercice 1
Bloc vert On demande d’indiquer la visibilité
a des différentes variables
Bloc rouge
b Bloc
vert
Bloc
rouge
Bloc
blanc
Bloc
jaune
Bloc
bleu
Bloc blanc
c a Oui Oui Oui Oui Oui

Bloc jaune b Non Oui Oui Oui Non

d c Non Non Oui Non Non

d Non Non Non Oui Non


Bloc bleu
e e Non Non Non Non Oui

38
Portée des variables et constantes (4/6)
• Exercice 2
Bloc vert
a
Bloc rouge
b
Bloc blanc
On demande d’indiquer la visibilité
c des différentes variables
Bloc jaune
d
Bloc bleu
e
39
Instructions de base (1/12)

• Elles ont une présentation (syntaxe) et une


signification (sémantique)
• Les instructions de base sont :

- l’affectation
Instructions
- la lecture de transfert
Instructions (mouvement)
d’entrées-sorties (E/S)
- l’écriture
40
Instructions de base (2/12)

• L’affectation

- Sa syntaxe
nomVariable  expression

- Sa sémantique
ranger dans la variable nomVariable
la valeur associée à expression

41
Instructions de base (3/12)

• Expressions de différents types


- entier
- réel
- caractère
- chaîne de caractères
- booléen ou logique
- etc.

42
Instructions de base (4/12)

• Expressions impliquant différents opérateurs et


fonctions
- opérateurs arithmétiques (entiers et réels) : +, -, x, /, etc.
- opérateurs logiques ou booléens : ET, OU, >, <, ≤, ≥, =,
≠, etc.
- opérateurs et fonctions pour les caractères : + de la
concaténation, fonctions ord, car, pred, etc.
- opérateurs et fonctions pour les chaînes de caractères : +,
fonctions taille, teteDeChaine, queueDeChaine, etc.
43
Instructions de base (5/12)

• Exemples
Surface  0 ; /* on range la valeur 0 dans la variable Surface */
Rayon  25.4 ; /* on range la valeur 25.4 dans la variable Rayon */
Surface  2xPIxRayon ; /* on suppose la constante PI connue */
Age  2024 - AnneeNaiss ; /* on suppose AnneeNaiss déjà
renseignée */
Nom  “OUEDRAOGO” ;
Message  Nom ;
Prenom  “Justin” ;
Utilisateur  Nom + “ ” + Prenom ;

Concaténation
44
Instructions de base (5/12)
• Exemples
Nom  “OUEDRAOGO” ;
Prenom  “Justin” ;
Message  “Bonjour”+ “ ”+Nom+ “ ”+Prenom ;
Utilisateur  Nom + “ ” + Prenom ;
indicatif  IndicatifTelBF ;
pays  nomPays ;
estAdmis (Moyenne ≥ 10) ;
trouve  (Prenom = “Jean”);
estPresent (Moyenne ≠ 0) ;
toto “23456” ;
titi  “23456” ;
somme  toto+ titi ;
car  “ ” ;
45
Instructions de base (6/12)

• La lecture d’une valeur

- Sa syntaxe
Lire nomVar

- Sa sémantique
Récupérer une valeur introduite par
l’utilisateur et la ranger dans la variable
de nom nomVar
46
Instructions de base (7/12)

• La lecture d’une valeur


Programme
en exécution
L’exécution de Ordinateur
l’instruction de
-
lecture correspond -
à une requête de Ordre de lecture
-
fourniture d’une donnée -
adressée à l’utilisateur.
La donnée sera rangée dans
la variable spécifiée dans l’ordre

47
Instructions de base (8/12)
• Généralisation de la lecture

- Sa syntaxe
Lire nomVar1, nomVar2, …, nomVarN

- Sa sémantique
Récupérer, au moyen d’une unique instruction , N
valeurs introduites par l’utilisateur et qui
seront respectivement stockées dans les variables
de nom nomVar1, nomVar2, …, nomVarN
48
Instructions de base (9/12)

• L’écriture

- Sa syntaxe
Ecrire nomVar

- Sa sémantique
récupérer la valeur présente dans la
variable nomVar et l’envoyer vers le
terminal de l’utilisateur
49
Instructions de base (10/12)

• L’écriture
Programme
Ordinateur en exécution
?

-
-
Ordre d’écriture
-
-

L’exécution de l’instruction d’écriture correspond à une requête de transfert d’une


valeur vers le terminal de l’utilisateur. La donnée concernée est celle rangée dans la
variable spécifiée dans l’ordre.
50
Instructions de base (11/12)
• Généralisation de l’écriture

- Sa syntaxe
Ecrire nomVar1, nomVar2, …, nomVarN

- Sa sémantique
Récupérer, au moyen d’une unique instruction , le
contenu des N variables appelées respectivement
nomVar1, nomVar2, …, nomVarN, et les envoyer
vers le périphérique de sortie standard
51
Instructions de base (12/12)

• Lecture (entrée) / écriture (sortie)

Sortie /
Ecriture

Entrée / Référence
Lecture / Repère
52
Exercice 1
Ecrire l’algorithme permettant de ranger la valeur
entière 100 dans une variable dénommée X, de
ranger la valeur 900 dans une variable de nom Y, de
faire leur somme arithmétique et enfin de ranger le
résultat dans la variable Z.

Exercice 2
Ecrire l’algorithme permettant à l’utilisateur de
saisir une valeur entière et d’afficher cette valeur
augmentée de 100.
53
Exercice 4
Ecrire un algorithme qui calcule le volume V d’une sphère étant donné
son rayon R , V = 4PiR3.

Exercice 5
Ecrire un algorithme qui calcule et affiche la somme des n premiers
entiers naturels, la somme est égale à la division entière de n*(n+1) par 2.

Exercice 6
Ecrire un algorithme qui saisit le prix hors taxe d’une imprimante, le prix
TVA et affiche le prix total.
54
Chapitre 3 : Les structures de contrôle

55
Définition des structures de contrôle (1/2)
• Une structure de contrôle est une instruction
permettant de modifier ou d’orienter le fil ou la
séquence d’exécution des instructions en fonction des
conditions rencontrées ou des événements survenus lors
du déroulement de l’algorithme.

On rappelle que, par défaut, les instructions sont


exécutées les unes après les autres, du début de
l'algorithme jusqu'à la fin de l'algorithme.
Les structures de contrôle sont d’ailleurs de ce fait
appelées instructions de rupture de séquence.
56
Définition des structures de contrôle (2/2)
• ATTENTION !!!
structures de contrôle ≠ structures de données
Les 1res sont des instructions permettant d’orienter le fil
du déroulement de l’algorithme tandis que les 2ndes sont
une organisation ou une structuration des données.

• Deux principales catégories de structures de


contrôle sont employées en algorithmique :
- les structures de contrôle conditionnel ;
- les structures de contrôle répétitif.
57
Structures de contrôle conditionnel (1/6)
• On les appelle aussi structures de choix ou
structures de test ou structures de sélection ou
structures alternatives ou encore structures de
contrôle de condition.
• Elles permettent d’orienter le traitement en
fonction de la réalisation ou pas d’une condition.
• Elles se présentent sous deux syntaxes : une forme
simple et une forme complète.
58
Structures de contrôle conditionnel (2/6)
• Structure simple de choix
Traitement1; La condition est une expression
dont l’évaluation retourne une
Si condition alors valeur logique/booléenne (VRAI ou FAUX).
Si la valeur retournée lors de
l’évaluation de la condition est
traitement2 VRAI, alors on « entre » dans la structure de
contrôle pour réaliser traitement2. Ce n’est
qu’après cela que le traitement3 est effectué.
FinSi ; Autrement, on « n’entre pas » dans la structure
traitement3 de contrôle, mais directement est effectué
traitement3.
59
Structures de contrôle conditionnel (3/6)
• Structure simple de choix

traitement1

Vrai Faux La représentation


condition graphique (losange)
employée au début de
traitement2 l’informatique illustre
bien cette réalité !

traitement3

60
Structures de contrôle conditionnel (4/6)
• Structure complète de choix
Traitement1; Si la valeur retournée lors de
l’évaluation de la condition est
Si condition alors VRAI, alors on « entre » dans la 1re partie de la
structure de contrôle pour ne réaliser que
traitement2a
traitement2a.
Sinon
Autrement on « entre » dans la 2e partie de la
traitement2b structure de contrôle pour ne réaliser que
traitement2b.
FinSi ;
Et quel que soit le chemin emprunté, on finit
traitement3 par exécuter traitement3.
61
Structures de contrôle conditionnel (5/6)
• Structure complète de choix

traitement1

Vrai Faux
condition Dans la représentation
graphique (losange) les
deux moitiés de
traitement2a traitement2b l’alternative sont bien
visibles !

traitement3

62
Structures de contrôle conditionnel (6/6)
• Structures complètes de choix imbriquées
Traitement1;
Si condition1 alors traitement2a
traitement1’ ;
Si condition1’ alors ATTENTION !!! Des
traitement2a’ structures de choix peuvent
Sinon « renfermer » d’autres
traitement2b’ structures de choix : on dit
FinSi ; qu’elles sont imbriquées.
traitement3’
Sinon
traitement2b
FinSi ;
traitement3 63
Structures de contrôle répétitif (1/8)
• On les appelle aussi structures (de contrôle) de
répétition ou structures itératives ou structures
de boucle.
• Elles permettent de réaliser un même traitement un
certain nombre de fois (répétition du traitement).
• Deux principales structures de contrôle itératives
existent : celle nécessitant la connaissance
préalable du nombre d’itérations à faire, et celle
ne nécessitant pas cette connaissance.
64
Structures de contrôle répétitif (2/8)
• Structure de contrôle de répétition TANT QUE
Traitement1; Après avoir exécuté traitement1, la
réalisation de traitement2 est
Tant que condition faire conditionnée par le fait que la valeur de
l’évaluation de condition est à VRAI.
A chaque fois que traitement2 est
traitement2 effectué, la rencontre du FinTantque
oblige qu’on aille au début du Tant que
vérifier que condition est toujours VRAI.
FinTantque ; Dès que l’évaluation de condition donne
traitement3 FAUX, on « sort » de la boucle et le
traitement3 est effectué.
65
Structures de contrôle répétitif (3/8)
• Structure de contrôle de répétition TANT QUE
Traitement1 ; Le nombre d’itérations à faire
n'est pas requis au préalable.
Tant que condition faire
MAIS ATTENTION !!!

traitement2 Si après avoir exécuté traitement1, la


première évaluation de condition
donne FAUX, alors traitement2 ne
FinTantque ;
sera jamais effectué, et le déroulement
traitement3 de l’algorithme se poursuivra avec
traitement3.
66
Structures de contrôle répétitif (4/8)
• Structure de contrôle de répétition TANT QUE
Traitement1 ;
La condition est supposée avoir été
Tant que condition faire initialisée avant l’entrée de la boucle
(dans traitement1 par exemple) et doit
être modifiable par traitement2 afin de
traitement2 permettre de sortir de la boucle.

ATTENTION
FinTantque ; aux boucles infinies !
traitement3 S’assurer de la condition d’arrêt !

67
Structures de contrôle répétitif (5/8)
• Structure de contrôle de répétition POUR
Traitement1 ; On se sert d’un compteur, ici la
variable i de type entier, pour gérer le
Pour i allant de 1 à N faire
nombre de fois que traitement2 sera
exécuté. Si N est supérieur ou égal à 1
alors traitement2 est effectué au
traitement2 moins une fois, autrement jamais.
Ce n’est qu’après avoir réalisé la
FinPour ; dernière itération qu’on « sort » de la
boucle, la valeur de i valant N+1 ou
traitement3 même indéterminée, et que
traitement3 est effectué.
68
Structures de contrôle répétitif (6/8)
• Structure de contrôle de répétition POUR
Traitement1 ; ATTENTION !!!
L’incrément ou le pas K correspond à la
Pour i allant de 1 à N faire valeur à rajouter à la valeur actuelle de i
pour obtenir sa valeur suivante.
Par défaut K vaut 1 et on ne précise pas.
traitement2 Mais si K venait à être différent de 1
(même négatif) il faudrait le préciser, et
dans ce cas il faudrait employer plutôt la
FinPour ;
forme :
traitement3
Pour i allant de 1 à N par pas de K faire

69
Structures de contrôle répétitif (7/8)
• Structure de contrôle de répétition POUR
Traitement1 ; ATTENTION !!!

Pour i allant de 1 à N faire Cette incrémentation de la valeur de la


variable i est automatiquement gérée par
la structure de contrôle. Il est par
traitement2 conséquent interdit de modifier la
valeur de i au sein de la boucle POUR.

FinPour ; Cependant, la valeur de la variable i peut


traitement3 être utilisée en lecture au sein de la
boucle.

70
Structures de contrôle répétitif (8/8)
• Structures de contrôle de répétition imbriquées
Boucle1
Boucle2 ATTENTION !!!
Des structures de contrôle de
répétition peuvent « renfermer »
Boucle3
d’autres structures de contrôle de
répétition : on dit qu’elles sont
imbriquées.
FinBoucle3
On veillera à la bonne maîtrise
FinBoucle2 des conditions d’arrêt de
chacune d’elles.
FinBoucle1
71
Structures de contrôle conditionnel
• Exercice 1

Rédiger un algorithme permettant de demander à


l’utilisateur de fournir la réponse de l’opération
4x5. Selon sa réponse, l’algorithme affiche soit le
message « Bravo ! Vous êtes bon ! », soit le
message « Dommage ! Des efforts sont à faire ! »

72
Structures de contrôle conditionnel
• Exercice 2

Ecrire un algorithme permettant d’une part de


demander à l’utilisateur s’il est un homme ou une
femme, et d’autre part, en fonction de la réponse
donnée, de ranger dans une variable le message
“Merci monsieur” ou “Merci madame”.

73
Structures de contrôle conditionnel
• Exercice 3

Ecrire un algorithme affichant le message « La


valeur entière saisie est paire » ou « La valeur
entière saisie est impaire » selon que la valeur
introduite par l’utilisateur est paire ou impaire.

74
Structures de contrôle conditionnel
• Exercice 4

Ecrire un algorithme permettant de résoudre dans


R une équation du 2nd degré.

75
Structures de contrôle conditionnel
• Exercice 5

Ecrire un algorithme qui, à partir de la fourniture par


l’utilisateur d’un nombre entier compris entre 1 et
39, en donne l’écriture correspondante en chiffres
romains. Par exemple si l’utilisateur fournit
- la valeur 32, l’algorithme donne en sortie XXXII ;
- la valeur 9, l’algorithme donne en sortie IX ;
- la valeur 13, l’algorithme donne en sortie XIII ;
- la valeur 39, l’algorithme donne en sortie XXXIX.
76
Structures de contrôle répétitif
Exercice 1
Ecrire un algorithme affichant le message « Bravo ! »
aussi longtemps que l’utilisateur répondra par « O »
à la question
« Allez-vous encourager les étalons ? <O/N> »

77
Structures de contrôle répétitif
Exercice 2
Ecrire un algorithme permettant à l’utilisateur de faire
autant de fois qu’il le souhaite, la somme de 2
entiers relatifs qu’il aura à introduire.

78
Structures de contrôle répétitif
Exercice 3
1) En s’appuyant sur une structure de répétition, écrire
un algorithme permettant de calculer la somme
des n (n > 0) premiers entiers naturels strictement
positifs. On supposera la valeur de n déjà connue.

2) Pourrait-on obtenir une autre solution sans utiliser


une structure de répétition ? Si oui faites en une
proposition.
79
Structures de contrôle répétitif
Exercice 4
1) En s’appuyant sur une structure de répétition,
écrire un algorithme permettant d’afficher les dix
premières lignes de la table de multiplication par 2.

2) Pourrait-on obtenir une autre solution sans utiliser


une structure de répétition ? Si oui faites en une
proposition.

80
Structures de contrôle répétitif
Exercice 5
En s’appuyant sur les structures de contrôle, on vous
demande d’écrire un algorithme qui, à partir de la
fourniture par l’utilisateur d’un nombre entier
correspondant à un nombre de secondes, calcule et
affiche l’équivalent en heures, minutes et secondes.

81
Structures de contrôle répétitif
Exercice 6
Ecrire un algorithme qui, à partir de la
fourniture par l’utilisateur de deux nombres entiers
A et B, calcule et affiche leur plus grand commun
diviseur connu sous le vocable de PGCD.

82
Structures de contrôle répétitif
Exercice 7 Début
Qu'obtient-on à
l'écran de son Lire x ;
ordinateur si l'on i←5 ;
exécutait le Tant que i>0 faire
programme
x←x*i ;
correspondant au bloc
algorithmique i←i-1
ci-contre ? FinTantque ;
i et x sont des variables Ecrire "x à la fin = ",x
entières et l'on suppose
avoir saisi la valeur 8.
Fin.
83
Structures de contrôle répétitif
Exercice 8 Début
Qu'obtient-on à
l'écran de son Lire x ;
ordinateur si l'on Pour i allant de 1 à 5 faire
exécutait le Ecrire i,") x=", x ;
programme
AllerALaLigne ;
correspondant au bloc
algorithmique x←x+((i-2)*2) ;
ci-contre ? FinPour ;
i et x sont des variables Ecrire "A la fin x vaut ",x
entières et l'on suppose
avoir saisi la valeur 8.
Fin.
84
Structures de contrôle répétitif
Exercice 9 Début
Donnez l'équivalent de
l'enchaînement logique Lire x ;
ci-contre utilisant plutôt Pour i allant de 1 à 5 faire
une structure de contrôle Ecrire i,") x=", x ;
de répétition TANT QUE.
AllerALaLigne ;
x←x+((i-2)*2) ;
FinPour ;
Ecrire "A la fin x vaut ",x
Fin.
85
Structures de contrôle répétitif
Exercice 10
On suppose disposer :
- de billets de 10000, 5000, 2000, 1000 et 500 F CFA ;
- de pièces de 100, 50, 25, 10 et 5 F CFA.
On vous demande d'écrire l'algorithme qui permet à un
caissier de savoir ce qu'il faut donner comme nombre
minimum de billets et de pièces à un client qui lui
communique un montant à payer.

86
Chapitre 4 : Les Tableaux

87
Introduction aux tableaux
• On appelle tableau une structure de données
constituée de plusieurs éléments de même type
qu’on peut référencer au moyen d’un indice.

• Un tableau correspond à une suite/succession finie


de variables/éléments de même type, évitant à
l’utilisateur l’emploi d’un grand nombre de
variables pour lesquelles il lui aurait fallu trouver
des noms distinctifs.

88
Introduction aux tableaux
• Exemple : on voudrait conduire une étude sur la
taille des étudiants de IAM.

89
Introduction aux tableaux
Une façon rébarbative de le faire serait de déclarer
une liste de 100 variables de type réel,
chacune associée à la taille d’un étudiant de IAM :
t1 est de type réel, correspondant à la taille du 1er étudiant de IAM ;
t2 est de type réel, correspondant à la taille du 2e étudiant de IAM ;
t3 est de type réel, correspondant à la taille du 3e étudiant de IAM ;
t4 est de type réel, correspondant à la taille du 4e étudiant de IAM ;
t5 est de type réel, correspondant à la taille du 5e étudiant de IAM ;
t6 est de type réel, correspondant à la taille du 6e étudiant de IAM ;

t99 est de type réel, correspondant à la taille du 99e étudiant de IAM ;
t100 est de type réel, correspondant à la taille du 100e étudiant de IAM.
90
Introduction aux tableaux

Quelles difficultés
aurions-nous eues s’il
y avait mille, dix
mille, un million de
variables à manipuler ?

91
Tableaux à une dimension
On les appelle aussi :
- tableaux à une entrée
- vecteurs

92
Tableaux à une dimension

• Exemple

T 1,80 2,10 1,98 1,65 1,55 1,65 1,85

Elément Elément Elément Elément


d’indice 1 d’indice 2 d’indice 4 d’indice 100
T(1) T(2) T(4) T(100)

Désignation des éléments du tableau


93
Tableaux à une dimension

• Déclaration du type tableau

T est de type tableau de N objets

T : tableau [1..N] objets Déclaration de type

Ce qui traduit le fait que les objets de T soient


indicés de 1 à N
Remarque : les indices peuvent démarrer n’importe
quand pourvu qu’ils soient croissants
94
Tableaux à une dimension

• Localisation des éléments / Encombrement du tableau

T 1,80 2,10 1,98 1,65 1,55 1,65 1,85

Elément d’indice 1 à l’adresse de début du tableau (@T)


Elément d’indice 2 à l’adresse de début du tableau + 1x (taille d’un élément)
Elément d’indice 3 à l’adresse de début du tableau + 2x (taille d’un élément)

Elément d’indice 4 à l’adresse de début du tableau + 3x (taille d’un élément)

Elément d’indice 100 à l’adresse de début du tableau + 99x (taille d’un élément)

95
Tableaux à une dimension

• Localisation des éléments / Encombrement du tableau

T 1,80 2,10 1,98 1,65 1,55 1,65 1,85

A cause de la présence d’éléments de même type


dans le tableau, l’ordinateur peut facilement repérer
chaque élément du tableau, pourvu que sa position
relative au début du tableau (indice ou rang) soit connue.
L’encombrement du tableau, i.e. l’espace mémoire
centrale occupé par le tableau, peut être facilement
calculé : nombre d’éléments du tableau X taille d’1 élément.
96
Tableaux à une dimension

• Opérations sur les tableaux à une dimension

- Initialisation
- Affichage
- Repérage/recherche d’une valeur dans le tableau
- Somme des éléments de deux tableaux
- Calcul de la moyenne des éléments du tableau
- Comptage des occurrences d’une valeur dans le tableau
- Etc.

97
Tableaux à une dimension
Exercice 1
Ecrire un algorithme permettant d’initialiser
interactivement un tableau de 10 entiers naturels.
Exercice 1bis
Ecrire un algorithme permettant d’initialiser
interactivement un tableau A donné de 10 entiers naturels.
Exercice 2
Ecrire un algorithme permettant d’afficher les 50
valeurs réelles d’un tableau. On suppose le tableau
initialisé.
98
Tableaux à une dimension

Exercice 3
On suppose avoir deux tableaux A et B initialisés
avec les valeurs correspondant aux notes des 80
étudiants pour les 2 évaluations en algorithmique.
Ecrire un algorithme permettant de calculer et de
conserver la moyenne des 2 évaluations de chacun
des étudiants.

99
Tableaux à une dimension

Exercice 4
On suppose avoir un tableau T initialisé avec 1000
réels. Ecrire un algorithme permettant de récupérer
la plus petite valeur de ce tableau et de l’afficher.
Exercice 5
On suppose avoir un tableau T initialisé avec 1000
réels. Ecrire un algorithme permettant de récupérer
la plus petite et la plus grande valeur de ce tableau.

100
Tableaux à une dimension

Exercice 6
On suppose avoir un tableau T initialisé avec 1000
réels. Ecrire un algorithme permettant de compter
le nombre de valeurs réelles nulles de T.
Exercice 7
On suppose avoir un tableau T initialisé avec 200
entiers relatifs. Ecrire un algorithme permettant de
compter le nombre de valeurs strictement positives
de T.
101
Tableaux à une dimension
Exercice 8
On suppose avoir un tableau T initialisé avec 20
entiers relatifs. Ecrire un algorithme permettant de
retrouver l’indice du premier 0 du tableau quand
celui-ci existe effectivement.

Exercice 9
On suppose avoir un tableau T initialisé avec 10
entiers naturels. Ecrire un algorithme permettant de
calculer le produit des valeurs de ce tableau.
102
Tableaux à une dimension

Exercice 10
On suppose avoir un tableau T initialisé avec N
(N>0) valeurs réelles. Ecrire un algorithme
permettant à l’utilisateur de saisir une valeur dont il
faudra calculer le nombre d’apparitions dans le
tableau T.

103
Tableaux à deux dimensions
On les appelle aussi :
- tableaux à deux entrées
- matrices

104
Tableaux à deux dimensions

• Définition : c’est un tableau de tableaux


Exemple : on veut traiter les notes de français, d'anglais et
de maths de 4 étudiants dénommés A, B, C et D.
Solution no1 : créer 4 tableaux de 3 réels.

A 6,50 12,75 11

B 16,50 10,75 10

C 9,50 9,75 11,50

D 13,50 12,50 14
105
Tableaux à deux dimensions

Comment gérer les notes de la centaine


d’étudiants de l’IAM ?

Quelles difficultés avec la


centaine de noms de
variables à manipuler ?

106
Tableaux à deux dimensions

Solution no2 : créer un tableau T de 4 tableaux de 3 réels qui


sera déclaré comme suit :
T : tableau [1..4, 1..3] de réels.

T
6,50 12,75 11

16,50 10,75 10

9,50 9,75 11,50

13,50 12,50 14

107
Tableaux à deux dimensions

T → Ligne 1 (L1) associée aux notes de l’étudiant A


6,50 12,75 11

16,50 10,75 10 → Ligne 2 (L2) associée aux notes de l’étudiant B

9,50 9,75 11,50 → Ligne 3 (L3) associée aux notes de l’étudiant C

13,50 12,50 14 → Ligne 4 (L4) associée aux notes de l’étudiant D

Colonne 3
pour les notes
Colonne 1 Colonne 2
de maths
pour les notes pour les notes
de français d’anglais

108
Tableaux à deux dimensions

T
13,50 12,75 11
Désignation des éléments de la matrice
16,50 10,75 10
Lignes T(i, j) avec :
9,50 9,75 11,50 i comme indice de la ligne
j comme indice de la colonne
13,50 12,50 14
Exemples :
10 correspond à T(2, 3)
Colonnes
11 correspond à T(1, 3)
13,50 correspond à T(4, 1)

109
Tableaux à deux dimensions
Généralisation
Une matrice M de N lignes et de P colonnes
d’objets sera déclarée :

M : tableau de [1..N, 1..P] objets

Nombre Nombre
de lignes de colonnes

M  Tableau de N tableaux [1..P] objets

110
Tableaux à deux dimensions

Représentation d’une matrice en mémoire centrale

En mémoire centrale, une matrice M de N lignes et de


P colonnes d’objets est représentée à partir de
l’adresse  comme un tableau à une dimension
constituée par la mise bout à bout des N lignes de P
objets qui le constituent.

111
Tableaux à deux dimensions
T
6,50 12,75 11
16,50 10,75 10 Si un élément de type objet de T est
9,50 9,75 11,50 représenté sur k octets, alors en
mémoire centrale on aura ce qui suit :
13,50 12,50 14

Adresses des éléments de T en mémoire centrale

α α+k α+2k α+3k α+4k α+11k

6,50 12,75 11 16,50 10,75 10 9,50 9,75 11,50 13,50 12,50 14

T 112
Tableaux à deux dimensions
Soit α l’adresse de début du tableau T [1..N, 1..P] objet en mémoire
centrale.
Si un élément de type objet est représenté sur k octets, alors en
mémoire centrale l’élément T(i, j) tel que 1 ≤ i ≤ N et 1 ≤ j ≤ P
sera logé à l’adresse :
α + (i-1)*P*k + (j-1)*k

Adresses des éléments de T en mémoire centrale

α α+k α+2k α+3k α+4k α+11k

6,50 12,75 11 16,50 10,75 10 9,50 9,75 11,50 13,50 12,50 14

T 113
Tableaux à deux dimensions

• Opérations sur les matrices

- Initialisation d’une matrice


- Affichage (ligne par ligne ou colonne par colonne) des
valeurs d’une matrice
- Repérage/recherche d’une valeur dans une matrice
- Matrice Somme des éléments de deux autres matrices
- Calcul de la moyenne des éléments d’une matrice
- Comptage des occurrences d’une valeur dans la matrice
- Etc.
114
Tableaux à deux dimensions
Exercice 1
Ecrire un algorithme permettant d’initialiser
interactivement une matrice A de deux lignes et de
trois colonnes d’entiers naturels.
Exercice 1bis
Ecrire un algorithme permettant d’initialiser
interactivement une matrice A de deux lignes et de
cent colonnes d’entiers naturels.
Exercice 1ter
Ecrire un algorithme permettant d’initialiser
interactivement une matrice A de 1000 lignes et de
500 colonnes d’entiers naturels.
115
Tableaux à deux dimensions

Exercice 2
Ecrire un algorithme permettant d’afficher ligne
par ligne, les 15 valeurs réelles d’une matrice
A[1..5, 1..3]. On supposera la matrice déjà
initialisée.

116
Tableaux à deux dimensions

Exercice 3
On suppose avoir deux matrices X et Y de
L lignes et C colonnes de réels initialisées.
Ecrire un algorithme permettant de calculer
la matrice Z contenant les moyennes des valeurs
de X et Y, c’est-à-dire :
Z(i, j)=moyenne(X(i, j),Y(i, j)), i [1..L] et j [1..C].

117
Tableaux à deux dimensions

Exercice 4
On suppose avoir une matrice M[1..N, 1..P] de réels
initialisée.
Ecrire un algorithme permettant de récupérer
la première plus petite valeur de cette matrice, de
l’afficher ainsi que les indices de ligne et colonne lui
correspondant. Le parcours de la matrice s’effectue
de la 1re ligne à la dernière ligne.

118
Tableaux à deux dimensions

Exercice 5
On suppose avoir une matrice M de 3 lignes et 5
colonnes initialisée avec des valeurs réelles.
Ecrire un algorithme permettant de compter le
nombre de valeurs strictement positives dans cette
matrice.

119
Tableaux à deux dimensions

Exercice 6
On suppose avoir une matrice carrée M initialisée
avec 25 entiers relatifs. Écrire un algorithme
permettant de rechercher dans la matrice, une valeur
V saisie par l’utilisateur. En cas de succès de la
recherche, les coordonnées en ligne et en colonne de
la valeur dans la matrice sont à afficher.

120
Tableaux à deux dimensions

Exercice 7
On suppose avoir une matrice d’entiers naturels M
de L lignes et de C colonnes initialisée. Écrire un
algorithme permettant à l’utilisateur de saisir une
valeur entière dont il faudra calculer le nombre
d’apparitions dans la matrice.

121
Tableaux à deux dimensions
Exercice 8
Les 12 valeurs réelles suivantes correspondent à une
matrice M implantée en mémoire centrale.

6,51 10,52 -0,11 19,03 17,35 10,40 9,55 -2,95 11,50 13,50 -9,50 1,45

1) Si la déclaration de M est M[1..6, 1..2] de réels,


donnez les valeurs de M[2,1], M[4,1], M[6,2], M[6,2]

2) Si la déclaration de M est M[1..4, 1..3] de réels,


donnez les valeurs de M[2,1], M[4,1], M[3,3], M[4,2]

122
Chapitre 5 : Les Procédures et fonctions

123
Introduction aux procédures
• Une procédure est semblable à une « boite » capable d’utiliser
des données en entrée pour produire, parfois en utilisant des
données intermédiaires, des données en résultat.
• L’emploi des procédures augmente la lisibilité et la
réutilisabilité des algorithmes produits, en évitant les
séquences répétitives et en favorisant l’analyse aisée des erreurs
de logique.

124
Introduction aux procédures
• Une procédure porte un nom et doit être complètement
décrite avant toute utilisation.

• Allure d’une procédure


Procédure nomProcédure
/* Commentaire sur ce que fait la procédure */
Liste descriptive des paramètres en entrée
Liste descriptive des paramètres en sortie
Liste descriptive des paramètres en entrée/sortie
Liste descriptive des variables locales
Description de l’enchaînement logique associé
FinProcédure nomProcédure
125
Introduction aux procédures

Liste descriptive des paramètres en entrée


Ce sont les variables censées renfermer des valeurs
positionnées pour que lors de l’appel de la
procédure, cette dernière les utilise en lecture seulement.

Elles sont décrites comme d’habitude avec des facettes de


type et de commentaire.

126
Introduction aux procédures

Liste descriptive des paramètres en sortie


Ce sont les variables censées renfermer les valeurs que la
procédure produira en résultat et qui devront être visibles
en dehors de la procédure.

Elles sont décrites comme d’habitude avec des facettes de


type et de commentaire.

127
Introduction aux procédures

Liste descriptive des paramètres en entrée/sortie


Ce sont les variables censées renfermer les valeurs qui,
dans la procédure, seront exploitées aussi bien en lecture
qu’en écriture/modification.

Leurs modifications devront être visibles en dehors de la


procédure.

Elles sont décrites comme d’habitude avec des facettes de


type et de commentaire.
128
Introduction aux procédures

Liste descriptive des variables locales


Ce sont des variables intermédiaires dont la portée se limite
à la procédure. Elles sont initialisées dans la procédure et
les modifications qu’elles vont connaître ne seront pas
visibles en dehors de la procédure.

Elles sont décrites comme d’habitude avec des facettes de


type et de commentaire.

129
Introduction aux procédures
• Une procédure est utilisée par simple invocation de son
nom : on parle d’appel de procédure.

• Les paramètres sont les seuls moyens de


communication avec la procédure : ils constituent
l’interface de communication de la procédure.

==>Avant tout appel de procédure, les paramètres


censés être utilisés par la procédure doivent être
correctement positionnés.
130
Introduction aux procédures
• Allure d’un appel de procédure

nomProcedure (liste des paramètres en entrée,


liste des paramètres en sortie,
liste des paramètres en entrée-sortie)

• Lors d’un appel de procédure il y a substitution des


paramètres formels (employés au moment de la
description de la procédure) avec les paramètres effectifs
ou arguments (paramètres employés au moment de
l’appel de la procédure) selon l’ordre des paramètres
employé lors de la description de la procédure.
131
Introduction aux procédures
Procédure SaisirNotesEtudiants
/* Cette procédure permet de saisir les deux notes de chacun
des N étudiants après affichage de leurs noms et prénoms */
Paramètres en entrée :
N est de type entier, correspondant au nombre d’étudiants concernés ;
Nom est de type Tableau[1..N] chaînes de caractères, correspondant au
tableau des noms d’étudiants ;
Prenom est de type Tableau[1..N] chaînes de caractères, correspondant au
tableau des prénoms d’étudiants ;
Paramètres en sortie :
Note1 est de type Tableau[1..N] réels, correspondant au tableau des notes
du 1er devoir en algorithmique ;
Note2 est de type Tableau[1..N] réels, correspondant au tableau des notes
du 2e devoir en algorithmique ;
132
Introduction aux procédures
Paramètres en entrée-sortie : néant ;
// Cette procédure emploie, lors de son appel, 5 paramètres pouvant
// être : Nx, nomX, prenomX, noteA, noteB.
Variables locales :
i est de type entier, correspond à l’index de parcours des tableaux ;
Pour i allant de 1 à N faire
Ecrire "Entrez la 1re note de ", Nom(i), " ", Prenom(i) ;
Lire Note1(i) ;
Ecrire "Entrez la 2e note de ", Nom(i), " ", Prenom(i) ;
Lire Note2(i)
FinPour
FinProcédure SaisirNotesEtudiants

133
Introduction aux procédures
Procédure CalculerMoyenneDeChaqueEtudiant
/* Elle réalise le calcul de la moyenne en algorithmique de chacun
des étudiants */
Paramètres en entrée :
N est de type entier, correspondant au nombre d’étudiants concernés ;
Note1 est de type Tableau[1..N] réels, correspondant au tableau des notes
du 1er devoir en algorithmique ;
Note2 est de type Tableau[1..N] réels, correspondant au tableau des notes
du 2e devoir en algorithmique ;
Paramètres en sortie :
TMoy est de type Tableau[1..N] réels, correspondant au tableau des
moyennes des étudiants en algorithmique ;

134
Introduction aux procédures
Paramètres en entrée-sortie : néant ;
// Cette procédure emploie 4 arguments lors de son appel.

Variables locales :
i est de type entier, correspondant à l’indice de parcours des tableaux ;

Pour i allant de 1 à N faire

TMoy(i)← (Note1(i)+Note2(i))/2

FinPour
FinProcédure CalculerMoyenneDeChaqueEtudiant

135
Introduction aux procédures
Procédure CalculerStatistiquesClasse
/* Elle calcule les statistiques de la classe en algorithmique */
Paramètres en entrée :
/* A préciser dans le cadre d’un TD */
Paramètres en sortie :
/* A préciser dans le cadre d’un TD */
Paramètres en entrée-sortie :
/* A préciser dans le cadre d’un TD */
Variables locales :
/* A préciser dans le cadre d’un TD */
Bloc logique
/* A préciser dans le cadre d’un TD */
FinProcédure CalculerStatistiquesClasse
136
Introduction aux procédures
Procédure AfficherStatistiquesClasse
/* Affichage des statistiques de la classe en algorithmique */
Paramètres en entrée :
MoyClasse est de type réel, correspondant à la moyenne de la classe à
afficher ;
MaxMoyClasse est de type réel, correspondant à la meilleure moyenne de
la classe à afficher ;
MinMoyClasse est de type réel, correspondant à la plus faible moyenne de
la classe à afficher ;
Paramètres en sortie : néant ;
Paramètres en entrée-sortie : néant ;
// Cette procédure emploie 3 arguments lors de son appel.
Variables locales : néant ;
137
Introduction aux procédures
Ecrire "La moyenne de la classe est ", MoyClasse ;
Ecrire "La meilleure moyenne de la classe est ", MaxMoyClasse ;
Ecrire "La plus faible moyenne de la classe est ", MinMoyClasse

FinProcédure AfficherStatistiquesClasse

138
Introduction aux procédures
• Exemple d’utilisation des procédures
/* On suppose :
- la constante Nb initialisée ;
- les tableaux Nom, Prenom, NoteA, NoteB et TabMoy bien initialisés ;
- les variables MoyCl, MaxMoy, MinMoy déclarées ;
- les descriptions correctes des procédures SaisirNotesEtudiants,
CalculerMoyenneDeChaqueEtudiant, CalculerStatistiquesClasse et
AfficherStatistiquesClasse disponibles.
*/
7) Description de l'enchaînement logique
Début Appel
SaisirNotesEtudiants (Nb, Nom, Prenom, NoteA, NoteB) ; des 4
CalculerMoyenneDeChaqueEtudiant (Nb, NoteA, NoteB, TabMoy) ; procédures
CalculerStatistiquesClasse (Nb, TabMoy, MoyCl, MaxMoy, MinMoy) ; l’une après
AfficherStatistiquesClasse (MoyCl, MaxMoy, MinMoy) l’autre
Fin.
139
Introduction aux procédures
Exercice no1
Ecrire une procédure qui calcule la somme des
éléments d’un tableau de N réels et la met à
disposition à travers l’un de ces paramètres.

Exercice no2
Ecrire une procédure qui calcule la distance entre
deux points A(ax,ay) et B(bx,by) et la met à
disposition à travers l’un de ces paramètres.
140
Introduction aux procédures

Exercice no3
Ecrire une procédure qui élève un réel x à la
puissance b, avec entier naturel supérieur à 0, le
résultat étant mis à disposition à travers l’un de
ces paramètres.

141
Introduction aux fonctions
• Une fonction est une procédure dont le nom est capable
de supporter un résultat.

• Dans une fonction, le nom de cette fonction fait partie


implicitement de la liste des paramètres en sortie.

• le nom de la fonction est associé à un type de donnée et


peut figurer dans les expressions portant sur des objets
(variables et constantes) de son type.

142
Introduction aux fonctions
• Allure d’une fonction
Fonction nomFonction est de type typeFonction
/* Commentaires sur ce que fait la fonction et sur
le type du résultat supporté par le nom de la fonction*/
Liste descriptive des paramètres en entrée
Liste descriptive des autres paramètres en sortie
Liste descriptive des paramètres en entrée/sortie
Liste descriptive des variables locales
Description de l’enchaînement logique associé
Retourner expression
FinFonction nomFonction
143
Introduction aux fonctions
• Exemple 1 de description de fonction
Fonction Moy2Val est de type réel
/* Elle calcule la moyenne de deux nombres réels qu’elle retourne comme
résultat par l’intermédiaire du nom de la fonction*/
Paramètres en entrée :
Val1 est de type réel, correspondant à la 1re valeur à employer pour la moyenne ;
Val2 est de type réel, correspondant à la 2e valeur à employer pour la moyenne ;
Autres paramètres en sortie : néant ;
Paramètres en entrée-sortie : néant ;
// cette fonction emploie 2 arguments lors de son appel
Variables locales :
MoySimple est de type réel, correspondant à la moyenne calculée ;
MoySimple← (Val1+Val2)/2 ;
Retourner MoySimple
FinFonction Moy2Val 144
Introduction aux fonctions
• Exemple 2 de description de fonction
Fonction Moy2Val est de type réel
/* Elle calcule la moyenne de deux nombres réels qu’elle retourne comme
résultat par l’intermédiaire du nom de la fonction*/
Paramètres en entrée :
Val1 est de type réel, correspondant à la 1re valeur à employer pour calculer la
moyenne ;
Val2 est de type réel, correspondant à la 2e valeur à employer pour calculer la
moyenne ;
Paramètres en sortie : néant ;
Paramètres en entrée-sortie : néant ;
// Cette fonction emploie 2 arguments lors de son appel
Variables locales : néant ;
Retourner (Val1+Val2)/2
FinFonction Moy2Val
145
Introduction aux fonctions
• Une fonction est utilisée par invocation de son nom : on
parle d’appel de fonction.

• Les paramètres et le nom de la fonction sont les seuls


moyens de communication entre la fonction et son
environnement d’appel : ils constituent l’interface de
communication de la fonction.

==>Avant tout appel de fonction, les paramètres


censés être utilisés par elle doivent être
correctement positionnés.
146
Introduction aux fonctions
• Allure d’un appel de fonction
resultat←nomFonction (liste des paramètres en entrée,
liste des paramètres en sortie et en entrée-sortie)
ou dans une expression algébrique combinant des opérateurs
nomFonction (liste des paramètres en entrée,
liste des paramètres en sortie et en entrée-sortie)

La valeur retournée par le nom de la fonction est soit affectée


à resultat, soit employée lors de l’évaluation de l’expression
dans laquelle elle se retrouve.
147
Introduction aux fonctions
• Lors d’un appel de la fonction il y a substitution des
paramètres formels (employés au moment de la
description de la fonction) avec les paramètres effectifs
ou arguments (paramètres employés au moment de
l’appel de la fonction) selon l’ordre des paramètres
employé au moment de la description de la fonction.

• Exemple :
moy←Moy2Val(m1, m2) ; // m1 et m2 étant des variables
// de type réel censées initialisées

148
Introduction aux fonctions
/* On suppose :
- la constante N initialisée ;
- les tableaux NoteX et NoteY bien initialisés ;
- le tableau TablMoy déclaré et devant être initialisé ;
- la variable i déclarée comme de type entier naturel ;
- la fonction Moy2Val déjà décrite.
*/
Pour i allant de 1 à N faire
/* appel de la fonction N fois avec la
paire de notes de chaque étudiant */
TablMoy(i)← Moy2Val (NoteX(i), NoteY(i));
FinPour

149
Introduction aux fonctions
• Remarques
- L’emploi de la fonction suppose le respect de l’interface de
communication avec la fonction.
- Le nom de la fonction supporte un résultat, ce qui a permis de le
placer à droite dans une instruction d’affectation ou dans une
expression algébrique, traitement interdit avec une procédure.
- L’affectation, au sein de la fonction, du résultat obtenu au nom de la
fonction est obligatoire et ne se réalise qu’à travers l’instruction
« Retourner expression » toujours présente dans une fonction.
- Le type de la fonction doit être compatible avec le type de la
variable censée recevoir le résultat retourné par le nom de la
fonction.
150
Introduction aux fonctions
Exercice no1
Ecrire une fonction calculant et retournant la somme des éléments d’un
tableau de N réels.

Exercice no2
Ecrire une fonction calculant et retournant la distance entre deux
points A(ax,ay) et B(bx,by) du plan réel.

Exercice no3
Ecrire une fonction qui élève un réel x à la puissance b correspondant à
un entier naturel supérieur à 0, le résultat étant mis à disposition à
travers le nom de la fonction.

151
Modes de passage des paramètres
• Définition
Le mode de passage d'un paramètre désigne la manière dont
une fonction/procédure récupère les valeurs
communiquées via son interface de communication.
Deux principaux modes de passage de paramètres existent :
- le mode de passage par valeur
- le mode de passage par adresse

• Cette précision est apportée en complétant la facette de


type.
Ex. : Val1 est de type réel, passé par valeur, correspondant à
la 1re valeur à employer pour calculer la moyenne ;
152
Modes de passage des paramètres
• Description du mode de passage par valeur
Passage par valeur de paramètre
ou
argument en entrée seulement

Au sein de la procédure ou de la fonction, c'est


avec une copie de la variable désignée qu'on travaille.

153
Modes de passage des paramètres
• Contexte d'emploi du mode de passage par valeur

Lorsqu'aucune modification de la valeur d’un


paramètre dans le contexte d'une procédure ou
d'une fonction ne doit être répercutée/visible en
dehors de ce contexte. On parle alors de
passage de paramètre par valeur.

154
Modes de passage des paramètres
Mode de passage de paramètre par valeur
Avantages Inconvénients

⚫ La valeur de la donnée originale ⚫ Lenteur due à la création


est préservée, même si par de la variable locale puis
mégarde au sein de la la recopie de la valeur du
procédure/fonction on venait à paramètre avant le
modifier le paramètre. démarrage de la
procédure/fonction.
⚫ Il convient pour passer des
paramètres de type peu ⚫ Plus grande
encombrant à protéger en écriture consommation d'espace
et les fonctions non récursives. mémoire.
155
Modes de passage des paramètres
• Description du mode de passage par adresse
Passage par adresse de paramètre
ou
argument en entrée-sortie

Au sein de la procédure ou de la fonction,


c'est avec la variable originale qu'on travaille.

156
Modes de passage des paramètres
• Contexte d'emploi du mode de passage par adresse

Lorsque toute modification de la valeur d’un


paramètre dans le contexte de la procédure ou
de la fonction doit au contraire être
répercutée/visible en dehors de ce contexte, on
parle alors de passage de paramètre par adresse
ou en entrée-sortie.

157
Modes de passage des paramètres
Mode de passage de paramètre par adresse
Avantages Inconvénients

⚫ Rapidité d'exécution. ⚫ Risque de


modification
⚫ Economie d'espace accidentelle et
mémoire. irréparable des
⚫ Plus adapté au données.
passage des ⚫ Difficultés à suivre la
paramètres de type trace des variables
encombrant et les durant l'exécution.
fonctions récursives.

158
Modes de passage des paramètres
La valeur La valeur
modifiée du modifiée du
paramètre ne vous paramètre vous
intéresse pas à la intéresse à la fin de
fin de l’exécution l’exécution de la
de la procédure ou procédure ou de la
de la fonction ? fonction ?
passage par valeur passage par adresse
Paramètre Paramètre
= =
copie de la variable variable originale
159
Modes de passage des paramètres
Les variables en entrée sont transmises par mode de passage
par Valeur
Les variables en entrée sortie, les variables en sortie sont
transmises par le mode de passage par Adresse

Exercice
Préciser les paramètres employés dans l’écriture de chacune des
procédures et fonctions décrites précédemment.

160
Fonction récursive (1/4)
• Définition
Une fonction récursive est une fonction qui, dans sa
description, fait appel à elle-même : on dit qu'elle
s'auto-appelle. Sa description ressemble à celle d'une
suite/série dans laquelle le résultat à une étape n est
obtenue à partir de celui à l'étape n-1, et ainsi de suite.
• Exemple : le factoriel n
n ! = n x (n-1) x (n-2) x . . . x 2 x 1 = n x (n-1) !

Application : 5 ! = 5x4! = 5x4x3! = 5x4x3x2! = 5x4x3x2x1!


= 5x4x3x2x1x0! = 5x4x3x2x1x1 car 0!=1

161
Fonction récursive (2/4)
• Plusieurs types de récursivité
- Récursivité simple : cas de la fonction qui s'auto-appelle
une seule fois dans sa description.

- Récursivité multiple : cas de la fonction s'auto-appelant


plusieurs fois dans sa description.

- Récursivité imbriquée : cas de la fonction s'auto-


appelant au niveau de sa liste de paramètres

- Récursivité mutuelle/croisée : cas de deux fonctions qui


s'appellent mutuellement.

162
Fonction récursive (3/4)
• Avantages de la récursivité
- Ecriture concise, adaptée au prototypage.

- Comparable à une écriture de suite/série.

• Inconvénients de la récursivité
- Est consommatrice d'espace mémoire centrale car nécessite
la présence au moins d'une pile pour la gestion des
contextes d'appel qui sont pour chaque instant l'ensemble
de couples (variable,valeur associée).
- Est grande consommatrice de temps machine du fait de la
gestion de la pile (empilement et dépilement), avec très
souvent une complexité exponentielle.
163
Fonction récursive (4/4)

• Une fonction récursive est décrite presque de la même


façon que les autres fonctions.
• Seulement parmi les paramètres qu'elle emploie, l'un au
moins doit avoir une évolution comparable à celle d'une
suite strictement décroissante d'entiers naturels,
conduisant à une situation où l'on ne fait plus appel à la
récursivité : c'est la condition d'arrêt ou de terminaison.
• L'exécution des appels récursifs doit conduire vers celles
des conditions de terminaison, ce qui assure la fin de
l'algorithme à tous les coups.

164
Exemple de fonction récursive (1/9)
• Version récursive de la fonction factorielle
Fonction Factoriel est de type entier
/* Elle calcule le factoriel d'un nombre entier naturel qu’elle retourne
comme résultat par l’intermédiaire du nom de la fonction.

C'est l'illustration d'une fonction utilisant la récursivité simple.


*/
Paramètres en entrée :
n est de type entier naturel, correspondant au nbre dont le factoriel est à calculer ;
Autres paramètres en sortie : néant ;
Paramètres en entrée-sortie : néant ;
Variables locales : néant
Si n = 0 alors
Retourner 1 /* condition d'arrêt de la récursivité */
Sinon
Retourner n x Factoriel(n-1)
FinSi
FinFonction Factoriel
165
Exemple de fonction récursive (2/9)
• Exemple de traces d'exécution de la fonction factorielle
Factoriel(5) = 5 x Factoriel(4)

Factoriel(4) = 4 x Factoriel(3)

Factoriel(3) = 3 x Factoriel(2)

Factoriel(2) = 2 x Factoriel(1)

Factoriel(1) = 1 x Factoriel(0)

Factoriel(0) = 1

Factoriel(1) = 1 x 1 = 1

Factoriel(2) = 2 x 1= 2

Factoriel(3) = 3 x 2 = 6

Factoriel(4) = 4 x 6 = 24

Factoriel(5) = 5 x 24 = 120 : valeur finale retournée par la fonction.

166
Exemple de fonction récursive (3/9)
• Version récursive de la fonction de Fibonacci
Fonction Fibonacci est de type entier
/* Elle calcule les nombres de Fibonacci qu’elle retourne
comme résultat par l’intermédiaire du nom de la fonction

Fibonacci(0) = 1 ;
Fibonacci(1) = 1 ;
Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2) si (n>1).

C'est une illustration de la récursivité multiple (ici on parle de


récursivité binaire).

*/
167
Exemple de fonction récursive (4/9)
Version récursive de la fonction de Fibonacci
Paramètres en entrée :
n est de type entier naturel, correspondant à l'ordre du nombre de la
valeur à calculer ;
Autres paramètres en sortie : néant ;
Paramètres en entrée-sortie : néant ;
Variables locales : néant
Si n <2 alors
Retourner 1 /* condition d'arrêt de la récursivité */
Sinon
Retourner Fibonacci(n-1) + Fibonacci(n-2)
FinSi
FinFonction Fibonacci
168
Exemple de fonction récursive (5/9)
• Exemple de traces d'exécution de la fonction de Fibonacci
Fibonacci(4) = Fibonacci(3) + Fibonacci(2)

Fibonacci(3) = Fibonacci(2) + Fibonacci(1) Calcul de Fibonacci(2)


Fibonacci(1) = 1

Fibonacci(2) = Fibonacci(1) + Fibonacci(0)

Fibonacci(1) =1

Fibonacci(0) =1
Fibonacci(2) = 1 + 1 = 2

Fibonacci(3) = 2 + 1 = 3

Fibonacci(4) = 3 + 2
= 5 : valeur finale retournée par la fonction

169
Exemple de fonction récursive (6/9)
• Version récursive de la fonction d'Ackermann
Fonction Ackermann est de type entier
/*
Elle calcule le nombre d'Ackermann qu’elle retourne
comme résultat par l’intermédiaire du nom de la fonction

Akermann(m, n) = n + 1 si (m = 0) ;
= Akermann(m-1, 1) si (m ≠ 0) et (n = 0) ;
= Akermann(m-1, Akermann(m, n- 1)) si (m ≠ 0) et (n ≠ 0) ;

C'est une illustration de la récursivité multiple (ici on parle de récursivité


binaire) et de la récursivité imbriquée (dans le 3e cas la récursion, l'auto-
appel est fait dans la liste des paramètres.

*/
170
Exemple de fonction récursive (7/9)
• Version récursive de la fonction d'Ackermann
Paramètres en entrée :
m est de type entier naturel, correspondant au 1er élément de calcul du résultat ;
n est de type entier naturel, correspondant au 2e élément de calcul du résultat ;
Autres paramètres en sortie : néant ;
Paramètres en entrée-sortie : néant ;
Variables locales : néant
Si m = 0 alors
Retourner n+1 /* condition d'arrêt de la récursivité */
Sinon
Si n=0 alors
Retourner Ackermann(m-1, 1)
Sinon
Retourner Ackermann(m-1, Ackermann(m, n-1))
FinSi
FinSi
FinFonction Ackermann
171
Exemple de fonction récursive (8/9)
• Exercice 1
Retrouver la trace d'exécution de Ackermann(4, 3).

172
Exemple de fonction récursive (9/9)

• Exercice 2
Trouver la version itérative de la fonction Factoriel(n).
• Exercice 3
Trouver la version itérative de la fonction Fibonacci(n).
• Exercice 4
Trouver la version itérative de la fonction de Ackermann(M,
n).

173
Chapitre 6 : Les Enregistrements

174
Enregistrements

On appelle enregistrement une structure


de données correspondant à un
regroupement de plusieurs éléments de
différents types qu’on appelle champs
ou rubriques.

175
Enregistrements
Exemple 1 : l’adresse d’une entreprise

l’adresse d’une entreprise commerciale est


beaucoup employée dans les correspondances
envoyées par l’entreprise. Elle est constituée par
le nom de l’entreprise, le numéro de l’entrée dans
la rue, le nom de la rue, le numéro de la boîte
postale, le code postal de la ville, le nom de la
ville et le nom du pays.

176
Enregistrements
Exemple 1 :
- le nom de l’entreprise chaîne de 30 caractères
- le numéro de l’entrée dans la rue Entier naturel
- le nom de la rue chaîne de 40 caractères Diffé-
- le numéro de la boîte postale rents
Entier naturel
types
- le code postal de la ville Entier naturel
- le nom de la ville chaîne de 35 caractères
- le nom du pays chaîne de 20 caractères
177
Enregistrements
Exemple 2 : la date
la date est une information que nous employons
régulièrement. Elle est constituée d’un nom de
jour, le numéro de jour (quantième), du nom du
mois, le numéro de l’année.

178
Enregistrements
Exemple 2 : la date

- le nom du jour chaîne de 8 caractères max.


- le numéro du jour dans le mois
Entier naturel compris
entre 1 et 31
- le nom du mois chaîne de 9 caractères max.

- le numéro de l’année Entier naturel

179
Enregistrements
Déclaration du type enregistrement

NomTypeEnregistrement = Type Enregistrement regroupant

Liste déclarative
de tous les champs,
telle que donnée dans les
paragraphes de déclaration
des données en entrée et sortie
FinEnregistrement

180
Enregistrements
Exemples de déclaration du type enregistrement

DATE = Type Enregistrement regroupant


nomJour est de type chaîne de caractères, correspondant au nom du jour ;

numeroJour est de type entier, correspondant au numéro du jour ;

nomMois est de type chaîne de caractères, correspondant au nom du mois ;

numeroAnnee est de type entier, correspondant au numéro de l’année

FinEnregistrement

181
Enregistrements
ADRESSESOC = Type Enregistrement regroupant
nomSoc est de type chaîne de caractères, correspondant
au nom de la société ;
numEntree est de type entier, correspondant au numéro de
l’entrée sur la rue ;
nomRue est de type chaîne de caractères, correspondant au
nom de la rue ;
bp est de type entier, correspondant au numéro de la
boîte postale ;
cp est de type entier, correspondant au code postal ;
nomVille est de type chaîne de caractères, correspondant
au nom de la ville ;
nomPays est de type chaîne de caractères, correspondant
au nom du pays
FinEnregistrement
182
Enregistrements
Déclaration des variables de type enregistrement

Nom_variable est de type NomTypeEnregistrement,


correspondant à ...
Exemples :

depart est de type DATE, correspondant à la date de départ en congés ;

adressClient est de type ADRESSESOC, correspondant à l’adresse


de la société en cours de traitement

183
Enregistrements
Référence aux champs des variables de type enregistrement

NomVariable●NomChamp

Exemples :

.
depart nomJour pour désigner le nom du jour de la variable
depart

.
adressClient bp pour désigner la boite postale de la variable
adressClient
184
Enregistrements

Possibilités de déclaration de tableaux comme champs dans


un type enregistrement

Possibilités d’utilisation de tableaux d’enregistrements

Possibilités d’utilisation de structures complexes (liste, files,


fichiers, etc.) dont les éléments sont de type enregistrement

185
Enregistrements
Exercice : On veut gérer les étudiants inscrits au
cours d’algorithmique et structures de données
statiques.
1) Lister les informations associées à un étudiant.
2) Décrire la structure de données qu’il faudrait
employer.
3) Ecrire un algorithme qui initialise les données
concernant un étudiant.
4) Ecrire un algorithme qui initialise les données des
N étudiants inscrits au cours d’algorithmique et
structures de données statiques.
186
Enregistrements
1) Nom Chaîne de 30 caractères
2) Prénom Chaîne de 50 caractères
3) Genre Caractère
4) Année de naissance Entier naturel
5) Lieu de naissance Chaîne de 30 caractères
6) Numéro de téléphone Chaîne de 20 caractères
7) Email Chaîne de 50 caractères
8) Filière Chaîne de 4 caractères
9) Niveau d’étude Entier naturel
10) Numéro secteur d’habitation Entier naturel
11) Ville d’habitation Chaîne de 20 caractères
12) Boîte postale Chaîne de 10 caractères
13) Statut travail caractère
14) Nationalité Chaîne de 15 caractères
15) Pays de résidence Chaîne de 30 caractères
187
Enregistrements

ADRESSE = Type Enregistrement regroupant


NumTel est de type chaîne de 20 caractères, correspondant à ...
Email est de type chaîne de 50 caractères, correspondant à ...
NumSecteur est de type entier naturel, correspondant à ...
Ville est de type chaîne de 20 caractères, correspondant à ...
Bp est de type chaîne de 10 caractères, correspondant à ...
Pays est de type chaîne de 30 caractères, correspondant à ...

FinEnregistrement

188
Enregistrements
ETUDIANT = Type Enregistrement regroupant
Nom est de type chaîne de 30 caractères, correspondant à ...
Prenom est de type chaîne de 50 caractères, correspondant à ...
Genre est de type caractère, correspondant à ...
AnNais est de type entier, correspondant à ...
LieuNais est de type chaîne de 30 caractères, correspondant à ...
Filiere est de type chaîne de 4 caractères, correspondant à ...
Niveau est de type entier naturel, correspondant à ...
StatuTravail est de type caractère, correspondant à ...
Nationalite est de type chaîne de 15 caractères, correspondant à ...
Adr est de type ADRESSE, correspondant à ...
FinEnregistrement

189
Enregistrements
Exemples de déclarations de variables
toto est de type ADRESSE, correspondant à ...
bonEtudiant est de type ETUDIANT, correspondant à ...
dernier est de type ETUDIANT, correspondant à ...

Exemples d’initialisation des champs des variables

[Link] "70726931" ;
[Link] "mdandjinou@[Link]" ;
[Link] 28

190
Enregistrements
Exemples de déclarations de variables
toto est de type ADRESSE, correspondant à …
bonEtudiant est de type ETUDIANT, correspondant à …
dernier est de type ETUDIANT, correspondant à …

Exemples d’initialisation des champs des variables

[Link] "OUEDRAOGO" ;
[Link] "WENDPANGA" ;
[Link] 'H' ;
[Link] "20202020" ;
[Link] "Bobo-Dioulasso"

191
Enregistrements
Exemples d’initialisation des champs des variables

[Link] "ZIRCONGO" ;
[Link] "Sannom" ;
[Link] 'H’ ;
[Link] "50505050" ;
[Link] "Ouagadougou"
T : tableau [1..6] ETUDIANT
T(1).Nom "SARE" ;
T(1).Prenom "Oussou" ;
T(2).Nom "ZAN" ;
T(2).Prenom "Moussa"

192
Enregistrements
Exerice 1: Gestion d'un calendrier de rendez-vous
Créez un enregistrement RendezVous qui contient les champs suivants :
• titre (chaîne de caractères),
• date (chaîne de caractères),
• heure (chaîne de caractères),
• lieu (chaîne de caractères).
Créez une fonction afficherRendezVous qui prend un enregistrement RendezVous et
affiche les détails du rendez-vous.

Exercice 2 : Suivi des dépenses d'un ménage


Créez un enregistrement Depense qui contient les champs suivants :
• description (chaîne de caractères),
• montant (flottant, montant de la dépense),
• date (chaîne de caractères, date de la dépense).
Créez une fonction calculerTotal qui prend un tableau de dépenses et retourne le montant total
des dépenses. 193
Chapitre 7 : Les algorithmes de tri

194
Chapitre 8 : Les chaînes de caractères

195
Les chaînes de caractères sont des séquences de symboles (lettres, chiffres,
symboles, etc.) traitées comme des unités de données en algorithmique.
Elles sont très courantes dans le développement logiciel et l'analyse de
texte. Voici un aperçu de la manière dont elles sont utilisées et manipulées
en algorithmique, ainsi que quelques opérations courantes associées.

196
Définition d'une chaîne de caractères

Une chaîne de caractères est une séquence ordonnée de caractères,


généralement délimitée par des guillemets (simples ou doubles) dans de
nombreux langages de programmation.
Exemple en pseudocode :
chaine = "Bonjour"

Dans cet exemple, la chaîne de caractères est "Bonjour", composée de 7


caractères.

197
Opérations sur les chaînes de caractères

Plusieurs opérations peuvent être effectuées sur les chaînes de caractères.


En voici quelques-unes des plus courantes :
Longueur de la chaîne : Calculer la longueur (le nombre de caractères) d'une
chaîne.
•Opération : Longueur(chaine)
•Exemple : Longueur("Bonjour") → 7
Accès à un caractère spécifique : Accéder à un caractère spécifique dans une
chaîne en utilisant son index (généralement, les index commencent à 0).
•Exemple : chaine[2] → "n" (pour la chaîne "Bonjour")
Concaténation de chaînes : Combiner deux ou plusieurs chaînes de caractères.
•Opération : chaine1 + chaine2
•Exemple : "Bonjour" + " " + "tout le monde" → "Bonjour tout le monde"

198
Opérations sur les chaînes de caractères

Sub-chaînes : Extraire une portion (ou sous-chaîne) d'une chaîne.


•Exemple : SousChaine("Bonjour", 0, 4) → "Bon" (extraire les caractères de l'index 0
à 4)
Recherche de caractères ou sous-chaînes : Trouver un caractère ou une sous-chaîne
dans une chaîne.
•Exemple : Chercher("o", "Bonjour") → 1 (l'index de la première occurrence de "o")
Remplacer des caractères ou sous-chaînes : Remplacer une partie de la chaîne par
une autre.
•Exemple : Remplacer("Bonjour", "jour", "soir") → "Bonsoir"
Conversion en majuscules/minuscules : Modifier la casse des caractères.
•Exemple : Majuscule("bonjour") → "BONJOUR"
•Exemple : Minuscule("BONJOUR") → "bonjour"
Supprimer les espaces : Supprimer les espaces en début et fin de chaîne.
•Exemple : Trim(" Bonjour ") → "Bonjour"
199
Opérations sur les chaînes de caractères

Diviser une chaîne : Séparer une chaîne en plusieurs sous-chaînes


basées sur un séparateur donné.
•Exemple : Diviser("Bonjour,tout,le,monde", ",") → ["Bonjour",
"tout", "le", "monde"]

200
Exercice 1 : Vérifier si une chaîne est un palindrome
Écrire un algorithme qui vérifie si une chaîne de caractères est un palindrome
(se lit de la même manière de gauche à droite et de droite à gauche).

Exercice 2 : Compter les occurrences d'un caractère


Écrire un algorithme qui compte le nombre de fois qu'un caractère donné
apparaît dans une chaîne.

201
Chapitre 9 : Notion de pointeurs, initiation
aux listes et aux arbres binaires

202
Notion de pointeurs
Un pointeur est une variable qui contient l'adresse mémoire d'une autre
variable, plutôt que sa valeur. Les pointeurs sont utilisés pour accéder
indirectement à des données stockées ailleurs en mémoire. Ils sont
particulièrement utiles pour manipuler des structures de données complexes
comme les listes chaînées, les arbres binaires, etc.

203
Pourquoi utiliser des pointeurs ?

• Gestion dynamique de la mémoire : Les pointeurs permettent de créer


des structures de données dont la taille peut être modifiée à l'exécution,
contrairement aux tableaux statiques.
• Référence à des objets complexes : En utilisant des pointeurs, on peut
faire référence à des objets complexes sans avoir à dupliquer les données,
économisant ainsi de la mémoire.

204
Exemple simple d'utilisation d'un pointeur (en pseudocode) :

variable x = 10
pointeur p vers un entier

p = adresse_de(x) // Le pointeur p contient l'adresse de x

afficher valeur(p) // Affiche 10, car p pointe vers x

205
Listes chaînées (Linked Lists)

Une liste chaînée est une structure de données linéaire dans laquelle
chaque élément (appelé nœud) contient une donnée et un pointeur
vers l'élément suivant dans la liste. Contrairement aux tableaux, une
liste chaînée permet une gestion dynamique de la mémoire, ce qui
permet de modifier la taille de la liste à tout moment.

Structure d'une liste chaînée :


• Nœud : Contient deux parties : la donnée (ou valeur) et un
pointeur vers le nœud suivant.
• Tête (Head) : Le premier nœud de la liste. Si la liste est vide, la
tête est nulle (NULL).
206
Listes chaînées (Linked Lists)
structure Node:
donnée
suivant -> pointeur vers le prochain nœud

fonction parcourir_liste(tête):
courant = tête
tant que courant != NULL:
afficher [Link]ée
courant = [Link]
Exemple de liste chaînée :
[10] -> [20] -> [30] -> NULL

• Le premier nœud contient la valeur 10 et un pointeur vers le nœud suivant.


• Le dernier nœud pointe vers NULL, ce qui indique la fin de la207liste.
Arbres binaires (Binary Trees)
Un arbre binaire est une structure de données arborescente dans laquelle
chaque nœud peut avoir aux plus deux enfants : un enfant gauche et un
enfant droit. Chaque nœud de l'arbre contient une donnée et des pointeurs
vers ses enfants.
Les arbres binaires sont utilisés dans de nombreux algorithmes,
notamment pour la recherche, le tri et la représentation hiérarchique des
données.

Structure d'un arbre binaire :


• Nœud : Chaque nœud contient une donnée et deux pointeurs : un vers
l'enfant gauche et un vers l'enfant droit.
• Racine (Root) : Le premier nœud de l'arbre.
• Feuilles (Leaves) : Les nœuds qui n'ont pas d'enfants.
208
Arbres binaires (Binary Trees)

Exemple d'algorithme de parcours en ordre d'un arbre binaire (en pseudocode) :


Le parcours en ordre consiste à visiter récursivement l'enfant gauche, puis le nœud
actuel, puis l'enfant droit.

fonction parcours_in_order(racine):
si racine != NULL:
parcours_in_order([Link])
afficher [Link]ée
parcours_in_order([Link])

209
Arbres binaires (Binary Trees)

Exemple d'arbre binaire

1
/\
2 3
/\
4 5

• La racine est 1.
• L'arbre contient les sous-arbres gauche (avec la racine 2 et
ses enfants 4 et 5) et droit (avec la racine 3).

210
211

Vous aimerez peut-être aussi