This shows you the differences between two versions of the page.
alf:teme:tema1 [2020/02/24 20:29] diana.ghindaoanu [Erreurs] |
alf:teme:tema1 [2023/03/16 18:24] (current) alexandra.negoita02 [Mentions générales] |
||
---|---|---|---|
Line 4: | Line 4: | ||
===== Mentions générales ===== | ===== Mentions générales ===== | ||
<note important> | <note important> | ||
- | Date limite: **1 Mars, 23:55**\\ | + | Date limite: **30 Mars, 23:55**\\ |
Points: **1 point** de la note finale\\ | Points: **1 point** de la note finale\\ | ||
- | Le devoir est à rendre sur: [[https://vmchecker.cs.pub.ro|vmchecker.cs.pub.ro]]\\ | ||
Rendre en retard: **0.5 points / jour** (maximum 4 jours)\\ | Rendre en retard: **0.5 points / jour** (maximum 4 jours)\\ | ||
+ | Lien: [[https://classroom.github.com/a/VCqp692Z|Devoir 1]] | ||
</note> | </note> | ||
Line 13: | Line 13: | ||
Le but du devoir est d'écrire une calculatrice qui prend des paramètres de la ligne de commande. | Le but du devoir est d'écrire une calculatrice qui prend des paramètres de la ligne de commande. | ||
- | La calculatrice supportera les opérations suivantes: absolute, addition, division, display, maximum, minimum, modulo, multiply, power, reverse, sort, sqrt, subtraction, unique, sinus, cosinus. | + | La calculatrice supportera les opérations suivantes: absolute, addition, division, help, maximum, minimum, modulo, multiply, power, reverse, sort, sqrt, subtraction, unique, sinus, cosinus. |
Un exemple de calcul de 3 à la puissance 2 est: | Un exemple de calcul de 3 à la puissance 2 est: | ||
Line 29: | Line 29: | ||
^ Op ^ Paramètres ^ Description ^ Exemple ^ | ^ Op ^ Paramètres ^ Description ^ Exemple ^ | ||
| | aucun | Imprime sur l'écran le logo et la liste des opérations disponibles | node main.js | | | | aucun | Imprime sur l'écran le logo et la liste des opérations disponibles | node main.js | | ||
- | | aide | aucun | Imprime sur l'écran le logo et la liste des opérations disponibles | node main.js aide | | + | | help| aucun | Imprime sur l'écran le logo et la liste des opérations disponibles | node main.js help | |
| + | une liste de nombres (minimum 2) | Ajoute les numéros | node main.js 2 4 3 5 6 7 3 +| | | + | une liste de nombres (minimum 2) | Ajoute les numéros | node main.js 2 4 3 5 6 7 3 +| | ||
| - | une liste de nombres (minimum 2) | Soustrait les nombres | node main.js 2 4 3 5 6 7 3 -| | | - | une liste de nombres (minimum 2) | Soustrait les nombres | node main.js 2 4 3 5 6 7 3 -| | ||
Line 39: | Line 39: | ||
| pwr | deux nombres | Calcule a à la puissance b | node main.js 30 9 pwr| | | pwr | deux nombres | Calcule a à la puissance b | node main.js 30 9 pwr| | ||
| sort | une liste de nombres (minimum 1) | Trie les nombres en ordre croissant | node main.js 2 4 3 5 6 7 3 sort| | | sort | une liste de nombres (minimum 1) | Trie les nombres en ordre croissant | node main.js 2 4 3 5 6 7 3 sort| | ||
- | | rev | une liste de nombres (minimum 1) | Trie les nombres en ordre décroissant | node main.js 2 4 3 5 6 7 3 | | + | | rev | une liste de nombres (minimum 1) | Trie les nombres en ordre décroissant | node main.js 2 4 3 5 6 7 3 rev | |
- | | uniq | une liste de nombres (minimum 1) | Imprime tous les numéros une seule fois | node main.js unique 2 4 3 5 6 7 3 | | + | | uniq | une liste de nombres (minimum 1) | Imprime tous les numéros une seule fois | node main.js 2 4 3 5 6 7 3 uniq | |
- | | max | une liste de nombres (minimum 1) | Trouve la plus grande valeur | node main.js maximum 2 4 3 5 6 7 3 rev | | + | | max | une liste de nombres (minimum 1) | Trouve la plus grande valeur | node main.js 2 4 3 5 6 7 3 max| |
| min | une liste de nombres (minimum 1) | Trouve la plus petite valeur | node main.js 2 4 3 5 6 7 3 min| | | min | une liste de nombres (minimum 1) | Trouve la plus petite valeur | node main.js 2 4 3 5 6 7 3 min| | ||
| cos | un nombre | Calcule le cosinus d'un angle avec une valeur donnee | node main.js 45 cos | | | cos | un nombre | Calcule le cosinus d'un angle avec une valeur donnee | node main.js 45 cos | | ||
Line 82: | Line 82: | ||
sin | sin | ||
</code> | </code> | ||
- | |||
- | <html> | ||
- | <center> | ||
- | <iframe src="https://shellrecorder.org/player/?filename=aHR0cHM6Ly9yYXdnaXQuY29tL2FsZXhhbmRydXJhZG92aWNpL2FsZjIwMTgvbWFzdGVyL0Rldm9pcnMvY2FsY3VsYXRvci9zaGVsbC9leGFtcGxlLnNoZWxscmVjb3JkZXI/cmF3PXRydWU=" frameborder="0" width="500" height="350"></iframe> | ||
- | </center> | ||
- | </html> | ||
==== Erreurs ==== | ==== Erreurs ==== | ||
Line 98: | Line 92: | ||
node main.js list | node main.js list | ||
# cela va imprimer (exactement) | # cela va imprimer (exactement) | ||
- | ERROR: this command does not exist, use display to see available commands | + | ERROR: this command does not exist, use help to see available commands |
node main.js 10 mul | node main.js 10 mul | ||
# cela va imprimer (exactement) | # cela va imprimer (exactement) | ||
- | ERROR: multiply command uses at least 2 parameters | + | ERROR: mul command uses at least 2 parameters |
</code> | </code> | ||
Line 110: | Line 104: | ||
- | Pour ** 0,25p ** points supplémentaires, implémentez la calculatrice pour des opérations avec des nombres complexes pour add, sub et mul. Le format d'entrée sera: | + | Pour ** 0,25p ** points supplémentaires, implémentez la calculatrice pour des opérations avec des nombres complexes pour +, - et mul. Le format d'entrée sera: |
<code bash> | <code bash> | ||
#add a1+b1i with a2+b2i | #add a1+b1i with a2+b2i | ||
- | node main.js addition a1 b1 a2 b2 complex | + | node main.js a1 b1 a2 b2 complex + |
#subtract a1+b1i with a2+b2i | #subtract a1+b1i with a2+b2i | ||
- | node main.js subtraction a1 b1 a2 b2 complex | + | node main.js a1 b1 a2 b2 complex - |
#multiply a1+b1i with a2+b2i | #multiply a1+b1i with a2+b2i | ||
- | node main.js multiply a1 b1 a2 b2 complex | + | node main.js a1 b1 a2 b2 complex mul |
</code> | </code> | ||
Line 129: | Line 123: | ||
- Vous ne pouvez pas utiliser // RegEx // ou toute autre bibliothèque qui utiliserait des expressions régulières | - Vous ne pouvez pas utiliser // RegEx // ou toute autre bibliothèque qui utiliserait des expressions régulières | ||
- | - Les fichiers doivent avoir "use strict" | ||
- | - Vos fichiers doivent passer jshint (avec node: true, esnext: true) | ||
- Le code source doit être indenté (-0.1p) | - Le code source doit être indenté (-0.1p) | ||
- Vous devez écrire un fichier nommé Readme et expliquer comment vous avez écrit le devoir (-0.1p) | - Vous devez écrire un fichier nommé Readme et expliquer comment vous avez écrit le devoir (-0.1p) | ||
Line 140: | Line 132: | ||
===== Questions ===== | ===== Questions ===== | ||
- | Si vous avez des questions concernant le devoir, posez-les en postant un //issue// sur le github [[https://github.com/upb-fils/alf.git|repository]] avec le format // [calculatrice] <le titre de votre question> //. Vous aurez besoin d'un compte github pour cela. | + | Si vous avez des questions concernant le devoir, posez-les en postant un //issue// sur le github [[https://github.com/UPB-FILS-ALF|repository]] avec le format // [calculatrice] <le titre de votre question> //. Vous aurez besoin d'un compte github pour cela. |
<note warning> | <note warning> | ||
Line 146: | Line 138: | ||
</note> | </note> | ||
- | Si vous souhaitez recevoir un e-mail lorsque des problèmes sont signalés ou lorsqu'il y a de nouveaux messages, accédez au site github [[https://github.com/upb-fils/alf.git|repository]] et cliquez //Watch//. | + | Si vous souhaitez recevoir un e-mail lorsque des problèmes sont signalés ou lorsqu'il y a de nouveaux messages, accédez au site github [[https://github.com/UPB-FILS-ALF/questions|repository]] et cliquez //Watch//. |
| | ||
- | ===== Tests ===== | ||
- | Les devoirs seront testés automatiquement en utilisant un ensemble de tests publics et privés. | ||
- | |||
- | ==== Tests publics ==== | ||
- | |||
- | Vous pouvez télécharger les tests publics du GitHub [[https://github.com/upb-fils/alf.git|repository]]. | ||
- | |||
- | Pour exécuter les tests, téléchargez le contenu du repository dans le directoire avec les devoirs. Entrez dans le directoire // Devoirs/calculator/verify // et exécutez ./run_all.sh .. . | ||
- | |||
- | Copiez le contenu du devoir dans le dossier // Devoirs/caclulator //. | ||
- | |||
- | <code bash> | ||
- | cd Devoirs/calculator/verify | ||
- | rm -rf node_modules | ||
- | ./run_all.sh .. | ||
- | </code> | ||
- | |||
- | Vous aurez besoin de //bash// pour ça. Vous pouvez utiliser Linux ou [[https://msdn.microsoft.com/en-us/commandline/wsl/install_guide|Windows Linux Subsystem]]. | ||
- | |||
- | <note> | ||
- | Pour installer nodejs sous Linux ou Windows Linux Subsystem, procédez comme suit: | ||
- | |||
- | <code bash> | ||
- | wget https://nodejs.org/dist/v10.15.1/node-v10.15.1-linux-x64.tar.xz | ||
- | tar xvfJ node-v10.15.1-linux-x64.tar.xz | ||
- | cd node-v10.15.1-linux-x64 | ||
- | sudo cp -R -v * /usr | ||
- | </code> | ||
- | | ||
- | </note> | ||
- | |||
- | ==== Tests privés ==== | ||
- | Lors du téléchargement des devoirs, il est possible qu'il y a des tests privés à faire passer. //vmchecker// les exécutera. | ||
- | |||
- | <note> | ||
- | Vous pouvez toujours télécharger les devoirs autant de fois que vous le souhaitez jusqu'à la date limite. Cela va exécuter tous les tests pour vous et va afficher le résultat. | ||
- | </note> | ||
- | |||
- | ===== Télécharger les devoirs ===== | ||
- | Les devoirs doivent être téléchargés sur [[https://vmchecker.cs.pub.ro|vmchecker]]. | ||
- | Connectez-vous avec votre nom d'utilisateur moodle, sélectionnez le cours //Automates et Langages Formelles (FILS)// et téléchargez [[# homework-archive | homework archive]]. | ||
- | |||
- | ==== Readme ==== | ||
- | Le fichier //readme// a le format suivant: | ||
- | |||
- | <code> | ||
- | Nom complet | ||
- | Groupe | ||
- | |||
- | Une explication comment vous avez écrit le devoir, ce que vous avez utilisé, les idées principales. | ||
- | </code> | ||
- | |||
- | |||
- | ==== Archivage de devoir ==== | ||
- | Pour télécharger votre devoir, suivez les instructions suivantes: | ||
- | |||
- | - Créez une archive zip (pas rar, ace, 7zip ou autre) contenant: | ||
- | * votre fichier main javascript (identique à celui spécifié dans package.json) | ||
- | * vos fichiers javascript (*.js) | ||
- | * le fichier package.json | ||
- | * le fichier Readme | ||
- | - Connectez-vous avec [[https://vmchecker.cs.pub.ro|vmchecker]] | ||
- | - sélectionner le cours //Automates et Langages Formelles (FILS)// | ||
- | - sélectionnez //1. Calculator// | ||
- | - télécharger l'archive | ||
- | |||
- | |||
- | <note> | ||
- | L'archive doit contenir les fichiers dans sa racine, pas dans un dossier. NE PAS archiver un dossier avec les fichiers, archiver DIRECTEMENT les fichiers. | ||
- | |||
- | NE PAS inclure //node_modules//. | ||
- | </note> | ||
- | |||
- | Lorsque l'archive est téléchargée, //vmchecker// va exécuter: | ||
- | |||
- | <code bash> | ||
- | unzip archive.zip homework | ||
- | cd homework | ||
- | npm install | ||
- | echo '{ "node":true, "esnext":true }' > .jshintrc | ||
- | jshint *.js | ||
- | </code> |