Copyright © 2025 Yves MARCOUX; dernière modification de cette page : 2025-05-28.

SCI6373 Programmation documentaire

Exercices après lectures données au Cours 4

En prévision du Cours 6

Yves MARCOUXEBSIUniversité 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
= Assignation d’un membre chemin.d.accès = expression § 12.1
+=, -=, *=, … Auto-réassignation d’une variable ou d’un membre maVar += expression
ou
chemin.d.accès += expression
C3
++, -- Incrémentation / décrémentation de variable ou membre à valeur numérique, retourne la nouvelle valeur ++maVar
ou
++chemin.d.accès
C3
++, -- Incrémentation / décrémentation de variable ou membre à valeur numérique, retourne l’ancienne valeur maVar++
ou
chemin.d.accès++
C3
Math.PI π (3.14159…) Math.PI § 5
== Est égal à val1 == val2 § 9.1
=== Égalité stricte (sans conversion) val1 === val2 C2
!= Est différent de val1 != val2 § 9.1
> Est plus grand que val1 > val2 § 9.1
>= Est plus grand que ou égal à val1 >= val2 § 9.1
< Est plus petit que val1 < val2 § 9.1
<= Est plus petit que ou égal à val1 <= val2 § 9.1
isNaN() Vérifie si la valeur d’une expression est NaN isNaN(expression) C3
|| OU booléen val1 || val2 § 9.2
&& ET booléen val1 || val2 § 9.2
! NON booléen !val § 9.2
? : Choix conditionnel valBool ? valSiVrai : valSiFaux § 9.3
- Inversion de signe -n § 9.4
+ Chaîne → nombre +ch § 9.4
.toFixed() n1 → chaîne avec n2 chiffres après le point n1 .toFixed(n2) § 13
Math.min() Minimum Math.min(n1, n2, …) § 10.1
Math.max() Maximum Math.max(n1, n2, …) § 10.1
Math.sqrt() Racine carrée Math.sqrt(n) § 10.1
Math.pow() Exposant Math.pow(n1, n2) § 10.1
Math.abs() Valeur absolue (valeur positive) Math.abs(n) § 12.2
Math.random() Nombre aléatoire ≥ 0 et < 1 Math.random() § 12.2
.length Longueur d’une chaîne ch.length § 10.2
.charAt() Extrait caractère en position ch.charAt(n) § 10.2
.slice() Extrait sous-chaîne ch.slice(nDéb, nFin) § 10.2
.toUpperCase() → Majuscules ch.toUpperCase() § 10.2
.toLowerCase() → Minuscules ch.toLowerCase() § 10.2
.indexOf() Position d’une sous-chaîne ch1.indexOf(ch2) § 10.2
.lastIndexOf() Dernière position d’une sous-chaîne ch1.lastIndexOf(ch2) C2
.includes() Présence d’une sous-chaîne ch1.includes(ch2) § 10.2
prompt() Affiche invite & lit une chaîne chLue = prompt(chInvite) § 10.3
alert() Affiche message alert(chMessage) § 10.3
.trim() Enlève blancs initiaux et finaux ch.trim() C3
.replace() Remplace sous-chaîne ch1 par ch2 ch.replace(ch1, ch2) C3
if / if…else Blocs conditionnels if (valBool) {
   blocSiVrai
} else {
   blocSiFaux
};
C3
console.log() Affiche à la console console.log(val1, val2, …) C3
function Définition d’une FDP function nom(p1, p2, …) {
   bloc
};
C4
return Termine l’exécution d’une FDP et retourne une valeur return expression; C4

Objets

Toutes les expressions données sont syntaxiquement correctes et s’exécutent sans erreur.

  1. Dans l’expression suivante :

    S = document.body.style

    quel est l’argument de droite du "." le plus à gauche ?
    - Réponse
    body, l’argument de droite du . est toujours un simple nom de membre. Il ne peut même pas être inscrit entre parenthèses. L’argument de gauche, quant à lui, doit être une sous-expression dont la valeur est un pointeur à un objet (ce qui est bien le cas ici).
  2. Soulignez la ou les LHS dans l’expression suivante :

    document.getElementById("monInput").value = 42

    - Réponse
    Il n’y en a qu’une :

    document.getElementById("monInput").value = 42

  3. Identifiez les sous-expressions qui sont un pointeur à une fonction dans l’expression suivante :

    document.getElementById('monP').toString()

    - Réponse
    Il y en a deux :

    document.getElementById('monP').toString()

    et

    document.getElementById('monP').toString()

  4. Quelle sous-expression désigne l’objet dont innerText est membre dans l’expression suivante :

    t = document.getElementById("monP").innerText

    - Réponse

    t = document.getElementById("monP").innerText

  5. Soulignez la sous-expression qui est l’argument de gauche du "." dans l’expression suivante :

    m = Math.min

    - Réponse

    m = Math.min

    L’argument de droite du . est toujours un simple nom de membre. Il ne peut même pas être inscrit entre parenthèses. L’argument de gauche, quant à lui, doit être une sous-expression dont la valeur est un pointeur à un objet (ce qui est bien le cas ici).

  6. Lequel des énoncés suivants est vrai :

    (i) En JS, l’environnement est un objet.
    (ii) En JS, l’environnement est un pointeur à un objet.

    - Réponse
    (i).
  7. Vrai ou faux. Tous les membres statutaires de l’environnement navigateur Web sont des objets.
    - Réponse

    Il faut d’abord réaliser que, dans sa formulation, la question s’appuie sur l’« abus de langage utile et répandu » présenté dans la lecture. Pour mémoire, cet abus de langage consiste à parler d’un pointeur à un objet comme s’il s’agissait de l’objet lui-même. Un membre de l’environnement ne pourrait pas « être » un objet, puisque seuls des pointeurs à un objet peuvent être stockés dans un membre de l’environnement, statutaire ou non.

    Cela étant dit, l’énoncé est faux. Rappelez-vous les membres statutaires (en environnement navigateur Web) innerWidth, name et closed, dont les valeurs étaient respectivement numérique, caractère et booléenne. Il s’agit de valeurs simples, et non de pointeurs à un objet.

  8. Nommez un membre statutaire de l’environnement navigateur Web qui est intrinsèque au JavaScript, c’est-à-dire qu’il est toujours présent dans tous les types d’environnement JavaScript.
    - Réponse

    L’objet (pointé par) Math est intrinsèque au langage JavaScript.

  9. La lecture évoquait la possibilité de faire l’assignation suivante :

    monMath = Math

    Une fois cette assignation faite, les expressions suivantes fonctionneraient-elles sans erreur ? Donneraient-elles les résultats escomptés ?

    monMath.PI.toFixed(5)
    monMath.max(0,1)

    - Réponse

    monMath pointe au même objet que Math; les deux sont donc synonymes. Les deux expressions fonctionneraient sans problème et donneraient les résultats escomptés, soit "3.14159" et 1, respectivement.