SNT4U16 - Initiation à la programmation Licence 2ième année 2012-2013 CORRECTION - Examen d Evaluation Intermédiaire vendredi 22 mars 2013 DURÉE : 1 HEURE 20 MINUTES L usage de tout document est interdit. Le barème est donné à titre indicatif. Il comporte un point bonus. Les exercices sont indépendants et peuvent être traités dans un ordre quelconque. 1) Exercice (4 pts) L arborescence suivante est en place sur le disque dur : /filer/etudiants/g2/s487822 Leffe - mes_donnees.txt Hors Transe Acre - photo.jpg Amer Sucre Hein
Vouv vous trouvez au départ dans le répertoire /filer/etudiants/g2/s487822. 1. Quelle(s) commande(s) taperiez-vous dans le terminal linux afin de copier le fichier mes_donnees.txt du répertoire Leffe vers le répertoire Sucre en le renommant en mes_donnees_bis.txt. $ cp /Leffe/mes_donnees.txt /Leffe/Transe/Sucre/mes_donnees_bis.txt ou $ cd /Leffe $ cp mes_donnees.txt Transe/Sucre/mes_donnees_bis.txt 2. Quelle(s) commande(s) taperiez-vous dans le terminal linux pour effacer le répertoire Acre. $ cd /Leffe/Hors/Acre $ rmdir Hein $ rm photo.jpg $ cd.. $ rmdir Acre 3. Donnez les commandes qui permettent de créer un sous-répertoire Seiche dans Transe $ cd /Leffe/Transe $ mkdir Seiche un sous-répertoire Wait dans Seiche $ mkdir Seiche/Wait 2) Exercice (5 pts) On donne l algorithme ci-dessous. 1. Par quoi doit-on remplacer <à compléter 1>, <à compléter 2> et <à compléter 3> (lignes 10, 13 et 15) pour obtenir des messages appropriés? <à compléter 1> : 1 ( Le joueur 1 a gagné ) <à compléter 2> : Le joueur 2 a gagné <à compléter 3> : Egalité entre les deux joueurs 2. On suppose que le joueur 1 joue Pierre et que le joueur 2 jour Feuille. Complétez le tableau de valeurs joint à l énoncé pour retracer l exécution de cet algorithme dans ce cas de figure. 2
ligne j1 j2 gagne egalite 1 2 3 4 1 5 1 6 1 2 7 1 2 Faux 8 1 2 Faux Faux 9 1 2 Faux Faux On teste la valeur de gagne test négatif 11 1 2 Faux Faux On saute à la section Sinon de ce premier test 12 1 2 Faux Faux On teste la valeur de (NON egalite) test positif 13 1 2 Faux Faux On saute à la section Alors de ce second test on écrit le message "Le joueur 2 a gagné" 16 1 2 Faux Faux On sort du deuxième test (entête ligne 12) 17 1 2 Faux Faux On sort du premier test (entête ligne 9) 18 1 2 Faux Faux On finit l algorithme Variables j1,j2 en entier Variables gagne,egalite en booléen 1 Début 2 Ecrire "Jeu Pierre/Feuille/Ciseaux" 3 Ecrire "Joueur 1 : que choisissez-vous? (1:Pierre 2:Feuille 3:Ciseaux)" 4 j1 Lire 5 Ecrire "Joueur 2 : que choisissez-vous? (1:Pierre 2:Feuille 3:Ciseaux)" 6 j2 Lire 7 egalite (j1==j2) 8 gagne (j1==1 ET j2==3) OU (j1==2 ET j2==1) OU (j1==3 ET j2==2) 9 Si (gagne) Alors 10 Ecrire "Le joueur <à compléter 1> a gagné" 11 Sinon 12 Si (NON egalite) Alors 13 Ecrire <à compléter 2> 14 Sinon 15 Ecrire <à compléter 3> 16 FinSi 17 FinSi 18 Fin En fonction de la syntaxe que vous avez vue en cours, on rappelle que l instruction j1 Lire peut aussi s écrire Lire j1. On rappelle que la feuille enveloppe la pierre, que la pierre casse les ciseaux et que les ciseaux coupent la feuille. 3
3) Exercice (8 pts) La RTM met en place une nouvelle politique de réduction, en fonction du nombre d enfants mineurs que comporte la famille. Si la famille comporte un enfant mineur (moins de 18 ans), tous les membres de la famille ont droit à une réduction de 10 pourcents. Pour deux enfants mineurs, la réduction est de 25 pourcents et pour trois enfants mineurs ou plus, la réduction est de 50 pourcents. Écrivez un algorithme en pseudo-code qui demande à l utilisateur combien d enfants comporte sa famille, qui demande ensuite pour chaque enfant son âge et qui calcule et affiche le nombre d enfants mineurs de la famille. L algorithme déterminera alors le pourcentage de réduction accordé à la famille et l affichera. Variables i, age, nbenfants, compt_mineur en entier 1 Début 2 Ecrire "Bienvenue à la RTM : calculez votre pourcentage de réduction!" 3 Ecrire "Indiquez le nombre d enfants présents dans votre foyer" 4 nbenfants Lire 5 compt_mineur 0 6 Pour i 1 à nbenfants 7 Ecrire "Quel est l age de votre ",i,"ème enfant?" 8 age Lire 9 Si (age<18) Alors 10 compt_mineur compt_mineur + 1 11 Fin Si 12 i Suivant 13 Si (compt_mineur==0) Alors 14 Ecrire "aucun enfant mineur : vous n avez le droit à aucune réduction." 15 Sinon 16 Si (compt_mineur==1) Alors 17 Ecrire "1 enfant mineur : vous avez le droit à 10% de réduction." 18 Sinon 19 Si (compt_mineur==2) Alors 20 Ecrire "2 enfants mineurs : vous avez le droit à 25% de réduction." 21 Sinon 22 Ecrire "3 enfants mineurs ou plus : vous avez le droit à 50% de réduction." 23 Fin Si 24 Fin Si 25 Fin Si 26 Fin 4) Exercice (4 pts) On considère le programme suivant : 1 PROGRAM monprog 4
2 3 IMPLICIT NONE 4 5 INTEGER :: i 6 REAL, dimension(0:11) :: tabt 7 8 tabt(0) = 1.2 9 tabt(1) = 5.6 10 tabt(2) = 3.4 11 tabt(3) = 1.1 12 tabt(4) = 0.6 13 tabt(5) = 1.6 14 tabt(6) = 1.5 15 tabt(7) = 0.5 16 tabt(8) = 0.0 17 tabt(9) = 1.8 18 tabt(10) = 0.1 19 tabt(11) = 8.1 20 21 tabref = tabt(0) 22 DO i = 1, 11 23 IF (tabt(i)>0.and. tabt(i)<tabref) THEN 24 tabref = tabt(i) 25 WRITE (, ) "On prend ", tabref 26 ELSE 27 WRITE (, ) "On garde ", tabref 28 END IF 29 END DO 30 END PROGRAM monprog 1. Indiquez ce qui s afficherait sur l écran si l on exécutait ce programme. On garde 1.2 rejet de tabt(1)=-5.6 (négatif ou nul) On garde 1.2 rejet de tabt(2)=3.4 ( 1.2) On prend 1.1 SUCCÈS de tabt(3)=1.1 (< 1.2) On garde 1.1 rejet de tabt(4)=-0.6 (négatif ou nul) On garde 1.1 rejet de tabt(5)=-1.6 (négatif ou nul) On garde 1.1 rejet de tabt(6)=1.5 ( 1.1) On prend 0.5 SUCCÈS de tabt(7)=0.5 (< 1.1) On garde 0.5 rejet de tabt(8)=0.0 (négatif ou nul) On garde 0.5 rejet de tabt(9)=1.8 ( 0.5) On prend 0.1 SUCCÈS de tabt(10)=0.1 (< 0.5) On garde 0.1 rejet de tabt(11)=-8.1 (négatif ou nul) 2. A quoi sert ce programme (en une phrase)? Indiquez la valeur finale de tabref. Que représentet-elle? Ce programme sert à déterminer, pour une série de valeurs réelles, la valeur minimale parmis les 5
valeurs strictement positives de la série. Ici, la valeur finale de tabref sera 0.1, ie le minium des valeurs 1.2, 3.4, 1.1, 1.5, 0.5, 1.8 et 0.1. 6