Copyright © 2025 Yves MARCOUX; dernière modification de cette page: 2025-05-13.
SCI6373 Programmation documentaire
Exercices à faire après avoir complété les lectures données au Cours 1
Yves MARCOUX – EBSI – Université de Montréal
Votre coffre à outils jusqu’à maintenant Outil Fait quoi ? Utilisation Vu où ? + - * /+ - × ÷ n1 + n2§ 6 +Concaténation de chaînes ch1 + ch2§ 6 =Assignation de variable maVar = expression§ 7 Math.PIπ (3.14159…) Math.PI§ 5
0
"bonsoir"
8.57
true
false
"BONJOUR"
null
0 et 8.57 : numériquetrue,
false et null :
autonyme"bonsoir" et "BONJOUR" :
caractère
0,45
"bonsoir'
True
NULL
0.45 ou
"bonsoir"'bonsoir' (comme
pour les variables, la casse des lettres importe dans le nom des constantes
autonymes)
true
null
8.5700 représente-t-elle la valeur JS
8.57 ?Oui, on peut ajouter des zéros non significatifs sans changer la valeur de la constante. Attention, on ne peut pas toujours ajouter des zéros non significatifs au début d’un nombre – discussion à venir en classe.
3,220 représente-t-elle la valeur JS
3.22 ?Non, le séparateur décimal en JS est le point et non la virgule.
'Bonjour' représente-t-elle la valeur JS
"Bonjour" ?Oui, on peut utiliser les guillemets simples ou doubles comme délimiteurs des constantes caractères.
'Bonjour' +
"le monde"."Bonjourle monde" (Il n’y a pas d’ajout automatique d’espace
lors d’une concaténation.)
msg = msg + " Bonne journée !"
msg = msg + " Bonne journée !"
rép = (2 * 10+1.07)
rép = (2 * 10+1.07)
rép = (2 * 10+1.07)
rép = (2 *
10+1.07)
Les parenthèses ne sont
pas considérées comme un opérateur.
9 - (6 / 2) + (2 * 3)
9 - (6 / 2) + (2 * 3)
9 - (6 / 2) + (2 * 3)
Les opérations de même priorité s’effectuent de gauche à droite. Donc, c’est le résultat de la soustraction qui sera l’argument de gauche du +.
9 - (6 / 2) + (2 * 3)
- dans l’expression suivante :
9 - (6 / 2) + (2 * 3)
9 - (6 / 2) + (2 * 3)
- dans l’expression suivante :
9 - (6 / 2) + (2 * 3)
9 - (6 / 2) + (2 *
3)
20 * (4.5 + 0.5) / (11 - 1)
+ * - /
9 - (6 / 2) + (2 * 3)
12 (soit 9 - 3 + 6)
20 * (4.5 + 0.5) / (11 - 1)
20 * (4.5 + 0.5) / (11 - 1)
20 * (4.5 + 0.5) / (11 - 1)
Les opérations de même priorité s’effectuent de gauche à droite. Donc, c’est le résultat du * qui sera l’argument de gauche du /.
20 * (4.5 + 0.5) / (11 - 1)
20 * (4.5 + 0.5) / (11 - 1)
10 (soit 20 * 5 / 10)
rép = (2 * 10+1.07)
rép = (2 * 10+1.07)
la partie soulignée est-elle une sous-expression ?
(10+1.07) * (rép = 2)
Oui, car l’assignation = s’exécute avant la multiplication
*, à cause des parenthèses.
la partie soulignée est-elle une sous-expression ?
(10+1.07) * (rép = 2)
Oui, d’ailleurs toute sous-expression que l’on entoure de parenthèses demeure une sous-expression.
la partie soulignée est-elle une sous-expression ?
rép = 2 * 10+1.07
Non, car la multiplication * s’exécute avant l’assignation
=, qui a plus basse priorité.
la partie soulignée est-elle une sous-expression ?
rép = 2 * 10+1.07
Oui, car la multiplication * s’exécute avant l’addition
+.
la partie soulignée est-elle une sous-expression ?
rép = 2 * 10+1.07
Oui, car la multiplication * et l’addition +
s’exécutent avant l’assignation =.
la partie soulignée est-elle une sous-expression ?
rép = 2 * 10+1.07
Non, car la multiplication * s’exécute avant l’addition
+.
résultat = 2 * 10+1.07
résultat = 2 * 10+1.07
la partie soulignée est-elle une sous-expression ?
rép = 2 * 10+1.07
Oui, c’est une LHS (left-hand side) constituée d’un nom de variable.
(10+1.07) * (réponse = 2)
(10+1.07) * (réponse = 2)
Il n’y en a qu’une.
(r1 = 10+1.07) * (r2 = 2)
(r1 = 10+1.07) * (r2 = 2)
Faux, la règle d’enchaînement permet d’enchaîner autant d’expressions que
l’on veut, et donc d’assignations; par exemple :v1 = v2 = v3 =
"Hello world"
Non, une LHS peut être plus complexe qu’un simple nom de variable.
msg = msg + " Bonne journée !"
msg = msg + "
Bonne journée !"
msg = msg + " Bonne journée !"
Une auto-réassignation.
r = (r1 = 10+1.07) * (r2 = 2)
r1 = 10+1.07
r2 = 2
r = r1 * r2
msg = "à tout " ;
msg = 'Bonjour ' + msg ;
msg = msg + "le monde" ;
msg = "Bonjour à tout le monde"
nom contient une valeur
caractère, inconnue au moment d’écrire les énoncés) :
msg = nom ;
msg = 'Bonjour ' + msg ;
msg = msg + ". Amuse-toi bien !" ;
msg = "Bonjour " + nom + ". Amuse-toi bien !"
dim contient une valeur
numérique, inconnue au moment d’écrire les énoncés) :
dim = dim * dim ;
dim = dim / 4 ;
cout = dim * Math.PI * 17.99 ;
cout = dim * dim / 4 * Math.PI * 17.99
Les questions suivantes décrivent des calculs qu’on demande de transformer en expressions JS. On vous demande de donner deux réponses pour chaque question :
Comme suite d’énoncés :
coutPommes = 3 * 1.07 ;
coutOranges = 4 * 1.89 ;
coutTotal
= coutPommes + coutOranges ;
En une seule expression :
3*1.07+4*1.89
Il n’est pas nécessaire d’utiliser les parenthèses (puisque * a priorité sur +), mais rien n’empêche de le faire si on veut clarifier l’expression :
(3*1.07) + (4*1.89)
Il y a plusieurs façons d’exprimer les calculs à faire (elles donnent toutes la même réponse de 317,3724); nous en présentons une.
Comme suite d’énoncés :
coutRaquettes = 2 * 135 ;
coutBalles = 3 * 24.99
;
coutTotalBrut = coutRaquettes + coutBalles ;
coutTotalReduit =
coutTotalBrut * 0.8 ;
coutTotal = coutTotalReduit * 1.15 ;
En une seule expression :
(2 * 135 + 3 * 24.99) * 0.8 * 1.15
rayon. Cette piscine doit être recouverte d’une toile, dont le
rayon excède celui de la piscine par 20 cm. La toile sera maintenue en place par
un fil de métal faisant le tour de la piscine. La toile coûte 18$ par mètre carré
et le fil de métal 6$ par mètre. Quel est le coût total du matériel requis? (Pas
besoin que vos expressions arrondissent le résultat.)Petit rappel : la
circonférence d’un cercle est 2πr et son aire
πr2, où r est le rayon.
Comme suite d’énoncés :
rayonT = rayon + 0.2
rayonT2 = rayonT * rayonT ;
surface =
Math.PI * rayonT2 ;
coutToile = surface * 18 ;
deuxPI = 2 *
Math.PI ;
circonf = deuxPI * rayon ;
coutFil = circonf * 6
;
coutTotal = coutToile + coutFil ;
En une seule expression :
Math.PI*(rayon + 0.2)*(rayon + 0.2)*18 + 2*Math.PI*rayon*6
Cette expression peut être simplifiée (avec un peu de travail) en :
Math.PI * 18 * (rayon * (rayon + 16/15) + 0.04)
mais cette dernière expression nous semble moins facile à comprendre que l’originale. Question lisibilité, l’expression non simplifiée est donc sans doute préférable.