Activité n°2 : algorithmes, programmes et langages.
Objectif : comprendre le lien entre un algorithme et les opérations élémentaires de l’ordinateur.
Compétence travaillée :
Concevoir et réaliser une solution informatique en réponse à un problème.
Capacité à acquérir :
Dérouler l’exécution d’une séquence d’instructions simples de type
langage machine.
Comprendre un algorithme simple et expliquer ce qu’il fait.
Programmer un algorithme.
Voici deux programmes :
Programme n°1 écris en langage machine pour le Dauphin :
0101 0000 0001 0100 0101 0001 0001 0100 1000 0001 0000 0011
Programme n°2 écris en Python3 :
a = 3
b = 7
print("A vous de jouer")
x = int(input())
y = int(input())
if (x == a) and(y == b) :
print("Coulé")
else :
if (x == a) or (y == b) :
print("En vue")
else :
print("A l'eau")
Voici un algorithme, dit « de Delphe » :
Soit un nombre entier N
Soit un nombre entier M égal à N.
Enlever 1 à N : c’est la nouvelle valeur de N
Ajouter N à M : c’est la nouvelle valeur de M.
Recommencer jusqu’à ce que N soit nul.
Document 1 : algorithme et programme
Muhammad al-Khwarizmi (783 850), dans son ouvrage « le livre de l’addition et de la
soustraction d’après le calcul indien » présente la numération décimale dite « en base dix » et
les algorithmes permettant d’effectuer des opérations sur les nombres décimaux. Le mot
algorithme est d’ailleurs dérivé de son nom et le mot algèbre vient du titre d’un de ses livres.
Un algorithme est un procédé de résolution d’un problème donné. Il existe de très nombreux
algorithmes, comme celui de la division euclidienne, l’addition à retenue, les algorithmes de tri
par fusion ou par sélection, etc.
Statue d’al-Khwarizmi
Le plus ancien algorithme connu date de près de 2000 ans av. J-C : il s’agit d’une procédure
des ingénieurs babyloniens pour calculer le volume d’une citerne. D’autres sont aujourd’hui
l’objet de recherches intenses pour les élaborer, concernant les nombres premiers notamment.
Un algorithme une fois mis au point théoriquement, il faut passer des étapes écrites « sur le
papier » à l’écriture d’un programme, dans un langage donné, qui exécutera l’algorithme sur
une machine. Il existe plusieurs milliers de langages de programmation possibles pour
programmer un algorithme donné.
Tablette babylonienne décrivant
un algorithme de calcul de
2
Document 2 : langages de bas niveau et langages de haut niveau.
Il existe donc différents langages plus proches des langages humains. Les
langages qui manipulent directement la mémoire RAM, les registres et les
instructions de base du processeur sont dits « langages de bas niveau ». Le
langage de plus bas niveau est l’Assembleur. Il dispose d’un nombre limité
d’instructions simples. Ces instructions sont ensuite codées en langage machine,
on parle « d’assemblage ». Chaque famille de processeur possède son propre
assembleur.
A l’autre extrémité se trouvent les langages de haut niveau, comme les langages
Python3, JAVA, PHP, etc. Ils ressemblent fortement à l’anglais courant et sont
beaucoup plus clairs pour un programmeur, mais nécessitent une « traduction »
très complexe.
Exemples d’une instruction
En langage machine :
0101 0000 0000 0101
En assembleur :
MOVE #H’5, A
En python 3 : x = 5
Document 3 : ligne de commande, script et IDE
Le langage Python 3 s’exécute à l’aide d’un
programme appelé interpréteur.
L’interpréteur permet de travailler directement
en ligne de commande. Une instruction est
alors directement exécutée.
Pour écrire un programme complet, appelé
script, il faut recourir à un éditeur de textes,
comme par exemple wordpad ou notepad.
Avec le langage Python3, comme dans les
autres langage de haut niveau, il est plus aisé
de recourir à un logiciel appelé
« environnement de développement » (IDE en
anglais) qui regroupe à la fois l’éditeur de texte
et l’interpréteur.
Par exemple, avec le logiciel IDLE, on peut
ouvrir l’éditeur de text permettant d’écrire les
scipts en utilisant l’onglet « New window du
menu « File ».
Un tel éditeur de texte dispose d’une
coloration syntaxique, qui reconnaît les
spécificités du langage.
Le script peut ensuite être sauvegardé avec
l’onglet « Save », puis exécuté avec l’onglet
« Run Module » du menu « Run ».
Python en
ligne de
commande
Ecran
d’accueil de
IDLE
Ouverture de
l’éditeur de
script à partir
de l’écran
d’accueil
Pour
sauvegarder
le script
Pour
exécuter le
programme
La fenêtre
d’exécution
du
programme
Document 4 : les instructions fondamentales en informatique
Un programme informatique est une suite d’instructions. Il y a 5 instructions
principales :
L’affectation (ou assignation), une variable v reçoit une
expression e.
L’instruction d’entrée, qui interroge le clavier ou la souris, ou tout
autre périphérique.
L’instruction de sortie, qui produit un signal sur un périphérique.
Le test, une instruction ou plusieurs instructions sont
conditionnées par la valeur d’une expression booléenne.
La boucle, qui est une construction répétant une ou plusieurs
instructions en fonction d’une expression booléenne.
Lorsque plusieurs instructions semblables sont enchaînées, elles réalisent
une séquence. Une séquence est une suite d’instructions liées entre elles.
Un programme informatique, quelle que soit sa complexité, peut être vu
comme un assemblage de ces cinq instructions, qui interagissent entre elles.
Les instructions : x = 3
y = x+3
sont des instructions d’affectation
d’expressions à une variable, x dans le
premier cas, et y dans le second.
L’expression : x+3
n’est pas une instruction. C’est une
expression qui réalise une opération avec
l’opérateur + et les opérandes x et 3.
L’instruction d’entrée :
a = input()
affecte la valeur entrée au clavier à la
variable a. Pour que a soit un entier, il
faut écrire : a = int(input())
Document 6 : tutoriel et manuel Python
Comme de nombreux langages informatiques, il existe de nombreux tutoriel expliquant les bases du langage, ainsi que les
fonctionnalités avancées. Pour Python, le tutoriel du site du zéro : www.siteduzero.com est relativement bien adapté.
De même, un site est dédié au manuel de référence Python3, à l’adresse :
Feuille de route
1. Expliquer ce que fait le programme n°1.
2. Quels sont les types d’instructions données dans le programme n°2 ?
3. L’état de l’exécution du programme n°2 après les lignes 1 et 2 est représenté de la façon suivante :
Qu’est-ce que l’état de l’exécution d’un programme ? Indiquer les états suivants de l’exécution du programme
n°2.
4. Que fait l’algorithme dit « de Delphe » ?
5. Programmer l’algorithme proposé avec le langage Python3.
6. Comment vérifier que le programme réalise correctement l’algorithme ?
Pour aller plus loin.
Voici un programme écris avec l’assembleur du Dauphin :
valeur
de PC
Code de
l’instruction
en base 16
Instruction en assembleur
0
50
MOVE #H’14,A
1
14
2
51
MOVE #H’14,B
3
14
4
70
COMP #H'00, A
5
00
6
12
JUMP,EQ H’00E
7
00
8
0E
9
2C
DEC A
A
81
ADD A,B
B
10
JUMP H'004
C
00
D
04
E
03
HALT
Expliquer ce que fait ce programme et programmez-le en Python3
Modifier ce programme en Python3 afin qu’il puisse recevoir un nombre au clavier.
Ecrire un programme en Python3 qui calcule approximativement la valeur de la transition énergétique
susceptible d’être provoquée par un photon dont l’utilisateur rentre la longueur d’onde en nm.
Compléter ce programme afin d’afficher également la gamme de couleur du photon s’il est dans le
visible.
Une légende de l’Inde raconte que je jeu d’Echec a été inventé par un vieux sage. Le Roi, pour le
récompenser, lui demanda ce qu’il souhaitait. Le vieux sage demanda alors la récompense suivante :
« Pose un grain de riz sur la première case de mon jeu. Pose deux grains de riz sur la deuxième case, puis
quatre grains sur la troisième, et continue ainsi jusqu’à la dernière case. Je veux comme récompense le
nombre de grains sur cette dernière case. »
3
a
7
b
Ecrire un programme en Python3 qui calcule le nombre de grains de riz sur chaque case du jeu (en
admettant qu’on puisse effectivement les poser sur la case).
Peut-on dire du code génétique qu’il s’agit d’un programme ?
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !