Exercices de Travaux Dirigés D'algorithmique / Programmation Javascript
Exercices de Travaux Dirigés D'algorithmique / Programmation Javascript
Exercices de Travaux Dirigés D'algorithmique / Programmation Javascript
Exercice 1 – Petite trace (C1a, C1b) Exercice 2 – Petite trace avec entrées (C1a, C1b)
Quelles seront les valeurs des variables a et b à la fin Quel est le résultat de l’algorithme algo2(3,5) ? Faites une trace !
de l’algorithme algo1 ? Faites une trace !
Algorithme algo2
Algorithme algo1 Trace : Variables d’entrée : entiers a et b
Variables d’entrée : - valeurs des variables après Variables : entier c
Variables : entiers a et b chaque ligne de l'algorithme Type de sortie : entier ligne a b c
Type de sortie : - ligne a b Début 0
Début 0 c ← a+b 1
a←1 1 a←2 2
b ← a+3 2 c ← b-a 3
a←3 3 renvoyer c
Fin Fin
● Q5 (C2a, C2b, C4a). Déduisez-en un algorithme en Javascript diviseParDeuxPair qui prend en entrée une chaîne de caractères
qui contient un nombre binaire n et s’il est pair, renvoie une chaîne de caractères qui contient la valeur de n/2 écrite en binaire.
Vous utiliserez l’algorithme caractère qui prend en entrée une chaîne de caractères chaine et un entier i et renvoie le i-ième
caractère de chaine, ainsi que l’algorithme sousChaine qui renvoie la partie de la chaîne de caractères chaine allant du i-ième au
j-ième caractère (inclus), et l’algorithme longueur qui renvoie le nombre de caractères de la chaîne de caractères chaine.
● sousChaine(a,i,j) renvoie la partie de la chaîne de caractères a comprise entre le i-ième caractère et le j-ième
caractère inclus.
● gauche(a,i) renvoie les i premiers caractères de la chaîne de caractères a.
Q1 (C1c). Faites un exemple d’appel de chacune de ces algorithmes, en écrivant le résultat obtenu en sortie à partir d’entrées que
vous avez choisies librement. Par exemple, pour la première, longueur("Na je") renvoie 5.
Q2 (C1c). Quel est le type de sortie de chacun des algorithmes ?
Q3 (C1b, C3a). Que contient la variable a après les deux instructions suivantes en Javascript ?
var a = "Na je nun ta sa ro un in gan jo gin yo ja";
a = gauche(droite(a,5),2) + sousChaine(a,(longueur(a)+1)/2+5,27);
Q4 (C1b, C3a). Que contient la variable b après les deux instructions suivantes en Javascript ?
var b = "Ko pi han ja ne yo yu rul a neun pum gyo gi nun yo ja";
b = gauche(droite(b,20),3)+droite(droite(droite(droite(droite(b,47),42),23),9),1);
Q5 (C2a, C2b, C4a). Supposons que l’algorithme sousChaine ne vous a pas été fourni. Écrivez-le en Javascript, en utilisant les
algorithmes gauche et droite (trouvez sur un exemple l’idée à exploiter!).
Q6 (C1c, C2a). On souhaite écrire en Javascript un algorithme premierMot(a) qui renvoie le premier mot de a, c’est-à-dire la
portion de la chaîne de caractères a qui précède le premier espace dans a.
Que renvoie premierMot("Ba mi o") ?
Q7 (C2a, C2b, C4a, C4b, un peu difficile). Écrivez en Javascript l’algorithme premierMot.
Q8 (C2a, C2b, C4a, C4b, difficile, pour s’entraîner chez soi). Écrivez un algorithme Javascript mots(a) qui renvoie un tableau de
chaînes de caractères dont chaque case contient un mot de a (on considère que seuls les espaces séparent les mots), dans leur
ordre d’apparition. Par exemple, mots("Na nun sa na ye") renvoie le tableau ["Na","nun","sa","na","ye"].
Exercice 9 – Manipulation de tableau (C1b, C1c) Exercice 10 – Traitement d’un tableau de notes
Algorithme mystere On a à disposition un tableau t d’entiers correspondant aux
Variable d’entrée : un tableau t de chaînes de caractères notes d’un étudiant : [15,9,10,17,8,14].
Variables : chaînes de caractères a et b
Type de sortie : chaîne de caractères Q1 (C2a, C2b). Écrivez en pseudo-code un algorithme
Début cherche qui prend en entrée un tableau d’entiers t ainsi
1. a ← concatene(case(t,1),case(t,2)) qu’un entier a et renvoie le booléen VRAI si l’entier a est
2. b ← concatene(case(t,4),case(t,1)) dans le tableau t, et FAUX sinon.
3. case(t,1) ← concatene("b",case(t,1))
4. a ← concatene(case(t,6),a) Q2 (C1b, C1c). Pour savoir si l’étudiant a obtenu un 18, on
5. a ← concatene(case(t,1),a) va donc appeler l’algorithme cherche([15,9,10,17,8,14],
6. b ← concatene(case(t,1),b) 18) : quelle valeur obtiendra-t-on en sortie ?
7. a ← concatene(a,case(t,3))
8. b ← concatene(case(t,5),b) Q3 (C2a, C2b). Écrivez en pseudo-code un algorithme
9. renvoyer concatene(a,b) somme qui prend en entrée un tableau d’entiers t et qui
Fin renvoie la somme des entiers contenus dans t.
On rappelle que concatene(a,b) prend en entrée deux Q4 (C1b, C1c). Que renvoie somme([15,9,10,17,8,14]) ?
chaînes de caractères a et b et renvoie une chaîne de
caractère contenant la chaîne a suivie de la chaîne b. Q5 (C1a, C2b). En appelant l’algorithme somme, et sans
Par exemple, concatene("a","b") renvoie la chaîne de écrire de boucle, écrivez en pseudo-code un algorithme
caractères "ab". moyenne qui prend en entrée un tableau d’entiers t et qui
renvoie la moyenne des entiers contenus dans t.
Que renvoie l’algorithme
mystere(["a","c","k","m","o","r"]) ? Q6 (C1b, C1c). Que renvoie moyenne([15,9,10,17,8,14]) ?
(faites une trace)