Bureau d'étude PEIP - IS

Introduction à la programmation sous python

Le Bureau d'étude PEIP utilisera la programmation en python sous le système d'exploitation Linux. Nous allons d'abord voir comment nous familiariser avec ce système d'exploitation, puis nous verrons quelques bases de la programmation en python.

Les bases du système Linux

Linux est un système d'exploitation, tout comme Windows ou Mac OS. Plus précisément, Linux est une famille de systèmes d'exploitation, car elle se compose de plusieurs variantes : Mint, Ubuntu, Debian, RedHat,... Les ordinateurs de l'université sont équipés de Debian. Si vous avez l'habitude d'utiliser windows, vous remarquerez qu'il y a énormément de similarités : menu démarrer, possibilité de se déplacer dans les dossiers, de créer des fichiers, d'ouvrir des logiciels, etc.

Linux a toutefois la particularité de proposer une utilisation dite "en ligne de commande" très pratique quand on programme. Cela se fait via un terminal. Pour ouvrir un terminal, utilisez la procédure suivante :

CTRL + ALT + T

Dans le terminal qui vient de s'ouvrir, vous avez la possibilité de taper des commandes pour donner des instructions à l'ordinateur. Chaque commande sera écrite avec le clavier et sera lancée en appuyant sur la touche entrée. Commencez par entrer la commande suivante :

pwd

Le terminal vous affiche alors un résultat. En l'occurence, la commande pwd sert à savoir quel est le dossier de travail actuel. Regardez bien ce que vous a affiché votre terminal : c'est le répertoire ("directory" en anglais, ou dossier) dans lequel vous êtes actuellement. Celui-ci se présente sous la forme d'un chemin d'accès, reprenant le nom de tous les répertoires qu'il a fallut traverser depuis la racine de l'ordinateur pour en arriver jusqu'à ce répertoire. Notez que chaque commande possède une "aide" qui explique ce qu'elle fait. Cette aide s'appelle le "man". Entrez la commande ci-dessous et observez le résultat (appuyer sur q pour quitter ensuite).

man pwd

Vous pouvez lister le contenu du répertoire dans lequel vous êtes en utilisant la commande ls (essayez). Trouvez dans le man de ls ce que fais la commande suivante :

ls -a

On appelle "-a" une option de ls. Il est très courant de rajouter des options à des commandes pour modifier ce qu'elles font. Ce que le système appelle "les entrées commençant par ." sont en fait les fichiers cachés. Quel que soit les répertoire où vous vous trouvez, il y en a toujours au moins deux : "." et ".." ; ce sont en fait des raccourcis : "." signifie le dossier actuel, ".." signifie le dossier précédent (on parle de répertoire parent).

Vous pouvez créer un nouveau répertoire en utilisant la commande mkdir (pour "make directory"), suivie du nom du répertoire que vous voulez créer. Par exemple, pour créer un répertoire "test", on écrira :

mkdir test

Essayez de lancer à nouveau la commande ls, vous verrez que ce répertoire est apparu. Pour changer le répertoire de travail actuel (donc pour se déplacer dans les dossiers) on utilise la commande cd (pour "change directory") suivie du chemin qu'on souhaite suivre. Par exemple, pour se déplacer dans le dossier test :

cd test

Essayez de lancer la commande pwd et observez le changement. Pour supprimer un répertoire, il suffit de se placer dans son répertoire parent et d'utiliser la commande rmdir (pour "remove directory"). Par exemple, pour supprimer le dossier test :

cd ..
rmdir test

La première ligne "cd .." vient simplement du fait qu'on se trouvait dans le répertoire test, il fallait donc accéder à son répertoire parent.

Pour créer un fichier, on utilise la commande "touch" suivie du nom du fichier qu'on souhaite créer. Pour créer un fichier exemple.txt, on utilise la commande suivante :

touch exemple.txt

Utilisez la commande ls pour vérifier que le fichier a bien été créé. Depuis le terminal, il est aussi possible de lancer des logiciels. Par exemple, la commande "atom" sert à ouvrir l'éditeur de texte atom. Il est possible de dire directement au terminal qu'on souhaite ouvrir le fichier exemple.txt avec l'éditeur atom en écrivant :

atom exemple.txt

Le logiciel s'ouvre, et vous pouvez alors modifier le contenu du fichier avec atom. Si par hasard vous voulez supprimer le fichier exemple.txt, on utilise alors la commande rm (pour "remove").

rm exemple.txt

Utilisez la commande ls pour voir que le fichier a disparru.

Linux et python

Les fichiers de code python sont des fichier ".py". Dans ces fichiers, on entrera le code de notre programme (voir ci-après). Pour lancer ces programmes, il suffira d'appeler le logiciel python depuis un terminal avec le fichier contenant le code.

Supposons que j'ai, dans mon dossier de travail, un fichier "mon_premier_programme.py". Pour le lancer, j'ouvre un terminal, je me place dans le dossier où se trouve ce fichier, et j'entre la commande suivante :

python3 mon_premier_programme.py

Le résultat du programme s'affiche alors dans le terminal.

Bases de la programmation sous python

En programmation, chaque ligne de code est une instruction : elle donne des consigne à l'ordinateur sur le traîtement à effectuer. Fondementalement, un ordinateur n'est qu'une grosse machine à calculer. Pour preuve, entrez le code suivant dans un fichier python et exécutez le :

print(3+4)

la fonction "print" sert dire à l'ordinateur d'affichez dans le terminal, et l'ordinateur caclul lui même le résultat de l'opération.

Le premier type d'instruction que nous allons aborder est l'affectation. Cela consiste simplement à affecter une valeur à une variable. Une variable est une case en mémoire dans laquelle on va pouvoir stocker une valeur. Par exemple, affectez la valeur 15 à la variable "x" revient à dire qu'on va stockez la valeur 15 dans une case mémoire qu'on appelle "x". Voyez le résultat du code python suivant :

x = 15
print(x)

Pour python, ces variables se comportent exactement comme des opérandes classique : c'est à dire qu'il est possible de faire des opérations avec. Regardez le résultat du code python ci-dessous :

x = 15
y = x - 3
print(y)

De façon similaire, pouvez vous devniez à l'avance le résultat du code suivant :

x = 15
x = x + 1
print(x)

La seconde instruction que nous allons voir est le test : un test permet de vérifier si une condition est vrai ou non. Une condition peut être de la forme "x>10" (la variable x est supérieure à 10), "x>10 and x<20" (x est entre 10 et 20), "x>10 or x<5" (x est plus grand que 10 ou plus petit que 5),... On peut bien sûr complexifier autant qu'on le souhaite. Un test s'écrit de la façon suivant :

if (condition):
    instruction 1
    instruction 2
...
else :
    instruction 3
    instruction 4
...

On y remplace la condition par ce qu'on souhaite vérifier, et les instructions 1 et 2 par ce qu'on souhaite faire dans un cas comme dans l'autre (si elle est vrai ou si elle ne l'est pas).

Par exemple, imaginons qu'on veuille vérifier la valeur d'une variable "x" : si elle est inférieure à 0, alors on affiche le message "valeur négative" et sinon, on affiche "valeur positive" :

if (x<0):
    print("valeur négative")
else :
    print("valeur positive")

Enfin, les dernières instruction qu'il nous reste à voir sont les boucles. On distingue deux types de boucle : la boucle while ("tant que") et la boucle for ("pour"). Commençons par la boucle while. Elle sert à répéter des instructions tant qu'une condition est vraie. Sa syntaxe est la suivante :

while (condition):
    instruction 1
    instruction 2
    ...
instruction 3

Ici, tant que la condition est vraie, on va exécuter les différentes instructions contenue dans le corps de la boucle. On ne passera à l'instruction 3 uniquement une fois que la condition sera fausse. Il faut donc prendre garde à ce que les instructions du corps de la boucle puissent faire changer la confition à un moment, sinon on rentre dans ce qu'on appelle une boucle infinie.

La boucle for est un peu différente : elle fonctionne avec ce qu'on appelle un incrément (souvent notez i) qui varie dans un ensemble de valeur. Considérons par exemple la syntaxe suivante :

for i in range(0,10) :
    instruction 1
    instruction 2
    ...
instruction 3

Littéralement, cela veut dire "pour i dans l'ensemble des entiers de 0 à 10" (attention, 10 non inclus). Cela veut dire que dans le corps de la boucle, i est une variable qui prendra successivement les valeurs 0, puis 1, puis 2, puis 3... jusquà 9. On passera ensuite seulement à l'instruction 3.

Les fonctions en python

La plupart du temps, le code ne se placera pas comme ça au milieu d'un fichier texte. On l'incluera dans une fonction. Une fonction n'est rien d'autre qu'un nom qu'on donne à un morceau de code pour pouvoir le rappeler plus tard avec d'autres variables sans avoir à le réécrire. La définition d'une fonction se fait avec le mot clef "def" :

def nom_de_la_fonction(param1, param2,...) :
    instruction 1
    instruction 2
    ...
    return quelque_chose

Le mot clef "return" sert à dire ce que dois "renvoyer" la fonction, c'est à dire ce qu'elle doit produire comme résultat. Prennons un exemple : supposons que j'ai deux variables a et b et que je souhaite en caculer le carré. Je peux écrire la fonction carre(x) qui prendra la forme suivante :

def carre(x) :
    res = x*x
    return res
print(carre(a))
print(carre(b))

On utilisera le print pour afficher le résultat renvoyé par la fonction. On peut aussi utilisez ce résultat directement dans un calcul : par exemple si on veut calculer la somme des carrés de a et b, on pourra écrire "carre(a)+carre(b)", voire même écrire une fonction qui fait directement ce travail, et qui prend alors deux paramètres :

def somme_carre(x,y) :
    res = x*x+y*y
    return res
print(somme_carre(a_b))