Post on 17-Jun-2022
Cours de Mr JULES v1.0 Classe de Terminale S spécialité ISN Page 1 sur 16
NOM et Prénom : …………………………………………… Terminale S spé ISN.
ALGORITHMIQUE
I. Les algorithmes et vous. _____________________________________________________________ 2
II. Algorithmes : généralités. ____________________________________________________________ 3
III. Traitement d’un Algorithme. ________________________________________________________ 5
IV. Les 3 structures de base de contrôle du flux. ___________________________________________ 7
V. Algorithmes de recherche. ___________________________________________________________ 12
VI. Algorithmes de tri. _______________________________________________________________ 14
VII. Mini Projet. ____________________________________________________________________ 16
➢ Matériel : Ordinateur ; Jeu de 52 cartes.
➢ Pré-requis pour prendre un bon départ :
☺ ☺☺
Critère pour savoir si 2 nombres sont de même signe.
Cours de Mr JULES v1.0 Classe de Terminale S spécialité ISN Contrat 5 Page 2 sur 16
I. LES ALGORITHMES ET VOUS.
A. C’est quoi pour vous ?
B. On en a déjà rencontré :
1. Dans la vie de tous les jours ?
2. En Maths ?
3. En Informatique ?
Cours de Mr JULES v1.0 Classe de Terminale S spécialité ISN Contrat 5 Page 3 sur 16
II. ALGORITHMES : GENERALITES.
A. Qu’est-ce que c’est ?
Un algorithme, très simplement, c'est une méthode. Une façon systématique de procéder pour faire quelque
chose : trier des objets, situer des villes sur une carte, multiplier deux nombres, extraire une racine carrée,
chercher un mot dans le dictionnaire…
En tant que méthode, un algorithme répond donc à des questions du type : « comment faire ceci ? »,
« obtenir cela ? », « trouver telle information ? », « calculer tel nombre ? ».
Répondre à ces questions, c’est donc être capable de décortiquer une problématique pour identifier une suite
d'actions ou de manipulations précises à accomplir séquentiellement et automatiquement pour parvenir à la
« solution » du problème. Cette suite d’actions clairement identifiées constituera un algorithme.
1. Définitions :
1) Un algorithme est une suite ordonnée, finie et non ambiguë d'instructions permettant :
• de résoudre un problème ou d'obtenir un résultat,
• en un temps fini.
2) La science qui étudie les algorithmes s’appelle l’Algorithmique.
2. Un peu d’histoire :
Le mot « algorithme » vient du nom du grand mathématicien persan Al
Khwarizmi (vers l'an 820), qui introduisit en Occident la numération décimale
(rapportée d'Inde) et enseigna les règles élémentaires des calculs s'y rapportant.
La notion d'algorithme est donc historiquement liée aux manipulations
numériques. Les exemples les plus anciens et célèbres sont :
o les calculs d’impôts Babyloniens (il y a 4 000 ans).
o le calcul du plus grand diviseur commun (Euclide, vers −350).
o les premières méthodes de résolution systématique d’équations (Al Khawarizmi, 9ème siècle).
Les algorithmes étaient donc d’abord utilisés « à la main ». Puis l’Algorithmique s'est progressivement
développée pour porter sur des objets de plus en plus complexes, des textes, des images, des formules
logiques, des objets physiques, etc.
B. La pensée algorithmique :
Cours de Mr JULES v1.0 Classe de Terminale S spécialité ISN Contrat 5 Page 4 sur 16
C. Algorithmes et Informatique :
A-t-on besoin d’un ordinateur pour exécuter un algorithme ? ……..
Et pourtant l’essor de l’Algorithmique va de pair avec l’essor de l’Informatique.
Rappelons une chose : « l’Informatique est la science du traitement automatique de l’Information par
l’écriture de programmes exécutables par des machines ».
Or, n’est-ce pas là le sujet de l’Algorithmique : écrire des traitements automatiques ? L’Algorithmique était
donc vouée dès la naissance à être « mariée » à l’Informatique (mariage non exclusif !)
A tel point que beaucoup de gens les confondent, surtout l’Algorithmique et la Programmation.
Rappelons quelques différences.
A. Différence entre Algorithmique et Programmation :
Algorithme Programme
Dans la recherche de la solution à un problème,
qui précède l’autre dans l’analyse ?
Qui se rapproche le plus du langage humain ?
Qui est une traduction de l’autre ?
Toutes ses étapes doivent être sans ambigüité.
On a besoin d’une machine pour l’exécuter.
Qui pose le plus de difficultés ?
Cours de Mr JULES v1.0 Classe de Terminale S spécialité ISN Contrat 5 Page 5 sur 16
III. TRAITEMENT D’UN ALGORITHME.
Un algorithme est donc une suite ……………………………………………….. d’………………………
A. Un début de structure :
Puisque cette suite d’instructions non ambigües est ordonnée et finie, il y a donc :
o une seule instruction initiale (la suite étant non ambigüe et ordonnée, elle peut être vue comme
une suite d’entiers, donc elle admet forcément un plus petit élément).
o au moins une instruction terminale (car la suite est ordonnée et finie).
o et entre les deux une suite d’instructions.
B. Une autre façon de voir les algorithmes :
➢ Les constatations précédentes nous permettent déjà de représenter graphiquement un algorithme par des
cases instructions reliées.
➢ Exemple : Soit algorithme suivant :
Peut-on a priori décider quelle est l’instruction initiale ? …….. Pourquoi ? …………………………………..
Par convention, un algorithme est présenté verticalement du …………… vers le …………… Placer
l’instruction initiale.
Combien d’instructions terminales possède cet algorithme ? …….. Les placer.
Une telle représentation avec une unique cellule au sommet et partant de là on aboutit à feuilles terminales
évoque une forme familière de la Nature : l’………………
Un algorithme est être représenté graphiquement par un arbre : l’arbre de traitement de toutes les
possibilités résultant de l’exécution de l’algorithme.
L’arbre de traitement précédent a été mal dessiné : 2 instructions terminales ne doivent jamais être l’une au-
dessus de l’autre. Pourquoi ? …………………………………………………………………………………..
Redessiner correctement l’arbre de traitement à droite.
Cours de Mr JULES v1.0 Classe de Terminale S spécialité ISN Contrat 5 Page 6 sur 16
C. Flux de traitement des instructions :
Lorsqu’on exécute concrètement un algorithme, cela revient à tracer un chemin de la feuille initiale à l’une
des feuilles terminales dans l’arbre de traitement.
1. Définition dynamique du flux :
On appelle flux de traitement des instructions la suite d’instructions qui sont en train d’être exécutées sur
l’un des chemins qui amène de l’instruction initiale à l’une des instructions terminales,
Il faut voir le flux de traitement comme un mobile se déplaçant sur l’un des chemins de l’arbre de traitement.
2. Trois façons d’agir sur le flux :
Comment agir sur le flux ? Dit autrement, comment tracer les chemins qu’il pourra emprunter ?
➢ Puisque le flux de traitement « se déplace » sur l’arbre de traitement, le chemin emprunté dépend
forcément des motifs présents sur cet arbre de traitement, donc de la structure de l’algorithme sous-jacent.
A bien y réfléchir, il n’y a que 3 motifs graphiques fondamentaux rencontrés par le flux dans un arbre de
traitement, 2 évidents et le dernier un peu moins.
➢ Dessiner les chemins d’instructions empruntés par les flux suivants :
Le flux va « tout droit ». Le flux peut-il changer de direction ?
Si oui comment ?
Le flux peut-il revenir en arrière ?
Si oui comment ?
Nom ? Nom ? Nom ?
➢ Ces 3 motifs permettent de contrôler le chemin pris par le flux.
Ils sont fondamentaux car on a montré que n’importe quelle autre manière de contrôler le flux, c-à-d
n’importe quel chemin aussi tortueux soit-il, est une combinaison plus ou moins complexe de ces 3 motifs.
Donc n’importe quelle structure algorithmique aussi complexe soit-elle est une combinaison des 3 structures
algorithmiques correspondant à ces 3 motifs de base.
Voyons donc maintenant ces 3 structures algorithmiques de base.
Ai-je tout compris ? Traitement d’un algorithme. ☺ ☺☺
Comment peut se représenter graphiquement un algorithme ?
Qu’est-ce que le flux de traitement des instructions ?
Quels sont les motifs fondamentaux qui permettent de contrôler le flux ?
Cours de Mr JULES v1.0 Classe de Terminale S spécialité ISN Contrat 5 Page 7 sur 16
IV. LES 3 STRUCTURES DE BASE DE CONTROLE DU FLUX.
A. La séquence d’instructions :
➢ Définition :
Une séquence d’instruction est une suite d’instructions qui seront exécutées les unes à la suite des autres.
La séquence d’instructions correspond aux portions linéaires de l’arbre de traitement.
C’est le contrôle le plus simple du flux.
➢ Application : écrire un algorithme linéaire à 3 instructions.
B. L’alternative :
1. Définition :
• L’alternative ou séquence conditionnelle est une séquence d’instructions qui ne sera exécutée que si un
ensemble de 1 ou plusieurs conditions est vrai.
• Elle se présente sous la forme :
L’alternative correspond aux embranchements dans l’arbre de traitement et permet donc des changements de
« direction » dans le contrôle du flux.
Par abus de langage, on dit aussi test conditionnel.
Si (conditions à tester) alors :
(bloc d’instructions)
Cours de Mr JULES v1.0 Classe de Terminale S spécialité ISN Contrat 5 Page 8 sur 16
2. Activité : différents types et combinaisons d’alternatives.
Ty
pe
de
Tes
t Si alors Si alors
Sinon
Si alors
Si alors
Si alors Si
En
Py
tho
n if if
else
if
if
if
if
Sy
nta
xe
A,
B c
on
dit
ion
s.
, ❖
in
stru
ctio
ns
if A :
(suite)
if A :
else : ❖
(suite)
if A :
if B : ❖
(suite)
if A :
if B :
(suite)
Org
anig
ram
me
Sch
émas
en
sem
bli
ste
Co
nd
itio
n
po
ur
ob
ten
ir
rien ❖ ❖ rien rien
A
En
sort
ie
Peut être
Soit rien Soit Soit ❖
Peut être
Peut être ❖
Soit rien
Peut être que peut être
Soit rien
Ex
emp
le
en P
yth
on
if k = = 1 :
print (‘a’)
if k = =1 :
print (‘a’)
else :
print (‘b’)
if k > 5 :
print (‘a’)
if k % 3 = = 0 :
print (‘b’)
if k > 1 :
if k = = 4 :
print (‘a’)
So
rtie
po
ur
k = 1 k = 2 k = 2 k = 1 k = 3 k = 6 k = 7 k = ... k = 0 k = 2 k = ….
a
A ?
B ?
❖
A ?
B ? (suite)
(suite) (suite)
A ?
rien rien
rien
(suite)
A ?
❖
rien rien
A B A A B A
Cours de Mr JULES v1.0 Classe de Terminale S spécialité ISN Contrat 5 Page 9 sur 16
Ty
pe
de
Tes
t Si alors Si
Sinon
Si alors
soit Si soit Sinon
Si alors
Sinon Si
Si alors
Sinon Si
A part tout ça
En
Py
tho
n if
if
else
if
if
else
if if
elif else
if
if
elif
else
Sy
nta
xe
A,
B c
on
dit
ion
s.
, ❖
,
in
stru
ctio
ns
if A :
if B :
else :
❖
(suite)
if A :
if B :
else :
❖
(suite)
if A :
elif B :
❖
(suite)
if A :
elif B :
❖
else :
(suite)
Org
anig
ram
me
Sch
émas
ense
mb
list
e
Co
nd
itio
n
po
ur
ob
ten
ir
rien ❖ ❖ rien ❖ rien ❖
En
so
rtie
Peut-être que peut-être
Soit ❖
Soit rien
Peut-être que (Soit Soit
❖)
Soit rien
Soit peut être
Soit peut être ❖
Soit rien
Soit Soit ❖ Soit
Ex
emp
le
en P
yth
on
if k > 1 :
if k < 5 :
print (‘a’)
else :
print(‘b’)
if k > 1 :
if k < 5 :
print (‘a’)
else :
print(‘b’)
if k > 8 :
print (‘a’)
elif k < 5 :
print (‘b’)
if k > 8 :
print(‘a’)
elif k < 5 :
print (‘b’)
else :
print (‘c’)
So
rtie
po
ur
k = 0 k = 2 k = 5 k = 7 k = …. k = …. k = 0 k = …. k = 9 k = 0 k = …. k = 9
b c
A B A B A B A B
(suite)
A ?
rien
B ?
❖
(suite)
A ?
B ?
A ?
B ?
(suite)
A ?
B ?
(suite)
❖ rien
Cours de Mr JULES v1.0 Classe de Terminale S spécialité ISN Contrat 5 Page 10 sur 16
C. La répétition d’instructions :
La répétition correspond à un « saut en arrière » dans l’arbre de traitement.
1. Définition :
La répétition d’instructions est un cycle d’instructions qui peut être effectué plusieurs fois.
De cette définition découle 2 types de répétitions d’instructions :
o Les répétitions dont le nombre de cycles (tours) est connu à l’avance.
o Les répétitions dont le nombre de cycles (tours) est inconnu à l’avance car dépendant d’une
condition.
2. Répétition déterminée ou boucle Pour :
Le nombre de cycle est déterminé d’avance. Il y a 2 façons de réaliser une telle structure :
➢ Puisqu’on connaît à l’avance le nombre de tours de boucle, on peut utiliser un compteur qu’on itère
(qu’on augmente de 1) à chaque tour de boucle, jusqu’à atteindre le nombre de tours désiré.
On parle alors de boucle itérative.
Structure boucle itérative :
➢ On peut au lieu d’utiliser un compteur utiliser une liste comportant autant d’éléments que le nombre
voulu de tours de boucle et faire parcourir cette liste par une variable.
On parle alors de boucle listée.
Structure boucle listée :
➢ Exemples : Le langage C utilise des boucles itératives. Et le langage Python ? ……………………………
3. Répétition conditionnée ou boucle Tant que :
On parle aussi de boucle conditionnelle.
On ne connaît pas à l’avance le nombre de cycle. Cela dépend de la condition.
Structure boucle Tant que :
Il existe une variante de cette boucle Tant que : Répéter tant que. Ecrire sa structure.
Structure boucle Répéter tant que :
Quelle est la grande différence entre ces 2 boucles conditionnelles ?
Pour (compteur allant de 1 à n) faire :
(bloc d’instructions)
Pour (variable parcourant liste à n éléments) faire :
(bloc d’instructions)
Tant que (conditions à tester) faire :
(bloc d’instructions)
Cours de Mr JULES v1.0 Classe de Terminale S spécialité ISN Contrat 5 Page 11 sur 16
4. Boucle itérativo-conditionnelle :
Il s’agit d’une répétition dont on connait a priori le nombre de tours mais qui sous une certaine condition
peut s’arrêter.
Comment s’écrit la structure d’une telle boucle ?
D. Difficultés liées à ces structures de contrôle :
La séquence d’instructions ne pose en général pas de problème du fait de sa linéarité : tout s’exécute à la
queue leu leu.
Il n’en va pas de même pour l’Alternative et la Répétition.
1. Difficultés liées aux alternatives :
La difficulté principale des alternatives réside dans la condition d’exécution du bloc.
Une condition vraie peut être vue comme un ensemble de cas qui marchent.
Contrairement aux Mathématiques, la difficulté ne se situe pas à l’intérieur de cet
ensemble (le cas général) mais au bord de cet ensemble (les cas particuliers).
2. Difficultés liés aux répétitions : pré et post traitement.
Pour les boucles conditionnées, même difficulté que pour les alternatives.
Pour les boucles déterminées, encore une fois, les difficultés se retrouvent dans les cas particuliers : le début
de l’itération et/ou la fin de l’itération pour une boucle itérative ; le début et/ou la fin de la liste pour une
boucle listée. Le cas général (dans le corps de l’itération ou dans le corps de la liste) pose souvent bien m de
problème.
Les bugs informatiques viennent souvent d’un de ces cas particuliers de boucles ou d’alternatives qui n’a
pas été identifié ou non traité correctement.
Pour faire le point : le site Culturenumérique (Université Lille 3).Module « Traitement des données ».
Voyons maintenant quelques exemples classiques d’algorithmes.
Ai-je tout compris ? Structures algorithmiques fondamentales. ☺ ☺☺
Les 3 structures fondamentales de contrôle du flux.
Les différents types d’alternatives.
Les différents types de répétitions.
Les difficultés liées aux alternatives et aux boucles.
Cas qui
marchent
Cours de Mr JULES v1.0 Classe de Terminale S spécialité ISN Contrat 5 Page 12 sur 16
V. ALGORITHMES DE RECHERCHE.
A. Algorithme de recherche d’un mot dans le dictionnaire :
B. Algorithme de recherche par balayage :
Soit une somme de 1500 € placée sur un compte épargne à 0,75 %. Chaque 1er de l’an se rajoute la même
somme 100€ issue des étrennes. Aucun retrait.
On sait que cette situation se modélise par une suite aritmético-géométrique (Un) qui vérifie :
Un+1 = …….. Un + …… et U0 = …………………
1. Ecrire en pseudo-code l’algorithme qui permet de calculer la somme acquise au bout de n années.
2. Ecrire l’algorithme qui permet au bout de combien d’années la somme sur le compte aura doublé.
Cours de Mr JULES v1.0 Classe de Terminale S spécialité ISN Contrat 5 Page 13 sur 16
C. Algorithme de recherche par dichotomie :
C’est l’algorithme de recherche utilisé par les candidats les plus malins au jeu du Juste Prix.
Le problématique est la suivante : on cherche une valeur inconnue k dans un intervalle [a, b] (avec a < b).
En considérant à chaque fois le milieu m de l’intervalle de recherche et en posant à chaque fois la même
question, on finit très rapidement trouver la valeur de k.
1. Ecrire en pseudo-code cet algorithme de recherche du Juste Prix par dichotomie.
2. Soit une fonction f continue et dérivable sur un intervalle I. On a réussi a identifié grâce au tableau
de variations et à un célèbre théorème (le …………………………………………………………….)
un intervalle [a, b] inclus dans I tel que l’équation f(x) = 0 admette une unique solution . On
suppose que f est croissante strictement sur [a, b].
Adapter l’algorithme précédent pour qu’il retourne un intervalle contenant avec une précision p.
Cours de Mr JULES v1.0 Classe de Terminale S spécialité ISN Contrat 5 Page 14 sur 16
VI. ALGORITHMES DE TRI.
Classer les contacts de son carnet d'adresse par ordre alphabétique, trier les résultats d'une recherche sur
internet par pertinence ou encore archiver ses mails les plus anciens sont des opérations courantes pour une
personne qui utilise un ordinateur. Elles ont toutes en commun le fait de mettre en œuvre une opération de
tri sur des données.
Mais ces quelques exemples anecdotiques, directement perceptibles par l'utilisateur, sont loin de représenter
l'étendue du champ d'application du tri en informatique. Le tri des données est notamment présent dans de
nombreux programmes en tant que phase intermédiaire. On retrouve ainsi des algorithmes de tri dans toutes
les applications et jeux 3D pour l'affichage des facettes des objets qui sont triées selon leur éloignement
(algorithme Z-sorting). Le tri est également massivement utilisé par les banques pour la gestion des
opérations bancaires.
C'est l'une des fonctions principales de l'algorithmique que de fournir des méthodes pour trouver dans un
grand nombre de données celles qui répondent à un critère, ou bien les trier selon leur nature.
De nombreux théoriciens de l'informatique considèrent le tri comme le problème le plus fondamental en
matière d'algorithmique.
Ainsi, le tri est une des principales opérations exécutées sur les ordinateurs. Des études tendent d'ailleurs à
montrer qu'environ un quart des cycles machine sont utilisés pour trier.
A. Trier des cartes :
Prendre les 11 cartes de pique suivante As, 2, 3 ................... 10. Les mélanger puis les trier.
Tout le monde a-t-il la même manière de les trier ?
B. Trier par une machine :
Aller sur le site internet sorting.at et découvrir les différents algorithmes de tri.
1. Citer différentes sortes de tri.
2. Quel est le critère principal de choix d’un algorithme de tri ?
Cours de Mr JULES v1.0 Classe de Terminale S spécialité ISN Contrat 5 Page 15 sur 16
Aller sur le site internet https://www.toptal.com/developers/sorting-algorithms et lancer la comparaison
des algorithmes de tri.
3. Expliquer les intitulés de ligne Random, Nearly Sorted, Reversed, Few Unique.
4. Remplir le tableau suivant :
Algorithme(s) de tri
le(s) plus rapide(s).
Algorithme(s) de tri
le(s) plus lent(s).
Jeu d
e donnée
s prises au hasard.
presque déjà triées en
ordre.
en ordre inverse.
peu de valeurs différentes.
5. Quels autres types de jeux de données serait-il aussi intéressant de tester pour affiner la comparaison
entre les tris ?
Cours de Mr JULES v1.0 Classe de Terminale S spécialité ISN Contrat 5 Page 16 sur 16
VII. MINI PROJET.
A. Activité : Tri par sélection, Tri par insertion, Tri à bulle.
Se mettre par groupe de 2 ou 3.
Aller sur le site internet Grains logiciel de L’INRIA, puis sélectionner « Les Méthodes de Tri ».
Sélectionner l’un des 3 tris et le faire fonctionner.
1. En observant le fonctionnement de ce tri, écrire son algorithme.
2. Traduire cet algorithme en langage Python.
B. Travail à rendre :
Synthèse de 4 pages :
• Page 1 : Introduction, problématique et le journal de bord.
• Page 2 : L’algorithme de tri et les explications-commentaires sur cet algorithme.
• Page 3 : Le programme en Python + explications et commentaires.
• Page 4 : Aller plus loin :
Influence du jeu de données sur le tri (pire cas ? meilleur cas ?).
Comment améliorer ce tri : variantes du tri ?