Un langage est un système de communication structuré.
Il permet d'exprimer une pensée et de
communiquer au moyen d'un système de signes (vocaux, gestuel,
graphiques, …) doté d'une sémantique, et
le plus souvent d'une syntaxe.
Un langage de programmation est un système de communication structuré.
Il permet d'exprimer un algorithme de façon à ce qu'il
soit réalisable par un ordinateur.
Il est doté d'une sémantique, et d'une syntaxe.
La syntaxe est l'ensemble des règles de bonne formation du langage.
Exemple avec du code Python:
1 + 4 # est syntaxiquement correct
1 / 'Bonjour' # est syntaxiquement correct
1 + # est syntaxiquement incorrect
La sémantique est l'ensemble des règles qui donne le sens des programmes bien formés
1 + 4 # est sémantiquement correct
1 / "Bonjour" # est sémantiquement incorrect
Oui !
Sur le cycle de Licence, au moins 5 langages
Dans ce cours, on utilisera exclusivement la version 3 du langage
C'est aussi cette version qui est maintenant au programme de 1ère et Tale
On considère le fichier salut.py
LIMIT=40 #On définit une variable globale
entree = input("Quel est votre age ?") #On lit une entrée de l'utilisateur
age = int(entree) #On la convertit en nombre
if age >= LIMIT: #On teste la valeur et on affiche
print ('Salut, vieux !')
else:
print ('Salut, toi !')
On peut exécuter ce programme dans un terminal :
$ python3 salut.py
Quel est votre age ? 38
Salut, toi !
$
On va se familiariser avec ses aspects, ainsi qu'avec le programme python3 et ses différents modes d'utilisation.
On privilégie pour les TPs un mode minimal
$ gedit exo1.py &
$
$ python3 exo1.py
Le programme python3 possède aussi un mode
interactif qui permet d'évaluer des instructions, comme un
shell.
Il suffit de lancer la commande python3 sans argument.
$ python3
Python 3.6.9 (default, Apr 18 2020, 01:56:04)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 1 + 1
2
>>> 3 * 10
30
>>> x = 42
>>> x + 10
52
>>>
On peut quiter avec CTRL-d
Le mode intéractif attend des instructions Python et les exécute au
fur et à mesure.
Il peut être utilisé pour tester des petits
morceaux de programmes.
Le mode programme : python3 interprète les lignes du fichier passé en argument.
En Python, les entiers peuvent être de taille arbitraire. Ils sont signés (on peut représenter les nombres positifs et négatifs) :
>>> 1
1
>>> -149
-149
>>> 1111111333333333332999999999999013000000000000003333333333333333
1111111333333333332999999999999013000000000000003333333333333333
Symbole | Description |
+ | addition |
- | soustraction |
* | multiplication |
/ | division exacte (résultat à virgule) |
// | division entière (résultat entier) |
% | modulo |
** | puissance |
>>> 1 + 1
2
>>> 27 - 100
-73
>>> 3 * 4
12
>>> 4 / 3
1.33333333333333
>>> 4 // 3
1
>>> 10 % 4
2
>>> 2 ** 100
1267650600228229401496703205376
>>> 3 + 4 * 7
31
>>> (3 + 4) * 7
49
>>> 1 / 0
Traceback (most recent call last):
File "", line 1, in
ZeroDivisionError: division by zero
En Python, les « nombres à virgule » ont une précision limitée. On les représente en utilisant la notation scientifique :
>>> 1.5
1.5
>>> -12.3423e13
-123423000000000.0
>>> 1.5555555555555555555555555
1.5555555555555556
Remarque : -12.3423e13 = -12.3423 × 1013 = -123423000000000.0
Attention : En Python, comme dans de nombreux langages, calculer avec des nombres à virgule (nombres flottants) peut provoquer des erreurs d'arrondi.
On utilise les mêmes opérations que sur les entiers. Il n'y a qu'une seule division (/)
>>> 1.5 + 1.5
3.0
>>> 3.141592653589793 * 2
6.283185307179586
>>> 10.5 / 3
3.5
>>> 1.2 + 1.2 + 1.2
3.5999999999999996
>>> 4.5 ** 100
2.0953249170398634e+65
>>> 1.0 / 0
Traceback (most recent call last):
File "", line 1, in
ZeroDivisionError: float division by zero
On représente les « textes » par des chaînes de
caractères.
>>> 'Bonjour, ça va bien ?'
'Bonjour, ça va bien ?'
On ne montre que quelques opérations sur les chaînes de caractères :
Symbole | Description |
+ | concaténation |
* | répétition |
len(s) | nombre de caractères |
>>> 'Bonjour' + ', ça va bien ?'
'Bonjour, ça va bien ?'
>>> 'Bonjour' * 3
'BonjourBonjourBonjour'
>>>len('Bonjour')
7
Attention : il existe des opérations plus complexes sur les chaînes, et plusieurs façons d'écrires celles ci. On verra cela au fur et à mesure.
Une variable est un moyen de donner un nom au
résultat d'un calcul.
En Python, une variable est une suite de caractères qui commence
par une lettre ou un « _ » et contient des lettres, des
chiffres ou des « _ ».
On définit une variable avec le symbole « = ».
>>> x = 314
>>> y = 2500 * 2
>>> x
314
>>> y
5000
>>> x + y
5314
>>> toto_A1 = x + y
>>> toto_A1 + 10
5324
Le but d'un programme est de lire des données, calculer des
résultats et les afficher. Les entrées peuvent êtres
de plusieurs sortes (lecture de fichiers, connexions réseaux, clics de souris, …). Les
sorties peuvent être de plusieurs sortes (écriture dans des
fichiers, connexions réseaux, affichage graphique, …).
On commence par deux opérations simples
En mode interactif, l'interpréteur affiche les résultats
intermédiaires entre chaque instruction.
En mode programme (liste d'instructions dans un
fichier .py) il fut utiliser des instructions pour
effectuer des affichages et saisir des données.
La fonction prédéfinie input() bloque le programme et
attend que l'utilisateur saisisse du texte et valide avec la
touche entrée.
La fonction renvoie le texte comme une chaîne de
caractères.
On peut donner en argument à input() une chaîne de
caractères qui sera affichée comme message.
nom = input('Entrez votre nom : ')
(suite sur le transparent suivant)
La fonction prédéfinie print(s) affiche la chaîne de caractères s passée en paramètre.
nom = input('Entrez votre nom : ')
print ('Bonjour, ' + nom + ' !')
Les lignes ci-dessus sont écrites dans un fichier bonjour.py
$ python3 bonjour.py
Entrez votre nom : Kim
Bonjour, Kim !
$
Considérons le programme suivant, écrit dans un fichier age.py :
annee = input('Entrez votre année de naissance : ')
age = 2020 - annee
print ('Vous avez ' + age + ' ans !')
$ python3 age.py
Entrez votre année de naissance : 1981
Traceback (most recent call last):
File "age.py", line 2, in
age = 2020 - annee
TypeError: unsupported operand type(s) for -: 'int' and 'str'
$
Ici l'opération 2020 - age est incorrect : on essaye de soustraire une chaîne de caractères d'un nombre.
La fonction prédéfinie int(s) permet de convertir une chaîne de caractères numériques en nombre. On essaye de corriger le programme age.py :
annee = input('Entrez votre année de naissance : ')
age = 2020 - int(annee)
print ('Vous avez ' + age + ' ans !')
$ python3 age.py
Entrez votre année de naissance : 1981
Traceback (most recent call last):
File "age.py", line 3, in
print ('Vous avez ' + age + ' ans !')
TypeError: can only concatenate str (not "int") to strTraceback (most recent call last):
$
Il y a une autre erreur. On essaye de concaténer (« coller ») des chaînes de caractères et un nombre.
La fonction prédéfinie str(v) permet de convertir une valeur v en chaîne de caractères. On peut corriger complètement le programme age.py :
annee = input('Entrez votre année de naissance : ')
age = 2020 - int(annee)
print ('Vous avez ' + str(age) + ' ans !')
$ python3 age.py
Entrez votre année de naissance : 1981
Vous avez 39 ans !
Attention cependant, la fonction int() peut déclancher une erreur :
$ python3 age.py
Entrez votre année de naissance : Toto
Traceback (most recent call last):
File "age.py", line 2, in
age = 2020 - int(annee)
ValueError: invalid literal for int() with base 10: 'Toto'
Lorsqu'une erreur se produit en mode programme, le programe
Python s'interrompt.
Le message d'erreur indique la ligne ou se situe l'erreur et la
raison de cette dernière.
En mode interactif, la ligne n'est pas affichée (c'est forcément la dernière ligne saisie), et l'invite attend de nouvelles instructions Python.
Les tests sont des instructions fondamentales en
programmation.
Ils permettent de donner au programme un comportement
différent selon le résultat du test.
De manière simplifié, un test est composer de trois éléments :
L'algèbre de Boole (George Boole, 1847) est une branche de
l'algèbre dans laquelle on ne considère que deux valeurs
: True et False.
Les opérations sur ces valeurs sont la négation (not), le « ou
logique » (or) et le « et logique » (and).
On peut manipuler ces objets en Python, comme on le fait avec des
entiers, des nombres à virgule ou des chaînes de caractères.
>>> True
True
>>> False
False
>>> not (True)
False
>>> True or False
True
>>> True and False
False
Les booléens servent à exprimer le résultat d'un test. Un cas particulier de test sont les comparaisons. Les opérateurs de comparaisons en Python sont :
Symbole | Description |
== | égal |
!= | différent |
< | inférieur |
> | supérieur |
<= | inférieur ou égal |
>= | supérieur ou égal |
Attention : dans les premiers cours on ne comparera que des nombres. Les comparaisons d'autres types (chaînes de caractères par exemple) seront expliquée plus tard.
Le résultat d'une comparaison est toujours un booléens (True ou False) :
>>> 2 == 1 + 1
True
>>> 3 <= 10
True
>>> x = 4
>>> x > 3 and x < 8
True
>>> not (x == 4)
False
Attention : ne pas confondre « = » (affectation d'une variable) et « == » (égalité).
La syntaxe de l'instruction if est :
if e:
i1
i2
...
else:
j1
j2
...
suite
Python est un langage dans lequel l'indentation
est significative. C'est à dire qu'on ne peut pas mettre des
retours à la ligne ou des espaces n'importe où.
L'indentation indique des blocs d'instructions qui
appartiennent au même contexte. Exemple :
x = 45
if x < 10:
print ("on a testé x")
print ("x est plus petit que 10")
Le code ci-dessus n'affiche rien.
x = 45
if x < 10:
print ("on a testé x")
print ("x est plus petit que 10")
Le code ci-dessus affiche « x est plus petit que 10 ». L'absence d'indentation mets le deuxième print en dehors du if
En Python, l'indentation joue le même rôle que les accolades en C++
int x = 45
if (x < 10) {
print ("on a testé x");
print ("x est plus petit que 10");
}
int x = 45
if (x < 10) {
print ("on a testé x");
}
print ("x est plus petit que 10");
(attention, il n'y a pas de fonction print prédéfinie en C++, c'est juste pour l'exemple)
On peut ajouter des commentaires dans un fichier Python.
Un commentaire est toute séquence de caractères qui commence par
« # » jusqu'à la fin de la ligne.
Les commentaires sont ignorés par l'interpréteur Python.
Ils sont là pour aider les personnes qui écrivent le code ou qui le
lisent.
Il est très important de commenter judicieusement son code.
if x > 10 and x < 100:
# x est dans les bonnes bornes de température
y = x * 10
else:
# trop froid ou trop chaud, on réinitialise y
y = 0
C'est particulièrement important pour faire le lien entre les objets manipulé par le langages et les concepts « humains » qu'ils représentent.
LIMIT=40 #On définit une variable globale
entree = input("Quel est votre age ?") #On lit une entrée de l'utilisateur
age = int(entree) #On la convertit en nombre
if age >= LIMIT: #On teste la valeur et on affiche
print ('Salut, vieux !')
else:
print ('Salut, toi !')