Universit´e de Provence Algorithmique et
Licence Math-Info Programmation en Python
Premi`ere Ann´ee
V. Phan Luong
Cours 1 : Introduction
Ordinateurs - Langages de haut niveau - Application
1 Ordinateur
Un ordinateur a des composants principaux suivants :
M´emoire centrale pour m´emoriser les programmes et les donn´ees.
Unit´e de calculs arithm´etiques et logiques (Processeur).
Unit´e de gestion des p´eriph´eriques : Pour communiquer avec l’ext´erieur (utilisateurs,
d’autres ordinateurs, senseurs, etc), l’ordinteur doit g´erer les p´eriph´eriques comme le
clavier, l’´ecran, le souris, les disques (m´emoires secodaires), les cartes r´eseaux, etc.
La m´emoire centrale est organis´ee en mots (octets, bytes). Un octet est l’unit´e de base
de pour les m´emoires des ordinateurs. Un octet est compos´e de huit bits. Un bit est un
circuit ´electronique pour repr´esenter une valeur binaire : 0 ou 1.
Le Processeur peut ex´ecuter directement les op´erations arithm´etiques et logiques sur les
nombres binaires (cod´es sur 0/1) : les op´erations ainsi que leurs op´erands sont cod´es
en nombre binaire. Ces op´erations constituent ce que l’on appelle le langage machine.
Ainsi, un programme ex´ecutable directement par ordinateurs est une suite de 0 et 1. Un
tel programme est difficile `a ´ecrire et `a comprendre.
2 Langages de programmation
Pour rendre ordinateur facilement accessible et compr´ehensible plusieurs langages de
programmation sont progressivement invent´es : de plus simple `a plus sophistiqu´es. Le
principe est le suivant : Chaque langage est invent´e avec son compilateur (ou son in-
terpr´eteur). Le langage et son compilateur font l’interfa¸cage entre ordinateurs et hu-
mains : humains s’expriment ce qu’ils veulent faire dans un langage de programmation
1
et le compilateur du langage traduit ce qu’ils s’expriment en programme ex´ecutable
directement sur l’ordinateur. Le compilateur est bien sˆur un programme en langage
machine de l’ordinateur.
Un langage de haut niveau permet g´en´eralement une abstraction de l’organisation phy-
sique de l’ordinateur : les espaces de m´emoire peuvent ˆetre structur´ees et r´ef´er´ees par
noms, les op´erations arithm´etiques peuvent ˆetre exprim´ees de mani`ere plus proche aux
expressions usuelles, ainsi que les contrˆoles logiques de donn´ees. C’est-`a-dire, en ´ecrivant
un programme dans un langage de haut niveau, le programmeur peut oublier la machine
physique et `a cette place il condid`ere une machine virtuelle dont l’organisation g´en´erale
est :
La m´emoire centrale peut ˆetre organis´ee en donn´ees structur´ees (caract`eres, chaines
de caract`eres, nombres entiers, r´eels, tableaux, enregistrements de diff´erents champs,
etc).
A la place du processeur et ses op´erations de base coees en binaire, il peut ne pen-
ser qu’avec les op´erateurs usuels comme addition, soustraction, multiplication, racine
carr´e, logarithme etc, et les contrˆoles de calculs comme “si une condition est satisfaite
alors faire une suite d’op´erations, sinon faire autres choses” ou “tant qu’une condition
est satisfaite r´ep´eter une suite d’op´erations”.
A la place des unit´es de gestion de p´eriph´eriques, il peut ne penser qu’avec les
op´erations offertes par le langage, comme la connexion, l’ecriture et lecture sur les
p´eriph´eriques.
Ainsi, pour programmer une application dans un langage informatique de haut niveau,
on doit connaˆıtre :
1. Les structures de donn´ees (types de donn´ees) que le langage permet d’utiliser et
de d´efinir.
2. Les op´erations connues dans le langage ainsi que les moyens qui permettent de
d´efinir de nouvelles op´erations.
3. Les structures de contrˆoles permise dans le langage pour contrˆoler les calculs.
4. Les moyens pour communiquer avec l’ordinateur : les fonctions pour entrer les
donn´ees, appercevoir les r´esultats des calculs (clavier, souris, console de jeux, ´ecran,
2
imprimante).
De mani`ere intuitive, pour r´esoudre un probl`eme en utilisant un langage informatique
(une machine virtuelle) on peut imaginer que
La m´emoire centrale est comme une feuille de papier dans laquelle on se limite `a
dessiner les cadres pour les donn´ees dans les types pr´evus ou permis dans le langages.
On peut dessiner autant de cadres que l’on veut (en regardant `a l’espace de m´emoire
physique de l’ordinateur). Chaque cadre dessin´e correspond `a ce qu’on appelle une
variable. La notion de variable dans ce context correspond `a une zone de m´emoire
dans laquelle on peut mettre une valeur, puis lire la valeur mise dedans.
Toute variable est nomm´ee. L’affectation une valeur `a une variable correspond au fait
de mettre la valeur dans l’espace de m´emoire r´ef´erenc´ee par la variable. Soient X1,
X2, ..., Xk les noms de k variables, alors X1, X2, ..., Xk r´ef´erencent respectivement k
espaces de m´emoire. L’affectation d’une valeur Vi `a Xi (not´ee Xi = Vi ou Xi := Vi
ou Xi <- Vi, d´ependant de langages) correspond au fait de mettre la valeur Vi dans
l’espace de m´emoire r´ef´erenc´ee par Xi.
Dans les notations Xi = Vi (ou Xi := Vi ou Xi <- Vi), l’expression `a gauche du symbole
= (ou := ou <-) appel´ee G-valeur (L-value), repr´esente une espace de m´emoire o`u
l’on peut mettre `a tout moment une nouvelle valeur en ´ecrasant sa valeur courante.
L’expression `a droite, appel´ee D-valeur (R-value) repr´esente une valeur qui doit ˆetre
mis dans l’espace de emoire repr´esenee par la G-valeur. Consid´erer un exemple :
X1 = X1 + X2 + 5
On lit l’expression comme suit : “X1 re¸coit la somme de sa valeur courante et la valeur
courante de X2, plus 5”. Cette l’affectation n´ecessite la lecture des valeurs courantes
de X1 et X2, l’addition de ces valeurs avec 5, et la remise du r´esultat dans l’espace de
r´ef´erenc´ee par X1 ; la valeur courante de X1 est ecras´ee.
Un nom ne peut ˆetre `a gauche d’une affectation seulement si ce nom d´efinit une espace
de m´emoire et que le contenu de cette espace peut ˆetre modifi´e.
La communication entre humain et ordinateur peut se fait via le clavier (entr´ee stan-
dard) et l’´ecran (sortie standard) de l’ordinateur. D’autres entr´ees sorties sont les
fichiers ou les ports de communication de l’ordinateur (com1, com2, lpt, etc). Un lan-
3
gage de programmation fournit les fonctions pour saisir les donn´ees via le clavier et
afficher les donn´ees sur l’´ecran. Il fournit aussi les fonctions pour ´ecrire ou lire les
donn´ees dans les fichiers.
3 Une petite illustration
Probl`eme :
Etant donn´ees les valeurs des param`etres a et b, chercher la valeur de x qui satisfait
l’´equation a*x + b = 0.
3.1 Probl`eme math´ematique
Un ´el`eve de la classe 5i`eme sait comment r´esoudre cette ´equation. il sait qu’il faut
proc´eder les ´etapes suivantes.
a*x = -b
si a est diff´erente de 0 alors x = -b / a
sinon, si b = 0 alors l’´equation a l’infini de solutions,
sinon, pas de solution.
3.2 Probl`eme de programmation
Ecrire un programme dans un langage de programmation (une machine virtuelle) pour
r´esoudre l’´equation.
Ce que la machine virtuelle (python) sait faire : l’affectation, les op´erations arithm´etiques
et logiques, les contrˆoles d’ex´ecution, la saisie de donn´ees des p´eriph´eriques (clavier,
disques, ...), ´ecrire les donn´e´es sur l’´ecran, les disques (communication entre la m´emoire
centrale et les p´eriph´eriques).
Bien qu’elle sache faire chaque op´eration des ´etapes ´ecrites pr´ec´edemment, la machine
virtuelle ne sait pas l’invention du proc´ed´e ci-dessus, c’est-`a-dire, comment inventer
le d´eroulement des op´erations sous les contrˆoles de donn´ees : Ce qu’il ne sait pas est
l’algorithme pour r´esoudre le probl`eme.
4
Pour ´ecrire le programme il faut d’abord savoir comment esoudre le probl`eme (algo-
rithme). Ensuite, en utilisant un langage de programmation (une machine virtuelle), on
dite `a la machine ce qu’elle doit faire pour nous rendre la solution.
Pour programmer on peut se poser les questions suivantes.
Comment saisir la valeur de a et de b et les garder en m´emoire. Question de l’espace de
m´emoire et de types de donn´ees (entiers, r´eelles ?),
Probl`eme de calculs : Quelles sont les op´erations connues (division enti`ere, division
r´eelle) dans le langage et les contrˆoles que le langage sait faire (quand est ce qu’on peut
appliqiuer la division ?).
Probl`eme de communication homme/machine : probl`eme de pr´esentation afin qu’un
utilisateur peut utiliser facilement ce programme.
Une solution :
1) Fixer le type de donn´ees de a et b, et r´eserver les zones de m´emoires correspondant.
2) Saisir les valeurs de a et de b via le clavier et les mettre dans la zone de m´emoire
r´eserv´ees.
– Afficher un message pour inciter la saisie la valeur de a.
– Appeller une fonction pour accepter la donn´ee saisie et la mettre dans la zone r´eserv´ee
`a a ;
– Les mˆemes actions pour b.
3) Contrˆoler les calculs :
Si a est diff´erente de 0 alors calculer la division -b / a et affecter le r´esultat dans la zone
r´eserv´ee `a x ; pr´esenter (afficher) la valeur de x comme solution unique de l’´equation.
Sinon (a = 0), Contrˆoler la valeur de b :
Si b = 0, afficher un message indiquant qu’il y a un nombre infini de solutions. Sinon,
afficher un message indiquant qu’il n’y a pas de solution.
3.3 Particularit´es de Python
En Python, la d´eclaration d’une variable se fait par la premi`ere affection de valeur. Le
type de donn´ees de la variable est d´eduite `a partir de la valeur affect´ee. On ne doit
pas explicitement d´eclarer de variables. Les affectations suivantes `a la mˆeme variable
5
1 / 6 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 !