Aux nouvelles
Notes du final
Vos notes à ce cours sont disponibles sous forme brute sur la page Studium. Comme je n'arrive pas à y importer vos notes lettrées, je vous ai envoyé à 22h30 un code secret qui vous permet d'identifier toutes vos notes (normalisées tel qu'indiqué dans le plan de cours: 15 points pour les exercices notés, 15 points pour chaque devoir, 25 points pour l'intra et 30 points pour le final) dans la page suivante. Prenez note qu'une permanence vous est donnée vendredi 9 janvier de 13h30 à 15h00 afin que vous puissiez passer voir votre examen final. Manifestez tout problème rencontré dans vos notes rapidement (tout ce qui concerne les exercices notés et les devoirs doit être envoyé aux démonstrateurs). À celles et ceux que je ne reverrai pas, bonne continuation et à tous, une bonne année 2015.
Devoir 2
Vous êtes plusieurs à me demander une extension pour le devoir 2, aussi la date limite à été reportée au 18 décembre (après, il sera difficile de corriger dans les temps). Bon temps des fêtes.
À propos du final
Rappel: examen final jeudi 11 décembre de 15h30 à 18h29. Vous avez été informé par courriel: l'examen se déroulera dans deux salles: G-715 (section A) et G-615 (section B) du pav. Roger Gaudry.
Vous avez le droit à 2 feuilles (US letter) de notes (recto-verso). Tout autre document est interdit. L'usage de votre ordinateur (ou téléphone intelligent) ne sera pas permi, pas plus que l'usage d'internet. La matière à l'examen porte sur tout ce que vous avez vu en cours à l'exclusion de l'introduction à la programmation fonctionnelle.
Examens passés
Les sujets des examens finaux des sessions automne 2012 et 2103 sont disponibles (voir le cours de la semaine du 1 au 5 décembre). Des exercices de ces examens seront traités en démonstration.
Exercice noté 7
Le sujet est disponible (suivre le lien travaux) et est à remettre via studium d'ici dimanche 30.
Devoir 2
Le sujet du devoir 2 est disponible (suivre le lien travaux) et est à remettre via studium le 15 décembre 2014. Le sujet sera présenté lors de la prochaine démonstration.
Exercice noté 6
Le sujet est disponible (suivre le lien travaux) et est à remettre via studium d'ici dimanche 23.
Exercice noté 5
Le sujet est disponible (suivre le lien travaux) et est à remettre via studium d'ici vendredi 14.
Interpréteur ligne de commande
L'interpréteur ligne de commande js
de SpiderMonkey a été
installé par l'équipe de support sur les machines d'enseignement. Il
vous est possible de l'invoquer en tapant js24
(ex: js24 algo-tab.js
si vous vous trouvez dans le
répertoire où se trouve algo-tab.js
). Notez que
l'interpréteur js
continue à exister, mais que les codes
que nou voyons en cours ne sont pas compatibles avec cet interpréteur.
Exercice noté 4
Le sujet est disponible sur Studium, la remise est prévue pour vendredi 7 novembre.
Changement de prof
Je donne le cours à partir de la semaine du 27 octobre 2014.
Attention: un changement de prof vient avec
des changements d'habitudes. Mes informations sont dans le lien
contacts
. N'hésitez pas à passer me voir ou à me
contacter
par email.
Exercice noté #5
Vous devez ranger des valeurs générées aléatoirement dans un tableau
trié en ordre décroissant, sans jamais trier votre tableau. Le
tableau résultant doit vous permettre de calculer efficacement les
valeurs les plus fréquentes dans vun tableau tableau. Vous devez pour
cela remettre un fichier ex-note5.js
qui contient (au
moins) les deux fonctions qui sont décrites ci-après. Vous avez le
droit d'utiliser du code vu en cours (en fait la réponse à la première
fonction a déjà été vue en cours).
Create
Écrire une fonction create(nbTest, min, max, doPrint)
qui retourne un tableau trié en ordre décroissant
de nbTest
valeurs entières tirées aléatoirement
entre min
et max
. L'argument doPrint
s'il est vrai
provoque l'affichage de la construction du tableau. L'affichage
produit doit respecter celui de l'exemple qui vous est donnée plus bas
(les valeurs peuvent bien sûr changer puisque les valeurs sont
générées aléatoirement). Voici quelques exemples d'appels de votre fonction et leur
résultat. Notez que les valeurs sont générées aléatoirement et que deux appels identiques peuvent donner des
résultats différents, comme c'est le cas des deux premiers appels.
// affiche un tableau trie de 20 valeurs aleatoires entre 1 et 10 print(create(20,1,10)); 10,10,10,9,8,7,7,6,6,6,5,5,5,3,3,2,1,1,1,1
// affiche un tableau trie de 20 valeurs aleatoires entre 1 et 10 print(create(20,1,10)); 10,10,10,9,8,8,8,7,7,6,6,4,3,3,3,3,2,2,1,1
// affiche un tableau trie de 30 valeurs aleatoires entre 1 et 20 print(create(30,1,20)); 9,19,19,19,19,18,17,16,16,16,16,16,14,10,10,10,9,9,8,8,7,6,4,4,3,3,2,2,1,1
// affiche un tableau trie de 30 valeurs aleatoires entre 5 et 100 print(create(30,5,100)); 100,98,96,95,89,88,88,85,78,75,73,69,69,68,67,62,62,60,58,48,42,39,36,35,31,29,28,21,9,9 // affiche un tableau trie de 20 valeurs aleatoires entre 1 et 10 et affiche la contruction du tableau print(create(20,1,10,true)); valeur aléatoire: 7 tab: 7 valeur aléatoire: 9 tab: 9,7 valeur aléatoire: 10 tab: 10,9,7 valeur aléatoire: 1 tab: 10,9,7,1 valeur aléatoire: 2 tab: 10,9,7,2,1 valeur aléatoire: 7 tab: 10,9,7,7,2,1 valeur aléatoire: 2 tab: 10,9,7,7,2,2,1 valeur aléatoire: 7 tab: 10,9,7,7,7,2,2,1 valeur aléatoire: 1 tab: 10,9,7,7,7,2,2,1,1 valeur aléatoire: 9 tab: 10,9,9,7,7,7,2,2,1,1 valeur aléatoire: 8 tab: 10,9,9,8,7,7,7,2,2,1,1 valeur aléatoire: 7 tab: 10,9,9,8,7,7,7,7,2,2,1,1 valeur aléatoire: 5 tab: 10,9,9,8,7,7,7,7,5,2,2,1,1 valeur aléatoire: 1 tab: 10,9,9,8,7,7,7,7,5,2,2,1,1,1 valeur aléatoire: 2 tab: 10,9,9,8,7,7,7,7,5,2,2,2,1,1,1 valeur aléatoire: 6 tab: 10,9,9,8,7,7,7,7,6,5,2,2,2,1,1,1 valeur aléatoire: 5 tab: 10,9,9,8,7,7,7,7,6,5,5,2,2,2,1,1,1 valeur aléatoire: 1 tab: 10,9,9,8,7,7,7,7,6,5,5,2,2,2,1,1,1,1 valeur aléatoire: 3 tab: 10,9,9,8,7,7,7,7,6,5,5,3,2,2,2,1,1,1,1 valeur aléatoire: 6 tab: 10,9,9,8,7,7,7,7,6,6,5,5,3,2,2,2,1,1,1,1 10,9,9,8,7,7,7,7,6,6,5,5,3,2,2,2,1,1,1,1
Vous ne devez pas utiliser de fonction de tri, que ce soit une fonction disponible ou une de votre cru. Votre fonction ne doit en particulier pas stocker les valeurs aléatoires dans un tableau qui sera par la suite trié, mais doit s'assurer que le tableau est maintenu trié en ajoutant chaque valeur tirée aléatoirement à sa bonne place au fur et à mesure. Ceci est illustré dans le dernier appel ci-dessus.
Frequence
Écrire une fonction frequence(t,n)
qui prend en
argument un tableau de valeurs entières triées en ordre décroissant,
ainsi qu'un entier n
et qui retourne un tableau
des n
valeurs les plus fréquentes dans t
accompagnées de leur fréquence dans le tableau passé en argument.
Dans l'exemple qui suit, le tableau retourné
par frequence(t,3)
indique que les 3
valeurs
les plus fréquentes dans t
sont (dans cet ordre) la
valeur 1
avec 4 apparitions, la valeur 7
qui
apparaît également 4 fois, suivi de la valeur 2
qui
apparaît 3 fois. (Il se peut qu'à fréquence égale d'autres valeurs
soient retenues par votre fonction).
var t = create(20,1,10); print('t',t); print('f',frequence(t,3)); t 10,9,9,8,7,7,7,7,6,6,5,5,3,2,2,2,1,1,1,1 f 1,4,7,4,2,3
Vous devez essayer de ne pas utiliser un tableau intermédiaire qui
compterait la fréquence de toutes les valeurs du tableau passé en
argument mais devez essayer de ne garder que les n
valeurs dans le tableau les plus fréquentes et seulement
celles-ci (possiblement avec un tableau). Par exemple, dans l'appel
qui suit, seules les valeurs 7,3,18,14
et 11
devraient être stockées (et possiblement leur fréquence) sans qu'aucun
tableau n'ai mémorisé les 16 valeurs différentes du tableau de 20 éléments passé à la fonction.
var t = create(30,1,20); print('t',t); print('f',frequence(t,5)); t 20,20,19,18,18,18,16,15,14,14,13,13,12,11,11,9,7,7,7,7,6,5,5,4,4,3,3,3,1,1 f 7,4,3,3,18,3,14,2,11,2
ex-note5.js
et la remise doit se faire par studium.