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.
Question 1
Écrire une fonction encode(t)
qui encode les valeurs
(supposées entières) d'un tableau passé en argument t
en
retournant un tableau dont les paires successives de valeurs encodent
respectivement les valeurs rencontrées (en parcourant le tableau de la
gauche vers la droite) et le nombre de répétitions adjacentes de
chaque valeur. Ainsi, pour le
tableau [1,2,2,2,4,2,4,4,5,6,1,2,3,3]
de l'exemple qui
suit, la valeur 1
est répétée 1
fois, la
valeur 2
est répétée 3
fois (de manière
adjacente), la valeur 4
est répétée 1
fois, etc.
print(encode([1,2,2,2,4,2,4,4,5,6,1,2,3,3])); [1,1,2,3,4,1,2,1,4,2,5,6,1,1,2,1,3,2]
Question 2
Écrire une fonction decode(t)
qui effectue l'opération inverse de la question précédante. Ainsi l'appel decode([8,1,2,5])
doit retourner le tableau [8,2,2,2,2,2]
car le tableau encode dans cette ordre 1
répétition de la valeur 8
et 5
répétitions de la valeur 2
.
Question 3
Écrire un test unitaire qui vérifie le bon fonctionnement de vos
fonctions code
et decode
. Vous générerez à
cet effet plusieurs tableaux aléatoires que vos encoderez puis
décoderez.
Question 4
Vérifiez ce qu'affiche le code suivant avec vos fonctions code
et decode
:
print(encode(["a","a","b","c","c",1,1,3,3));
Question 5
Écrire une fonction encryption(texte,cle)
qui prend une string en
argument, ainsi qu'une clé (une lettre) et qui retourne une string
dans laquelle la clé correspond à la
lettre e
, la lettre suivante à la lettre f
,
etc. Seuls les caractères entre a
et z
sont affectés par ce procédé de cryptage. Dans l'appel qui suit,
i
correspond donc à e
, j
à f
, ..., z
à v
, a
à w
, ... et h
à d
. Vous noterez
que les espaces ainsi que la lettre à
ne sont pas
modifiés car ces caractères ne sont pas entre a
et z
.
print(encryption("je vais aller à la plage","i")); fa rweo whhan à hw lhwca
Question 6
Écrire la méthode decryption(texte)
qui réalise le
décryptage de la chaîne texte
en prenant pour clé la
lettre entre a
et z
la plus fréquente dans
cette chaîne.