session 1

Transcription

session 1
SM05 - Initiation à la programmation
Licence 2ème année 2008-2009
Session de mai
mercredi 19 mai 2009
DURÉE : 2 HEURES
Aucun document n’est autorisé
PRÉAMBULE : À LIRE ABSOLUMENT ! ! !
Comptes d’examen
Pour l’examen, vous N’UTILISEREZ PAS VOS COMPTES PERSONNELS mais des comptes
d’examen dédiés. Au début de l’examen, votre poste sera déjà connecté sur votre compte d’examen.
Sous aucun prétexte vous ne devrez vous déconnecter de la session. En cas de déconnexion accidentelle
(et dans ce cas seulement) demandez l’assistance du surveillant.
Fichiers à compléter
Une grande partie des réponses aux questions seront données sous forme de fichiers Fortran 90 qui
seront relevés de manière automatique à la fin de l’examen sur le disque dur du serveur qui contient les
répertoires correspondant aux comptes d’examen. Pour chaque exercice et pour chaque question, il est
indiqué si la réponse doit être donnée sous forme de fichier et dans ce cas, le nom du fichier est précisé.
Tous les fichiers à rendre ont déjà été créés sur votre compte. Vous devrez simplement les éditer et
les compléter sans changer leur nom ni leur emplacement. Les fichiers-réponse sont répartis dans des
répertoires dont les noms correspondent aux numéros d’exercice.
Vous compilerez vos fichiers et les exécuterez pour vérifier la justesse de vos programmes. La bonne
compilation et la bonne exécution des programmes constituera une part importante de l’évaluation.
Pour certaines questions, lorsque ce sera demandé, vous aurez à indiquer sur papier le résultat de
l’exécution.
Avant la fin de l’examen, vérifiez bien que tous vos fichiers sont sauvegardés sur votre compte
d’examen, au bon emplacement et sous le bon nom. Seuls les fichiers correctement nommés et placés
à l’endroit approprié seront relevés et corrigés.
Réponse sur copie
Lorsque rien n’est précisé, vous répondrez aux questions sur copie.
1)
Algorithme mystère
Quelle est la fonction de l’algorithme suivant ?
Variable r en réel
Début
r ← rand(0)
Si (r<0.5) Alors
Ecrire "F"
Sinon
Ecrire "P"
FinSi
Fin
2
2)
Jeu pile ou face
On se propose de développer un programme qui simule un jeu basé sur des lancers pile ou face
d’une pièce de monnaie. Trois règles différentes seront proposées. Le but de l’exercice est de déterminer
quelle règle est la plus avantageuse pour le joueur.
Pour les trois règles, le jeu consiste à jouer un certain nombre de tours. A chaque tours, le joueur
mise une certaine somme, puis une pièce est lancée en l’air six fois de suite et on note à chaque fois si
elle tombe sur pile ou sur face. A chaque tours, on obtient donc une série de six lettres F ou P, par ex.
FFPPPP ou FPPFFF, qui représente le résultat des six lancers. En fonction de ce résultat, le joueur
gagne une certaine valeur de gain, déterminée par les règles. Le bénéfice du joueur (éventuellement
négatif) correspond au bilan entre les gains reçus et la mise effectuée en début de tours.
a) Règle 1 - base
Dans cette première version du jeu, le joueur mise 3 euros en début de tours. Son gain est alors
calculé de la manière suivante. Une pièce marque 0 point si elle tombe sur pile et 1 point si elle
tombe sur face. A chaque tours, on fait alors la somme des points attribués pour les six lancers.
Cette somme est convertie en gain que le joueur encaisse. Ainsi, la combinaison FFPPPP assure
un gain de 2 euros au joueur, qui aura alors fait un “bénéfice” de −1 euros et la combinaison
FPPFFF lui assure un gain de 4 euros, soit un bénéfice de 1 euros.
Vous mettrez au point un programme Fortran 90 qui simule un tours de jeu joué selon cette règle
et qui affiche à l’écran le gain ainsi que le bénéfice du joueur à l’issue du tours.
Pour répondre à la question, le fichier ~/ exo2/ exo2a. f90 devra être complété.
b) Règle 1 - Moyenne
Le joueur (compulsif !) joue au cours d’une soirée 200 tours d’affilée.
Vous mettrez au point un programme Fortran 90 qui simule ces 200 tours de jeu et qui calcule
et affiche le gain moyen ainsi que le bénéfice moyen à l’issue de ces 200 tours.
Pour répondre à la question, le fichier ~/ exo2/ exo2b. f90 devra être complété.
c) Règle 1 - Affichage
On souhaite suivre au cours de cette soirée de jeu le solde du compte en banque du joueur. La
valeur initiale présente sur le compte en banque en début de jeu est de 100 euros. A l’issue de
chaque tours, chaque mise est immédiatement débitée sur le compte et chaque gain immédiatement versé à son crédit. Le joueur a sur ce compte une autorisation de découvert infini, ce qui
fait que le solde peut devenir négatif, sans limite particulière.
Vous mettrez au point un programme Fortran 90 qui simule l’évolution temporelle du compte en
banque du joueur sur ces 200 tours de jeu et qui affiche graphiquement cette évolution à l’aide
d’un graphique avec le numéro de tours en axe des abscisses et le solde du compte sur l’axe des
ordonnées.
Pour répondre à la question, le fichier ~/ exo2/ exo2c. f90 devra être complété.
d) Règle 2
Dans cette deuxième version du jeu, le joueur mise cette fois 9 euros à chaque tours. Chaque série
de six lancers se voit attribuer un nombre de points de la même manière que pour la règle 1.
Mais le gain perçu par le joueur est cette fois égal au carré du nombre de points marqués. Ainsi,
la combinaison FFPPPP rapport un gain de 22 soit 4 euros et donc un “bénéfice” de −5 euros,
alors que la combinaison FPPFFF rapporte 42 = 16 euros de gains, soit 7 euros de bénéfice.
3
Vous mettrez au point un programme Fortran 90 qui simule 200 tours de jeu joués selon cette
nouvelle règle et qui calcule et affiche le gain moyen ainsi que le bénéfice moyen à l’issue de ces
200 tours.
Pour répondre à la question, le fichier ~/ exo2/ exo2d. f90 devra être complété.
e) Règle 3
Dans cette dernière version du jeu, le joueur mise cette fois 1 euro à chaque tours. Son gain est
calculé d’une manière différente. Il gagne 5 euros si la série de 6 lancers comporte exactement 4
face (et donc 2 pile) et 0 euro dans les autres cas de figures. En reprenant les mêmes exemples,
le gain est donc de 0 pour la combinaison FFPPPP, d’où un bénéfice de −1 euro, et vaut 5 euros
pour la combinaison FPPFFF, soit un bénéfice de 4 euros.
Vous mettrez au point un programme Fortran 90 qui simule un tours unique de jeu basé sur la
règle 3.
Pour répondre à la question, le fichier ~/ exo2/ exo2e. f90 devra être complété.
f ) Règle 3 - Moyenne
Vous mettrez au point un programme Fortran 90 qui simule 200 tours de jeu basés sur la règle 3
et qui calcule et affiche la moyenne des gains et des bénéfices.
Pour répondre à la question, le fichier ~/ exo2/ exo2f. f90 devra être complété.
g) Conclusion
Laquelle de ces trois règles le joueur doit-il choisir pour maximiser ses gains ?
3)
L’éléphant ivre
Un éléphant se déplace le soir dans la savane, à la fois dans la direction Nord/Sud et dans la
direction Est/Ouest. Cependant, le soleil couchant l’éblouit lorsqu’il marche plein ouest, ce qui fait
qu’il a tendance à limiter ses déplacements dans cette direction. De plus, un fort vent, généré par
la baisse de température vespérale, souffle d’est en ouest et blesse les yeux de notre pauvre éléphant
lorsqu’il fait face à l’est, limitant ses déplacements dans cette direction également.
La savane est représentée par un plan sur lequel l’abscisse représente la position Est/Ouest et l’ordonnée la posisition Nord/Sud. A chaque pas, l’éléphant se déplace sur le plan à la fois horizontalement
et verticalement. Le déplacement horizontal, difficile, est aléatoire et est tiré dans une loi uniforme au
sein de l’intervalle [−1; 1] mètres. Le déplacement vertical est également aléatoire et est tiré dans une
loi uniforme au sein de l’intervalle [−2; 2] mètres. La position initial de l’éléphant est (0, 0).
a) Vous mettrez au point un programme Fortran 90 qui simule et affiche graphiquement la marche
de l’éléphant dans la savane sur 400 pas.
Pour répondre à la question, le fichier ~/ exo3/ exo3a. f90 devra être complété.
b) Vous mettrez au point un programme Fortran 90 qui simule la marche de l’éléphant dans la
savane sur 400 pas et qui détermine et affiche le point le plus septentrional atteint au cours de la
marche.
Pour répondre à la question, le fichier ~/ exo3/ exo3b. f90 devra être complété.
c) Vous mettrez au point un programme Fortran 90 qui simule la marche de l’éléphant dans la
savane sur 400 pas et qui calcule et affiche la distance totale parcourue par l’éléphant.
Pour répondre à la question, le fichier ~/ exo3/ exo3c. f90 devra être complété.
4
4)
Les enfants
Vous mettrez au point un programme en Fortran 90 qui effectue les tâches suivantes :
– demander à l’utilisateur son nom
– demander à l’utilisateur son prénom
– demander à l’utilisateur combien d’enfants il a eu
– demander l’âge de chacun de ses enfants
– afficher un message de félicitation, par exemple : “Félicitation Mr Albert Durand, vos 5 enfant
sont resplendissants”
– déterminer et afficher la différence d’âge maximale dans la fratrie
Pour répondre à la question, le fichier ~/ exo4/ exo4. f90 devra être complété.
5