Outils Informatiques 2, feuille de TD n° 7

15 mai 1995 ... 7) Les étudiants ont droit à passer leurs épreuves dans les meilleures conditions.
...... LLASP131 TD le jeu de l'acteur au cinéma et au théâtre.

Part of the document

Outils Informatiques 2, feuille de T D n° 7 Objectif : Conception de fonctions, composition, récursivité (initiation)
Dans tous les exercices, enregistrez REGULIEREMENT vos fichiers sur votre
support de sauvegarde (clé USB ) après y avoir préalablement créé un
dossier TD7_votre_nom. A défaut, créez un tel dossier sur le disque dur,
puis recopiez-le à la fin sur la clé USB d'un(e) camarade. Ouvrez un document Excel et appelez le TD7. C'est à partir de ce document
que vous réaliserez les macros ci-dessous. Ouvrez l'environnement de
programmation VBA (Alt F11) et insérez un module dans lequel vous écrirez
vos macros. Vous veillerez à bien définir les variables et les types
nécessaires à vos calculs.
1 Exercice 1 : Livret d'épargne L'un des exercices supplémentaires du TD 4 vous demandait de réaliser une
macro qui permet de simuler pour un montant initial de dépôt fourni par
l'utilisateur, le montant total du capital obtenu après x années lorsque
l'argent est déposé sur un livret à un taux annuel donné par l'utilisateur.
Inspirez-vous de ce code, en écrivant une fonction livret qui calcule, pour
un dépôt, un taux et un nombre d'années, le montant total de l'épargne.
Rappel : à l'année N+1 le montant de l'épargne est [montant année N]
+[montant année N]*taux Écrivez une macro qui inter-agit avec l'utilisateur en lui demandant le
taux, le nombre d'années, et le montant pour lui afficher le résultat, en
appelant la fonction livret.
Dans la feuille Excel réalisez le tableau suivant :
|Montant du dépôt |5000 |
|Taux d'intérêt |1,25 |
|Simulation selon les années d'épargne |
|1 | |
|3 | |
|5 | |
|7 | |
Quelle formule employer dans les cellules de droite du tableau pour
permettre de calculer le capital avec intérêts qui résultera de l'épargne ? 2 Exercice 2: Composition de fonctions et compréhension du passage de
paramètres. Cet exercice doit être fait d'abord sur papier, puis vous pouvez vérifier
la bonne réponse sur l'ordinateur. Il est extrait d'un sujet d'examen des
années précédentes.
Indiquez les valeurs affichées par la macro essai. On justifiera en
déroulant l'appel aux fonctions qui et quoi, en indiquant l'évolution des
valeurs des variables.
Function qui(a As Integer,b As Integer) As Double
qui=a-b
End Function
Function quoi(x As Double, n As Integer) As Double
Dim r As Double
Dim i As Integer
r=0
for i=1 to n
r=r+x
Next
quoi=r
End Function
Sub essai()
MsgBox(quoi(qui(5,2),4))
End Sub 3 Exercice 3 : Codage de César Le code de César est la méthode de cryptographie la plus ancienne
communément admise par l'histoire. Il consiste en une substitution lettre
par lettre, où la substitution est définie par un décalage de lettres. Par
exemple, si on remplace A par D, on remplace B par E, C par F, D par G,
etc... Donnons un exemple sur à partir de ce décalage de 3 lettres :
Texte clair |A |B |C |D |E |F |G |H |I |J |K |L |M |N |O |P |Q |R |S |T |U
|V |W |X |Y |Z | |Texte codé |D |E |F |G |H |I |J |K |L |M |N |O |P |Q |R
|S |T |U |V |W |X |Y |Z |A |B |C | |Ainsi le mot "INFORMATIQUE" devient
"LQIRUPDWLTXH".
On souhaite écrire une fonction qui permet, à partir d'une lettre majuscule
et d'une valeur de décalage, de déterminer la lettre correspondante.
Les lettres majuscules sont codées en ASCII de manière consécutive. La
fonction Asc permet de connaître le code ASCII d'une lettre. La fonction
Chr permet, à partir du code ASCII d'une lettre de trouver la lettre
correspondante. Ainsi, pour trouver le code César d'une lettre, il faut calculer la
position de cette lettre par rapport à la lettre A. Cette position est
donnée par la différence entre le code ascii de la lettre et celui de A.
Ensuite, il faut ajouter le décalage afin de trouver la position de la
lettre codée par rapport à la lettre A. Attention, la position doit être
calculée modulo 26. En effet, pour un décalage de 1, la lettre Z, qui a la
position 25 doit être codée comme A (position 0 par rapport à A). Pour trouver la lettre, il ne reste plus qu'à calculer le code ascii de la
lettre décalée à partir de sa position, et d'utiliser la fonction chr pour
calculer la lettre correspondante Utilisez votre fonction dans la feuille Excel afin de reconstituer le
tableau présenté ci-dessus pour une valeur de décalage que vous rangerez
dans une cellule.
Écrivez une macro qui demande à l'utilisateur de saisir un mot en
majuscules et la valeur du décalage. Ce programme doit isoler chaque lettre
et reconstituer ainsi le mot codé.
Écrivez une fonction, qui à partir d'un mot et d'un décalage, fournit le
mot codé, et récrivez la macro de la question 3 pour qu'elle utilise cette
fonction. 4 Exercice 4: PGCD et PPCM Écrivez une fonction calPGCD qui prend comme paramètres deux nombres a et b
et qui renvoie le plus grand commun diviseur de a et b (avec a>=b). On
utilisera le fait que si b=0 alors PGCD(a,b)=a et sinon, en appelant r le
reste de la division euclidienne de a par b (a mod b) alors le pgcd de a et
de b est aussi le pgcd de b et de r.
nb: si a=q*b+r, alors tout diviseur de a et de b doit être aussi un
diviseur de r. Le mode de calcul que vous allez écrire est très ancien: c'est l'algorithme
d'Euclide (-325 à -265 avant J.C.) La fonction peut être écrite de manière
récursive (voir cours) ou itérative (avec des boucles) Pour en savoir plus: http://fr.wikipedia.org/wiki/Algorithme_d%27Euclide
Écrivez une fonction calPPCM qui prend comme paramètres deux nombres a et b
et qui renvoie le plus petit commun multiple de a et b sachant que
PPCM(a,b) = |a*b|/PGCD(a,b) pour b non nul.
Deux entiers sont dits premiers entre eux si leur pgcd=1. En utilisant
l'une des fonctions précédentes, écrivez une formule dans une cellule de
votre feuille Excel qui indique si deux nombres que vous mettrez dans les
cellules A2 et B2 sont premiers entre eux ou non. 5 Exercice supplémentaire:
6 Tester la validité d'une date Écrivez une fonction qui à partir d'une année renvoie vrai si elle est
bissextile et faux sinon.
On rappelle qu'une année est bissextile lorsque :
soit elle est divisible par 4 mais non divisible par 100
soit elle est divisible par 400.
Par exemple 1200 est bissextile car divisible par 400. 1300 ne l'est pas,
et 1304 l'est. Écrivez une fonction booléenne testDate ayant l'entête suivant :
testDate( d as integer, m as integer, a as integer) as boolean
d désigne la date du jour, m le mois et a l'année. Cette fonction renvoie
faux si la date n'est pas valide ( exemples : 32/01/1990 ou 29/02/2010).
Cette fonction doit donc renvoyer faux dans les cas suivants :
- d30
- a est bissextile, m=2 et d>29 ou a est non bissextile, m=2 et d>28.
-----------------------
3