• Aucun résultat trouvé

2.Module de calculs 1.Directives Partiel d’Informatique ScientifiqueCalculs, Graphiques, Fichiers

N/A
N/A
Protected

Academic year: 2022

Partager "2.Module de calculs 1.Directives Partiel d’Informatique ScientifiqueCalculs, Graphiques, Fichiers"

Copied!
3
0
0

Texte intégral

(1)

IUT ORSAY Page 1 2016-2017

Mesures physiques Semestre S1

Partiel d’Informatique Scientifique

Calculs, Graphiques, Fichiers

Durée: 1h50 Tout document papier ou électronique local autorisé (s’ils sont sur votre clé USB, vous

devez les copier en début de séance puis retirer votre clé pour la suite du partiel).

Documents (cours, poly TP, docs…) disponibles sur la machine de TP.

1. Directives

Créez votre répertoire de partiel S1A1_Nom_Prenom1 sur le “bureau” de l'ordinateur, il devra contenir les fchiers modules Python que vous écrirez.

Lorsque vous avez terminé ou que le temps imparti (1h50) est fni, vous devez vous assurer que tous les fichiers à rendre sont dans votre répertoire de partiel S1A1_Nom_Prenom (quitez Pyzo pour vous assurer que tout est enregistré), recopier votre répertoire de partiel dans le répertoire srv-

a018/depot_etudiants/ et atendre que l’enseignant vous confrme qu’il a bien été recopié !

Respectez les consignes (donc les lire), ne pas faire plus que ice qui est demandé.

Commentaires si nécessaires (code compliqué, problèmes rencontrés…).

En-têtes habituels pour les modules Python.

Code de test pour les fonctions, après toutes les défnitions de fonctions. Aucun input() dans les tests, utilisez des valeurs directement dans le code de test - éventuellement une boucle pour tester plusieurs jeux de valeurs.

Recopie des résultats des tests à la fn des modules Python dans une chaîne

"""…triple guillemets…""".

Les tests réalisés, les situations qu’ils couvrent pour trouver les bugs, la simplicité des cas choi- sis pour vérifer manuellement le bon fonctionnement… seront importants pour la note.

Si vous n’arrivez pas à coder l’algorithme d’une fonction ⇒ faites qu’elle simule un fonc- tionnement (retour d’une valeur de bon type mais bidon…) et passez à la suite.

Si une ligne pose défnitivement un problème ⇒ laissez-la en icommentaire (+ un commen- taire expliquant ce que vous vouliez faire et vos éventuels problèmes + simulez son fonc- tionnement si c'est possible) et poursuivez sur le reste du partiel.

Lorsqu'une fonction rend un service dont vous avez besoin, appelez-la, ne dupliquez pas son code ; si cete fonction est dans un autre module, importez-la.

2. Module de calculs

Créez un module Python nommé calculs.py dans votre répertoire de partiel.

Dans ce module, défnissez les fonctions suivantes (testez chaque fonction avant de passer à la sui- vante).

Fonction calculrho

Écrivez une fonction calculrho(theta) qui prend en paramètre un nombre fotant représen- tant un angle θ exprimé en radians et retourne la valeur calculée |tan(θ)|

|

cos(θ)sin(θ)

|

.

1 En utilisant votre nom et votre prénom bien sûr !

(2)

IUT ORSAY Page 2 2016-2017

Mesures physiques Semestre S1

Pour le cas spécial θ ayant une valeur 0+nπ, où cete fonction n'est pas défnie (car sin(θ) s'an- nule), on retournera la valeur 0 — on peut utiliser l'interception de l'exception

ZeroDivisionError ou bien faire un test sur la valeur de θ.

Note : Les fonctions tan(), sin() et cos() sont défnies dans le module math, elles prennent en paramètre un angle en radians, la constante pi avec la valeur de π est aussi défnie dans ce module. La fonction valeur absolue abs() est une fonction standard Python.

Fonction range_float

Écrivez une fonction range_float(debut, fin, pas) qui prend en paramètre trois nombres fotants, crée et retourne une liste de nombres fotants2 entre debut compris et fin non compris, séparés par un intervalle pas entre deux valeurs consécutives. Pour simplifer, on considère que

fin> debut et que pas>0 (ne pas le vérifer dans la fonction - s'en assurer sur les cas testés). La solution algorithmique simple utilise une boucle tant que pour remplir une liste.

L'appel print(range_float(1,1.5,0.2)) doit afcher : [1.0, 1.2, 1.4]

L'appel print(range_float(0, 3, 1)) doit afcher : [0.0, 1.0, 2.0]

Fonction theta_rho

Écrivez une fonction theta_rho(thetaInit, thetaFin, thetaPas) qui prend en paramètre trois fotants et retourne simultanément deux listes.

Une première liste theta contenant les valeurs fotantes de thetaInit compris à thetaFin non compris avec un pas de thetaPas.

Une seconde liste rho correspondant au calculrho(x) pour chacune des valeurs x de theta. L'appel print(theta_rho(0,pi+0.1,pi/2)) doit afcher :

([0.0, 1.5707963267948966, 3.141592653589793], [0, 1.0000000000000022, 0.0])

Rappel, pour retourner directement deux valeurs : return(v1,v2)

Et pour récupérer deux valeurs retournées par une fonction dans deux variables : x,y=fct(…). Fonction ecretage

Écrivez une fonction ecretage(theta, rho, maxrho), qui prend en paramètre deux listes de fotants et un nombre fotant, et qui retourne deux listes de fotants, thetaprime et rhoprime correspondant à des icopies de theta et rho dans lesquelles les valeurs d'index i où rho[i] est strictement supérieur à maxrho sont absentes.

L'appel print(ecretage([1,2,3,4,5],[2,5.9,4,8.2,0.2],5.0)) doit afcher :

([1, 3, 5], [2, 4, 0.2])

Fonction minimaxi

Écrivez une fonction minimaxi(theta,rho), qui prend en paramètre deux listes de fotants et qui retourne les angles de theta correspondant aux valeurs mini et maxi dans rho.

L'appel print(minimaxi([1,2,3,4,5],[2,5.9,4,8.2,0.2])) doit afcher : (5, 4)

3. Module de graphique

Créez un module Python nommé graphiques.py dans votre répertoire de partiel.

À l'aide de fonction(s) du module calculs, calculez :

une liste angles de valeurs fotantes de 0 compris à 2π non compris avec un pas de 0.1.

une liste longueurs correspondant au calculrho(x) pour chacune des valeurs d'angle.

Utilisez ensuite le code ci-dessous pour tracer la courbe correspondante et la sauvegarder dans un fchier image.

2 Pour rappel, la fonction générateur range() ne travaille qu'avec des nombres entiers.

(3)

IUT ORSAY Page 3 2016-2017

Mesures physiques Semestre S1

import matplotlib.pyplot as plt

ax=plt.subplot(111,projection='polar')

ax.plot(angles,longueurs,color='r',linewidth=3) ax.set_rmax(2.0)

ax.grid(True)

ax.set_title("Courbe de Dwight Boddorf",va='bottom') plt.show()

plt.savefig("figure.png")

4. Module fichiers

Créez un module Python nommé fichiers.py dans votre répertoire de partiel.

Fonction sauvegarde

Écrivez une fonction sauvegarde(theta,rho,nomfichier), qui prend en paramètre deux listes de fotants et une chaîne de caractères représentant un nom de fchier, et qui sauvegarde dans un fchier sur le disque, sous forme de texte, le contenu de ces deux listes à raison d'un couple de valeurs de theta et rho par ligne séparés par un espace.

Fonction lecture

Écrivez une fonction lecture(nomfichier), qui prend en paramètre une chaîne de caractères représentant un nom de fchier, lis dans ce fchier les lignes de couples de valeurs theta et rho séparés par un espace, et retourne deux listes contenant les valeurs de theta dans la première et les valeurs de rho dans la seconde (fonction réciproque de la sauvegarde).

Programme principal

Ajoutez un code de test avec l'écriture puis la relecture de deux listes simples de 3 valeurs pour pouvoir vérifer vos fonctions - générez un fchier nommé "test_sauvegarde.txt".

À l'aide de la fonction theta_rho() déjà écrite, créez deux listes que vous sauvegardez et relisez de la même façon - générez un fchier nommé "dwight_boddorf.txt".

Références

Documents relatifs

Écrire une fonction relecture qui prend comme paramètre un nom de fichier (chaîne de caractères), un tableau de réels, puis qui place dans le tableau les valeurs présentes dans

Lire dans le fichier courbe.txt 200 valeurs d’abscisse et ordonnée (rangées à raison d’une abscisse et d’une ordonnée, séparées par une es- pace, sur chaque ligne), les

Écrire une fonction Lecture qui prend comme paramètre un nom de fichier (chaîne de caractères) et renvoie la liste des valeurs présentes dans le fichier (à raison d’une valeur

Ecrire une fonction Lecture qui prend comme paramètres une chaîne de caractères nomfichier et un tableau de réels Epreuve, puis qui relit dans le fichier dont le nom est contenu

Leur présence, leur accumulation continuelle, leurs noms (ce sont des fichiers, ils ont un nom, à vrai dire ils n’ont presque que ça, ce ne sont que des noms), leur mode d’action,

Il faut donc faire défiler le message dans buffer, c'est à dire copier message dans buffer à partir d'une position donnée, afficher son contenu pendant un instant donné

Rajoutez un attribut privé à la classe Chanteur : maisonEdition (chaîne de caractères) et écrivez une méthode setEdition() qui prend en paramètre une chaîne de caractères (le nom

• Enregistrer les données de répartition non nulles (valeur du milieu de la tranche, comptage) dans un fichier texte "courbe.txt" (sur deux colonnes séparées par un