• Aucun résultat trouvé

D ÉVELOPPEMENT I NTÉGRÉ (IDE) E NVIRONNEMENTDE

N/A
N/A
Protected

Academic year: 2021

Partager "D ÉVELOPPEMENT I NTÉGRÉ (IDE) E NVIRONNEMENTDE"

Copied!
8
0
0

Texte intégral

(1)

E NVIRONNEMENT DE

D ÉVELOPPEMENT I NTÉGRÉ (IDE)

OBJECTIF :L’objectif de ce tp est de rendre l’élève capable de :

• gérer efficacement un ensemble de fichiers correspondant à des versions successives d’un fichier source

• manipuler un environnement de développement.

travailler avec Python à travers deux interfaces Idle et Pyzo

• rechercher une information au sein d’une documentation en ligne et d’analyser des exemples fournis dans cette docu- mentation (ici, le sujet du Tp)

1 Organisation !

1.1 A la racine

Les fichiers et répertoires sont organisés sous forme arborescente :

• La racine est le répertoire qui contient tout. Il se note"/".et contient un certain nombre de sous-répertoires, dont, en général :

etc : contient les fichiers de configuration du système, accessible seulement par l’administrateur système.

bin : contient les exécutables des programmes de base (binary).

usr : contient les autres exécutables (user).

var : contient fichiers variables tels que journaux systèmes, messages, fichiers temporaires.

home : contient les répertoires utilisateurs.

dev : périphériques (devices).

tmp : fichiers temporaires.

media : disques durs et clef USB (pratique quand on lance Linux depuis une clé USB ou un Dvd bootable). . .

• le répertoire courant s’obtient avec".", le répertoire parent avec"..". Le répertoire de l’utilisateur logué est rac- courci en"~".

1.2 Changement de répertoire

La commandecd nom_du_repertoire(pour change directory) permet de changer de répertoire.

Q - 1 : Se placer à la racine en tapantcd /. Retrouver les éléments sus-nommés en tapant la commandels. Q - 2 : Tapercd home, puislspour voir apparaître votre nom. Entrer dans votre répertoire.

REMARQUE: penser à utiliser la toucheTabpour la complétion automatique. La console devient alors plus rapide que le clicodrome !

(2)

REMARQUE:une double tabulation retourne tous les résultats possibles.

1.3 Dossiers

Pour bien organiser le travail, il convient de ranger les choses.

La commande mkdir ./cheminnomDuRepertoire nom_nouveau_repertoire (make directory) permet de créernom_nouveau_repertoire dans cheminnomDuRepertoire qu’on veut créer. Si le répertoire courant est celui dans lequel on veut créer le nouveau dossier, il n’est alors pas nécessaire de taper./cheminnomDuRepertoire. La commandermdir(remove directory) permet de supprimer un répertoire.

mkdir Python

Q - 3 : Dans votre répertoire personnel, créer un dossierPython.

Chaque Tp devra être rangé dans son dossier.

Q - 4 : Créer alors les dossiersTp-info-1etTp-info-2dans le répertoirePython.

Q - 5 : A l’aide de la commandecdpasser d’un répertoire à l’autre, notamment, passer deTp-info-1 à Tp-info-2à l’aide de la commandecd ../Tp-info-2.

2 Environnement de développement intégré (IDE)

Coder dans un langage déterminer nécessite un environnement de travail adapté. On appelle cet environnement un IDE pour Intergrated Development Environment. Nous en rencontrerons plusieurs :

Idle : progamme en Python . léger et basique, il s’utilise simplement

Pyzo : programme en Python . Tout comme Spyder , son environnement regroupe un ensemble de fonctionnalités utiles pour du calcul numérique

Scilab : programme en. . . Scilab. Destiné au calcul numérique, dans ce domaine, il est moins lourd à trainer que Python .

2.1 Interpréteur

Depuis la console, se placer dans le répertoirePythoncréé précédemment et exécuter la commandeidle3(le 3 signifie que l’on utilise la version 3 de Python).

Il apparaît une fenêtre appelée Python Shell, qui est l’interpréteur (littéralement l’emballage) de commandes Python.

Q - 6 : Exécuter (taperEnter) successivement dans l’interpréteur les expressions suivantes et comprendre ce qu’elles font.

1 2+5 2 2**5 3 2.1/3.5 4 19.0/5.0 5 19//5 6 19/5 7 19%5

(3)

C’est sympa mais Python est un peu plus qu’une calculatrice.

2.2 Editeur

Pour sauvegarder le travail, il convient d’utiliser l’éditeur. Ce dernier permettra d’écrire les instructions puis les programmes à venir dans un fichier (.py). Il sera possible de le partager le fichier et de l’exécuter.

Q - 7 : Dans l’interpréteur Idle, avec le raccourciCtrl+ncréer un premier fichier Python .

Pour exécuter les instructions dans l’éditeur, cliquer surRunou presser la toucheF5.

Q - 8 : Tester l’éditeur en entrant les mêmes instructions que celles tapées précédemment dans l’interpréteur.

2.3 Fichier Tp

Chaque Tp pourra être évalué. Il vous faudra rendre un document permettant de suivre votre travail.

Q - 9 : Dans votre répertoirePython, créer un fichier appeléPCSI-2-nom-Tp-.py. Pour ceux qui n’au- raient pas compris, il faut remplacernompar votre nom. . .

Q - 10 : Editer ce fichier pour y entrer l’entête suivante :

1 """

2 Auteur : Prénom Nom

3 Date : 2015/mm/jj

4 Thème :

5 """

6

7 # Question 1 :

REMARQUE:les geeks utilisant Emacs sous linux pour taper leurs codes LATEX, Python et autres, doivent rentrer les lignes suivantes :

1 #! /usr/bin/env python 2 # -*- coding: Utf-8 -*-

Lorsqu’on partage des programmes, il est important de préciser la nature de l’encodage et avec quelles versions ils doivent être compilés.

Q - 11 : A l’aide de la commandecp, copier votre fichier général dans le dossierTp-Info-2.

Depuis le dossierPython, cela donne : cp ./PCSI-2-nom-Tp-.py ./Tp-Info-2/PCSI-2-nom-Tp-2.py REMARQUE:On a profiter de la copie pour renommer le fichier.

2.4 Sauvegardes

Il n’est pas rare en programmation d’avoir à effacer une partie du travail pour repartir sur de bonnes bases. Afin de ne pas tout perdre, il est important de conserver parfois des versions. Pour s’y retrouver on peut ajouter au nom du fichier soit :

(4)

• le numéro de version (V-1234)

• la date (2015-09-22)

• l’heure (16-33)

• un commentaire (Essai-par-dichotomie)

• une combinaison des précédentes possibilités (2015- 09-22-methode-implicite)

ATTENTION!il est préférable de ne mettre ni caractère accentué ni espace dans le nom des fichiers et des dossiers.

3 Jouons avec Python !

3.1 Commentaires, entrée/sortie et affectation : #, input, print, =

Q - 12 : Recopier le programme suivant dans la fenêtre principale:

1 print ( " Bonjour le monde ! " )

2 # On demande maintenant l e nom de l’utilisateur 3 nom = input ( " Ecrire votre nom : " )

4 print ( " Bonjour " , nom)

Dans l’exemple,nomest unevariable. Elle stocke la chaîne de caractère entrée par l’utilisateur. La commandeinputper- met d’entrer du contenu à partir du clavier.

L’opérateur=est l’opérateur d’affectation(assignation pour les barbares anglo-saxo pseudo-branchés). Il permet d’écrire des données dans une variable. L’affectation se fait toujours de la droite vers la gauche, c’est-à-dire que la valeur à stocker doit toujours être du côté droit du signe égal alors que le nom de la variable dans laquelle on veut stocker cette valeur est toujours du côté gauche. Il est ensuite possible d’utiliser cette variable dans le programme.

Le texte derrière le croisillon#est un commentaire. Il n’est pas pris en compte par Python , mais permet de rendre plus clair un programme par le lecteur. On peut également librement sauter des lignes dans un programme.

Q - 13 : Modifier le programme pour obtenir et afficher le nom et le prénom de l’utilisateur 3.2 Python 2 vs Python 3

Q - 14 : Reprendre les instructions tapées à la partie 2.1 en utilisant Python 2.7. Y-t-il un problème ? ATTENTION!dans le futur être très vigilant ! N’utiliser que Python 3.

3.3 Un peu d’autonomie

REMARQUE:pour ne pas tout compiler, il est possible de mettre en commentaire les exercices précédent. Pour cela, il suffit de sélectionner des lignes et de presser les toucheAlt+maj+3. Deux##apparaissent sur la gauche. Pour faire l’opération inverse presser les toucheAlt+maj+4.

Jouons. Faire en toute autonomie au moins un des trois jeux suivants : Q - 15 : Écrire un programme qui élève un nombre au cube.

(5)

Q - 16 : Écrire un programme qui, partant du prix hors taxe d’un article, ajoute la TVA (de 20%) et affiche "Le prix TTC est de. . . "

Q - 17 : Écrire un programme qui demande le prénom et l’année de naissance d’une personne, puis qui renvoie une phrase comprenant le prénom et l’âge de la personne.

4 Structures plus élaborées

Au commencement était l’interpréteur dans lequel on tapait les instructions. C’était rapide mais pas réutilisable. L’éditeur fut donc introduit afin de conserver le programme dans un fichier, l’exécution se faisant souvent avec la toucheF5(Python , Pyzo ).

Pour enrichir le programme, nous allons introduire des structures plus élaborées.

4.1 Fonctions

Une fonction est un objet qui prend des valeurs en paramètres et, après calculs, manipulations et autres, renvoie un autre objet via l’instructionreturn. Un fonction correspond donc à un ensemble d’instructions que l’on pourra appeler plus loin dans le programme, ce qui évitera de réécrire plusieurs fois de suite les mêmes instructions ou types d’instructions.

Une fonction s’introduit avec le mot-clédefet il ne faudra pas oublier le caractère:en fin de première ligne pour dire à Python qu’un nouveau bloc commence.

EXEMPLE:fonction prenant 3 paramètres en entrée:

1 def ma_fonction(param1,param2,param3):

2 instruction1 3 instruction2

4 return objet_a_renvoyer

On peut remarquer que les lignes 2 à 4 des instructions ci-dessus sont décalées. On dit qu’elles sontindentéesd’unetabulation (cf touchetab du clavier). L’indentation est capitale en Python . Un retour à la ligne signe la fin de la définition de la fonction.

Q - 18 : Écrire les lignes suivantes dans l’éditeur et tapertab(3,4)dans l’interpréteur :

1 # Question 18 : 2 def tab(a,b):

3 res=a*b

4 return print(a,’ * ’,b,’ = ’,res)

Comme il est soûlant dŠécrire dans l’éditeur et tester dans l’interpréteur vous pouvez inclure le test dans le programme.

Cela permettra à votre gentil correcteur de tester très rapidement vos fonctions. . .

1 # Question 18 : 2 def tab(a,b):

3 res=a*b

4 return print(a,’ * ’,b,’ = ’,res) 5

6 # Test de la Question 18 7 tab(3,4)

(6)

Voilà qui est pratique mais dans la vraie vie, on aime bien récupérer la sortie d’une fonction. On évitera donc lesprint dans la fonction et on les gardera uniquement pour le débogage et l’observation des résultats.

1 # Question 18 : 2 def tab(a,b):

3 return a*b 4

5 # Test de la Question 18 6 print(tab(3,4))

4.2 Utilisation des bibliothèques

Nous sommes maintenant capable de créer nos fonctions. On peut aussi utiliser celles des autres pour gagner du temps ! De plus, ces fonctions sont parfois optimisées pour s’exécuter très rapidement.

EXEMPLE:: on souhaite calculer la racine carrée ou le sinus d’un nombre. Le Python ne dispose pas, de base, de la fonc- tion racine carrée. Pour pouvoir en bénéficier, il faut utiliser une bibliothèque de fonctions (que l’on appelle aussi module).

Dans notre cas, nous allons importer la bibliothèque math.

Pour cela, il faut écrire, en tête du programme, une des lignes suivantes :

• from math import *: on importe alors la totalité de la bibliothèque mathématique

• from math import sqrt, sin, pi: on importe alors uniquement les deux fonctions souhaitées

• import math as m: on écrira alors12 m.sqrt(3)(resp.m.sin(pi/4)) pour calculer 2.√

3 (resp. sin(π/4)).

Voici quelques fonctions de la bibliothèque math :

sqrt() Racine carrée d’un nombre pow(x ,y) Calcule x à la puissance y

sin() Sinus d’un angle (en radian) cos() Cosinus d’un angle (en radian)

tan() Tangente d’un angle (toujours en radian) pi Une valeur approchée précise du nombreπ

Q - 19 : En physique, on montre que pour une faible amplitude d’oscillation, la période d’oscillation T d’un pendule simple de longueur l est donnée par la formule : T =2.π.

ql

g avec g = 9, 81m.s2. Écrire un programme qui donne la période d’oscillation en fonction de la longueur l indiquée par l’utilisateur.

4.3 Instructions conditionnelles

Lorsque dans un programme plusieurs cas se présentent et que des tests sont nécessaires, il est possible d’utiliser la structure suivante :

• ifapparaît toujours sur la première ligne de la structure conditionnelle.

• elifapparaît si au moins un deuxième test doit avoir lieu

1. Cette méthode peut sembler un peu lourde de prime abord. Elle permet toutefois d’éviter des conflits si une même fonction est définie dans plusieurs bibliothèques. Elle permet également de disposer d’une aide contextuelle lors de la frappe ; il suffit de taper m. et ensuite un menu déroulant apparait avec toutes les fonctions disponibles

(7)

• elseapparaît pour utiliser tous les cas non traiter parifetelif

1 if test_1 : 2 instruction_1 3 elif test_2:

4 instruction_2

5 ....

6 elif test_n:

7 instruction_n 8 else:

9 instruction_n+1

On peut alors utiliser les tests suivant: :

• x > yrenvoieTruesixest strictement plus grand quey

• x >= yrenvoieTruesixest plus grand ou égal ày

• x < yrenvoieTruesixest strictement plus petit quey

• x <= yrenvoieTruesixest plus petit ou égal ày

• x == yrenvoieTruesixest égal (ou identique si on ne compare pas de simples nombres) ày

• x != yrenvoieTruesixest différent dey

Il est possible d’étendre ces tests avec les opérateursand(et) etor(ou).

Q - 20 : Ecire un programme comparea,b qui retourne le plus grand nombre parmi {a,b} et qui en cas d’égalité signale que les nombres sont égaux.

Q - 21 : Ecrire un programmefac(x)qui permet de savoir si x∈Nest facteur de 2 et/ou 3 et/ou 4 et/ou 5.

4.4 Boucle while

On cherche parfois à faire des opérations jusqu’à ce qu’une condition soit atteinte. En programmation, on utilise alors la bouclewhile(tant que). Tant qu’une condition n’est pas vérifiée, on exécute plusieurs fois la même suite d’instructions.

ATTENTION ! il faut bien réfléchir à ce qu’on fait car si la condition de sortie de boucle n’arrive jamais, le programme tourne toujours. . . C’est ce que nous verrons en cours en définissant uninvariant de boucle et étudiant laterminaison des boucles.

Q - 22 : Tester le programme de conversion d’un nombre entier de la base décimale en base 2 :

1 # Question 22 2 def dectobin(n):

3 r=""

4 while n!=0:

5 if n%2==0:

6 r="0"+r

7 else:

8 r="1"+r

9 n=n//2

10 return r 11

12 # Test de la question 22 13 print(dectobin(8)) 14 print(dectobin(9))

(8)

Q - 23 : Écrire un programme qui, à l’aide d’une bouclewhilecalcule la somme des nombres pairs compris entre 1 et 100 (inclus) et affiche le résultat.

Q - 24 : On demande d’entrer une lettre. Si cette lettre est différente deq(pour quitter !), on imprime la lettre et on demande la lettre suivante ; sinon on imprimefinet le programme s’arrête. Écrire le programme python correspondant.

Q - 25 : Écrire un programmesomgeo(n)qui calcule la somme des entiers k positifs tels que k+k2+k3n.

Vérifier que pour n=1000, la somme vaut 45.

4.5 Boucle For

Si on veut répéter une instruction sur un nombre fini de valeurs, on peut utiliser une bouclefor. On peut s’en sortir avec une bouclewhile, mais c’est parfois plus rapide avec une bouclefor:

1 for i in range (10):

2 print(i)

1 i=0

2 while i<10:

3 print(i)

4 i=i+1

REMARQUE:on n’est pas obligé de prendre les n premières valeurs deN

Instruction Valeurs successives de i

for i in range(2, 5) 2 ; 3 ; 4

for i in range(-10, 10, 2) -10 ; -8 ; -6 ; -4 ; -2 ; 0 ; 2 ; 4 ; 6 ; 8 for i in range(10, 5, -1) 10 ; 9 ; 8 ; 7 ; 6

Il est possible de faire tenir les instructions précédentes en une seule ligne :

1 [print(i) for i in range(10)]

Q - 26 : Écrire à l’aide d’une boucleforun programme qui calcule la somme de nombres pairs entre 1 et 100 (inclus) et affiche le résultat.

Q - 27 : Écrire à l’aide d’une bouclefor un programme qui affiche les nombres réels compris entre 0 et 1 (inclus) espacés de 0,1.

Q - 28 : Écrire à l’aide de deux bouclesforimbriquées un programme qui calcule la somme : S =

Xn

i=1

Xn

j=1

i.j

Vérifier que pour n = 10, on a S = 3025.

Bibliographie

Ce Tp a été rédigé à partir des travaux de M. Sérier et de M. Demolliens.

Références

Documents relatifs

Côte d’Ivoire – Ingénierie et conception pédagogique du volet chantiers-écoles et mise en œuvre de formations à distance et en présentiel dans le cadre du projet

A travers plusieurs exemples de missions, nous vous proposons de définir le métier d'auditeur et d'illustrer le rôle d'un ingénieur dans le cadre d'une mission d'audit. Mardi

gestion Samedi 16 Janvier Statistiques Retour à la maison Mardi 5 Janvier Finances publiques Economie du Maroc Jeudi 7 Janvier Audit Contrôle de Gestion Mardi 12 Janvier

Une analyse plus détaillée de l’exécution du budget programme 2014-2015 et une mise à jour des mesures proposées et mises en œuvre dans le cadre de la riposte

II) Les causes ou faits contemporains du sujet III) Le phénomène étudié et ses conséquences On retient donc le plan correspondant au sujet : I) Des origines avant la Deuxième

Une fois n'est pas coutume, lorsqu'il s'agit de présenter la syntaxe d'un langage de programmation, on utilise comme exemple le programme Hello World.. Il s'agit simplement

Atelier 1 Comment parler du prophète dans notre

Avec les coordonnées de tous les vecteurs vitesse, on pourra les tracer avec &#34;quiver&#34; et il faudra mettre le point d'application de chaque vecteur au milieu du bipoint formé