Académique Documents
Professionnel Documents
Culture Documents
SOLUTION :
QUESTION 2)
int nombre = 0;
SOLUTION :
Le for de « premier niveau » roulera donc 3 fois, les valeurs de i étant alors 0,1,2.
LE TOUR DE BOUCLE OÙ i = 0.
Le for de « deuxième niveau » roule alors une seule fois, le compteur « j » valant 0.
Lors de ce premier tour de boucle du for de 1ier niveau et l’unique tour de boucle du for
de 2ième niveau, « nombre » vaudra 15 quand on sortira du « do while ». On teste alors si
le nombre est pair ou pas. Avec 15, ça ne l’est pas, donc on exécute
«Console.Write((char)(97 + j));». Comme j vaut 0, ceci affiche le caractère dont le code
ASCII est 97 (il y a conversion explicite). Ceci affiche donc ‘a’.
Puis, saut de ligne.
LE TOUR DE BOUCLE OÙ i = 1.
Le for de 2ième niveau roule alors deux fois, j valant tour à tour 0 et 1.
Tout de suite après, j vaut 1. La valeur de « nombre » se rendra à 45, qui est impair. On
affiche donc le caractère dont le code ASCII est 97 + 1 – donc 98 -, soit ‘b’.
LE TOUR DE BOUCLE OÙ i = 2.
Le for de 2ième niveau roule alors trois fois, j valant tour à tour 0, 1 et 2.
Tout de suite après, j vaut 1. La valeur de « nombre » se rendra à 75, qui est impair. On
affiche donc le caractère dont le code ASCII est 97 + 1 – donc 98 -, soit ‘b’.
Tout de suite après, j vaut 2. La valeur de « nombre » se rendra à 90, qui est pair. On
affiche donc « j + 1 », donc 3.
a
1b
1b3
QUESTION 3)
do{
nombreEstNul = nombre = = 0;
a = 1;
borne = nombreEstNul ? 3 : 0;
ajustementBorne = nombreEstNul ? -1 : 1;
while (a < 3) {
borne += ajustementBorne;
for (int i = 0; i < borne ; i++){
nombre += a;
Console.Write(nombre);
}
Console.WriteLine();
a++;
}
} while (nombre != 9);
SOLUTION :
nombre = 0
Premier tour de boucle du « do while » :
nombreEstNul = nombre = = 0 vrai
a=1
borne = 3 (car « nombreEstNul » est vrai)
ajustementBorne = -1 (car « nombreEstNul » est vrai)
Premier tour de boucle du while (s’exécute car « a » (qui est égal à 1) < 3) :
borne = 2
Premier tour de boucle du for :
nombre = 1
« nombre » est alors affiché à la console
Deuxième tour de boucle du for :
nombre = 2
« nombre » est alors affiché à la console
Le for a donc affiché 12
Puis, saut de ligne
« a » est incrémenté de 1 à 2
AFFICHAGE FINAL:
12
4
5
79
QUESTION 4)
SOLUTION :
nombre = -1
Premier tour de boucle du « while » :
nombreEstNégatifUnitaire = nombre = = -1 vrai
borne = 3 (car « nombreEstNégatifUnitaire » est vrai)
ajustementBorne = -1 (car « nombreEstNégatifUnitaire » est vrai)
Premier tour de boucle du for (donc i = 0):
borne = 2
a=0
Premier tour de boucle du do-while :
a est incrémenté à 1
« nombre » passe de -1 à 0 et est alors affiché à la console
Le « do-while » continue car a (= 1) < borne (= 2)
a est incrémenté à 2
« nombre » passe de 0 à 1 et est alors affiché à la console
Le « do-while » s’arrête car a (= 2) N’EST PAS plus petit que borne (= 2)
Le « do-while » a donc affiché 01
Saut de ligne
AFFICHAGE FINAL:
01
3
4
68
QUESTION 5)
Un affichage sur un total de huit lignes. Il y a un certain mot qui sera important dans
l’affichage, qui apparaîtra en tout ou en partie à chaque ligne. Dans les deux premières
lignes, il sera « ventilé », en ce sens qu’entre chacune des lettres, un nombre sera inséré.
C’est toujours le même nombre sur une même ligne, mais ce n’est pas le même nombre
entre les lignes 1 et 2.
Dans les six dernières lignes, il n’y a plus de nombre, et il y a une certaine phrase qui
« s’allonge » de ligne en ligne.
SOLUTION :
Comme b = 9, le « for » tournera 9 fois. Ce for affiche donc les 9 premiers caractères de
la chaîne « s », les caractères aux positions 0 à 8, soit les caractères « Programme » (de la
chaîne « Programmer m’empêche de dormir! »).
Une fois le « while » terminé, le code regarde si cette « somme » est égale à 0. Si oui, il
affiche une chaîne vide (donc après le caractère qu’il vient tout juste d’afficher quelques
lignes plus haut). Mais si cette somme est plus grande que 0, c’est alors cette somme qui
est affichée juste après le caractère.
On peut donc conclure que la première ligne s’affichant à la console, dans ce premier tour
de boucle du « do-while », est
P10r10o10g10r10a10m10m10e10
Après cet affichage, « a » est incrémenté deux fois (passe donc de 1 à 3) et « b » est
incrémenté une fois (passe donc de 9 à 10).
b = 10.
le « for » tournera donc 10 fois.
Ce for affiche donc les 10 premiers caractères de la chaîne « s », les caractères aux
positions 0 à 9, soit les caractères « Programmer ».
Qu’en est-il du « while », soit la possibilité d’afficher un nombre après chacun des
caractères? « nombreTemporaire » est initialisé à « a », soit 3. Le « while » va rouler
jusqu’à ce que « nombreTemporaire » atteigne 5, donc « nombreTemporaire » va prendre
tour à tour les valeurs 3 et 4 et « somme » finira par contenir 7. C’est donc ce nombre qui
sera affiché après chacune des lettres et la ligne s’affichant à la console est donc :
P7r7o7g7r7a7m7m7e7r7
Après cet affichage, « a » est incrémenté deux fois (passe donc de 3 à 5) et « b » est
incrémenté une fois (passe donc de 10 à 11).
b = 11.
le « for » tournera donc 11 fois.
Ce for affiche donc les 11 premiers caractères de la chaîne « s », les caractères aux
positions 0 à 10, soit les caractères « Programmer », avec l’espace après le « r ».
Programmer
Après cet affichage, « a » est incrémenté deux fois (passe donc de 5 à 7) et « b » est
incrémenté une fois (passe donc de 11 à 12).
b = 12.
le « for » tournera donc 12 fois.
Ce for affiche donc les 12 premiers caractères de la chaîne « s », les caractères aux
positions 0 à 11, soit les caractères « Programmer m ».
Programmer m
Après cet affichage, « a » est incrémenté deux fois (passe donc de 7 à 9) et « b » est
incrémenté une fois (passe donc de 12 à 13).
b = 13.
le « for » tournera donc 13 fois.
Ce for affiche donc les 13 premiers caractères de la chaîne « s », les caractères aux
positions 0 à 12, soit les caractères « Programmer m’ ».
Le « while » ne roule pas : « nombreTemporaire » est initialisé à 9 et il est faux que 9 <
5. Aucun nombre affiché après chacun des caractères.
Programmer m’
Après cet affichage, « a » est incrémenté deux fois (passe donc de 9 à 11) et « b » est
incrémenté une fois (passe donc de 13 à 14).
b = 14.
le « for » tournera donc 14 fois.
Ce for affiche donc les 14 premiers caractères de la chaîne « s », les caractères aux
positions 0 à 13, soit les caractères « Programmer m’e ».
Programmer m’e
Après cet affichage, « a » est incrémenté deux fois (passe donc de 11 à 13) et « b » est
incrémenté une fois (passe donc de 14 à 15).
b = 15.
le « for » tournera donc 15 fois.
Ce for affiche donc les 15 premiers caractères de la chaîne « s », les caractères aux
positions 0 à 14, soit les caractères « Programmer m’em ».
Programmer m’em
Après cet affichage, « a » est incrémenté deux fois (passe donc de 13 à 15) et « b » est
incrémenté une fois (passe donc de 15 à 16).
b = 16.
le « for » tournera donc 16 fois.
Ce for affiche donc les 16 premiers caractères de la chaîne « s », les caractères aux
positions 0 à 15, soit les caractères « Programmer m’emp ».
Programmer m’emp
Après cet affichage, « a » est incrémenté deux fois (passe donc de 15 à 17) et « b » est
incrémenté une fois (passe donc de 16 à 17).
P10r10o10g10r10a10m10m10e10
P7r7o7g7r7a7m7m7e7r7
Programmer
Programmer m
Programmer m’
Programmer m’e
Programmer m’em
Programmer m’emp
QUESTION 6)
Si GUY LApointe (« Pointu ») portait le chandail #5, un autre grand « GUY LA… »
jouait pour le Canadien à cette époque, soit GUY LAfleur, qui portait le chandail #10.
Lafleur avait hérité des surnoms de « Flower » et du « Démon blond ».
En fait, cette syllabe de « LA » était vraiment à l’honneur dans les éditions du Canadien
des années ’70 :
Michel LArocque : gardien de but, #1 (surnom : « Bunny »)
Yvon LAmbert : ailier gauche, #11
Rod LAngway : défenseur, #17
LArry Robinson : défenseur, #19 (surnom : « Big Bird »)
Pierre LArouche : centre, #28 (surnom : « Lucky Pete »)
int indTablo_BorneInf = 0;
int nmbrDIter, compteurIterations;
int nombre = numeroDePointu;
while (nombre < numeroDuDemonBlond - 1){
nmbrDIter = lesAutresLa[indTablo_BorneInf+1] - lesAutresLa[indTablo_BorneInf];
compteurIterations = 0;
do{
for (int i = 0; i < tailleChaine - nombre;i++){
Console.Write(s[i]);
}
Console.WriteLine();
compteurIterations++;
} while (compteurIterations < nmbrDIter);
nombre++;
indTablo_BorneInf++;
}
Les 10 premières des 27 lignes sont identiques entre elles. Les 8 prochaines SEMBLENT
identiques entre elles, mais en réalité, il y un détail qui diffère entre les six premières et les deux
dernières (de ces huit). Finalement, les neuf dernières lignes sont identiques entre elles.
SOLUTION :
Avant le while…
Ceci implique que le « do while() » va rouler 10 fois : « compteurIterations » est initialisé à 0, est
incrémenté dans le « do while() » et va donc rouler jusqu’à se rendre à 9; quand
« compteurIterations » atteindra 10, comme il est faux que 10 < 10, le « do while() » cessera.
À chaque tour de boucle de ce « do while() », la ligne qui s’affichera à la console est déterminée
par le « for » : il affichera des caractères jusqu’à ce que « i » soit inférieur à « tailleDeLaChaine
– nombre ». Comme ici, nombre = 5, cela veut dire que les 5 derniers caractères sont enlevés.
DONC, dans le premier tour de boucle du « while » initial, la phrase amputée de ses 5 derniers
caractères sera affichée 10 fois :
Programmer est dangereux pour ma s
Programmer est dangereux pour ma s
Programmer est dangereux pour ma s
Programmer est dangereux pour ma s
Programmer est dangereux pour ma s
Programmer est dangereux pour ma s
Programmer est dangereux pour ma s
Programmer est dangereux pour ma s
Programmer est dangereux pour ma s
Programmer est dangereux pour ma s
Après cet affichage, « nombre » est incrémenté (passe donc de 5 à 6) et
« indTablo_BorneInf » aussi (passe donc de 0 à 1).
Dans chacun des tours de boucle de ce « do while() », la ligne qui s’affiche est la chaîne « s »
amputée de ses 6 derniers caractères (puisque nombre = 6).
Ainsi, dans ce second tour de boucle du « while » initial, la phrase amputée de ses 6 derniers
caractères sera affichée 6 fois :
TRÈS IMPORTANT : à la fin de chacune de ces 6 lignes, il y a une espace qui n’est pas visible à
la console!
Dans chacun des tours de boucle de ce « do while() », la ligne qui s’affiche est la chaîne « s »
amputée de ses 7 derniers caractères (puisque nombre = 7).
Ainsi, dans ce second tour de boucle du « while » initial, la phrase amputée de ses 7 derniers
caractères sera affichée 2 fois :
Dans chacun des tours de boucle de ce « do while() », la ligne qui s’affiche est la chaîne « s »
amputée de ses 8 derniers caractères (puisque nombre = 8).
Ainsi, dans ce second tour de boucle du « while » initial, la phrase amputée de ses 8 derniers
caractères sera affichée 9 fois :
Programmer est dangereux pour m
Programmer est dangereux pour m
Programmer est dangereux pour m
Programmer est dangereux pour m
Programmer est dangereux pour m
Programmer est dangereux pour m
Programmer est dangereux pour m
Programmer est dangereux pour m
Programmer est dangereux pour m
AFFICHAGE FINAL:
Supposez que vous ayez accès à la méthode « EstConsonne(…) » qui prend en paramètre
un caractère et retourne vrai ou faux selon que ce caractère est un lettre et une consonne
(peu importe que la lettre soit minuscule ou majuscule). Indiquez alors ce que la console
affichera suite à l’exécution des structures de contrôle itératives suvantes.
string alphabet = "abcdefghijklmnopqrstuvwxyz";
int indiceDansAlphabet = -1;
char carac;
for (int i = 1; i <= 4; i++){
Console.Write(alphabet[i]);
do {
Console.Write("toto");
indiceDansAlphabet++;
carac = alphabet[indiceDansAlphabet];
while(EstConsonne(carac)){
Console.Write(carac);
indiceDansAlphabet++;
carac = alphabet[indiceDansAlphabet];
}
} while (EstConsonne(carac));
Console.WriteLine();
}
SOLUTION :
indiceDansAlphabet = -1
Le do while s’arrête également pour la même raison : « e » n’est pas une consonne
Saut de ligne
Ce qui a été affiché dans ce 2ième tour de boucle du for est ctotobcd
Le do while s’arrête également pour la même raison : « i » n’est pas une consonne
Saut de ligne
Ce qui a été affiché dans ce 3ième tour de boucle du for est dtotofgh
encore une fois, le while sera exécuté tant que les lettres visitées (à partir du
« j » de la ligne précédente) sont des consonnes, donc affichera ici « jklmn ».
Lorsqu’on est rendu à « o », le while s’arrête. « indiceDansAlphabet » a donc
été incrémenté cinq fois et vaut maintenant 14.
Le do while s’arrête également pour la même raison : « o » n’est pas une consonne
Saut de ligne
Ce qui a été affiché dans ce 4 ième ET DERNIER tour de boucle du for est
etotojklmn
AFFICHAGE FINAL:
btoto
ctotobcd
dtotofgh
etotojklmn