0% ont trouvé ce document utile (0 vote)
8 vues35 pages

Introduction à l'Algorithmique et Programmation

Le document présente une initiation à l'algorithmique et à la programmation, abordant des concepts fondamentaux tels que l'écriture d'algorithmes, les variables, les structures de contrôle, et l'analyse. Il souligne l'importance de comprendre la conception logicielle pour les ingénieurs, ainsi que les étapes de développement d'un logiciel, de la définition des besoins à la validation finale. Ce cours utilise principalement la notation textuelle pour représenter les algorithmes, en mettant l'accent sur la clarté et la compréhension des instructions.

Transféré par

ayoubmaloiani
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)
8 vues35 pages

Introduction à l'Algorithmique et Programmation

Le document présente une initiation à l'algorithmique et à la programmation, abordant des concepts fondamentaux tels que l'écriture d'algorithmes, les variables, les structures de contrôle, et l'analyse. Il souligne l'importance de comprendre la conception logicielle pour les ingénieurs, ainsi que les étapes de développement d'un logiciel, de la définition des besoins à la validation finale. Ce cours utilise principalement la notation textuelle pour représenter les algorithmes, en mettant l'accent sur la clarté et la compréhension des instructions.

Transféré par

ayoubmaloiani
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

Algorithmique et Programmation

Courte initiation à quelques


concepts de base

Paul Gaborit

2024/2025
Sommaire

I Introduction 4

1 Introduction 4
1.1 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

II Algorithmique 7

2 Écriture des algorithmes 8


2.1 Les algorithmes dans la vie courante . . . . . . . . . . . . . . . 8
2.2 Ordinogramme : une notation peu pratique . . . . . . . . . . . 9
2.3 Notation textuelle des algorithmes . . . . . . . . . . . . . . . . 10
2.4 Règles d’écriture (pour ce cours) . . . . . . . . . . . . . . . . . 11

3 Les variables et les paramètres 12


3.1 Description des variables et des paramètres . . . . . . . . . . . 12
3.2 Affectation d’une valeur à une variable . . . . . . . . . . . . . . 13
3.3 Les différents types de données . . . . . . . . . . . . . . . . . . 14

4 Structures de contrôles 16
4.1 Les conditions logiques . . . . . . . . . . . . . . . . . . . . . . . 17
4.2 Les structures de choix . . . . . . . . . . . . . . . . . . . . . . . 18
4.3 Les structures de répétition . . . . . . . . . . . . . . . . . . . . 23

III Analyse 29

5 Idée 29

6 Analyse descendante 29
6.1 Diviser pour mieux régner . . . . . . . . . . . . . . . . . . . . . 29
6.2 Les fonctions : des algorithmes qui retournent un résultat . . . 32
6.3 Recette en utilisant une fonction . . . . . . . . . . . . . . . . . 33

7 Schéma bulle 34

2
Note : le document actuel ne constitue pas l’intégralité du cours « Algorith-
mique et Programmation ». Ce n’est que l’introduction générale et l’introduction
à la partie algorithmique. Il doit être complété par les autres supports qui
l’accompagnent.

Il existe sous deux formes différentes : une série de slides pour présentation
orale et le présent document qui reprend les slides agrémentés de commentaires
et d’explications.

3
Première partie

Introduction

1 Introduction Introduction
Objectifs
Contexte

1.1 Objectifs
Objectifs du cours 4/42

Initiation à l’algorithmique :
conception et écriture d’algorithmes
variables et structures de données
structures de contrôle algorithmique
procédures, fonctions, méthodes, paramètres
analyse descendante
Initiation à la programmation
initiation à l’utilisation de la ligne de commande
un langage de script : le langage Python
édition, exécution et correction de programmes/scripts
manipulation des structures de données, de classes
conception de modules,
utilisation de bibliothèques de fonctions externes
calcul numérique, précision, stabilité

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

Note : ces objectifs sont ceux de l’ensemble du cours d’algorithmique et de


programmation.

Des nos jours, tout le monde utilise des ordinateurs et les ingénieurs n’y
échappent pas. Lors de leur formation et dans leur métier, ils sont donc
amenés à pratiquer de nombreux logiciels. Mais au-delà de son utilisation, un
ingénieur se doit aussi de savoir comment on conçoit un programme destiné à
un ordinateur. Le but de ce cours est de vous donner un premier aperçu du
monde de la conception logicielle.

4
Objectifs
Introduction
Contexte

1.2 Contexte
Mise en contexte 5b/42

Besoins Déploiement

Spécifications Recette
Utilisateur
Développeur
Analyse Tests d’intégration

Codage Tests unitaires

Activités de Activités de
création/production Acteurs test/validation

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

Lorsqu’on conçoit un logiciel, c’est toujours pour répondre à un besoin exprimé


par un utilisateur. Il y a donc une série d’activités de création et de production
qui s’enchaînent logiquement :
— Les utilisateurs expriment leurs besoins.
— Ils les traduisent en spécifications du produit attendu.
— Puis les développeurs prennent le relais et analysent ces spécifications.
— Et ils produisent un code destiné à la machine.
Pour décider si le logiciel produit est adapté, on place une activité de test et
de validation au regard de chacune des activités de création et de production :
— Les développeurs testent une à une chaque partie de leur code (les tests
unitaires).
— Puis ils testent l’ensemble du produit pour vérifier que tout s’intègre
bien.
— Le produit peut ensuite être validé par les utilisateurs (la recette).
— Et il est finalement déployé pour être utiliser.
C’est cela que signifie la représentation traditionnelle en V de ces étapes.

5
Objectifs
Introduction
Contexte

Mise en contexte 5c/42

Besoins Déploiement

Spécifications Recette
Utilisateur
Développeur
Analyse Tests d’intégration

Codage Tests unitaires

Activités de Activités de
création/production Acteurs test/validation

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

Attention : l’enchaînement logique de ces activités ne signifie pas qu’elles


s’enchaînent chronologiquement. En fait, chaque niveau de validation peut
remettre en cause tout ce qui a été fait dans les étapes précédentes. Ce n’est que
lorsque le déploiement est terminé que l’on sait si le besoin a été correctement
défini. C’est pour cela qu’il faut prévoir de nombreux aller-retours entre toutes
ces activités.

Dans ce cours, nous verrons comment réaliser une analyse (la création d’algo-
rithmes est le résultat d’une analyse) et comment produire le code correspondant
(en traduisant ces algorithmes dans un langage de programmation). Lors des
exercices pratiques vous réaliserez et testerez vos propres logiciels pour couvrir
l’ensemble des activités du développeur.

6
Deuxième partie

Algorithmique
Écriture des algorithmes
Les variables et les paramètres
Structures de contrôles

Définition d’un algorithme 7/42

« Un algorithme est un processus systématique et non ambigu de


résolution d’un problème permettant de présenter les étapes vers le
résultat à une entité physique (un être humain) ou virtuelle (un
calculateur). En d’autres termes, un algorithme est un énoncé d’une suite
d’opérations permettant de donner la réponse à un problème. »

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

L’algorithmique (la science de la conception ou l’art de créer des algorithmes)


remonte à l’antiquité. Son nom provient d’un mathématicien perse nommé Al
Khuwarizmi.

En mathématique, l’étude des algorithmes est un point de départ des domaines


s’intéressant aux notions de logique, de calculabilité, de démonstration formelle
avec des mathématiciens et logiciens tels que von Neumann, Gödel, Turing,
Church...

C’est sur la base de leurs travaux qu’ont été créés les calculateurs ou ordinateurs
modernes.

7
2 Écriture des algorithmes
2.1 Les algorithmes dans la vie courante
Les algorithmes dans la vie courante
Voici une recette deLescuisine
variables et les: paramètres
Écriture des algorithmes
Ordinogramme : une notation peu pratique
Notation textuelle des algorithmes
Structures de contrôles
Règles d’écriture (pour ce cours)

Un premier algorithme 9/42

Pommes de terre en robe des champs


Ingrédients (pour 2 personnes) :
4 pommes de terre de taille moyenne
2 cuillères à soupe de crème fraîche épaisse
Préparation :
1 Préchauffer le four à 200/250°C.
2 Laver les pommes de terre, les mettre sur la plaque du four sans les peler.
3 Les faire cuire pendant 25 à 30 min environ, vérifier la cuisson en plantant la
lame d’un couteau à l’intérieur.
4 Lorsque les pommes de terre sont cuites, les mettre sur des assiettes, les couper
en 4 et mettre deux cuillères à café de crème dessus.

Les algorithmes dans la vie courante


Écriture des algorithmes
Algorithmique et programmation Ordinogramme : une notation peu pratique Paul Gaborit
2024/2025 Les variables et les paramètres Centre Génie Industriel, IMT Mines Albi
Notation textuelle des algorithmes
Structures de contrôles
Et en voici une version simplifiée :
Règles d’écriture (pour ce cours)

Un premier algorithme : version simplifiée 10/42

Pommes de terre en robe des champs


Ingrédients (pour 2 personnes) :
4 pommes de terre
2 cuillères à soupe de crème fraîche
Préparation :
1 Préchauffer le four à 200/250°C.
2 Laver les pommes de terre.
3 Les mettre sur la plaque du four.
4 Faire cuire pendant 25 à 30 min environ.
5 Couper les pommes de terre en 4 et y placer de la crème.

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

Une recette de cuisine est une sorte d’algorithme. Elle en présente tous les
éléments :
— un titre décrivant l’objectif de la recette,
— la liste des ingrédients qui donne la liste exhaustive de ce qui sera
transformé,
— une suite ordonnée d’opérations à réaliser.

8
Faisons déjà une première constatation : pour que la recette soit réalisable, les
opérations décrites doivent être à la portée du cuisinier lecteur. Si, dans une
recette, il rencontre les termes « déglacer » ou « écaler » sans en connaître le
sens, il lui faudra trouver une recette plus détaillée.

Les instructions données doivent donc être compréhensibles pour être exé-
cutables directement par celui à qui est destiné l’algorithme ou alors ces
instructions doivent être décrites par ailleurs (par exemple sous la forme d’un
algorithme spécifique plus détaillé).

Par la suite, nous utiliserons la version simplifiée de cette recette.

2.2 Ordinogramme : une notation peu pratique


Il existe différentes manières de présenter les algorithmes.

L’ordinogramme ci-dessous est un exemple d’une présentation graphique. Il


semble facilement compréhensible par le commun des mortels. Il est donc
très utilisé pour des modes d’emploi ou, plus généralement, pour décrire des
procédures simples. Son emploi en algorithmique utilise différentes formes de
case pour symboliser différents types d’instructions (actions, tests, intrants,
Les algorithmes dans la vie courante
etc.). Écriture des algorithmes
Les variables et les paramètres
Ordinogramme : une notation peu pratique
Notation textuelle des algorithmes
Structures de contrôles
Règles d’écriture (pour ce cours)

Un premier algorithme : version ordinogramme 11/42

Pommes de terre en robe des champs (2 personnes)

Préchauffer le four à 200/250°C.

4 pommes de terre Laver 4 pommes de terre.

Les mettre sur la plaque du four.

Faire cuire pendant


25 à 30 min environ.

2 cuillères à soupe Couper les pommes de terre


de crème fraîche en 4 et y placer de la crème.

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

Il présente plusieurs défauts tels que la place nécessaire au dessin ou la difficulté


à découper l’algorithme sur plusieurs pages s’il est trop grand... Mais son plus
gros défaut est de ne pas imposer de structure : sur de grands algorithmes, on
se retrouve rapidement face un tas de flèches et de cases sans être capable de
distinguer la structure précises de l’organisation des opérations.

9
2.3 Notation textuelle des algorithmes

Attention !
Par la suite, nous n’utiliserons plus que la représentation textuelle des
algorithmes (plus d’ordinogramme sauf pour permettre une comparaison
avec la représentation textuelle).
Dans tous vos rendus (exercices, devoirs et projets), nous attendons que
vous utilisiez la représentation textuelle des algorithmes en respectant le
mieux possible le formalisme présenté tout au long de nos supports !
Les algorithmes dans la vie courante
Écriture des algorithmes
Ordinogramme : une notation peu pratique
Les variables et les paramètres
Notation textuelle des algorithmes
Structures de contrôles
Règles d’écriture (pour ce cours)

Un premier algorithme : version textuelle 12/42

Pommes de terre en robe des champs


Ingrédients (pour 2 personnes) : 4 pommes de terre,
2 cuillères à soupe de crème fraîche.
Début
– ∴ – préparation
Préchauffer le four à 200/250°C.
Laver les pommes de terre.
– ∴ – cuisson
Les mettre sur la plaque du four.
Faire cuire pendant 25 à 30 min environ.
– ∴ – service
Couper les pommes de terre en 4 et y placer de la crème.
Fin

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

La représentation ci-dessus de notre recette est une représentation algorithmique


presque purement textuelle.

On y voit un titre qui débute toujours l’algorithme.

Ce titre est suivi par une introduction décrivant les conditions nécessaires à la
réalisation de l’algorithme ainsi que les objets qu’il manipule. Nous verrons
plus tard qu’on y place aussi la déclaration des paramètres et des variables
utilisés par l’algorithme.

Puis vient le mot clé Début (c’est un mot clé car il est en gras) relié par un
filet vertical au mot clé Fin. C’est notre première structure de contrôle. Elle est
toujours présente dans chaque algorithme. Cette structure Début-Fin contient
toutes les instructions de l’algorithme.

Un algorithme à toujours un début et une fin. D’ailleurs, si on ne peut pas


prouver qu’on aboutit à tous les coups (et en un temps fini) à la fin de
nos instructions alors cette suite d’instructions ne devrait pas s’appeler un
algorithme !

10
Entre ces deux mots clé apparaissent la suite des instructions. Elles sont ordon-
nées et indentées au même niveau (l’indentation c’est l’espace qui détermine
l’alignement vertical du début d’une ligne).

Les commentaires (ici introduits par le symbole – ∴ – et rédigés en italique et


en rouge) ne constituent pas des instructions à proprement parler mais ils sont
parfois indispensables et souvent utiles à la compréhension de l’algorithme. On
peut ajouter des commentaires à n’importeLesquel endroit dans un algorithme.
algorithmes dans la vie courante
Écriture des algorithmes
Ordinogramme : une notation peu pratique
Les variables et les paramètres
Notation textuelle des algorithmes
Structures de contrôles
Règles d’écriture (pour ce cours)
2.4 Règles d’écriture (pour ce cours) 13/42
Quelques règles d’écriture

Les règles à respecter pour rédiger un algorithme


Un titre significatif.
Une introduction précisant les conditions d’usage de l’algorithme et
décrivant les objets qu’il manipule.
Un début et une fin.
Les mots clé doivent être mis en évidence (gras ou souligné).
Les structures doivent apparaître de manière claire (filets verticaux
ou indentation parfaite).
Les commentaires sont différents des instructions (couleur ou police
différentes ou symbole de début de commentaire).

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

Pour rédiger un algorithme, et dans le cadre de ce cours, il faut dans la mesure


du possible respecter les règles d’écriture proposées dans tous nos supports.

— Lorsqu’on rédige via un moyen informatique, on peut à la rigueur se


passer des filets verticaux car l’indentation peut-être parfaite mais il faut
absolument les conserver dans un document manuscrit.
— À l’inverse, dans un document manuscrit, on admettra que les mots clé soit
juste soulignés puisqu’on peut difficilement écrire du gras (les documents
non manuscrits bien composés n’utilisent jamais le soulignement).
— Le symbole de commentaire utilisé ici est purement conventionnel. Vous
pouvez en choisir un autre dans la mesure où vous utilisez toujours le
même tout au long d’un document et s’il n’introduit pas d’ambiguïté
(avec des formules mathématiques notamment).

Remarque : de manière plus générale et au-delà de ce cours, il n’y a pas


de standard pour la notation algorithmique. Ce qui compte c’est la clarté,
la cohérence et l’absence d’ambiguïté. Choisissez donc une notation claire et
respectez la tout au long de vos documents.

11
3 Les variables et les paramètres
Écriture des algorithmes
Les variables et les paramètres
Description des variables et des paramètres
Affectation d’une valeur à une variable
Structures de contrôles Les différents types de données

3.1 Description des variables et des paramètres


Pourquoi des variables ? 15/42

Pommes de terre en robe des champs(nbConvives)


Paramètre : nbConvives (entier) nombre de personnes.
Variables : nbPdT (entier) nombre de pommes de terre.
nbCuilCreme (entier) nombre de cuillères à soupe de crème.
Début
nbPdT ← 2 × nbConvives
nbCuilCreme ← nbConvives
– ∴ – préparation
Préchauffer le four à 200/250°C.
Laver nbPdT pommes de terre.
– ∴ – cuisson
Placer les nbPdT pommes de terre sur la plaque du four.
Faire cuire pendant 25 à 30 min environ.
– ∴ – service
Couper les nbPdT pommes de terre en quatre.
Y répartir nbCuilCreme cuillères à soupe de crème.
Fin

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

Nous venons de transformer notre algorithme de recette pour le rendre plus


générique : il permet maintenant de réaliser cette recette pour un nombre de
convives paramétrable. Pour cela nous avons dû introduire des paramètres et
des variables. Voyons maintenant ce qui a changé dans notre écriture.

Le titre est complété par une liste de noms de paramètres placée entre paren-
thèses. En fait, ici cette liste ne contient qu’un seul paramètre : nbConvives.
Les paramètres doivent être décrits dans l’introduction.

Dans l’introduction, outre la description du paramètre, on voit apparaître


la description de deux variables : nbPdT et nbCuilCreme. L’utilisation de
variables suppose que l’entité qui exécute l’algorithme est capable de mémoriser
certaines choses. Ici, nous supposons que le cuisinier sait mémoriser des nombres.
Une variable associe un nom à une valeur qui doit être mémorisée.

Pour chaque variable et paramètre, dans l’entête de l’algorithme, on doit


préciser trois choses :
1. son nom,
2. son type (sa nature),
3. sa sémantique (son sens, son rôle).
Notez qu’on doit choisir intelligemment le nom des paramètres et des variables :
il faut trouver un juste compromis entre lisibilité et compréhension. Une variable
nommée x n’améliore pas la lisibilité puisqu’elle n’indique en rien son rôle.
À l’inverse, une variable nommée nombreConvivesMangeantPommesDeTerre
indique très bien sa sémantique mais ne facilitera ni la rédaction ni la lecture.

Toutes les instructions ont été modifiées pour utiliser maintenant les valeurs
mémorisées par notre paramètre et nos deux variables.

12
Lors de l’exécution de l’algorithme, il faudra fournir une valeur à chaque
paramètre et c’est cette valeur qui sera utilisé dans les instructions. De même,
chaque fois qu’apparaît une variable dans une instruction, il faudra lui substituer
sa valeur au moment de l’exécution de cette instruction (c’est pour cela qu’on
appelle cela une variable : sa valeur peut changer pendant le déroulement de
l’algorithme).

Le seul endroit où une variable ne doit pas être substituée par sa valeur
c’est lorsqu’elle apparaît à gauche d’une flèche (←) comme dans les deux
premières instructions. C’est ce qu’on appelle une opération d’affectation.
Voyons maintenant ce Écriture
que descela signifie.
algorithmes Description des variables et des paramètres
Les variables et les paramètres Affectation d’une valeur à une variable
Structures de contrôles Les différents types de données

3.2 Affectation d’une


Affectation d’une valeur
valeur à une variable
à une variable 16/42

L’opération d’affectation est le seul moyen de modifier la valeur que


contient une variable.
Elle se note de la manière suivante :
var ← ...calcul...
Ce qui signifie : « la variable var prend pour valeur ... le résultat du
calcul ... ». Après cette opération, la valeur de la variable est
modifiée.
L’affectation a lieu après le calcul. Ainsi, l’ancienne valeur de la
variable peut intervenir dans le calcul lui-même.
Exemple de l’incrémentation de la variable nb :
nb ← nb + 1

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

L’opération d’affectation utilise donc le symbole flèche (←) pour signifier


l’opération de modification de la valeur d’une variable.

Remarquez que le choix de cette flèche vers la gauche montre bien le sens
de l’opération. Ce n’est pas le cas de nombreux langages informatiques qui
utilisent le symbole égale (=) pour symboliser cette opération. Mais écrire
l’expression nb = nb + 1 heurte toujours un peu les scientifiques !

En utilisant nos conseils de lecture, l’expression « nb ← nb + 1 » se lit donc :


« La variable nb prend pour valeur l’ancienne valeur de nb plus 1. » C’est
cela qu’on appelle une opération d’incrémentation : augmenter la valeur d’une
variable de 1. De manière similaire on parle d’opération de décrémentation
pour diminuer la valeur de 1.

Notez aussi que la partie calcul d’une affectation utilise généralement des
notations mathématiques. On suppose que ces notations sont connues de
l’entité exécutant l’algorithme.

13
Écriture des algorithmes Description des variables et des paramètres
Les variables et les paramètres Affectation d’une valeur à une variable
Structures de contrôles Les différents types de données

3.3 Les différents types de données


Les différents types de données 17a/42

Définition du type d’une variable


Le type d’une variable détermine l’ensemble des valeurs affectables à cette
variable.

Trois types de base :


les nombres entiers (Z),
les nombres réels (R),
les caractères.
Un type dérivé est un sous-ensemble d’un type préexistant. Ex : les
entiers positifs (N).

Écriture des algorithmes Description des variables et des paramètres


Les variables et les paramètres Affectation d’une valeur à une variable
Structures de contrôles Les différents types de données

Les différents types de données


Algorithmique et programmation
2024/2025
17b/42
Paul Gaborit
Centre Génie Industriel, IMT Mines Albi

Une collection (ensembles, listes, vecteurs, tableaux, matrices,


dictionnaires ou tableaux associatifs) regroupe des valeurs de même
nature.
Une structure de données est construite par agrégation de plusieurs
champs, attributs et collections de différents types.
Un objet est décrit par un état (une structure de données) auquel on
associe un ensemble de méthodes (des fonctions ou procédures
décrivant le comportement de l’objet). Les objets de même nature
(qui partagent les mêmes méthodes) sont regroupés en classe.

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

Dans un algorithme, on peut (on doit ?) attacher à chaque variable un type.


Ce type restreint l’ensemble des valeurs qu’on se donne le droit d’affecter à
cette variable. C’est donc une précieuse indication pour mieux cerner le rôle
de la variable. Parfois cela aide aussi à détecter certaines incohérences dans
un algorithme en cours de conception. C’est surtout une quasi nécessité pour
faciliter la traduction d’un algorithme dans certains langages de programmation.

Les langages de programmation dits fortement typés (Java, C, C++...) exigent


que le type d’une variable soit défini lors de sa création. Dans d’autres (JavaS-
cript, Python, Perl...), le type d’une variable n’est pas précisé et elle peut donc
recevoir des données de n’importe quel type.

La plupart des langages de programmation fournissent les types de base : les


entiers, les réels et les caractères. Mais il faut parfois agréger plusieurs données

14
pour décrire une entité. C’est le rôle des structures de données (qui regroupe
différents champs ou attributs ayant chacun leur propre type).

Dans ce cours, nous verrons aussi quelques exemples de collections (les en-
sembles, les listes, les vecteurs, les tableaux, les matrices, les dictionnaires ou
tableaux associatifs...).

Nous aborderons quelques rudiments de programmation orientée objet. Un


objet est une structure de données (un ensemble de champs ou attributs qui
décrivent l’état de l’objet) associée à un ensemble de méthodes (des fonctions
qui décrivent le comportement de cet objet). Les objets de même nature sont
regroupés dans une classe (ils partagent les même méthodes).

Tout cela sera abordé au fur et à mesure des différents exercices.

15
Écriture des algorithmes Les conditions logiques
Les variables et les paramètres Les structures de choix
Structures de contrôles Les structures de répétition

4 Structures de contrôles
Structures de contrôle 19/42

Définition d’une structure de contrôle


En algorithmique, une structure de contrôle permet soit de répéter
l’exécution d’un groupe d’instructions soit de choisir si on doit ou non
exécuter un groupe d’instructions. Elle permet donc de contrôler le flux
d’exécution des instructions.
On distingue deux grandes familles de structures de contrôle :
1 les alternatives (ou encore choix ou tests) :
Si-Alors-FinSi
Si-Alors-Sinon-FinSi
Si-Alors-SinonSi-Sinon-FinSi
2 les répétitions (ou boucles) :
TantQue-FinTantQue
Répéter-Jusqu’à
Pour-FinPour

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

La nécessité de pouvoir choisir certaines instructions plutôt que d’autres est


une évidence. C’est cela qui permet d’adapter le comportement de l’algorithme
aux paramètres qu’il reçoit. Ex : « s’il pleut, prendre un parapluie. »

La nécessité de pouvoir répéter un groupe d’instructions jusqu’à ce que ou tant


que une condition est vraie, est aussi évident. Ex : « marcher tant qu’il fait
jour » ou « remuer doucement jusqu’à ébullition. »

Lors de l’exécution d’un algorithme, on arrive toujours dans une structure de


contrôle par le haut et on la termine par le bas. Cette caractéristique (qui
manque aux ordinogrammes) permet de mieux comprendre le fonctionnement
de l’algorithme et surtout en facilite la preuve.

Nous allons maintenant voir les structures de contrôle les plus courantes. Toutes
les autres structures de contrôle (si on ne s’intéresse pas aux actions en parallèle)
sont exprimables à partir de ces structures de contrôle de base. Pour chacune
d’entre elles, nous donnerons son équivalent sous forme d’ordinogramme (c’est
la dernière fois que nous utiliserons cette notation), nous ferons quelques
remarques générales sur son fonctionnement et nous donnerons un exemple
d’algorithme illustrant son usage.

Mais comme toutes ces structures de contrôle utilisent des conditions logiques,
nous allons tout d’abord expliquer ce qu’on appelle une condition logique.

16
Écriture des algorithmes Les conditions logiques
Les variables et les paramètres Les structures de choix
Structures de contrôles Les structures de répétition

4.1 Les conditions logiques


Les conditions logiques 20/42

Définition d’une condition logique


Une condition logique est une expression dont l’évaluation est soit vraie,
soit fausse.

Elle peut être exprimée comme :


le résultat d’une comparaison entre des calculs ou des valeurs.
la négation d’une autre condition logique (notée par non ou
mathématiquement par p).
une combinaison logique de deux autres conditions logiques (notées
par et et ou ou mathématiquement par p ∧ q et p ∨ q).
Attention aux pièges de l’algèbre de Bool !
L’expression (p ∧ q) est-elle équivalente à (p ∨ q) ?
Pour qu’une condition logique complexe soit sans ambiguïté,
l’utilisation de parenthèses est nécessaire.

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

En algorithmique, une condition est sans modalité : elle ne peut pas être
presque vraie ou partiellement fausse. À un instant donné, son évaluation est
soit vraie, soit fausse.

Une condition logique simple est le résultat d’une comparaison logique entre
deux valeurs (constantes, variables, paramètres ou calcul). Deux exemples :

(nbConvives × 2 < 10)

(caractere ̸= ’A’)

Pour que la valeur de vérité (la véracité) d’une condition logique change pendant
l’exécution d’un algorithmique, elle doit faire référence à une variable (comme
les deux exemples ci-dessus).

Les trois opérateurs de combinaison logique de base (et, ou, non) permettent
de construire des conditions logique plus complexes :

((N bConvives < 10) et (N bConvives > 5))

Des notations plus mathématiques de ces opérateurs de combinaison logique


sont parfois utilisées :

(P et Q) ≡ (P ∧ Q)
(P ou Q) ≡ (P ∨ Q)
(non P ) ≡ (P )

17
Écriture des algorithmes Les conditions logiques
4.2 Les structures de
Les variables et les choix
paramètres
Structures de contrôles
Les structures de choix
Les structures de répétition

Si-Alors-FinSi
Si-Alors-FinSi 21a/42

...

...
Si ( condition ) Alors
condition faux
...
instructions vrai
...
...instructions...
Fin Si
...
...

Écriture des algorithmes Les conditions logiques


Les variables et les paramètres Les structures de choix
Structures de contrôles Les structures de répétition

Si-Alors-FinSi
Algorithmique et programmation
2024/2025
21b/42
Paul Gaborit
Centre Génie Industriel, IMT Mines Albi

La condition est une expression logique


... dont le résultat détermine l’exécution ou
Si ( condition ) Alors non du bloc d’instructions.
Ce bloc d’instructions est exécuté
... uniquement si la condition est vraie.
instructions
... Le bloc d’instructions est exécuté une ou
zéro fois puis on passe à la suite.
Fin Si
...

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

La structure de contrôle Si-Alors-Finsi permet de rendre conditionnel l’exécution


d’une suite (ou bloc) d’instructions.

18
Écriture des algorithmes Les conditions logiques
Les variables et les paramètres Les structures de choix
Structures de contrôles Les structures de répétition

Exemple d’utilisation du Si-Alors-Finsi 22/42

Affichage de la valeur absolue (y)


Paramètre : y (réel) nombre dont on souhaite afficher la valeur absolue.
Variable : absolute (réel) valeur absolue calculée.
Début
absolute ← y
Si (absolute < 0) Alors
absolute ← (−absolute)
Fin Si
Afficher(absolute)
Fin

On suppose ici que l’action Afficher permet d’afficher les valeurs des
paramètres qu’on lui fournit.

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

L’exemple ci-dessus montre l’utilisation de la structure de contrôle Si-Alors-


Finsi dans un algorithme permettant d’afficher la valeur absolue d’un nombre
fourni en paramètre.

19
Écriture des algorithmes Les conditions logiques
Les variables et les paramètres Les structures de choix
Structures de contrôles Les structures de répétition

Si-Alors-Sinon-FinSi
Si-Alors-Sinon-FinSi 23a/42

... ...
Si ( condition ) Alors
...
instructions 1
... condition
vrai faux
Sinon
... ...instructions 1... ...instructions 2...
instructions 2
...
Fin Si ...
...
Écriture des algorithmes Les conditions logiques
Les variables et les paramètres Les structures de choix
Structures de contrôles Les structures de répétition

Si-Alors-Sinon-FinSi
Algorithmique et programmation
2024/2025
23b/42
Paul Gaborit
Centre Génie Industriel, IMT Mines Albi

...
Si ( condition ) Alors La condition est une expression logique dont le
résultat permet de choisir le bloc d’instructions à
... exécuter.
instructions 1 Ce bloc d’instructions est exécuté uniquement si
... la condition est vraie.

Sinon Ce bloc d’instructions est exécuté uniquement si


la condition est fausse.
...
Un et un seul des deux blocs d’instructions est
instructions 2 exécuté une fois et une seule puis on passe à la
... suite.
Fin Si
...

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

Lors de l’exécution de l’algorithme, la structure de contrôle Si-Alors-Sinon-FinSi


permet de choisir la suite d’instructions qu’on souhaite exécuter parmi deux
suites d’instructions possibles. Ce choix s’effectue en fonction d’une condition.
Le premier bloc d’instructions correspond au cas où la condition est vraie. Le
deuxième bloc est pour le cas où la condition est fausse.

Cette structure permet donc de gérer une alternative entre deux blocs. Notez
qu’en français, le terme alternative recouvre bien les deux possibilités entre
lesquelles on doit choisir.

20
Écriture des algorithmes Les conditions logiques
Les variables et les paramètres Les structures de choix
Structures de contrôles Les structures de répétition

Exemple d’utilisation du Si-Alors-Sinon-FinSi 24/42

Affichage de la majorité selon l’âge (age, ageMajorite)


Paramètres : age (réel positif) âge de la personne à qui on s’adresse.
ageMajorite (réel positif) âge légal de la majorité.

Début
Si (age ⩾ ageMajorite) Alors
Afficher(« Vous êtes majeur. »)
Sinon
Afficher(« Vous êtes mineur. »)
Fin Si
Fin

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

Cet exemple d’algorithme utilisant la structure Si-Alors-Sinon-FinSi permet


d’afficher un message différent selon que la paramètre Age indique un âge supé-
rieur ou non à l’âge légal de la majorité fourni par le paramètre AgeM ajorite.

21
Écriture des algorithmes Les conditions logiques
Les variables et les paramètres Les structures de choix
Si-Alors-SinonSi-Sinon-FinSi
Structures de contrôles Les structures de répétition

Si-Alors-SinonSi-Sinon-FinSi 25/42

La structure de contrôle Si-Alors-SinonSi-Sinon-FinSi enchaîne


plusieurs tests et évite ainsi l’imbrication de plusieurs structures de
contrôle Si-Alors-Sinon-FinSi. Les deux écritures ci-dessous sont
équivalentes.

Si (condition 1) Alors Si (condition 1) Alors


... ...
instructions 1 instructions 1
... ...
Sinon Si (condition 2) Alors Sinon
... Si (condition 2) Alors
instructions 2 ...
... instructions 2
Sinon ...
... Sinon
instructions 3 ...
... instructions 3
Fin Si ...
Fin Si
Fin Si
Algorithmique et programmation Paul Gaborit
2024/2025 Centre Génie Industriel, IMT Mines Albi

Lorsqu’on doit réaliser successivement plusieurs tests exclusifs, la structure de


contrôle Si-Alors-SinonSi-Sinon-FinSi et bien pratique.

Note : on peut étendre cette structure pour enchaîner plus de 2 conditions.

22
Écriture des algorithmes Les conditions logiques
4.3 Les structures de
Les variables et les répétition
paramètres Les structures de choix
Structures de contrôles Les structures de répétition

TantQue-FinTantQue
TantQue-FinTantQue 26a/42

...

...
Tant Que ( condition ) Faire
condition faux
...
instructions vrai
...
...instructions...
Fin Tant Que
...
...

Écriture des algorithmes Les conditions logiques


Les variables et les paramètres Les structures de choix
Structures de contrôles Les structures de répétition

TantQue-FinTantQue
Algorithmique et programmation
2024/2025
26b/42
Paul Gaborit
Centre Génie Industriel, IMT Mines Albi

La condition est une expression logique. Tant


... que son évaluation retourne la valeur vraie,
on continue à exécuter le bloc d’instructions.
Tant Que ( condition ) Faire
Ce bloc d’instructions est exécuté tant que
... la condition est vraie.
instructions Le bloc d’instructions peut ne pas être
... exécuté du tout (si la condition est fausse
dès le départ).
Fin Tant Que
...

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

La structure de contrôle TantQue-FinTantQue est notre première structure de


contrôle qui autorise la répétition d’une suite d’instructions.

Avant chaque exécution de la suite d’instructions, la condition est testée. Tant


qu’elle est vraie, on continue à répéter l’exécution du bloc d’instructions. Dès
qu’elle est fausse, on passe aux instructions qui suivent la structure de contrôle.

Pour que nous ayons à faire à un algorithme, il nous faut absolument prouver
que cette répétition s’arrêtera un jour, c’est-à-dire que la condition deviendra
fausse. Au minimum, il est donc indispensable que la condition fasse référence
à des variables dont la valeur est modifiée par les instructions contenues dans
la structure TantQue-FinTantQue.

23
Écriture des algorithmes Les conditions logiques

La condition d’uneLesstructure de contrôle TantQue-FinTantQue


variables et les paramètres
Structures de contrôles
Les structures de choix
Les structures de répétition est appelée
condition de continuation. 27/42
Exemple d’utilisation du TantQue-FinTantQue

Compte à rebours (valeurInitiale)


Paramètre : valeurInitiale (entier positif) point de départ du compte à rebours.
Variable : val (entier positif) valeur courante du compte à rebours.
Début
val ← valeurInitiale
Tant Que (val > 0) Faire
Afficher(val)
Attendre une seconde
val ← val − 1
Fin Tant Que
Afficher(« Top départ »)
Fin

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

Cet exemple d’algorithme utilisant la structure TantQue-FinTantQue a pour


but d’afficher un compte à rebours depuis une valeur initiale fournie comme
paramètre jusqu’à afficher le message « Top départ ». Vous pouvez vérifier que
la valeur 0 n’est pas affichée.

24
Écriture des algorithmes Les conditions logiques
Les variables et les paramètres Les structures de choix
Structures de contrôles Les structures de répétition

Répéter-Jusqu’à
Répéter-Jusqu’à 28a/42

...

...
Répéter ...instructions...

...
instructions condition faux
...
vrai
Jusqu’à ( condition )
...
...

Écriture des algorithmes Les conditions logiques


Les variables et les paramètres Les structures de choix
Structures de contrôles Les structures de répétition

Répéter-Jusqu’à
Algorithmique et programmation
2024/2025
28b/42
Paul Gaborit
Centre Génie Industriel, IMT Mines Albi

Le bloc d’instructions est toujours exécuté


... au moins une fois.
Répéter On répète l’exécution de ce bloc
d’instructions jusqu’à ce que la condition
... soit vraie.
instructions
La condition est une expression logique.
... Jusqu’à ce que son évaluation retourne la
Jusqu’à ( condition ) valeur vraie, on recommence l’exécution du
bloc d’instructions.
...

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

La structure de contrôle Répéter-Jusqu’à permet elle aussi de répéter une suite


d’instructions. Mais la condition n’est testée qu’après l’exécution de la suite
d’instructions. Si elle est fausse, on répète l’exécution du bloc d’instructions.
On ne sort de cette structure de contrôle que lorsque la condition est vraie.

Cette condition doit donc faire référence à des variables dont la valeur est modi-
fiée par la suite d’instructions. Et comme dans le cas du TantQue-FinTantQue,
il faut pouvoir prouver que cette condition deviendra vraie au cours de l’exé-
cution. Sinon, on risque une boucle infinie et donc nous ne sommes plus en
présence d’un algorithme.

La condition d’une structure de contrôle Répéter-Jusqu’à est appelée condition


d’arrêt.

25
Écriture des algorithmes Les conditions logiques
Les variables et les paramètres Les structures de choix
Structures de contrôles Les structures de répétition

Exemple d’utilisation du Répéter-Jusqu’à 29/42

Conjecture de Syracuse (valeurInitiale)


Paramètre : valeurInitiale (entier strictement positif) point de départ du calcul.
Variable : val (entier positif) valeur courante du calcul.
Début
val ← valeurInitiale
Afficher(val)
Répéter
Si (val est paire) Alors
val ← val/2
Sinon
val ← 3 × val + 1
Fin Si
Afficher(val)
Jusqu’à (val = 1)
Fin

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

Cet algorithme permet de vérifier la conjecture de Syracuse en utilisant la


structure de contrôle Répéter-Jusqu’à.

Cette conjecture suppose qu’on part d’un entier strictement positif. Puis s’il
est pair, on le divise par 2 et s’il est impair, on le multiplie par 3 et on ajoute 1.
On recommence cette opération sur la nouvelle valeur obtenue jusqu’à obtenir
la valeur 1.

C’est une conjecture car on n’a jamais réussi à prouver qu’on obtenait toujours 1
quelle que soit la valeur de départ. Notre algorithme exemple n’en est peut-être
pas un ! Mais heureusement on n’a jamais trouvé non plus de contre-exemple.

Sachez tout de même que cette conjecture a été vérifiée pour tous les nombres
N < 262 (janvier 2008 - T. Oliveira e Silva) et que, mis à part le cycle évident
(1, 4, 2, 1...), on sait qu’il n’existe pas de cycle de longueur inférieur à 17
milliards !

On ne sait toujours pas si cette conjecture est un problème indécidable mais


on peut se le demander...

Cette exemple illustre aussi la possibilité d’imbriquer les structures de contrôle


les unes dans les autres (ici une structure Si-Alors-Sinon-FinSi à l’intérieur de
la structure Répéter-Jusqu’à). Attention : deux structures ne peuvent pas
se mélanger et se retrouver à cheval. Leur imbrication se fait nécessairement
comme des poupées russes.

26
Écriture des algorithmes Les conditions logiques
Les variables et les paramètres Les structures de choix
Structures de contrôles Les structures de répétition

Structure
Structure de contrôle
de contrôle dérivée: :Pour-FinPour
dérivée Pour-FinPour 30b/42

– ∴ – cpt est une variable entière.


– ∴ – cpt est une variable entière. ...
... cpt ← min
Pour cpt variant de min à max Faire Tant Que (cpt ⩽ max) Faire
... ...
instructions instructions
... ...
Fin Pour cpt ← cpt + 1
... Fin Tant Que
...

Ces deux algorithmes sont équivalents (la structure de contrôle Pour-FinPour n’est
donc pas strictement nécessaire).

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

La structure de contrôle Pour-FinPour est une structure de contrôle dérivée


dans le sens où on peu écrire un algorithme équivalent en n’utilisant que les
structures de contrôle de base.

Sur la droite, vous pouvez voir un algorithme équivalent qui n’utilise qu’une
structure de contrôle TantQue-FinTantQue...

Son rôle est de répéter l’exécution d’une suite d’instructions tout en faisant
varier la valeur d’une variable entière (appelée ici Cpt) d’une valeur minimum
à une valeur maximum. À la première exécution, la variable vaut la valeur
minimum. Puis cette variable est incrémentée (sa valeur est augmentée de 1) et
on recommence l’exécution de la suite d’instructions avec cette nouvelle valeur.
On s’arrête lorsque la variable dépasse la valeur maximum.

La variable qui est incrémentée et testée par une structure de contrôle Pour-
FinPour s’appelle un compteur (elle permet de « compter » les itérations
successives).

Puisque la variation de cette valeur est directement pilotée par la structure


de contrôle Pour-FinPour, il est fortement déconseillé de modifier la valeur
de cette variable dans le bloc d’instructions. Algorithmiquement parlant, cela
ne rend que l’algorithme plus difficile à comprendre. Et dans de nombreux
langages de programmation qui proposent un équivalent de cette structure de
contrôle, cette modification est tout simplement interdite.

Si cette modification explicite de la valeur de votre compteur semble indis-


pensable à votre algorithmique, utilisez alors l’algorithme équivalent écrit
sous forme d’un TantQue-FinTantQue. Ainsi toutes les opérations sur votre
compteur apparaîtront explicitement.

27
Écriture des algorithmes Les conditions logiques
Les variables et les paramètres Les structures de choix
Structures de contrôles Les structures de répétition

Exemple d’utilisation du Pour-FinPour 31/42

Affichage des carrés des premiers entiers(n)


Paramètre : n (entier positif) nombre maximum de carrés à afficher.
Variable : ent (entier positif) variable permettant de parcourir tous les
entiers de 1 à n.
Début
Pour ent variant de 1 à n Faire
Afficher(ent × ent)
Fin Pour
Fin

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

L’exemple ci-dessus est un algorithme permettant d’afficher tous les carrées


des entiers de 1 à N .

28
Troisième partie

Analyse

5 Idée
Pour produire un (ou plusieurs) algorithme(s) permettant de résoudre un
problème, il faut avoir une idée de la méthode permettant de le faire. En effet,
comment imaginer être capable de donner des instructions précises à réaliser si
soi-même on n’a pas une idée de comment résoudre le problème.

Il faut donc souvent commencer par exposer son idée générale afin d’en extraire
de précieuses informations permettant de mieux formaliser le problème. C’est
aussi l’occasion d’analyser les spécifications fournies par le demandeur pour
s’assurer qu’elles sont sans ambiguïtés...

6 Analyse descendante Idée


Analyse descendante
Diviser pour mieux régner
Les fonctions : des algorithmes qui retournent un résultat
Schéma bulle Recette en utilisant une fonction

6.1 Diviser pour mieux régner


Diviser pour mieux régner 35/42

Un algorithme résolvant un problème complexe peut être long et


difficile à valider.
Pour s’attaquer à de tels problèmes, on utilise une technique bien
connue : « diviser pour mieux régner. »
On découpe le problème en sous-problèmes plus simples qu’on résout
séparément.
Puis on fait appel à ces algorithmes plus simples pour créer
l’algorithme général.

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

La méthode d’analyse descendante consiste à diviser un problème complexe en


sous-problèmes plus simples. Ensuite on analyse et on trouve les algorithmes de
chacun de ces sous-problèmes. Puis on écrit l’algorithme du problème général
en faisant appel aux algorithmes des sous-problèmes.

Nous allons appliquer cette méthode d’analyse de manière un peu artificielle


à notre recette de pommes de terre mais cela nous permettra de préciser un
certain nombre de notations.

29
Idée Diviser pour mieux régner
Analyse descendante Les fonctions : des algorithmes qui retournent un résultat
Schéma bulle Recette en utilisant une fonction

Résultat de l’analyse descendante de notre recette 36b/42

problème « complexe »

Pommes de terre
0 en robe des 4
champs

1 2 3

Préparation des Cuisson des Service des


pommes de terre pommes de terre pommes de terre
sous-problèmes « plus simples »

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

L’analyse de notre problème globale nous amène à le diviser en trois sous-


Idée Diviser pour mieux régner
problèmes plus simples. Les
Analyse numéros
descendante
Schéma bulle
(de 0 àLes 4) donnent
fonctions l’ordre
: des algorithmes dans
qui retournent
Recette en utilisant une fonction
lequel se
un résultat

déroulent les différents algorithmes liés à chaque problème.


Résultat de l’analyse descendante de notre recette 36e/42

Pommes de terre en robe des champs(nbConvives)


Paramètre : nbConvives (entier) nombre de personnes.
Variables : nbPdT (entier) nombre de pommes de terre.
nbCuilCreme (entier) nombre de cuillères à soupe de crème.
Début
– ∴ – Calcul des proportions
nbPdT ← 2 × nbConvives
nbCuilCreme ← nbConvives
– ∴ – Les différentes phases
Préparation des pommes de terre(nbPdT )
Cuisson des pommes de terre(nbPdT )
Service des pommes de terre(nbPdT , nbCuilCreme)
Fin

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

L’algorithme principale ne fait plus que calculer les proportions. Ensuite il


fait appel à trois algorithmes plus simples pour le préparation, la cuisson et le
service.

30
Idée Diviser pour mieux régner
Analyse descendante Les fonctions : des algorithmes qui retournent un résultat
Schéma bulle Recette en utilisant une fonction

Résultat de l’analyse descendante de notre recette 36c/42

Préparation des pommes de terre(nb)


Paramètre : nb (entier) nombre de pommes de terre à préparer.
Début
Laver nb pommes de terre.
Fin

Cuisson des pommes de terre(nb)


Paramètre : nb (entier) nombre de pommes de terre préparées.
Début
Préchauffer le four à 200/250°C.
Placer les nb pommes de terre sur la plaque du four.
Faire cuire pendant 25 à 30 min environ.
Fin

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

Dans le cadre ci-dessus, nous avons deux des trois algorithmes secondaires : la
préparation et la cuisson.

Notez que le nom de paramètre utilisé pour mémoriser le nombre de pommes


de terre n’est le même dans ces algorithmes que dans l’algorithme général.
Lors de l’appel de ces algorithmes par l’algorithme principal, le paramètre nb
recevra comme valeur celle qui lui sera fournie par l’algorithme appelant.

En fait, chaque paramètre et chaque variable appartient à un seul algorithme.


A priori, les paramètres et les variables d’un algorithme ne peuvent pas être
modifiés ou même vus par autre algorithme. Les seules choses que s’échangent
Idée Diviser pour mieux régner
les algorithmes ce sont lesAnalyse
valeurs des paramètres
descendante
Schéma bulle
(et
Les fonctions : des les résultats
algorithmes des
qui retournent
Recette en utilisant une fonction
fonctions
un résultat

comme nous le verrons plus tard).


Résultat de l’analyse descendante de notre recette 36d/42

Service des pommes de terre(nbPdt, nbCC )


Paramètres : nbPdt (entier) nombre de pommes de terre à servir.
nbCC (entier) nombre de cuillères à soupe de crème.
Début
Couper les nbPdt pommes de terre en quatre.
Y répartir nbCC cuillères à soupe de crème.
Fin

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

Ce dernier algorithme secondaire nécessite le passage de deux valeurs via ses


deux paramètres : la quantité de pommes de terre et celle de crème.

31
Idée Diviser pour mieux régner
Analyse descendante Les fonctions : des algorithmes qui retournent un résultat
Schéma bulle Recette en utilisant une fonction

6.2 Les fonctions : des algorithmes qui retournent un


Les fonctions 37résultat
/42

Définition d’une fonction


Une fonction est un algorithme qui retourne une valeur finale.

Fonction exemple(...paramètres...)
... description de la fonction, de ses paramètres, de ses variables ...
Résultat : resultat (type) ... description ...
Début
... instructions de calcul du resultat ...
Retour (resultat)
Fin

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

Une fonction est un algorithme qui retourne un résultat (une procédure est
un algorithme qui ne retourne pas de résultat). Elle s’écrit quasiment comme
n’importe quel autre algorithme... sauf qu’après la description des conditions
d’usage et des éventuels paramètres et variables, on trouve la description de
son résultat. Comme pour les paramètres et les variables, le résultat est décrit
par son nom (généralement Resultat ou Res mais on peut choisir un autre
nom), son type et sa sémantique (son rôle, son sens).

De plus, la toute dernière instruction d’une fonction consiste à retourner la


valeur de son résultat (via le mot clé Retour) à son algorithme appelant qui
pourra la récupérer pour son propre usage.

Note : on ne parle que d’un seul résultat car de nombreux langages informatiques
(C, C++, Java, Fortran...) ne peuvent retourner qu’une seule valeur. Dans les
langages de scripts (tels Python, Ruby, Perl, JavaScript...), une fonction peut
retourner une liste (un tuple en Python) de résultats.

32
Idée Diviser pour mieux régner
Analyse descendante Les fonctions : des algorithmes qui retournent un résultat
Schéma bulle Recette en utilisant une fonction

Exemple de fonction 38/42

Un pas de Syracuse(val)
Paramètre : val (entier positif) valeur dont on veut calculer le successeur dans la
conjecture de Syracuse.
Résultat : successeur (entier positif) le successeur de val.
Début
Si (val est paire) Alors
successeur ← val/2
Sinon
successeur ← 3 × val + 1
Fin Si
Retour (successeur)
Fin

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi
Idée Diviser pour mieux régner
Cette fonction reçoit un entier strictement positif en paramètre. Elle permet
Analyse descendante
Schéma bulle
Les fonctions : des algorithmes qui retournent un résultat
Recette en utilisant une fonction
de calculer le successeur de cette valeur dans la suite de la conjecture Syracuse.
Exemple d’appel de fonction 39/42

Conjecture de Syracuse v2 (valeurInitiale)


Paramètre : valeurInitiale (entier strictement positif) point de départ du calcul.
Variable : val (entier positif) valeur courante du calcul.
Début
val ← valeurInitiale
Afficher(val)
Répéter
val ← Un pas de Syracuse(val)
Afficher(val)
Jusqu’à (val = 1)
Fin

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

Cet algorithme fait appel à la fonction Un pas de Syracuse pour (tenter de)
vérifier la conjecture de Syracuse.

Note : il n’a jamais été démontré (mathématiquement) que la suite de Syracuse


convergeait vers 1 quel que soit l’entier de départ. Cette suite d’instructions
n’est donc pas nécessairement un algorithme puisque nous ne sommes pas sûrs
qu’elle se termine en un temps fini.

6.3 Recette en utilisant une fonction


Voici une nouvelle version de notre recette en utilisant une fonction pour
calculer les proportions.

33
Idée Diviser pour mieux régner
Analyse descendante Les fonctions : des algorithmes qui retournent un résultat
Schéma bulle Recette en utilisant une fonction

Recette en utilisant une fonction pour calculer les


proportions 40a/42
La fonction de calcul des proportions

Calcul des proportions(nbConvives)


Paramètre : nbConvives (entier) nombre de personnes.
Résultats : nbPdT (entier) nombre de pommes de terre.
nbCuilCreme (entier) nombre de cuillères à soupe de crème.
Début
nbPdT ← 2 × nbConvives
nbCuilCreme ← nbConvives
Retour (nbPdT , nbCuilCreme)
Fin

Idée Diviser pour mieux régner


Analyse descendante Les fonctions : des algorithmes qui retournent un résultat
Algorithmique et programmation Schéma bulle Recette en utilisant une fonction Paul Gaborit
2024/2025 Centre Génie Industriel, IMT Mines Albi

Recette en utilisant une fonction pour calculer les


proportions 40b/42
La recette complète

Pommes de terre en robe des champs(nbConvives)


Paramètre : nbConvives (entier) nombre de personnes.
Variables : nbPdT (entier) nombre de pommes de terre.
nbCuilCreme (entier) nombre de cuillères à soupe de crème.
Début
(nbPdT , nbCuilCreme) ← Calcul des proportions(nbConvives)
Préparation des pommes de terre(nbPdT )
Cuisson des pommes de terre(nbPdT )
Service des pommes de terre(nbPdT , nbCuilCreme)
Fin

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

Notez que la fonction Calcul des proportions retourne un couple de résul-


tats.

7 Schéma bulle
Avant de se lancer dans la rédaction d’un algorithme, il est aussi pratique de
bien décrire ce qu’il va réaliser si on le considère comme une boîte noire :
— Quelles sont les paramètres (les informations ou données) qu’il recevra
au départ ?
— Quel(s) résultat(s) doit-il produire au final ?
— Durant son exécution : quelle(s) interaction(s) éventuelle(s) aura-t-il
avec l’extérieur ? Quelle(s) information(s) doit-il demander ou doit-il
produire ?

34
Note : l’appel à un ou plusieurs autres algorithmes durant l’exécution n’est
pas considéré comme une interaction avec l’extérieur. Mais si les algorithmes
appelés ont des interactions avec l’extérieur alors l’algorithme appelant les aura
aussi.

On peut synthétiser ces Analyse


informations Idée
descendante dans un schéma bulle.
Schéma bulle

Schéma bulle 42/42

Les données reçues


(durant l’exécution)

Nom de
Les paramètres Le(s) résultat(s)
l’algorithme

Les données produites


(durant l’exécution)
ou les actions sur le monde

Algorithmique et programmation Paul Gaborit


2024/2025 Centre Génie Industriel, IMT Mines Albi

35

Vous aimerez peut-être aussi