¶
Feuille 1
2022
En passant dans la console du Navigateur (F12
) ou en
lançant node.js dans un terminal on dispose d'une boucle d'interaction
(qu'on appel aussi Toplevel
ou REPL
(Read Eval
Print Loop)). Tout les premiers exercices sont à faire à ce niveau.
Prévoir puis vérifier en javascript la valeur et le type de chacune
des expressions ci-dessous.
On pourra utiliser l'opérateur typeof
1+2;
4/2*2;
-4/(2*2);
5/2;
5 % 2;
1/0;
Prévoir puis vérifier en javascript la valeur et le type de chacune
des expressions ci-dessous.
On pourra utiliser l'opérateur typeof
1.1e-3 + 2.5 * 2.0 - 1e+2;
- 1.0 / 2.5;
1 + 3.6;
1.2 + 3.4;
Prévoir puis vérifier en javascript la valeur de chacune des
expressions ci-dessous. On pourra utiliser l'opérateur
typeof
On pourra consulter L'objet Math
Math.sqrt(4.0);
Math.sqrt(4);
Math.floor(2.6) ;
Math.floor(-3.7) ;
Math.ceil(2.6) ;
Math.ceil(-3.7) ;
Math.sqrt(4.000000000000001);
Math.sqrt(4.00000000000000001); //piege ;-)
Prévoir puis vérifier en javascript la valeur de chacune des
expressions suivantes : On pourra utiliser l'opérateur
typeof
Number("3")+5
"3"+5 // attention conversion implicite
String(3)+"5"
Number("trois")+5
parseInt("9.6")
parseFloat("9.6")
parseFloat("9.6cm")
Number("9.6cm")
Déterminer le résultat renvoyé par javascript pour chacune des expressions suivantes :
"Le résultat est : " + (7*3);
"salut"[0];
"salut".charAt(3)
"salut"[3];
"salut"[8];
"salut".substring(0,3);
"salut".substring(0,3);
"salut".substring(3, "salut".lenght - 3);
12345.substring(1,3) // Attention pb
"ABC".charCodeAt(0)
"ABC".charCodeAt(1)
"ABC".charCodeAt(2)
"ABC".charCodeAt(3)
Déterminer le résultat renvoyé par javascript pour chacune des expressions suivantes :
1 < 2 || 1.1 != 3.2;
2 === 3 && 1.34e+6 - 4.9e-4 > 23.4e5;
2>1 || 3<4 & 5>=6 ;
2>1 || 3<4) && 5>=6 ;
(! 2<1 || 3<4 ;
! (2<1 || 3<4) ;
grosNombre
grosNombre
stocker
dans une variable plusGros
, que pensez vous de la valeur de
ce nombre par rapport a la valeur attendu ?grosNombre
et plusGros
, que
pensez vous du résultat> let grosNombre = 1e150
undefined
> let plusGros =grosNombre * grosNombre
undefined
> plusGros
9.999999999999999e+299 // pb d'appoximation
> plusGros===1e300
false
> plusGros * grosNombre
Infinity // trop grand
>
petitNombre
petitNombre
et
stocker le dans une variable plusPetit
,petitNombre
et plusPetit
, que
pensez vous du résultat> let petitNombre=1e-150
undefined
> let plusPetit=petitNombre*petitNombre
undefined
> plusPetit
1e-300
> plusPetit*petitNombre
0
>
Les opérations arithmétiques effectuées par les ordinateurs
présentent certaines limites. L'une d'entre elles est le problème du
dépassement de capacité. Le dépassement des nombres entiers se produit
lorsque la valeur de l'expression entière dépasse la valeur de l'entier
maximum. En Javascript cela conduit à un renvoyer Infini
.
Il n'y a ni warning ni message d'erreur.
Un deuxième problème, le soupassement, se produit lorsque l'on
travaille avec des réels. Si un nombre réel est trop petit pour être
représenté, il est remplacé par 0
.
Définissez deux variables : p
ayant pour valeur 5 et
q
ayant pour valeur 3*p
.
Avec une seule instruction console.log(…)
et en
utilisant les variables p
et q
, faites
afficher la phrase suivante : "p vaut 5 et q vaut 15, leur somme fait
20"
N.B. La solution suivante n'est PAS celle que l'on attend
bien entendu :
console.log('p vaut 5 et q vaut 15, leur somme fait 20')
Demandez en a l’interpréteur javascript « q est-il un multiple de p ? » [utilisez le reste de la division]
Écrivez les lignes de code permettant d’échanger les valeurs de
p
et q
, en utilisant une variable temporaire
tmp. Vérifiez ensuite que les valeurs de p
et
q
ont bien été permutées.
Échangez à nouveau les valeurs de p
et
q
, mais SANS utiliser de variable
temporaire ! Soyez astucieux, jouez avec des opérations
arithmétiques…
let p=5;
let q=3*5;
console.log("p vaut "+p+" et q vaut "+q+", leur somme vaut "+(p+q));
console.log(`p vaut ${p} et q vaut ${q} leur somme vaut ${p+q}`);
console.log("p vaut ",p," et q vaut ",q,", leur somme vaut ",(p+q));
%p===0
q
let tmp=p;
=q;
p=tmp;
q
=q-p;
p=q-p
q=p+q p
Écrire une fonction qui calcul le prix TTC en fonction du prix HT sachant que la TVA est de 18,6%.
function tva(ht){
return 118,6*ht/100;
}
Définir la fonction cube
qui à \(x\) associe \(x^3\)
function cube(x){
return x*x*x
}
Utiliser votre fonction cube pour écrire une fonction qui calcule le volume d'une sphere ( \(\frac{4}{3}\pi R^3\)) de rayon \(R\)
function volumeSphere(r){
return (4*Math.PI*cube(r))/3;
}
Écrire une fonction verifierUrlAbsolue
qui prend en
argument une chaîne de caractère et renvoie true
si elle
contient http:://
et false sinon.
> verifierUrlAbsolue("http://example.org/")
true
> verifierUrlAbsolue("/exercice1/solution.html")
false
>
function verifierUrlAbsolue(s){
return s.indexOf("http://") != -1;
}
En utilisant une boucle for
programmer
une fonction affichant un compte à rebours de n
à 0. Puis
écrire la meme fonction en utilisant une boucle
while
> compte_a_rebours(5);
5
4
3
2
1
undefined
>
function compte_a_reboursFor(n){
for(let i=n;i>=0;i--){
console.log(i);
}
}
function compte_a_reboursWhile(n){
let i=n;
while (i>=0){
console.log(i);
--;
i
} }
Programmer une fonction récursive affichant un
compte à rebours de n
à 0 :
function compte_a_rebours(n){
if (n>=0){
console.log(n);
compte_a_rebours(n-1);
} }
Programmer une fonction récursive calculant une
puissance entière (et positive) d’un réel : puiss(x,n)
\(=x^n\)
Comparer le résultat à celui de Math.pow
function puiss(x,n){
if (0 === n){return 1}
else{return x*puiss(x,n-1)}
}
function checkPuissance(x,n){
return puiss(x,n) === Math.pow(x,n);
}
Programmer une fonction iterative (avec for
ou
while
) calculant une puissance entière d’un réel :
puissIter(x,n)
\(=x^n\)
function puissIter(x,n){
if (n===0){return 1}
let res=x;
for(let i=1;i<n;i++){
=res*x;
res
}return res;
}
function checkPuissance(x,n){
return puissIter(x,n) === Math.pow(x,n);
}
En utilisant l'algorithme d'Euclide écrire une fonction qui renvoie le pgcd de deux nombres:
> pgcd(51,87)
3 // car 51 = 3* 17 et 87 = 3 * 29
>
function pgcd(a, b) {
if (!b) {
return a;
}
return pgcd(b, a % b);
}
function pgcdIt( a, b){
let r; // on declare r
// boucle tant que le reste est 0
while (b > 0){
= a%b; // reste
r // a devient b et b devient r
= b;
a = r;
b
}return a;
}
Déterminer le résultat affiché par javascript pour chacune des requêtes suivantes :
4<5)?"oui":"non" // expression (valeur)
(if (4<5) {"oui"} else{"non"}; //instruction (pas une valeur meme
// . si la ca ne se voit pas )
let res1=(4<5)?"oui":"non" //correcte on met la valeur de
// l'expression dans res1
let res2=if (4<5) {"oui"} else{"non"}; //err
if (4<5) {res2="oui"} else {res2=("non")}; //correcte
Écrire une fonction à trois arguments réels a
,
b
, c
,, et qui retourne le nombre de solutions
réelles de l’équation \(aX^2+bX+X\) Si
on doit se rafraîchir la mémoire sur les
mathématiques de lycée
> resolveSolution(1,1,-2) // x²+x-2 = 0 a 2 solutions
2 //(delta positif)
> resolveSolution(1,1,1) //x²+x+1=0 n'a pas de solution
0 //(delta négatif)
> resolveSolution(4,4,1) //4x²+4x+1=0 1 solution car
1 //(delta == 0)
>
function resolveSolution(a,b,c){
let delta=(b*b)-(4*a*c);
if(delta>0){
return 2
else{
}if (delta === 0){
return 1
else{
}return 0
}
} }