algorithmique - free

16
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.

Upload: others

Post on 17-Jun-2022

20 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ALGORITHMIQUE - Free

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.

Page 2: ALGORITHMIQUE - Free

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 ?

Page 3: ALGORITHMIQUE - Free

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 :

Page 4: ALGORITHMIQUE - Free

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 ?

Page 5: ALGORITHMIQUE - Free

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.

Page 6: ALGORITHMIQUE - Free

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 ?

Page 7: ALGORITHMIQUE - Free

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)

Page 8: ALGORITHMIQUE - Free

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

Page 9: ALGORITHMIQUE - Free

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

Page 10: ALGORITHMIQUE - Free

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)

Page 11: ALGORITHMIQUE - Free

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

Page 12: ALGORITHMIQUE - Free

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é.

Page 13: ALGORITHMIQUE - Free

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.

Page 14: ALGORITHMIQUE - Free

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 ?

Page 15: ALGORITHMIQUE - Free

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 ?

Page 16: ALGORITHMIQUE - Free

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 ?