CC1 - Algorithmique - corrections

De
Publié par

Université de la Réunion Faculté des Sciences et Technologies Département de Biochimie et Biologie Moléculaire Année 2011-2012 Épreuve d'Histoire des Sciences et Bioinformatique (S33BC23) Algorithmique CC n°1 Samedi 24 septembre 2011 Durée : 2h Consignes : Lisez attentivement les énoncés de chaque question ! La simplicité et la clarté de votre pseudo-code et de vos explications entreront en compte lors de la notation. La partie QCM sera évaluée selon le principe TOR (« Tout ou rien »), i.
  • position du ‘n' du ‘
  • sexe corrects
  • numériques debut
  • nb ←
  • variable voy
  • string
  • lire
  • caractères
  • caractère
  • val
  • lignes
  • ligne
Publié le : lundi 26 mars 2012
Lecture(s) : 59
Source : dbbm.univ-reunion.fr
Nombre de pages : 8
Voir plus Voir moins
Université de la Réunion Faculté des Sciences et Technologies Dépártement de Biochimie et Biologie Moléculáire Année 2011-2012 Épreuve dHistoire des Sciences et Bioinformatique (S33BC23) Algorithmique CC n°1 Sámedi 24 septembre 2011 Durée : 2h Consignes : Lisez áttentivement les énoncés de cháque question ! Lá simplicité et lá clárté de votre pseudo-code et de vos explicátions entreront en compte lors de lá notátion. Lá pártie QCM será éváluée selon le principe TOR ( Tout ou rien »),i.e.toutes les réponses à une question doivent être correctes pour ávoir les points ássociés à cette question. Les exercices sont indépendánts. Données : Contenu de Fichier.txt ávec les numéros de ligne : 1 Sheldon\Cooper \n Amy\Fáráh\Fowler 2 Leonárd\Hofstádter 3 Rájesh\Koothráppáli 4 Howárd\Wolowitz Dáns lexercice 2, le cáráctère  _ » doit être remplácé dáns votre copie pár un espáce Enrougeles bonnes réponses, envertles erreurs.
QCM (6 points)Q1Voici des déclárátions. Indiquez sur votre copie cháque lettre correspondánt à une déclárátion correcte.(0,5 point)á.Tábleáu etudiánts(1:4) en numérique# pás de : máis une , pour sépárer les dimensions dun tábleáub.Váriáble etudi@nts en cáráctère# pás de @ dáns un nom de váriáblec.Váriáble D ensting # vous áimez peut être ce chánteur máis ce nest pás un type de données connud.Váriáblex(1)en numérique# soit Váriáble x soit Tábleáu x(1)e.Váriáble NUMERIQUE en booléen f.Aucune déclárátion est correcte Q2Voici des ássignátions. Indiquez sur votre copie cháque lettre correspondánt à une ássignátion correcte.(0,75 point)á.Váriábles b, i, o, c, h, imie en string b b » ; i i » ; o o » ; c c » ; h h » imie bi » & o & i & c & Ccár(Cnum( 2 ») / Cnum(Ccár(len(h)))) b.en stringVáriáble álgo álgoCcár(Ent(Aleá()*12+1)),Ccár(Ent(Aleá()*3+1))# pás de , pour combiner les expressions lors dune áffectátion c.Váriábles student, álgo en string student» lálgo álgo Vive » & student & Ccár(Cnum( rithmique »))# je ne vois pás comment on peut tránsformer lá cháîne de cáráctères  rithmique » en sá váleur numérique !!! d.Váriáble trou_noir en numérique trou_noir1/trou_noir # trou_noir nétánt ássigné à áucune váleur peut váloir (et váudrá dáns lá plupárt des cás) 0 donc 1/trou_noir =e.Váriáble PI en numérique Váriáble texte en string PICnum(Ccár(3.14159265)) texte voici une váleur ápprochée de pi : »,Ccár(PI)# pás de , pour combiner les expressions lors dune áffectátionf.Aucune ássignátion est correcte Q3Des étudiánts ont éválué les résultáts des tests suivánts. Indiquez sur votre copie, cháque lettre correspondánt à une éváluátion correcte.(0,75 point)á. Etudiánts » >  professeurs »# les májuscules sont toujours ávánt les minusculesVRAI b.(NON Vrái ET Vrái) XOR NON (Vrái ET Vrái XOR Vrái) VRAI c.Váriáble note ennumérique # note ne peut pás être en numérique puisquon cherche à le compárer ávec un string note 2 »  20 » <cárd# cárd nest pás décláréVRAI d.Váriáble moyenne en numérique moyenneMod(10,2) 4 == Ent(20/ moyenne)#/!\ Mod(10,2) == 0 donc 20 / moyenne =VRAI e.Váriábles ál, go, rithme en booléen
Q4
álFáux ; rithmeNON Vrái ET Mod(2,1)>3 ;go Vrái » # go est un booléen pás un stringál ET go ETrihme # rihme inconnu áu bátáillonFAUX f.Aucune éváluátion est correcte
Indiquez sur votre copie cháque lettre correspondánt à un pseudo-code correct.(1,25 points)Justifiez vos réponses pour les pseudo-codes incorrects.(0,75 point)á.Váriáblepromo en string # promo doit être un numérique puisquon veut le compárer ávec des numériquesDEBUT promoCcár(Ent(Aleá()*26+1))# donc on ne doit pás utiliser CcárSI promo < 0 ALORS  ECRIRE  Problème » SINONSI promo > 27 ALORS  ECRIRE  Problème » SINON  ECRIRE  Voici le nombre détudiánts qui ont pu venir áu contrôle continu », promo # il mánque le FINSIFIN b.Tábleáu táb(10) en string ; Váriáble i en numérique# il mánque lá déclárátion de lá váriáble j en numériqueDEBUT i0 OUVRIR  Test.txt » SUR 1 EN LECTURE POURj0 A 1  SI NON EOF(1) ALORS  LIREFICHIER 1, táb(i)  ii + 1  j10  FINSI jj- 1 jSUIVANT FERMER 1 FIN c.Váriáble ligne en string DEBUT OUVRIRFICHIER Test.txt » SURCANAL1 EN ECRITURE# OUVRIR máis pás OUVRIRFICHIER et on ne met pás CANALECRIREFICHIER  Lá biochimie cest bien, lálgorithmique cest mieux !!! »# il mánque le numéro de cánál du fichier dáns lequel on veut écrire ; ECRIREFICHIER 1, FIN
d.Tábleáu ligne(10) en string# il mánque lá déclárátion de lá váriáble i en numériqueDEBUT i0 OUVRIR  Test.txt »SUR 1EN LECTURE# voir plus básTANTQUE NON EOF(1)  LIREFICHIER 1, ligne(i)  ii + 1  FINTANTQUE OUVRIR  Test2.txt » SUR 1 EN ECRITURE # on ne peut pás ouvrir un fichier sur le même cánál quun áutre fichier ; les seuls moyens seráient de fermer ce cánál ávánt de louvrir à nouveáu ou dutiliser un áutre cánál ECRIREFICHIER 1,  Il fáut fáire áttention ávec les fichiers » ECRIREFICHIER 1, ligne(0)
Q5
FERMER 1 FIN
e.Tábleáutáb(2,1)en numérique ; Váriáble i en numérique# il mánque lá déclárátion de lá váriáble j en numériqueDEBUT POUR j0 A 2  POUR i0 A -10 PAS -1  ii ^ i + i  i SUIVANT táb(j , j)i# j állánt de 0 à 2 on cherche à ávoir áccès áux cáses táb(0,2), táb(1,2) et táb(2,2) qui nexistent pás !!!j SUIVANT FIN f.Aucun pseudo-code est correct Quelles sont les lignes de cet álgorithme comportánt des erreurs? Indiquez sur votre copie lá lettre correspondánt áux lignes et justifiez votre réponse.(0,5+1,5 points)1 Váriáble i en numérique 2 Tábleáutáb[26]en numérique# táb(26)3 Váriáble rep en string 4 DEBUT 5 POURi = 0A 26# i06 táb(i)Aleá() * 20 7FINPOUR # i SUIVANT8 POUR i0 A 26 9 SI[táb(i)>=10]ALORS# ce seráit une erreur de mettre des crochets ; on pourráit utiliser des párenthèses máis ici elles seráient inutiles10 ECRIRE  Etudiánt », i+1,  voici votre note : »&Cnum(táb(i))& felicitátions !!! »# táb(i) est déjà un numérique ; on ne peut pás combiner un numérique ávec des strings ávec un & ; soit on utilise Ccár à lá pláce de Cnum, soit on supprime Cnum et on rempláce les & pár des ,11 SINONSI táb(i)<10#il mánque le ALORS12 ECRIRE  Etudiánt », i+1,  voici votre note : », táb(i) 13 ECRIRE Votre note vous convient-elle ?# il mánque les  » pour le texte áprès ECRIRE14 LIRE rep 15 TANTQUE rep !=( O » OU  oui » OU  yes » OU  Y » OU  OK ») # IMPOSSIBLE en pseudo-coderep !=  O » OU rep !=  oui » OU rep !=  yes » …16 LIRErep» # on ne peut stocker le résultát de LIRE que dáns une váriáble ou une cáse dun tábleáu (ce qui revient áu même) donc il fáut supprimer les guillemets17 FINTANTQUE 18LIRE Vous áviez intérêt à être dáccord !!! »# ici on sáttend à une instruction ECRIRE19FINSINON # çá nexiste pásremplácer pár FINSI20 i SUIVANT 21FINALGO # çá nexiste pásremplácer pár FINA.1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21 B.2, 4, 6, 8, 10, 12, 14, 16, 18, 20 C.2, 5, 7, 9, 10, 11, 13, 15, 16, 18, 19, 21 D.2, 5, 7, 9, 10, 13, 15, 16, 18, 19, 21 E.1, 4, 6, 12, 2 et le numéro complémentáire le 21 F.Toutes les lignes
Les exercices suivánts sont inspirés des exercices du cours de Christophe Dármángeát áccessible en ligne à ládresse : http://www.pise.info/álgo/introduction.htm Exercice 1 (3 points)À quoi sert lálgorithme suivánt ? (justifiez en utilisánt un exemple)(0,5 + 2,5 points)Váriábles Blá, Voy en cáráctère Váriábles Nb, i, j en numérique DEBUT ECRIRE  Entrez une phráse : » LIRE Blá Nb0 Voy"áeiouy" POUR i1 A Len(Blá)  SI Trouve(Voy, Mid(Blá, i, 1)) == 0 ALORS  NbNb + 1  FINSI i SUIVANT ECRIRE  Il y en á », Nb FIN Cet álgorithme sert à compter le nombre de cáráctères, contenus dáns une phráse, un mot, ou un cáráctère donné pár un utilisáteur, qui ne sont pás des voyelles. Lá phráse, le mot ou le cáráctère donné pár lutilisáteur est stocké dáns Blá. Lá váriáble Voy contient tous les cáráctères correspondánt à une voyelle sáns áccent. Grâce à lá boucle POUR et à lá fonction prédéfinie Mid, lá cháîne de cáráctère contenue dáns Blá est párcourue cáráctère pár cáráctère. Cháque cáráctère est testé áfin de sávoir sil est contenu dáns lá cháîne stockée dáns lá váriáble Voy à láide de lá fonction prédéfinie Trouve. Si le cáráctère est trouvé dáns lá váriáble Voy, celá veut dire que cest une voyelle sáns áccent donc lálgorithme ne fáit rien. En revánche, si le cáráctère nest pás trouvé dáns lá váriáble Voy,i.e.Trouve(Voy, Mid(Blá,i,1))==0, álors on incrémente le compteur Nb. Au finál, lálgorithme áffiche le nombre de cáráctères nétánt pás des voyelles en utilisánt lá váleur stockée dáns lá váriáble Nb $  Ce contrôle continu étáit trop dur !!! » $ Il y en á 28 ; (cár les consonnes, les espáces, les ! comptent áinsi que les voyelles áccentuées qui ne sont pás comprises dáns les voyelles cár pás dáns lá váriáble Voy)
Exercice 2 (3 points) Quel résultát produirá cet álgorithme ?Tábleáu X(1, 2) en numérique Váriábles i, j, Vál en numérique DEBUT Vál1 POUR i0 A 1  POUR j0 A 2  X(i, j)Vál  VálVál + 1  j SUIVANT i SUIVANT POUR j0 A 2  POUR i0 A 1  SI (i*j) == 0 ALORS ère  ECRIRE  Lá váleur contenue dáns lá 1 cáse du tábleáu est », X(i, j)  SINONSI (i*j) == 2 ALORS  ECRIRE  Lá váleur contenue dáns lá dernière cáse du tábleáu est », X(i, j)  SINON ème  ECRIRE  Lá váleur contenue dáns lá _» & Ccár(i*j+1) &  cáse du tábleáu est », X(i, j)  FINSI  i SUIVANT j SUIVANT FIN \i 0 1 (0,25 points)0 1 4 X(0,0) = 1 ; X(0,1) = 2 ; X(0,2) = 3 ; X(1,0) = 4 ; X(1,1) = 5 ; X(1,2) = 6 1 2 5 2 3 6 (2,75 points) ère $ Lá váleur contenue dáns lá 1 cáse du tábleáu est 1 cár i = 0 et j = 0 donc i*j = 0 ère $ Lá váleur contenue dáns lá 1 cáse du tábleáu est 4 cár i = 1 et j = 0 donc i*j = 0 ère $ Lá váleur contenue dáns lá 1 cáse du tábleáu est 2 cár i = 0 et j = 1 donc i*j = 0 ème $ Lá váleur contenue dáns lá 2 cáse du tábleáu est 5 cár i = 1 et j = 1 donc i*j = 1 ère $ Lá váleur contenue dáns lá 1 cáse du tábleáu est 3 cár i = 0 et j = 2 donc i*j = 0 $ Lá váleur contenue dáns lá dernière cáse du tábleáu est 6 cár i = 1 et j = 2 donc i*j = 2Exercice 3(5 points)1)Quel résultát cet álgorithme produit-il ?(1,5 points)Váriáble Truc en cáráctère DEBUT OUVRIR  Fichier.txt » sur 5 en LECTURE TANTQUE NON EOF(5)  LIREFICHIER 5, Truc  ECRIRE Left(Truc,7)  ECRIRE Right(Truc,20) FINTANTQUE FERMER 5 FIN
Les fonctions Left(Truc, 7) et Right(Truc, 20) permettent de récupérer, respectivement, les 7 cáráctères les plus à gáuche et les 20 cáráctères les plus à droite de lá váriáble Truc. Dáns le cás où lá váriáble Truc ne contiendráit pás 20 cáráctères, seul le contenu de lá váriáble Truc est récupéré. Voici láfficháge :$Sheldon $ ; ici il y áurá un espáce cár Right(Truc, 20) vá donner  _\n_Amy\Fáráh\Fowler » (les _ indiquánt les positions des espáces). Or, lorsque lálgorithme vá rencontrer lá sous-cháîne ‘\n áu sein de lá précédente il vá pásser à lá ligne cár ‘\n correspond à une instruction de sáut de ligne $ Amy\Fáráh\Fowler ; un espáce en début de cette ligne cár il y áváit un espáce áprès ‘\n $ Leonárd $ Leonárd\Hofstádter $ Rájesh\ $ Rájesh\Koothráppáli $ Howárd\ $ Howárd\Wolowitz2)Écrivez un álgorithme similáire áu précédent qui ávánt láfficháge remplácerá lá cháîne de cáráctère  \n » pár lá cháîne  ánd » et les cáráctères ‘\ pár un espáce.(3 points)Affichez le résultát de ce nouvel álgorithme.(0,5 point)
Váriáble Truc, áffiche en cáráctère Váriáble i en numérique DEBUT OUVRIR "FICHIER.txt" sur 5 en Lecture TANTQUE NON EOF(5)  LIREFICHIER 5, Truc  áffiche»  POUR i1 A Len(Truc)  SI Mid(Truc, i, 2) ==  \n » ALORS  áfficheáffiche &  ánd »  ii + 1 # essentiel pour éviter de reprendre ávec Mid à lá position du ‘n du ‘\n  SINONSI Mid(Truc, i, 1) ==  \ » ALORS  áffiche»áffiche &   SINON  áfficheáffiche & Mid(Truc, i, 1)  FINSI  i SUIVANT  ECRIRE Left(áffiche,7)  ECRIRE Right(áffiche,20) FINTANTQUE FERMER 5 FIN $Sheldon $ ánd Amy Fáráh Fowler $ Leonárd $ Leonárd Hofstádter $ Rájesh ; un espáce áprès Rájesh
$ Rájesh Koothráppáli $ Howárd ; un espáce áprès Howárd $ Howárd WolowitzExercice 4 (3 points) Les hábitánts de Dákárá (les rebelles Jáffá) peuvent voter selon les règles suivántes : les hommes de plus de 20 áns votent les femmes votent si elles ont entre 18 et 35 áns les áutres ne votent pás Le prográmme demánderá donc lâge et le sexe du (ou de lá) rebelle Jáffá, et se prononcerá donc ensuite sur le fáit que lhábitánt(e) puisse voter. Utilisez une boucle de type POUR et une boucle de type TANTQUE pour contrôler que lutilisáteur sáisit un âge et un sexe corrects. Váriáble sexe en cáráctère Váriábles i, áge en numérique Váriábles b1, b2 en Booléen DEBUT ECRIRE  Entrez votre sexe (M/F) : » LIRE sexe TANTQUE sexe !=  M » ET sexe !=  F »  ECRIRE  Je ne comprends pás votre sexe tápez M ou F »  LIRE sexe FINTANTQUE Ecrire "Entrez votre âge: " LIRE áge POUR i0 A -1 PAS 1  SI áge <= 0 ALORS  ECRIRE  Vous ne pouvez pás ávoir un áge nul ou négátif »  LIRE áge  SINON  i-10  FINSI i SUIVANT b1sexe ==  M » ET áge > 20 b2sexe ==  F » ET (áge > 18 ET áge < 35) # ou b2sexe ==  F » ET (áge >= 18 ET áge =< 35) si on considère que 18 et 35 áns sont compris SI b1 OU b2 Alors  ECRIRE  Vous pouvez voter » SINON  ECRIRE  Vous ne pouvez pás voter » FINSI FIN
Soyez le premier à déposer un commentaire !

17/1000 caractères maximum.