SECTION 31 ALGORITHMIQUE - PROGRAMMATION.

7
MAthbirds Partie 5 section 31 1/7 ALGORITHMIQUE - PROGRAMMATION. : P5S31-épisode1. COURS. I- Rappels. 1°) Définitions. L’algorithmique est la science des algorithmes. Un algorithme est une succession d’instructions à enchaî- ner dans un ordre bien précis, permettant de résoudre un problème donné. exp. : Choisir un nombre. exp. : Lui ajouter 1. Multiplier le résultat par 2. Soustraire 3 au résultat. Afficher le résultat. 2°) Un peu d’Histoire et d’étymologie. Le mot algorithme vient du nom du mathématicien arabe (ou plus exactement persan) Al-Khwārizmī (IX ème siècle). Ce dernier est l’auteur du premier livre arabe connu où la numération décimale de position et les méthodes de calcul d'origine indienne sont expliquées en détail. Ce livre connut, dans les pays d'Europe, une telle renom- mée que le nom « Al-Khwārizmī » est devenu la désigna- tion même de ce système de numération. Latinisé, ce nom devient au fil du temps « Alchoarismi » puis « algorismi » pour se transformer au final en « algorithme ». Et sa définition de système décimal de position devient peu à peu la définition actuelle. Cependant l’utilisation des algorithmes est bien antérieure au IX ème siècle ; déjà vers 1800 avant J.C, les Mésopotamiens calculaient des valeurs approchées des racines carrées à l’aide d’algorithmes. Pour transcrire un algorithme sur un ordinateur, on utilise différents langages de programmation qui permettent de transcrire la série d’instructions que l’on souhaite faire effectuer de manière à être compris par un ordinateur. L’ordinateur les transcrit alors en langage binaire, car la struc- ture physique de sa mémoire ne lui permet de stocker que des informations pouvant avoir seule- ment 2 valeurs possibles : pour une machine, tout est donc soit 0 ou 1, soit ouvert ou fermé. SECTION 31 : algorithme transcrit en langage de pro- grammation programme entré dans l’ordinateur code transformé en langage binaire Statue d’al-khwarizmi a khiva (*) (en Ouzbekistan).

Transcript of SECTION 31 ALGORITHMIQUE - PROGRAMMATION.

Page 1: SECTION 31 ALGORITHMIQUE - PROGRAMMATION.

MAthbirds Partie 5 section 31 1/7

ALGORITHMIQUE - PROGRAMMATION.

: P5S31-épisode1.

COURS.

I- Rappels.

1°) Définitions.

L’algorithmique est la science des algorithmes.

Un algorithme est une succession d’instructions à enchaî-

ner dans un ordre bien précis, permettant de résoudre un

problème donné.

exp. ① : ● Choisir un nombre. exp. ② :

● Lui ajouter 1.

● Multiplier le résultat par 2.

● Soustraire 3 au résultat.

● Afficher le résultat.

2°) Un peu d’Histoire et d’étymologie.

Le mot algorithme vient du nom du mathématicien arabe

(ou plus exactement persan) Al-Khwārizmī (IXème siècle).

Ce dernier est l’auteur du premier livre arabe connu où

la numération décimale de position et les méthodes de

calcul d'origine indienne sont expliquées en détail. Ce

livre connut, dans les pays d'Europe, une telle renom-

mée que le nom « Al-Khwārizmī » est devenu la désigna-

tion même de ce système de numération. Latinisé, ce nom devient au

fil du temps « Alchoarismi » puis « algorismi » pour se transformer au

final en « algorithme ». Et sa définition de système décimal de position

devient peu à peu la définition actuelle.

Cependant l’utilisation des algorithmes est bien antérieure au IXème

siècle ; déjà vers 1800 avant J.C, les Mésopotamiens calculaient

des valeurs approchées des racines carrées à l’aide d’algorithmes.

Pour transcrire un algorithme sur un ordinateur, on utilise différents langages de programmation

qui permettent de transcrire la série d’instructions que l’on souhaite faire effectuer de manière à

être compris par un ordinateur. L’ordinateur les transcrit alors en langage binaire, car la struc-

ture physique de sa mémoire ne lui permet de stocker que des informations pouvant avoir seule-

ment 2 valeurs possibles : pour une machine, tout est donc soit 0 ou 1, soit ouvert ou fermé.

SECTION 31 :

algorithme transcrit en langage de pro-grammation

programme entré dans l’ordinateur

code transformé en langage binaire

Statue d’al-khwarizmi a

khiva(*) (en Ouzbekistan).

Page 2: SECTION 31 ALGORITHMIQUE - PROGRAMMATION.

MAthbirds Partie 5 section 31 2/7

Au collège, on utilisera surtout le langage SCRATCH ; au lycée, le langage PYTHON .

Mais il en existe beaucoup d’autres (BASIC, Logo, C++, Javascript, PHP...)

II- Installation du logiciel SCRATCH3 (rappel).

SCRATCH est un logiciel de programmation dont le langage éducatif est relativement simple et

proche de celui utilisé dans les algorithmes. Il permet, en plus des programmations mathéma-

tiques, des animations ludiques.

On peut utiliser SCRATCH en ligne : https://scratch.mit.edu/ (cliquer sur créer)

ou télécharger le logiciel : https://scratch.mit.edu/download

Vidéo « Présentation SCRATCH3. » : http://bit.ly/interfacescratchMB (Source vidéo : Educode.)

III- Les boucles.

En algorithmique et programmation, une boucle permet de répéter plusieurs fois une série d’ins-

tructions.

Il existe plusieurs types de boucles.

1°) Les boucles itératives.

Une boucle itérative (ou boucle avec compteur) est une boucle qui consiste à répéter la série

d’instructions un nombre de fois fixé à l’avance.

exp. ① : Dans SCRATCH, la boucle ci-dessous répète 10 fois la série d’instructions.

exp. ② : Avec PYTHON (et avec de nombreux autres langages et en particulier ceux des calculatrices pro-

grammables), on utilise la boucle for ..... in (en français : pour ..... dans) avec un comp-

teur i pour contrôler le nombre de « tours ».

range(1,6) (en français : plage 1 à 6) indique le début (ici 1) et la fin du compteur (ici 6,

mais 6 n’est pas inclus dans le compte donc le dernier est 5 !).

À chaque « tour », le compteur i augmente automatiquement de 1.

print( ) (en français : imprimer) indique à PYTHON qu’il va devoir afficher à l’écran ce qui

suit dans les parenthèses.

Les symboles "....." indiquent à PYTHON une phrase à écrire.

{} est un marqueur pour une valeur à compléter au fur et à mesure.

.format(i) (à la fin) indique à PYTHON de remplacer le {} précédent par les différentes

valeurs de i.

Quand on lance le programme, on obtient donc l’affichage :

Page 3: SECTION 31 ALGORITHMIQUE - PROGRAMMATION.

MAthbirds Partie 5 section 31 3/7

VALEUR

2°) Les boucles conditionnelles.

Une boucle conditionnelle est une boucle qui s’arrête sous certaines conditions.

exp. ① : Dans SCRATCH, la boucle ci-contre répète le déplacement du lutin jusqu’à ce que

l’on appuie sur la touche "espace".

exp. ② : Ici, PYTHON simule le programme de la jauge d’essence d’une voiture.

Il laisse le voyant d’alerte éteint tant que (en anglais : while) le niveau est supé-

rieur à 1

8.

3°) Les boucles infinies.

Une boucle infinie (qui n’existe que dans SCRATCH) est une boucle qui se répètera sans arrêt.

IV- Les variables.

Dans un programme informatique, on peut être amené à stocker provisoirement des données dans

l’ordinateur.

On utilise pour cela une variable. De manière imagé, une variable est comme une "boîte".

Sur cette "boîte", on y met une étiquette pour la repérer, c’est le nom de la variable.

La donnée que l’on place dans cette "boîte" est la valeur de la variable (elle peut être un nombre, un

mot...).

Pour avoir accès à la valeur de la variable (contenu de la "boîte"),

il suffit de la désigner par son nom (son étiquette).

Dans SCRATCH, si on veut stocker

plusieurs données en même temps,

on peut également créer une liste.

On obtient alors un tableau dans

lequel on peut placer les données

ligne par ligne.

Coin pour redimensionner la liste.

Page 4: SECTION 31 ALGORITHMIQUE - PROGRAMMATION.

MAthbirds Partie 5 section 31 4/7

exp. ① :

Dans cet exemple issu de SCRATCH, il y a quatre variables :

● « naissance » dans laquelle on transféra la valeur de « réponse » ;

● « réponse » qui recevra automatiquement la réponse à la question posée ;

● « actuel année » qui prend automatiquement la valeur de l’année actuelle (si l’ordinateur est

bien réglé...) ;

● « âge » qui prend la valeur de la différence entre l’année actuelle et « naissance ».

exp. ② :

Dans cet exemple issu de PYTHON, il y a trois variables :

● « rayon » qui prend la valeur du rayon entrée par l’utilisateur ;

● « P » qui prend la valeur du résultat du calcul du périmètre du cercle de rayon.

● « A » qui prend la valeur du résultat du calcul de l’aire du cercle de rayon.

Le = après le nom d’une variable, dans PYTHON, n’est pas un vrai égal mais il se lit :

« La variable ..... prend la valeur ..... ». (Le vrai égal s’écrit = =.)

exp. : La variable P prend la valeur du calcul 2×3,14159×rayon

input(" ")permet de poser une question et d’attendre une réponse entrée par l’utilisateur.

float( )indique que la variable est un nombre quelconque.

Il existe aussi int( )qui indique que la variable est un nombre entier.

print("A =", A, "cm².")signifie qu’il faut afficher la phrase « A = » suivie de la

valeur de la variable A suivie de la phrase « cm². ».

V- Les tests.

La résolution de certains problèmes nécessite la mise en place d’un test pour savoir si l’on doit

effectuer une tâche ; si le test est positif, on effectue la tâche ; sinon (c’est-à-dire si le test est né-

gatif) on effectue (éventuellement) une autre tâche.

Si la condition est remplie alors

on effectue la tâche,

sinon on effectue (éventuellement) une autre tâche.

Le « Sinon » n’est pas obligatoire. S’il n’est pas présent, aucune tâche ne sera effectuée si la

condition n’est pas remplie.

Affichage quand le programme est lancé pour rayon = 5.

Page 5: SECTION 31 ALGORITHMIQUE - PROGRAMMATION.

MAthbirds Partie 5 section 31 5/7

exp. ① : Avec SCRATCH, on a créé les variables :

Cet exemple de SCRATCH teste le Théorème

de Pythagore pour trois valeurs entrées par

l’utilisateur dans le but de savoir si le trian-

gle est rectangle ou non.

exp. ② : Jeu du Pile ou Face simulé par ordinateur...

On importe tout d’abord le module random (en français aléatoire).

randint(a,b)permet dans PYTHON au programme de choisir au hasard un entier compris

entre a et b (a et b inclus).

if ..... else ..... (en français : si ..... sinon ..... ) indique à PYTHON qu’il va devoir effectuer un

test. On remarquera que le « alors » n’est pas écrit mais est sous-entendu.

= = correspond au « vrai » égal.

Deux exemples d’affichage quand l’algorithme est lancé.

VI- Quelques briques utiles dans SCRATCH.

Dans CAPTEURS : Question pour obtenir une information de l’utilisateur et la variable automa-

tique de stockage de la réponse.

PILE

(1)

FACE

(0)

Page 6: SECTION 31 ALGORITHMIQUE - PROGRAMMATION.

MAthbirds Partie 5 section 31 6/7

Dans OPERATEURS : Regrouper des choses de natures différentes.

Dans OPERATEURS : On trouve les 4 opérations courantes ainsi que les comparateurs :

Si on veut programmer des calculs dans SCRATCH, ça se complique un peu

car le logiciel ne reconnaît pas ni les priorités ni les parenthèses, il faut

donc bien organiser le calcul pour obtenir le bon résultat...

Le calcul le plus à l’intérieur sera effectué en premier.

Exemple 1 :

Ça donnera le résultat 3.

Exemple 2 :

Ça donnera le résultat 12.

Connecteurs de conditions :

a modulo b permet d’obtenir le reste de la division euclidienne de

a par b.

qui choisit un nombre au hasard entre

les 2 bornes.

Si les bornes sont entières, le nombre aléatoire sera un entier.

Si les bornes sont décimales le nombre aléatoire sera un décimal.

Dans EVENEMENTS : Envoyer à tous message permet de faire communiquer entre eux les

lutins.

Quand je reçois message permet de démarrer une action à réception

du message.

Exemple : Texte + Valeur d’une variable

34 = 7 × 4 + 6 12 = 4 × 3 + 0

Il faut avoir les deux conditions en même temps.

Il faut avoir au minimum une des deux conditions .

*

3

12

6 0

Page 7: SECTION 31 ALGORITHMIQUE - PROGRAMMATION.

MAthbirds Partie 5 section 31 7/7

Fiche exercices 1 à 3 sur algorithme. (Voir Partie 6 : Annexes.)

: P5S31-épisode2.

Fiche exercices 4 à 6 sur algorithme. (Voir Partie 6 : Annexes.)

: P5S31-épisode3 « Problème du verger - Fibonacci. ».

Fiche exercices 7 à 9 sur algorithme. (Voir Partie 6 : Annexes.)

: P5S31-épisode4.

COURS.

VII- Sous-programmes.

Dans MES BLOCS : Cette catégorie permet de créer des sous-programmes.

Exemple d’écriture d’un

sous-programme qui

réalise un carré et de

son utilisation dans un

programme :

Fiche exercices 10 à .... sur algorithme. (Voir Partie 6 : Annexes.)

On écrit ici le nom du sous-programme.

L’ordinateur crée alors deux briques :

- une brique de définition sous lequel on écrira le

sous-programme :

- une brique d’appel qui permettra de lancer le sous-

programme :

Avec cette option, on peut également créer une

variable locale utilisée dans le sous-programme.

Pour utiliser cette variable, il suffit de cliquer sur

elle dans la partie « définir » et de l’emmener à

l’endroit voulu du sous-programme.