Algo & Prog 1 Python : TP séance 01
Mise en place
- Démarrez une session Linux (machine virtuelle LUNIX en salle de TP).
-
Ouvrez un terminal (par exemple un "terminal MATE" en salle de TP). Voici un rappel des commandes qui vous seront utiles :
Commandes utiles dans un terminal
-
pwd
: pour afficher le répertoire courant (Print Working Directory) -
cd
répertoire : pour aller dans le répertoire (Change Directory) -
cd ..
: pour revenir dans le répertoire parent -
ls
: pour afficher le contenu du répertoire courant (LiSt content) -
ls
répertoire : pour afficher le contenu du répertoire -
mkdir
répertoire : pour créer un répertoire (MaKe DIRectory) -
rmdir
répertoire : pour supprimer un répertoire vide (ReMove DIRectory) -
mv
ancien_nom nouveau_nom : pour renommer un répertoire ou un fichier (MoVe) -
rm
nom_fichier : pour supprimer un fichier (ReMove) -
cat
nom_fichier : pour afficher un fichier dans le terminal (conCATenate) -
gedit
nom_fichier.py&
: pour éditer un fichier en tâche de fond (symbole&
) -
python3
nom_fichier.py : pour exécuter le programme Python.
Si dans un nom il y a des espaces, il faut le protéger avec des
""
. Par exemple :
ls "Mes Documents"
. -
-
Créez un répertoire
python-TPxx-NOM1-NOM2
, en replaçantxx
par le numéro de la séance,NOM1
par votre nom de famille,NOM2
par le nom de famille de votre binôme oumono
si vous êtes seul(e). Il ne doit y avoir aucun espace ou apostrophe dans le nom du répertoire.mkdir python-TPxx-NOM1-NOM2
-
Allez dans ce répertoire :
cd python-TPxx-NOM1-NOM2
-
puis ouvrez
gedit
en tapant :gedit &
-
Découpez mentalement votre écran en 4, placez la fenêtre de
gedit
sur un quart en haut, le terminal sur le quart en dessous, et le navigateur avec cet énoncé sur la moitié à côté. -
Dans le navigateur, ouvrez au moins 2 onglets, l'un avec le cours, l'autre avec cette planche de TP.
-
Configurez
gedit
en allant dans Edition / Préférences, ou ☰ / Préférences :- Affichage : afficher numéros de ligne, marge à 80 ;
- Éditeur : largeur des tabulations à 4, espaces au lieu de tabulation ;
- Greffons : commentateur de code (vous pourrez ensuite commenter/décommenter des lignes en faisant CTRL-M ou CTRL-SHIFT-M), indicateurs d'espaces.
Rendu du TP
Tous vos fichiers devront être sauvegardés dans votre répertoire
python-TPxx-NOM1-NOM2
pour cette séance.
Dans chaque fichier il doit y avoir au début en commentaire : vos NOMS Prénoms ainsi que ceux de votre binôme éventuel.
À la fin de la séance, compressez le répertoire
sous la forme d'une archive au format tgz
puis téléversez l'archive
sur la page Ametice,
même si vous n'avez pas fini la planche de TP.
Dans le cas où le TP n'est achevé, il vous est demandé de le terminer chez vous, puis de re-téléverser l'archive dans sa version finale, avant le début de la séance suivante.
Compresser le répertoire
Pour compresser le répertoire, vous pouvez faire clic droit / compresser dans le gestionnaire de fichier, ou taper dans le terminal :
cd ..
tar cvfz python-TPxx-NOM1-NOM2.tgz python-TPxx-NOM1-NOM2
ls
cd python-TPxx-NOM1-NOM2
Exercice 1 : résolution équation second degré, saisie, fonction
1.a. Programme
Écrivez un programme racine2.py
qui demande de saisir au clavier 3 réels
\(a, b, c\) puis affiche les solutions réelles de l'équation
\(ax^2 + bx + c = 0\).
1.b. Vérification
Vérifiez à l'aide d'exemples les 3 cas de figure.
1.c. Fonction
Déplacez le calcul du discriminant dans une fonction
calculer_discriminant (a, b, c)
Positionnez cette fonction avant le programme principal.
Utilisez cette fonction dans la résolution de l'équation, et re-vérifiez.
Exercice 2 : résolution équations linéaires, méthode de Cramer
2.a. Programme
Écrivez un programme lineaire2.py
qui demande de saisir au clavier 6 réels
\(a_1, b_1, c_1, a_2, b_2, c_2\).
2.b. Fonction
Rajoutez (au début) une fonction calculer_determinant (x1, y1, x2, y2)
qui
renvoie la valeur du déterminant
\(\left|\begin{array}{cc} x_1 & x_2\\ y_1 & y_2\end{array}\right|\) .
2.c. Cramer
Affichez par la méthode de Cramer les solutions du système : \(\left\{\begin{array}{l} a_1 x + b_1 y = c_1 \\ a_2 x + b_2 y = c_2 \end{array}\right.\)
2.d. Vérification
Vérifiez sur des exemples les différents cas de figure.
Exercice 3 : découverte TkInter, dessin polygones réguliers
Dans cet exercice on utilise TkInter pour faire des dessins. TkInter est déjà installé sur les machines en salle TP. Pour reproduire cet exercice chez vous sous Ubuntu ou WSL, vous pouvez installer TkInter en tapant dans un terminal :
sudo apt-get install python3-tk
3.a. Fenêtre de dessin
Recopiez le programme suivant dans un fichier et testez-le.
ne nommez pas votre fichier tkinter.py
car cela provoquerait un
import circulaire !!
# 1) Les imports
import tkinter, sys
# 2) Les fonctions
# 3) Le programme principal
fen_princ = tkinter.Tk() # Init tkinter et crée fenêtre principale
larg = 400 ; haut = 300
zone_dessin = tkinter.Canvas(fen_princ, bg="white", width=larg, height=haut)
zone_dessin.pack() # Accroche la zone de dessin dans la fenêtre
zone_dessin.create_text(20, 10, text="Ceci est du texte", anchor="nw")
zone_dessin.create_line(30, 200, 330, 100, fill="blue")
fen_princ.mainloop() # Attend la fermeture de la fenêtre
3.b. Saisie
Au début du programme principal (partie 3), demandez de saisir au clavier le
nombre de sommets entier nb_sommets
d'un polygone.
Si nb_sommets
est strictement inférieur à 2, affichez une erreur et quittez
le programme en appelant la fonction sys.exit()
.
Remplacez "Ceci est du texte"
par "Polygone régulier à ... sommets"
,
en utilisant la concaténation et l'opérateur str()
,
ou un f-string.
3.c. Fonction
Déclarez cette fonction dans la partie 2) :
dessiner_polygone (zone_dessin, x_centre, y_centre, rayon, n_sommets)
Dans la fonction, affichez de manière provisoire une petite croix centrée
sur (x_centre
, y_centre
) de rayon rayon
, dessinée avec un segment horizontal
et un segment vertical, en vous servant de zone_dessin.create_line
.
Pour les paramètres de create_line
, voir l'exemple, ou la
documentation de Canvas.
Appelez la fonction dessiner_polygone
dans le programme principal, à la place
de l'appel de zone_dessin.create_line(...)
, en lui passant en paramètres le
centre de la zone de dessin, un rayon un peu plus petit que le rayon de la
zone de dessin, et le nombre de sommets.
3.d. Dessiner un polygone
Écrivez le corps de la fonction dessiner_polygone()
de manière à dessiner un
polygone régulier centré en (x_centre, y_centre)
, du nombre de sommets et
rayon passés en paramètres, et dont le premier sommet (numéro 0) est situé en
(x_centre+rayon, y_centre)
.
Remarque : vous aurez très certainement besoin de math.sin
et math.cos
3.e. Affichage multiple
Agrandissez la fenêtre, mettez la saisie du nombre de sommets en commentaire, affichez côte à côte sur plusieurs rangées des polygones réguliers de nombre de sommets successifs à partir de 2, ainsi que leur nombre de sommets en bas à droite de chaque polygone.