Introduction
Un type de variable qui peut sembler assez basique est celui des nombres. Mais en réalité, les nombres ne se cantonnent pas uniquement aux opérations mathématiques classiques comme la somme ou la multiplication. La plupart des langages proposent en effet des fonctions permettant de réaliser des opérations plus complexes comme des arrondis ou des puissances. Il est même possible d'utiliser les nombres comme booléens dans nos conditions. Enfin, nous allons nous intéresser à la manière de stocker en mémoire des nombres à virgule, car ce n'est pas aussi trivial que l'on peut le penser.
Les types de nombres
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.
Objectif
Connaître les différents types de nombres en programmation.
Mise en situation
En mathématique, on différencie les nombres entiers, les nombres décimaux et les nombres réels. En informatique cette distinction est également possible et se fait via les types de nombres.
Définition : Type de nombre
Un type de nombre est un type de donnée (comme les chaînes et les booléens) avec plusieurs catégories : les nombres entiers, les nombres décimaux, les nombres réels. La différenciation de ces types dépend du langage de programmation utilisé.
Les nombres ayant une partie décimale sont écrits avec un point à la place de la virgule : 2.2
au lieu de 2,2
.
Les types de nombres en Python
En Python, il y a trois types de nombres : les nombres entiers int
, les nombres décimaux (ou flottants) float
et les nombres complexes complex
.
Le nombres flottants servent à représenter les nombres décimaux et à approximer les nombres réels.
Exemple :
Il n'est pas possible de stocker la valeur exacte de Pi (qui est un nombre réel avec une infinité de décimales), quel que soit le type utilisé, mais il est possible de l'approximer à l'aide d'un nombre flottant (environ 3.14159).
Les types de nombres en JavaScript
En JavaScript il n'y a qu'un type de nombre : number
, qui stocke les nombres entiers et les nombres flottants sur 8 octets (64 bits).
Exemple :
/** JavaScript */
console.log(typeof (3))
console.log(typeof (3.1))
"number"
"number"
"""Python."""
print(type(3))
print(type(3.1))
<class 'int'>
<class 'float'>
Complément : L'encodage des types de nombres
Les types de nombres peuvent influencer le comportement de certains opérateurs et déterminent la place en mémoire nécessaire pour stocker un nombre.
En Python, un entier int
est stocké sur 4 octets (32 bits) tandis qu'un nombre flottant float
est stocké sur 8 octets (64 bits).
Les nombres entiers stockés sur 32 bits sont compris entre -2 147 483 648 et 2 147 483 647, c'est-à-dire entre -231 et 231-1. Si un programme contient un nombre plus grand, l'interpréteur Python le convertit en long
c'est à dire en entier long, qui est un autre type de int
.
À retenir
Il existe différent types de nombres en informatique pour représenter les types de nombres qui existent en mathématiques. Ces types varient en fonction du langage utilisé et déterminent quelle place est nécessaire pour stocker un nombre en mémoire.
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.
Appliquer la notion
Écrire un programme qui affecte la valeur 4,1
à une variable note
et affiche la variable.
/** JavaScript */
const note = 4.1
console.log(note)
On écrit les nombres flottants avec un point à la place de la virgule.
Afficher les types des nombres 123456, -4 et 3.14159.
/** JavaScript */
console.log(typeof(123456))
console.log(typeof(-4))
console.log(typeof(3.14159))
Le programme affiche 3 fois le type number
car tous les nombres ont le même type en JavaScript.
Les opérations de base
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.
Objectif
Connaître les opérations mathématiques de base pour la programmation.
Mise en situation
En mathématiques, il existe des règles précises pour écrire des opérations, en informatique aussi.
Définition : Les opérations de base
On considère quatre opérations de base : l'addition +
, la soustraction -
, la multiplication *
et la division /
.
En informatique, le symbole =
ne signifie pas « est égal à » mais « prend la valeur de ».
Exemple :
"""Python."""
x = 3 * 2.5
/** JavaScript */
const x = 3 * 2.5
Les exemples ci-dessus affectent le résultat de l'opération 3 * 2.5
à la variable x
.
Les priorités de calcul
Le priorités de calcul sont les mêmes en mathématiques et en informatique : la multiplication et la division sont plus prioritaires que l'addition et la soustraction.
Si deux opérations ont le même niveau de priorité, l'opération située la plus à gauche sera effectuée en premier.
Un opération écrite entre parenthèses est prioritaire sur toutes les autres opérations.
La puissance est prioritaire sur la multiplication et la division.
Ces règles sont les mêmes quel que soit le langage utilisé.
Exemple :
"""Python."""
x = 3 * (4 + 1) / 5 - 3
print(x)
/** JavaScript */
const x = 3 * (4 + 1) / 5 - 3
console.log(x)
0
Les deux exemples ci-dessus renvoient 0 car ils effectuent d'abord l'addition de 4 et de 1, puis la multiplication par 3, puis la division par 5 et enfin la soustraction de 3.
Attention : Espaces entres les opérateurs en JavaScript
Une bonne pratique en JavaScript consiste à séparer chaque opérateur de ses opérandes à l'aide d'un espace.
Au lieu d'écrire x=3*2.5
, on écrit x = 3 * 2.5
, ce qui est plus lisible.
À retenir
Les règles de calcul et de priorité des opérations en informatique sont identiques ou très proches de celles en mathématiques.
Il est important de séparer chaque opérateur avec un espace pour rendre le code plus lisible.
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.
Appliquer la notion
Écrire un programme qui calcule le nombre de repas mangés en une semaine à raison de 3 repas par jour.
Il est préférable d'utiliser une multiplication, en utilisant le symbole *
.
/** JavaScript */
const nbMeals = 3
const nbDays = 7
console.log(nbMeals * nbDays)
Écrire un programme qui affiche le nombre de chocolats de Noël achetés par 3 familles avec 1, 3 et 4 enfants, à raison de 7 chocolats par enfants, en utilisant le moins d'opérateurs possibles.
Il pourrait être tentant de multiplier le nombre d'enfants de la première famille avec le nombre de chocolats, et de faire de même pour les autres familles.
L'utilisation de parenthèses permet de factoriser ces opérations, en calculant d'abord le nombre total d'enfants.
/** JavaScript */
const children1 = 1
const children2 = 3
const children3 = 4
console.log((children1 + children2 + children3) * 7)
On utilise des parenthèses pour limiter le nombre d'opérateurs et faire l'addition du nombre d'enfants en premier.
Les opérations avancées
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.
Objectif
Apprendre à utiliser des opérations plus avancées que les opérations de base.
Mise en situation
Nous avons vu comment faire les quatre opérations de base, mais il existe beaucoup d'autres opérations mathématiques plus complexes qui peuvent être facilement utilisées.
Définition : Les opérations avancées
On considère comme opérations avancées les calculs de puissance, de racine, de valeur absolue, de modulo, d'arrondis, de division entière et de tirage aléatoire.
Il en existe bien plus, comme les opérations trigonométriques.
Syntaxe : Les opérations avancées en JavaScript
Pour calculer la puissance d'un nombre, par exemple 23 :
x = Math.pow(2, 3)
Pour calculer une division entière, par exemple, la division entière de 5 par 3 qui vaut 1 :
x = Math.trunc(5 / 3)
Pour calculer le reste d'une division entière (le modulo), par exemple le modulo de 5 par 3 qui vaut 2 :
x = 5 % 3
Pour calculer l'arrondi au plus proche d'un nombre, par exemple de 2.6 qui vaut 3 :
x = Math.round(2.6)
Pour calculer la racine carrée d'un nombre, par exemple la racine de 25 :
x = Math.sqrt(25)
Pour calculer l'arrondi à l'entier inférieur d'un nombre, par exemple de 2.6 qui vaut 2 :
x = Math.floor(2.6)
Pour calculer l'arrondi à l'entier supérieur d'un nombre, par exemple de 2.6 qui vaut 3 :
x = Math.ceil(2.6)
Exemple : Les opérations avancées en JavaScript
/** JavaScript */
console.log('2 puissance 10 vaut: ' + Math.pow(2, 10))
console.log('Avec 5 paquets de bonbons pour 3 personnes on a ' + Math.floor(5 / 3) + ' paquet(s) par personne')
console.log('Il restera ' + 5 % 3 + ' paquet(s) de bonbons')
console.log('Avec une note de 2.6/20 à mon examen j\'ai eu environ ' + Math.round(2.6))
console.log('la racine carree de 25 est: ' + Math.sqrt(25))
console.log('le plus petit entier superieur à 2.6 est :' + Math.ceil(2.6))
Complément : Autres opérations en JavaScript
Pour calculer la valeur absolue d'un nombre, par exemple la valeur absolue de -3 qui vaut 3 :
x = Math.abs(-3)
Pour tirer aléatoirement un nombre entre 0 et 1 exclu :
x = Math.random()
Pour tirer aléatoirement un nombre entier situé entre deux bornes, par exemple entre 1 et 5 :
x = Math.ceil(Math.random() * 5)
Syntaxe : Les opérations avancées en Python
Pour calculer la puissance d'un nombre, par exemple 23 :
x = 2 ** 3
Pour calculer une division entière, par exemple, la division entière de 5 par 3 qui vaut 1 :
x =
5 // 3
Pour calculer le reste d'une division entière (ou modulo), par exemple le reste de la division entière de 5 par 3 qui vaut 2 :
x = 5 % 3
Pour calculer l'arrondi au plus proche d'un nombre, par exemple de 2.6 qui vaut 3 :
x = round(2.6)
Exemple : Les opérations avancées en Python
"""Python."""
print('2 puissance 10 vaut: ',2**10)
print('Avec 5 paquets de bonbons pour 3 personnes on a ',5 // 3, ' paquet(s) par personne')
print('Il restera ',5 % 3,' paquet(s) de bonbons')
print('Avec une note de 2.6/20 à mon examen j\'ai eu environ', round(2.6))
Syntaxe : Les opérations en Python nécessitant la bibliothèque math
Pour les opérations suivantes il faut importer une bibliothèque d'opérations mathématiques avec l'instruction from math import *
Pour calculer la racine carrée d'un nombre, par exemple la racine de 25 :
x = sqrt(25)
Pour calculer l'arrondi à l'entier inférieur d'un nombre, par exemple de 2.6 qui vaut 2 :
x = floor(2.6)
Pour calculer l'arrondi à l'entier supérieur d'un nombre, par exemple de 2.6 qui vaut 3 :
x = ceil(2.6)
Exemple : Les opérations en Python nécessitant la bibliothèque math
"""Python."""
from math import *
print('la racine carree de 25 est: ',sqrt(25))
print('le plus grand entier inférieur à 2.6 est :',floor(2.6))
print('le plus petit entier superieur à 2.6 est :',ceil(2.6))
Complément : Autres opérations en Python
Il existe beaucoup d'autres fonctions mathématiques très utiles.
Pour calculer la valeur absolue d'un nombre, par exemple la valeur absolue de -3 qui vaut 3 : x = abs(-3)
Pour les opérations suivantes il faut importer une bibliothèque d'opérations mathématiques avec l'instruction : from random import *
Pour tirer aléatoirement un nombre entre 0 et 1 exclu : x = random()
Pour tirer aléatoirement un nombre entier situé entre deux bornes, par exemple entre 1 et 5 : x = randint(, 5)
À retenir
Il est possible de faire facilement des opérations avancées en Python et en JavaScript. Les fonctions utilisées portent en général le même nom mais sont appelées différemment.
Pour utiliser certaines fonctions il faut importer la bibliothèque math
ou la bibliothèque random
en Python.
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.
Appliquer la notion
Pour calculer la longueur de l’hypoténuse (c'est à dire le côté le plus long) d'un triangle rectangle, on utilise le théorème de Pythagore.
Ce théorème dit que la longueur de l'hypoténuse correspond à la racine carrée de la somme des longueurs au carrés des deux autres côtés.
Compléter ce programme pour qu'il calcule et affiche la longueur de l’hypoténuse d'un triangle rectangle dont les deux autres côtés font respectivement 4 et 3 cm.
Quelle est la longueur de l'hypoténuse ?
/** JavaScript */
const length1 = 3
const length2 = 4
const hyp = Math.sqrt(Math.pow(length1, 2) + Math.pow(length2, 2))
console.log("Longueur de l'hypothenuse: " + hyp)
Le programme affiche une longueur de 5.
Pour calculer le volume d'un cube on multiplie la longueur de son côté par elle-même pour trouver l'aire de la base du cube.
Enfin, on multiplie cette aire par la longueur du côté pour trouver le volume du cube.
Calculer et afficher le volume d'un cube de côté 5cm.
Il faut multiplier la longueur du côté trois fois par elle-même. Si cette opération peut être réalisée uniquement à l'aide de multiplications, il pourrait être plus pertinent de calculer directement la puissance 3 de ce nombre...
/** JavaScript */
console.log(Math.pow(5, 3))
Le programme affiche 125.
Écrire un programme qui affiche le reste de la division entière de 42 par 2.
L'opération permettant de calculer le reste dans une division s'appelle le modulo.
/** JavaScript */
console.log(42 % 2)
Complément : Déterminer si un nombre est pair ou impair
L'opération % 2 permet par exemple de tester si un nombre entier est pair ou impair : si le reste vaut 0 alors le nombre est pair, si le reste vaut 1 alors le nombre est impair.
Flottants et précision
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.
Objectifs
Comprendre le mode de stockage des nombres flottants en informatique ;
Comprendre la notion de précision.
Mise en situation
En informatique on sait que toutes les données sont stockées en binaire. Pour les nombres décimaux, donc avec une virgule, on peut se demander comment stocker correctement la valeur sachant que la virgule n'est pas un nombre que l'on peut stocker : c'est un caractère. Une première approche pourrait être de simplement stocker la partie entière et la partie décimale séparément, mais ce n'est pas comme cela que ça fonctionne. C'est en réalité un peu plus complexe que cela, et en informatique on parle de nombres flottants, ou nombres à virgule flottante.
L'encodage des flottants
Les nombres flottants sont stockés sur 64 bits de façon à ce que le premier bit en partant de la gauche (on parle de bit de poids fort) détermine le signe : si ce bit vaut 0 le nombre est positif, si ce bit vaut 1 le nombre est négatif. Les onze bits suivants permettent d'encoder l'exposant et les cinquante deux bits restants permettent d'encoder la mantisse.
Les nombres sont dits flottants parce que la place de la virgule n'est pas fixe. Contrairement à ce que pourrait dicter l'intuition, il ne s'agit pas d'écrire les nombres avec un bit de signe, onze bits pour la partie entière et les cinquante deux bits restants pour la partie décimale.
Définition :
Les nombres flottants sont calculés ainsi, en binaire :
nbFlottant = signe * 2exposant * mantisse
La place de la virgule dans un nombre flottant dépend donc de son exposant.
Exemple : En décimal
Il est plus simple d'utiliser le système décimal pour comprendre. Le nombre -1.2345
sera représenté avec les données suivantes :
Signe :
négatif
Exposant :
-4
Mantisse :
12345
Le calcul donnera 10-4
, soit 0.0001
, multiplié par 12345
, soit 1.2345
, puis passé en négatif.
On constate que le changement de l'exposant, par -5
par exemple, donnera le nombre 0.12345
. La place de la virgule est donc flottante, et dépend de la valeur de l'exposant.
Exemple : Déclarer un flottant et l'utiliser
"""Pyhton."""
nb_float = 0.1
print(nb_float)
nb_float *= 0.1
print(nb_float)
nb_float += 1
print(nb_float)
/** JavaScript */
let nbFloat = 0.1
console.log(nbFloat)
nbFloat *= 0.1
console.log(nbFloat)
nbFloat += 1
console.log(nbFloat)
En Python comme en JavaScript on déclare et on manipule les nombres flottants comme les autres nombres.
Attention : Imprécisions
Tous les nombres ne sont pas parfaitement encodables avec cette méthode. Les nombres qui correspondent à une somme de puissance de deux sont écrits de façon exacte, les autres le sont de façon approchées, ce qui dans certains cas peut poser des problèmes de calcul.
Exemple : Problèmes d'approximation
En mathématiques, 0.1 + 0.2 = 0.3. La réponse à la question « est ce que 0.2 ajouté à 0.1 vaut 0.3 ? » est « oui ».
De même, 0.25 + 0.25 = 0.5, donc la réponse à la question « est ce que 0.25 ajouté à 0.25 vaut 0.5 ? » est « oui ».
Cependant, à cause des problèmes d'approximation des nombres flottants, ce n'est pas le cas en informatique.
"""Python."""
print(0.1 + 0.2 == 0.3)
print(0.25 + 0.25 == 0.5)
/** JavaScript */
console.log(0.1 + 0.2 === 0.3)
console.log(0.25 + 0.25 === 0.5)
Ces deux programmes affichent false
puis true
, parce que 0.1 ne peut pas être encodé correctement. Ainsi, quand les programmes additionnent 0.1 et 0.2, ils additionnent en réalité un nombre très proche de 0.1 et 0.2, donc le résultat obtenu n'est pas égal à 0.3 et le test est faux.
En revanche, 0.25 est encodé correctement donc la deuxième addition donne un résultat exact et le test est vrai.
Conseil : Eviter les problèmes d'approximation
Pour éviter les problèmes d'approximation lors de calculs ou de comparaisons avec des flottants il faut travailler avec mathjs, une bibliothèque conçue pour gérer les problèmes d'approximations des nombres flottants en JavaScript.
Complément : toPrecision()
Soit x = 0.3333
:
x.toPrecision(2)
renvoie0.33
.x.toPrecision(2)
est de type chaîne de caractère,x.toPrecision(2).substr(2)
renvoie33
.
À retenir
Les nombres flottants sont stockés sur 64 bits, ils sont dits flottants parce que la place de la virgule dépend de l'exposant.
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.
Appliquer la notion
Déclarer une variable average
initialisée à 14.8 et calculer l'écart entre la moyenne et la note d'un étudiant qui a eu 9.1.
/** JavaScript */
const average = 14.8
const note = 9.1
console.log('Ecart: ', note - average)
On déclare des nombres flottants de la même manière que les autres nombres en JavaScript.
Écrire un programme qui affiche le résultat de la multiplication de 0.1 par 0.1. Que peut-on constater ?
/** JavaScript */
console.log(0.1 * 0.1)
Le résultat n'est pas exact car le nombre 0.1 ne peut pas être encodé correctement. On obtient donc une approximation de cette multiplication.
Les booléens
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.
Objectifs
Comprendre ce que sont les booléens ;
Savoir combiner des booléens avec l'algèbre booléenne.
Mise en situation
En programmation, les nombres ne servent pas qu'à représenter des nombres.
En effet, on les retrouve aussi dans la manière dont sont gérés d'autres types de variables, comme les booléens.
Le concept de booléen est issu de l'algèbre booléenne, et représentent les valeurs de vérité utilisées dans les raisonnements logiques.
En pratique, les booléens stockent 2 états possibles : vrai ou faux, et sont très utilisés pour évaluer les conditions en programmation.
Les booléens se basent très fortement sur les nombres.
Définition : Les booléens
Les booléens sont un type de variable pouvant prendre deux valeurs : vrai (true) ou faux (false). Ils représentent des valeurs de vérité, par exemple si une comparaison est vraie ou fausse.
Exemple :
reality = false
console.log(reality)
Définition : L'opération booléenne ET
L'opération ET entre deux variables booléennes est vraie si les deux variables sont vraies, sinon elle est fausse.
Exemple :
"""Python."""
underage = True
student = False
print(underage and student)
/** JavaScript */
const underage = true
const student = false
console.log(underage && student)
Les deux programmes affichent la valeur false
.
Définition : L'opération booléenne OU
L'opération OU (non exclusive) entre deux variables booléennes est vraie si au mois l'une des deux variables est vraie, sinon elle est fausse.
Exemple :
"""Python."""
cinema_opened = True
bowling_opened = False
possible_party = cinema_opened or bowling_opened
print(possible_party)
/** JavaScript */
const cinemaOpened = true
const bowlingOpened = false
const possibleParty = cinemaOpened || bowlingOpened
console.log(possibleParty)
Les deux programmes affichent la valeur true
.
Définition : L'opération booléenne NON
L'opération NON sur un booléen renvoie l'inverse de ce booléen
Exemple :
"""Python."""
rain = True
sun = False
print('il fait beau:', not(rain))
print('il ne fait pas beau: ', not(sun))
/** JavaScript */
const rain = true
const sun = false
console.log('il fait beau:' + !rain)
console.log('il ne fait pas beau: ' + !sun)
Les deux programmes affichent la valeur false
puis la valeur true
.
Complément : Implémentation en Python
En Python, le type bool
est en fait une sous-classe du type int
et les valeurs True
et False
sont des versions particulières de 1 et de 0. Ainsi le nombre 0 peut être considéré comme un booléen False
, de même qu'une chaîne de caractères vide. À l'inverse, tous les nombres différents de 0 et toutes les chaînes de caractères qui ne sont pas vides peuvent être considérées comme des booléen True
.
Complément : Implémentation en JavaScript
En JavaScript, une chaîne de caractères vide, une valeur undefined
et le nombre 0 sont assimilables à des booléens false
mais ils n'en sont pas (ils sont appelés falsy
pour les différencier du type booléen). Tous les nombres différents de 0 et toutes les chaînes de caractères non-vides sont appelés truthy
.
Pour obtenir un booléen à partir d'un entier ou d'une chaîne, on utilise la fonction Boolean()
:
Boolean('')
renvoie la valeur booléennefalse
, tout commeBoolean(0)
par exemple.Boolean('Hello')
renvoie la valeur booléennetrue
, tout commeBoolean(42)
par exemple.
À retenir
Les booléens sont un type particulier d'entiers valant 0 ou 1. Il est possible de faire des opérations ET, OU et NON avec.
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.
Appliquer la notion
Quel est le résultat de l'opération ET entre un booléen vrai et un booléen faux en JavaScript ?
L'opération ET s'écrit &&
en JavaScript.
/** JavaScript */
console.log(true && false)
Il est possible de créer des variables booléennes et de leur affecter la valeur true
et la valeur false
.
Afficher l'inverse d'un booléen faux en JavaScript.
L'opération inverse s'écrit !
en JavaScript.
/** JavaScript */
console.log(!false)
Le programme affiche true
.
Quel est le résultat d'une opération OU entre une chaîne de caractères vide et le nombre 0, en JavaScript ?
On utilise la fonction Boolean
pour convertir une chaîne ou un entier en booléen.
L'opération OU s'écrit ||
en JavaScript.
/** JavaScript */
const str = ""
const nb = 0
console.log(Boolean(str) || Boolean(nb))
Le résultat du test est false
, car l'opération renvoie la valeur false
.
Quiz
Quiz - Culture
En JavaScript, quelle phrase est vraie concernant la valeur undefined
?
C'est la même chose que false
C'est assimilable à false
C'est la même chose que null
Si bool1
est vrai et bool2
est vrai, que vaut bool1
OU bool2
?
Quels nombres peuvent être considéré comme des truthy
?
Les nombres entiers
Les nombres strictement positifs
Les nombres strictement négatifs
Tous les nombres
Sur combien de bits est encodé un nombre entier en JavaScript ?
Quiz - Méthode
Quel opérateur permet de calculer le reste d'une division entière en JavaScript ?
/
//
%
modulo()
Quelle est la meilleure façon d'affecter à une variable le résultat de la multiplication de 2 par 3 en JavaScript ?
const x = 2 * 3
const x= 2 * 3
const x = 2*3
const x=2*3
Quel est le résultat de l'opération 6 * (4 + 5) / (3 -1) en JavaScript ?
11
27
14.5
Dans un nombre flottant en JavaScript, sur combien de bits est encodée la mantisse ?
8 bits
32 bits
64 bits
52 bits
Quel est le signe d'un flottant dont le bit de signe vaut 1 ?
Positif
Négatif
Le nombre 0.125 s'écrit aussi avec la représentation 2-3. En JavaScript, la valeur 0.125 sera représentée de façon :
Exacte
Approchée
Quiz - Code
Qu'affiche le programme JavaScript suivant ?
/** JavaScript */
console.log(sqrt(25))
5
25
error
Que renvoie la combinaison de booléens suivante ?
/** JavaScript */
const bool1 = false
const bool2 = true
const bool3 = false
console.log((bool1 && bool2) || bool3)
true
false
Qu'affiche le programme suivant ?
/** JavaScript */
let x = 1
console.log(x = 3)
Quel est le type de la variable const x = 3000000
en JavaScript ?
Quiz - Culture
En JavaScript, quelle phrase est vraie concernant la valeur undefined
?
C'est la même chose que false
C'est assimilable à false
C'est la même chose que null
C'est la même chose que false
C'est assimilable à false
C'est la même chose que null
null
n'existe pas en JavaScript.
Si undefined
peut être utilisé comme false
dans une condition, ce n'est pas totalement équivalent : on dit que c'est un falsy, une valeur qui se comporte de la même manière que false
.
Si bool1
est vrai et bool2
est vrai, que vaut bool1
OU bool2
?
bool1
OU bool2
est vrai car les deux booléens sont vrais, donc au moins un des deux booléens est vrai.
Quels nombres peuvent être considéré comme des truthy
?
Les nombres entiers
Les nombres strictement positifs
Les nombres strictement négatifs
Tous les nombres
Tous les nombres entiers ou non, positifs ou non, sont assimilables à la valeur true
s'ils sont différents de 0.
Sur combien de bits est encodé un nombre entier en JavaScript ?
Les nombres en JavaScript, flottants ou non, sont représentés par le type number
, qui a une taille fixe de 64 bits.
Quiz - Méthode
Quel opérateur permet de calculer le reste d'une division entière en JavaScript ?
/
//
%
modulo()
Le module s'écrit avec un signe %
dans la plupart des langages de programmation.
Quelle est la meilleure façon d'affecter à une variable le résultat de la multiplication de 2 par 3 en JavaScript ?
const x = 2 * 3
const x= 2 * 3
const x = 2*3
const x=2*3
Il est préférable d'espacer les opérateurs pour des raisons de lisibilité.
Quel est le résultat de l'opération 6 * (4 + 5) / (3 -1) en JavaScript ?
11
27
14.5
Les parenthèses changent la priorité des opérateurs : les opérations écrites entre parenthèses sont exécutées en premier. Ici, 4 + 5
et 3 - 1
sont exécutées en priorités, avant de les combiner de gauche à droite avec la multiplication et la division.
Dans un nombre flottant en JavaScript, sur combien de bits est encodée la mantisse ?
8 bits
32 bits
64 bits
52 bits
La mantisse représente le nombre sans virgule, et c'est l'exposant qui va venir déterminer l'emplacement de la virgule. La place réservée pour l'exposant et la mantisse est constante.
Quel est le signe d'un flottant dont le bit de signe vaut 1 ?
Positif
Négatif
C'est un nombre négatif (signe -
).
Le nombre 0.125 s'écrit aussi avec la représentation 2-3. En JavaScript, la valeur 0.125 sera représentée de façon :
Exacte
Approchée
Comme 0.125 est égal à une puissance de deux, JavaScript pourra le représenter de manière exacte en représentation flottante.
Quiz - Code
5
25
error
Le programme affiche une erreur car pour calculer une racine carrée il faut utiliser la bibliothèque Math.
true
false
La première combinaison &&
renvoie false
, car bool1
et bool2
ne sont pas vrais simultanément.
La deuxième combinaison ||
renvoie donc également false
, car aucune de ses deux opérandes ne sont vraies.
Qu'affiche le programme suivant ?
/** JavaScript */
let x = 1
console.log(x = 3)
Cette réponse peut paraître inattendu : on s'attend à une valeur true
ou false
.
C'est une erreur classique : il ne faut surtout pas confondre l'opérateur =
qui sert aux affectations avec l'opérateur ===
qui sert aux comparaisons.
Dans cet exemple, la variable x
est initialisée à 1, puis on lui affecte la valeur 3 et on demande à l'afficher, donc le programme affiche 3
.
Quel est le type de la variable const x = 3000000
en JavaScript ?
Il n'y a qu'un type de nombre en JavaScript, qui représente à la fois les entiers et les nombres flottants : le type number
.
Défi
Charles a besoin d'aide pour faire ses exercices de mathématiques.
Il doit calculer le volume d'un dé à 6 faces (un cube) dont le côté mesure 2 cm.
Il doit aussi calculer le périmètre d'un carré, dont l'aire est de 100 m².
On lui demande également comment répartir équitablement 15 ours en peluche entre 9 enfants.
Enfin, il doit tester s'il est possible pour sa classe d'aller faire du sport à l'extérieur et/ou d'aller au cinéma sachant que la piscine est fermée, que le terrain de foot n'est pas ouvert et que le cinéma n'est jamais fermé.
Compléter le programme suivant pour calculer et afficher le volume du dé.
const lengthCube = 2
Le volume d'un dé est égal à son côté multiplié par lui-même trois fois.
console.log('Volume du cube: ' + Math.pow(lengthCube, 3) + ' centimètres cube')
On préférera utiliser la fonction Math.pow
, permettant de réaliser une puissance, plutôt que d'écrire les multiplications à la main.
Compléter le programme suivant pour calculer et afficher le périmètre du carré à partir de son aire.
const area = 100
Le périmètre d'un carré est égal à la racine carrée de son aire, multipliée par son nombre de côtés.
const lengthSquare = Math.sqrt(area)
console.log('Perimetre du carré: ' + lengthSquare * 4 + ' mètres')
Compléter le programme suivant pour calculer et afficher la répartition équitable des ours en peluche.
const nbBears = 15
const nbChildren = 9
Chaque enfant doit avoir le même nombre d'ours en peluche, et un ours ne peut pas être partagé en plusieurs. Il faut donc tronquer le résultat...
console.log('Nombre de peluche(s) par enfant: ' + Math.floor(nbBears / nbChildren))
On aurait pu également utiliser la fonction Math.trunc
, équivalente dans ce cas.
Compléter le programme suivant pour déterminer si la classe doit faire du sport à l'extérieur ou d'aller au cinéma.
const swimmingPoolOpened = false
const soccerOpened = !true
const cinemaOpened = !false
Le symbole !
représente la négation en JavaScript. Il faut combiner ces différents booléens.
console.log("Il est possible d'aller faire du sport à l'extérieur et/ou d'aller au cinéma: " + (swimmingPoolOpened || soccerOpened) || cinemaOpened)
Sarah, Émilie et Charles ont passé un test d'anglais. Ils ont eu respectivement 14/20, 9/20 et 10/20. Ils savent que parmi les 20 autres étudiants qui ont passé le test, 4 ont eu 3/20, 2 on eu 8/20, 5 ont eu 9/20, 3 ont eu 12/20 et 6 ont eu 16/20.
Compléter le code suivant pour calculer :
La moyenne des trois amis
La moyenne de la classe
const noteSarah = 14
const noteEmilie = 9
const noteCharles = 10
La moyenne de classe est égale à la somme des notes divisée par le nombre d'élèves de la classe.
const studentCount = 20 + 3
const noteSum = (4 * 3) + (2 * 8) + (5 * 9) + (3 * 12) + (6 * 16) + noteSarah + noteEmilie + noteCharles
const averageClass = noteSum / studentCount
const averageFriends = (noteSarah + noteEmilie + noteCharles) / 3
Pour calculer la moyenne de classe on prend en compte les notes des 23 étudiants de la classe.
Pour calculer la moyenne des 3 amis on prend en compte leurs 3 notes uniquement.
Afficher les résultats des tests suivants :
Sarah, Émilie et Charles ont une note supérieure à la moyenne de leur classe.
La moyenne de leur groupe est supérieure à la moyenne de leur classe.
Il est possible de déterminer si un nombre a
est supérieur à un nombre b
avec la syntaxe a > b
. Cette expression renvoie un booléen.
console.log('Note Sarah supérieure à la moyenne de classe:', noteSarah > averageClass)
console.log('Note Emilie supérieure à la moyenne de classe:', noteEmilie > averageClass)
console.log('Note Charles supérieure à la moyenne de classe:', noteCharles > averageClass)
console.log('Moyenne des 3 amis supérieure à la moyenne de classe:', averageFriends > averageClass)
On compare les notes à la moyenne, puis les deux moyennes entre elles.
Conclusion
Les nombres sont les variables de base que l'on manipule en informatique. Derrière cette simplicité se cache tout de même certaines subtilités, comme les nombres flottants ou l'utilisation des nombres pour les booléens. L'informatique ayant une histoire commune avec les mathématiques, la plupart des langages de programmation offrent un vaste panels d'opérations qu'il est possible de réaliser sur des nombres. Cela va de la simple addition, au calcul d'arrondi, en passant par la génération de nombres aléatoires.