SM05 - Initiation à la programmation Licence 2ième année

Transcription

SM05 - Initiation à la programmation Licence 2ième année
SM05 - Initiation à la programmation
Licence 2ième année 2011-2012
Examen d’Evaluation Intermédiaire - Corrigé
mercredi 22 février
DURÉE : 2 HEURE
L’usage de tout document est interdit
1)
Exercice (4 pts)
On indique l’arborescence suivante :
/filer/etudiants/g2/s487822
Poux
Cailloux
Genoux
- mes_donnees.tx
Cloux
Coucou
Choux
Joujoux
Hiboux
Bijoux
1. Donnez la suite de commandes à taper dans un terminal linux, qui permet de créer cette arborescence sur le disque dur.
Première possibilité :
$ mkdir Poux
$ mkdir Coucou
$ mkdir Poux/Genoux
$ mkdir Poux/Cailloux
$ mkdir Poux/Genoux/Cloux
$ mkdir kdir Poux/Cailloux/Choux
$ mkdir mkdir Poux/Cailloux/Hiboux
$ mkdir Poux/Cailloux/Choux/Joujoux
$ mkdir Poux/Cailloux/Choux/Bijoux
Deuxième possibilité :
$ mkdir Poux
$ cd Poux
$ mkdir Genoux
$ cd Genoux
$ mkdir Cloux
$ cd ..
$ mkdir Cailloux
$ cd Cailloux
$ mkdir Choux
$ cd Choux
$ mkdir Joujoux
$ mkdir Bijoux
$ cd ..
$ mkdir Hiboux
$ cd ..
$ cd ..
$ mkdir Coucou
2. Donnez une commande linux à taper dans le terminal qui permet d’effacer le répertoire dont le
nom contient une faute d’orthographe.
$ rmdir ˜/Poux/Genoux/Cloux
3. Quel est le chemin relatif du répertoire Genoux à partir du répertoire Hiboux ?
../../Genoux
4. On suppose qu’on se trouve dans le répertoire /filer/etudiants/g2/s487822/Poux/Cailloux/
Indiquez de trois manières différentes comment, à l’aide des commandes linux, on peut copier le
fichier mes_donnees.txt dans le répertoire Cailloux.
option 1 :
$ cp ˜/Poux/Genoux/mes_donnees.txt ˜/Poux/Cailloux/
option 2 :
$ cp ˜/Poux/Genoux/mes_donnees.txt .
option 3 :
$ cp ../Genoux/mes_donnees.txt .
2
2)
Exercice (5 pts)
On se propose de réaliser un algorithme chargé de résoudre dans R les équations du second degré
à paramètres réels. Écrire un algorithme qui demande à l’utilisateur les valeurs des trois paramètres
réels a, b et c de l’équation ax2 + bx + c = 0, et qui affiche les éventuelles solutions. Plus précisément,
l’algorithme devra indiquer s’il existe ou non des solutions réelles et afficher leurs valeurs si elles existent.
On rappelle que, si l’on note ∆ = b2 − 4ac, l’équation ax2 + bx + c = 0 a pour solutions :
√
√
−b + ∆
−b − ∆
et x2 =
– ∆ > 0 : x1 =
2a
2a
−b
– ∆=0:x=
2a
– ∆ < 0 : aucune solution réelle
Variables a, b, c, Delta en réel
Début
Écrire “Résolution de l’équation axˆ2 + bx + c = 0”
Écrire “Entrez le coefficient de xˆ2 svp”
a ← Lire
Écrire “Entrez le coefficient de x svp”
b ← Lire
Écrire “Entrez la coefficient constant svp”
c ← Lire
Delta ← b**2 - 4*a*c
Si (Delta>0) Alors
Écrire “L’équation possède deux solutions : x1=”, (-b-Delta**0.5)/(2*a), “ et x2=”,
(-b+Delta**0.5)/(2*a)
Sinon
Si (Delta<0) Alors
Écrire “L’équation ne possède pas de solutions réelles.”
Sinon
Écrire “L’équation possède une unique solution : x=”, -b/(2*a)
FinSi
FinSi
Fin
3)
Exercice (3 pts)
On veut construire un algorithme qui calcule les termes successifs de la suite de Fibonacci déterminée
par les valeurs initiales F0 = 0,
F1 = 1 et par la règle de récurrence :
Fn = Fn−1 + Fn−2
Recopiez cet algorithme en complétant les (...) de manière adéquate :
Tableau F(0: 15 ) en entiers
Variable i en entiers
1 Début
3
2
3
4
5
F(0) ← 0
F(1) ← 1
Pour i ← 0 à 13
F(i+2) ← F(i+1) + F(i)
6
i Suivant
7
Écrire "La valeur finale est ",F(15)
8 Fin
4)
Exercice (3 pts)
Écrire un programme Fortran 90 qui demande à l’utilisateur son prénom (par ex : Pierre), son nom
(ex : Dupont), son année de naissance (ex : 1960). Le programme déterminera si l’utilisateur est
en âge de voter pour les prochaines élections présidentielles et affichera un message pour en informer
l’utilisateur.
ex : Bonjour Monsieur Pierre Dupont, désolé, vous n’êtes pas encore en âge de voter.
Pour simplifier, on considérera que le vote est possible pour toute personne agée de 18 ans à la date
du 31 décembre 2011, c’est-à-dire qui a fêté ses 18 ans au cours de l’année 2011, quelle que soit sa date
d’anniversaire (ce qui n’est pas la règle exacte dans la réalité).
1
PROGRAM age_elect
2
! ce programme détermine si l ’ utilisateur est en age de voter
3
4
IMPLICIT NONE
5
6
CHARACTER(LEN=100) :: Nom, Prenom
7
INTEGER :: annee_naiss
8
9
WRITE (∗,∗) "Bonjour,␣quel␣est␣votre␣nom␣de␣famille␣?"
10
READ (∗,∗) Nom
11
WRITE (∗,∗) "Quel␣est␣votre␣prénom␣?"
12
READ (∗,∗) Prenom
13
WRITE (∗,∗) "Quelle␣est␣votre␣année␣de␣naissance␣?"
14
READ (∗,∗) annee_naiss
15
16
17
IF (anne_naiss<=2011−18) THEN
WRITE (∗,∗) "Félicitation␣M.␣",Nom,"␣",Prenom,",␣vous␣pouvez␣voter␣pour␣les␣prochaines␣
élections␣ présidentielles ␣!"
18
19
20
ELSE
WRITE (∗,∗) "Désolé␣M.␣",Nom,"␣",Prenom,",␣vous␣êtes␣trop␣jeune␣pour␣voter␣cette␣fois−ci."
END IF
21
22
END PROGRAM age_elect
4
5)
Exercice (5 pts)
On considère le programme suivant :
1
PROGRAM sexe_ratio
2
! le sexe ratio d’une femme est le rapport du nombre de garçons qu’ elle a mis au monde
3
! sur le nombre total d’ enfants qu’ elle a eus
4
5
IMPLICIT NONE
6
7
INTEGER :: i,N,sexe,compt
8
9
WRITE (∗,∗) "Combien␣avez−vous␣d’enfants␣?"
10
READ (∗,∗) N
11
IF (N>0) THEN
12
compt = 0
13
DO i=1,N
14
WRITE (∗,∗) "Quel␣est␣le␣sexe␣de␣votre␣",i,"ème␣enfant␣?␣(Entrez␣0␣pour␣garçon␣et␣1␣pour
␣fille)"
15
READ (∗,∗) sexe
16
compt = compt + sexe
17
END DO
18
WRITE (∗,∗) "Votre␣sexe−ratio␣est␣de␣:␣", <Expression à compléter>
19
20
ELSE
WRITE (∗,∗) <Message à compléter>
21
END IF
22
END PROGRAM sexe_ratio
1. Une utilisatrice ayant une fille de 18 ans, une autre fille de 15 ans et un garçon de 11 ans exécute ce
programme. Remplissez un tableau de valeurs qui indique la succession des lignes du programme
exécutées au fur et à mesure ainsi que l’évolution des valeurs des variables i, N, sexe et compt.
5
ligne
i
N
sexe
compt
commentaire
9
—
—
—
—
10
—
3
—
—
11
—
3
—
—
12
—
3
—
0
initialisation de compt
13
1
3
—
0
initialisation du compteur de boucle
14
1
3
—
0
1ère entrée dans la boucle
Quel est le sexe de votre 1ème enfant ?
15
1
3
1
0
16
1
3
1
1
17
2
3
1
1
13
2
3
1
1
14
2
3
1
1
15
2
3
1
1
16
2
3
1
2
17
3
3
1
2
13
3
3
1
2
14
3
3
1
2
15
3
3
0
2
16
3
3
0
2
17
4
3
0
2
13
4
3
0
2
i a dépassé la valeur finale (3)
18
4
3
0
2
sortie de la boucle DO
Votre sexe-ratio est de : 0.333333333333
22
4
3
0
2
sortie du IF
2ème entrée dans la boucle
Quel est le sexe de votre 2ème enfant ?
3ème entrée dans la boucle
Quel est le sexe de votre 3ème enfant ?
2. Dans le programme, rempacez de manière adéquate <Expression à compléter> et <Message à
compléter> (lignes 18 et 20) par ce qui convient.
<Expression à compléter> : (N−compt)/(N∗1.0)
<Message à compléter> : "Vous␣n’avez␣pas␣d’enfant,␣on␣ne␣peut␣pas␣calculer␣votre␣sexe−ratio
␣!"
6