Programmation Javascript (NFA041)

Feuille 1

Olivier Pons
(pons@cnam.fr)

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.

Exercice 1

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;

Exercice 2

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;

Exercice 3

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 ;-)

Exercice 4

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")

Exercice 5

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)   

Exercice 6

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) ;

Exercice 7

Exercice 8

Exercice 9

  1. Définissez deux variables : p ayant pour valeur 5 et q ayant pour valeur 3*p.

  2. 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')

  1. Demandez en a l’interpréteur javascript « q est-il un multiple de p ? » [utilisez le reste de la division]

  2. É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.

  3. Échangez à nouveau les valeurs de p et q, mais SANS utiliser de variable temporaire ! Soyez astucieux, jouez avec des opérations arithmétiques…

Exercice 10

Écrire une fonction qui calcul le prix TTC en fonction du prix HT sachant que la TVA est de 18,6%.

Exercice 11

Définir la fonction cube qui à \(x\) associe \(x^3\)

Exercice 12

Utiliser votre fonction cube pour écrire une fonction qui calcule le volume d'une sphere ( \(\frac{4}{3}\pi R^3\)) de rayon \(R\)

Exercice 13

Écrire une fonction verifierUrlAbsolue qui prend en argument une chaîne de caractère et renvoie true si elle contient http::// et false sinon.

par exemple:

> verifierUrlAbsolue("http://example.org/")
true
> verifierUrlAbsolue("/exercice1/solution.html")
false
> 

Exercice 14

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
> 

Exercice 15

Programmer une fonction récursive affichant un compte à rebours de n à 0 :

Exercice 16

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

Exercice 17

Programmer une fonction iterative (avec for ou while) calculant une puissance entière d’un réel : puissIter(x,n)\(=x^n\)

Exercice 18

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
> 

Exercice 19

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

Exercice 20

É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)

>