This is an old revision of the document!


Devoir 1 - Calculator

Mentions générales

Date limite: 8 Mars, 23:55
Points: 1 point de la note finale
Le devoir est à rendre sur: vmchecker.cs.pub.ro
Rendre en retard: 0.5 points / jour (maximum 4 jours)

Ce que vous avez à faire

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, help, maximum, minimum, modulo, multiply, power, reverse, sort, sqrt, subtraction, unique, sinus, cosinus.

Un exemple de calcul de 3 à la puissance 2 est:

node main.js 3 2 pwr
# cela écrira sur l'écran
9
  1. Faire un nouveau projet en NodeJS
  2. Créez un fichier package.json contenant votre nom en tant qu'auteur, n'importe quelle version et le nom du fichier principal (ex: main.js, homework.js, calculator.js …)
  3. Ecrire la calculatrice ayant le fichier principal celui écrit dans package.json

Operations

Op Paramètres Description Exemple
aucun Imprime sur l'écran le logo et la liste des opérations disponibles node main.js
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) Soustrait les nombres node main.js 2 4 3 5 6 7 3 -
mul une liste de nombres (minimum 2) Multiplie les nombres node main.js 2 4 3 5 6 7 3 mul
div une liste de nombres (minimum 2) Divise les nombres node main.js 2 4 3 5 6 7 3 div
mod deux nombres Calcule le modulo de a / b node main.js 500 45 mod
sq un nombre Calcule la racine carrée du nombre node main.js 600 sq
abs un nombre Calcule la valeur absolue du nombre node main.js -700 abs
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
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 2 4 3 5 6 7 3 uniq
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
cos un nombre Calcule le cosinus d'un angle avec une valeur donnee node main.js 45 cos
sin un nombre Calcule le sinus d'un angle avec une valeur donnee node main.js 120 sin

Aide

L'opération aide (cela signifie que vous exécutez votre programme avec le paramètre aide ou sans aucun paramètre) affiche la chaîne 'Calculator, Author: <votre nom ici, le même que celui de package.json>'.

Pour imprimer le logo, utilisez la bibliothèque cowsay .

Un exemple:

node main.js
# cela va imprimer:
 _________________________
< Calculator, Author: ALF >
 -------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
  help
  +
  -
  div
  mul
  mod
  sq
  abs
  pwr
  sort
  rev
  max
  min
  uniq
  cos
  sin

Erreurs

La calculatrice a deux erreurs possibles:

  1. La commande n'a pas été trouvée
  2. Le nombre de paramètres est incorrect

Si vous exécutez

node main.js list
# cela va imprimer (exactement)
ERROR: this command does not exist, use help to see available commands
 
node main.js 10 mul
# cela va imprimer (exactement)
ERROR: mul command uses at least 2 parameters

Bonus

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:

#add a1+b1i with a2+b2i
node main.js a1 b1 a2 b2 complex +
 
#subtract a1+b1i with a2+b2i
node main.js a1 b1 a2 b2 complex -
 
#multiply a1+b1i with a2+b2i
node main.js a1 b1 a2 b2 complex mul

Le bonus ne sera attribué que si tous les autres tests passent.

Règles

  1. Vous ne pouvez pas utiliser RegEx ou toute autre bibliothèque qui utiliserait des expressions régulières
  2. Les fichiers doivent avoir “use strict”
  3. Vos fichiers doivent passer jshint (avec node: true, esnext: true)
  4. Le code source doit être indenté (-0.1p)
  5. Vous devez écrire un fichier nommé Readme et expliquer comment vous avez écrit le devoir (-0.1p)

Copiage

Le devoir est individuel. Toute tentative de copie entraînera 0p pour les devoirs. Système anti-copie automatisé sera utilisé.

Questions

Si vous avez des questions concernant le devoir, posez-les en postant un issue sur le github repository avec le format [calculatrice] <le titre de votre question> . Vous aurez besoin d'un compte github pour cela.

NE POSTEZ AUCUN CODE. Ceci est considéré comme copiage et vous aller recevoir 0p pour le devoir.

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 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 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 .

cd Devoirs/calculator/verify
rm -rf node_modules
./run_all.sh ..

Vous aurez besoin de bash pour ça. Vous pouvez utiliser Linux ou Windows Linux Subsystem.

Pour installer nodejs sous Linux ou Windows Linux Subsystem, procédez comme suit:

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

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.

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.

Télécharger les devoirs

Les devoirs doivent être téléchargés sur vmchecker. Connectez-vous avec votre nom d'utilisateur moodle, sélectionnez le cours Automates et Langages Formelles (FILS) et téléchargez homework archive.

Readme

Le fichier readme a le format suivant:

Nom complet
Groupe

Une explication comment vous avez écrit le devoir, ce que vous avez utilisé, les idées principales.

Archivage de devoir

Pour télécharger votre devoir, suivez les instructions suivantes:

  1. 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
  2. Connectez-vous avec vmchecker
  3. sélectionner le cours Automates et Langages Formelles (FILS)
  4. sélectionnez 1. Calculator
  5. télécharger l'archive

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.

Lorsque l'archive est téléchargée, vmchecker va exécuter:

unzip archive.zip homework
cd homework
npm install
echo '{ "node":true, "esnext":true }' > .jshintrc
jshint *.js
alf/teme/tema1.1582744978.txt.gz · Last modified: 2020/02/26 21:22 by diana.ghindaoanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0