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