Programmation Javascript (NFA041)

Feuille 2

Olivier Pons
(pons@cnam.fr)

2022


Conditionnelles


Exercice 1

On veut calculer le poids idéal d'une personne.

Pour cela, on doit avoir trois informations :

  1. sa taille T en cm,
  2. son âge A en années,
  3. son sexe S (qui sera donné par une chaîne "homme" ou "femme").

Les formules (très datées et sans aucun fondement scientifique ;-) sont :

On va écrire une fonction javascript qui renvoie le poids ideal.

Version 1:

Dans le cas ou les paramètre passés ne sont pas ceux attendus
on renvoi un undefined ou Nan ou n'importe quoi... c'est a l'utilisateur de respecter les paramètres (c'est dangereux !!!)

Version 2:

On vérifie la conformité des paramètres et on affichera un message d'erreur expliquant l'éventuel problème.

> poidsIdeal(30,180,"homme")
72.5
> poidsIdeal("trente",180,"homme")
l'age et la taille doivent être des nombres 
undefined
> 

Chaînes de base


Exercice 2

Écrire une fonction qui génère une chaîne contenant la suite ordonnée des lettre minuscules. On demande une solution sans utiliser dans votre code les lettre b et z mais vous pouvez utiliser charCodeAt() ou String.fromCharCode

> genMinuscule()
'abcdefghijklmnopqrstuvwxyz'

Exercice 3 (dure)

Le codage de César est un manière de crypter un message de manière simple : On choisit un nombre (appelé clé de codage) et on décale toutes les lettres de notre message du nombre choisi.

Par exemple : Si on choisit comme clé le nombre 7. Alors la lettre A deviendra H, le B deviendra I ... et le Z deviendra G.

> encode("BON",2)
'DQP'
a=encode("Bonjour ca va !",3)
'Erqmrxu fd yd !'
> a=encode(a,-3)
'Bonjour ca va !'
> 

Exercice 4

Écrire une fonction verifierMotDePass qui prend en argument une chaîne de caractère et renvoie true si elle contient au moins un chiffre et une majuscule et false sinon.

On pourra utiliser indexOf


Tableaux


Exercice 5

Écrire une fonction qui crée un tableau de n zéro.

Exercice 6

Même question mais avec n'importe quel valeur passée en argument au lieu de 0

Exercice 7

Écrire une fonction estCroissante(t) renvoyant un booléen indiquant si les éléments de t sont dans l’ordre croissant.

Exercice 8

Écrire une fonction estPresent(t,x) parcourant le tableau et renvoyant un booléen indiquant si x est présent dans `t``

Remarque :

On peut aussi tester l'appartenance à un tableau directement avec t.indexOf(x)!=-1 ou t.includes(x), mais on ne veux pas les utiliser dans cet exercice.

Exercice 9

Duplication des éléments d’une tableau

Écrire une fonction qui rend un nouveau tableau où tous les éléments du tableau en argument sont dupliqués. Par exemple à partir de la [1,2,3] on obtient [1,1,2,2,3,3].

Exercice 10

Reprendre l’exercice precedent en ajoutant à duplique un argument supplémentaire qui donne le nombre de répétition de l'élément

> dupliqueN(["bonjour","ca va"],4);

[
  'bonjour', 'bonjour',
  'bonjour', 'bonjour',
  'ca va',   'ca va',
  'ca va',   'ca va'
]

Exercice 11

Écrire une fonction compose prenant deux tableaux de même longueur en entrée et renvoyant un tableau dont les éléments sont des paires (des tableaux à 2 éléments) des éléments des tableaux en entrée.

> compose([1,2,3],[4,5,6])
[ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ]

Exercice 12

Décalage à droite et à gauche. Écrire decalageG et decalageD: deux fonctions effectuant un décalage d’une position vers la gauche (resp. vers la droite) dans un tableau (l’élément sortant faisant sa rentrée du coté opposé, votre fonction modifie le tableau en place).

> t
[ 1, 2, 3, 4, 5 ]
> decalageD(t)
undefined
> t
[ 5, 1, 2, 3, 4 ]
> decalageD(t)
undefined
> t
[ 4, 5, 1, 2, 3 ]
> decalageG(t)
undefined
> decalageG(t)
undefined
> t
[ 1, 2, 3, 4, 5 ]
> decalageG(t)
undefined
> t
[ 2, 3, 4, 5, 1 ]
> 

Functions récursives


Exercice 13

Écrire deux fonctions pair et impair mutuellement recursives (ie. pair fait référence à impair et inversement ) permettant de tester si un entier donné en argument est paire ou impaire

Exemple

> pair(8)
true
> pair(9)
false
> impair(8)
false
> impair(9)
true

Exercice 14

Soit un tableau t de n entiers, écrire une fonction récursive simple permettant de déterminer le maximum du tableau On pourra regarder la Recherche_dichotomique.