Differences

This shows you the differences between two versions of the page.

Link to this comparison view

alf:teme:tema2 [2020/03/15 11:59]
alexandru.radovici
alf:teme:tema2 [2022/03/26 19:14] (current)
diana.ghindaoanu [Information]
Line 1: Line 1:
-====== Devoir 2 - Langage ​Robot ===== +====== Devoir 2 - Langage ​de Design ​===== 
  
  
-===== Mentions générales ​=====+===== Information ​=====
  
 <note important>​ <note important>​
-Date limite: **22 Mars, 23:55**\\+Date limite: **4 Avril, 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]]\\ +Lien: [[https://classroom.github.com/​a/​RlVxv93k|Devoir 2]]\\ 
-Rendre en retard: **0.points ​/ jour** (maximum ​jours)\\+Rendre en retard: **1 point / jour** (maximum ​jours)\\
 </​note>​ </​note>​
  
-===== Ce que vous avez à faire =====+===== Objectifs ​=====
  
-Ce devoir a pour but d'​écrire un interpréteur pour le langage // Robot //. Le langage ​est utilisé pour déplacer un robot sur un plan plat. Le robot peut aller en avant, en arrière, tourner ou sauter.+Le but de ce travail ​est de vous familiariser avec les concepts suivants:
  
-Ecrire un interprèteur qui reçoit comme paramètre un fichier avec des commandes et qui écrit sur l'​écran ​la position ​et la rotation du robot après chaque commande.+   - développement de base de TypeScript 
 +   - utilisation de structures de données dans TypeScript 
 +   - utilisation ​des paramètres de la ligne de commande 
 +   - lecture de données à partir de fichiers 
 +   - division ​et traitement de chaînes
  
-  * Si la commande ​a réussi, il affichera OK xy, r (exactement comme ceci) +===== Exigences du devoir ===== 
-  ​* ​S'il y a eu une erreuril affichera ERROR LINE suivi du numéro de la ligneet le texte d'​erreur.+ 
 + 
 +Le but du devoir est d'​écrire un interprète pour le langage // Design //. Le langage est utilisé pour dessiner des figures géométriques. 
 + 
 +L'​interprète reçoit 2 fichiers en tant que paramètres de la ligne de commande
 +   - un fichier d'​entreed'​où ​il faut lire les instructions de design 
 +   - un fichier de sortie [[https://​developer.mozilla.org/​fr/​docs/​Web/​SVG/​Tutoriel|SVG]]où il faut afficher les figures géométriques 
 + 
 +S'il y a des erreurs dans le fichier d'​entréel'​interprète va afficher sur l'​écran un message qui contient le numéro de la ligne et le texte d'​erreur, mais sans arrêter le programme. 
 + 
 + 
 +Exemple d'​exécution du programme:
  
 <code bash> <code bash>
-node main.js ​robot_commands.s+node main.js ​design.dsn canvas.svg
 </​code>​ </​code>​
  
-Cela exécutera ​le fichier //robot_commands.s// et écrira sur l'​écran la position et la rotation du robot après chaque commande ou une erreur pour les lignes qui ont des erreurs.+Cela va exécuter ​le fichier //design.dsn// et va dessiner ​les figures indiquées par les instructions dans le fichier //​canvas.svg//​.
  
 <note warning> <note warning>
-Les terminaisons ​de ligne dans le fichier de commandes sont Linux, ce qui signifie ​simplement ​**\n**.+Les fins de ligne dans le fichier de commandes sont ceux de Linux, ce qui signifie ​juste **\n**.
 </​note>​ </​note>​
  
-==== Exemple ​====+==== Example erreur ​====
  
-Pour ce fichier ​robot.s+Pour le fichier ​//design.dsn// suivant :
  
 <​code>​ <​code>​
-Move +Move 
-FORWARD ​200 +POSITION: 200, 200 
-COMMAND_WITH_ERROR ​ +COMMAND_WITH_ERROR ​ 
-BACKWARD 10+
 </​code>​ </​code>​
  
-l'interprèteur ​devra afficher+L'interpreteur ​devra déplacer la position du crayon et ensuite ​afficher:
  
 <​code>​ <​code>​
-OK 200, 0, 90 +ERROR LINE (2): Unknown ​statement (COMMAND_WITH_ERROR)
-ERROR LINE 2: Unknown ​command ​COMMAND_WITH_ERROR +
-OK 190, 0, 90+
 </​code>​ </​code>​
 +
 +===== Valeurs initiales =====
 +
 +
 +  * La position initiale du crayon est **(0, 0)**.
 +  * La couleur initiale du stylo est: **noir**.
 +  * La couleur de remplissage initiale est: **blanc**.
 +  * La largeur du stylo est **1**.
  
 ===== Règles ===== ===== Règles =====
-  
-  - Vous ne pouvez pas utiliser // RegEx // ou une autre bibliothèque qui utilise 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) 
-  - Vous devez écrire un fichier nommé Readme et expliquer comment vous avez rédigé le devoir (-0.1p) 
-  
-===== Copie ===== 
  
-Le devoir est individuelToute tentative de copie entraînera ​** 0p ** pour le devoir. Un système anti-copie automatisé sera utilisé.+  - Le programme doit être écrit en TypeScript, pas JavaScriptToutes les variables doivent avoir le type défini ​**(-0.5p)** 
 +  - Le code source doit être indenté **(-0.1p)** 
 +  - Vous devez écrire un fichier nommé //README// et expliquer la solution choisie ​pour le devoir ​**(-0.1p)** 
 + 
 +===== Copiage =====
  
 +Le devoir est individuel. Toute tentative de tricher entraînera ** 0p ** pour les devoirs. On va utiliser un systeme automatisé pour détecter les devoirs copiés.
  
 ===== Questions ===== ===== Questions =====
-  + 
-Si vous avez des questions concernant ​le devoirdemandez-les en posant ​un problème sur github [[https://​github.com/​upb-fils/alf|repository]]. Vous aurez besoin d'un compte github pour cela.+Si vous avez des questions concernant ​les devoirsposez-les en publiant ​un problème sur le github [[https://​github.com/​UPB-FILS-ALF/questions| repository ​pour les questions]] avec le format du titre //[design] <titre de votre question>//​. Vous aurez besoin d'un compte github pour cela.
  
 <note warning> <note warning>
-** NE POSTEZ AUCUN CODE **. Ceci est considéré comme la copie et se traduira par un devoir ​de 0p pour vous.+** NE POSTEZ AUCUN CODE **. Cette action ​est considéré comme tentative ​de tricher et alors vous obtiendrez **0p** pour le devoir.
 </​note>​ </​note>​
-  
-Si vous souhaitez recevoir un courriel quand des problèmes sont posés ou quand il y a de nouveaux messages, allez sur github [https://​github.com/​upb-fils/​alf|repository] et cliquez sur //Watch//. 
  
-===== Langage ​Robot =====+Si vous souhaitez recevoir un e-mail lorsque des problèmes sont publiés ou lorsqu'​il y a de nouveaux messages, accédez au [[https://​github.com/​UPB-FILS-ALF/​questions|repository pour les questions]] github et cliquez sur //​Regarder//​. 
 +   
 +===== Langage ​de Dessin ​=====
  
-=== La Position du Robot  === 
  
-Le robot a une position et une rotation. La position est représentée par une paire (xy) exprimée à l'aide de nombres entiersLa rotation ​du robot s'​exprime en degrés et varie entre 0 et 360.+Le langage simplement déplace un stylo. La position ​initiale du stylo est 00Lors du dessin, le stylo est déplace vers la nouvelle position.
  
-L'​état du robot est exprimé ​par (x, y, r),qui signifie+==== Commentaires ==== 
-* x, y la position + 
-* r la rotation en degrés+Les commentaires sont précédés ​par //&//​. 
 + 
 +<​code>​ 
 +& Sur cette ligne il a un commentaire 
 +INSTRUCTIONp1 p2 
 +INSTRUCTION:​ p1 p2 
 +</​code>​ 
 + 
 +==== Variables ==== 
 + 
 +Toutes les instructions acceptent comme paramètres des nombres ou des variables. Les variables ont le format suivant: 
 + 
 +<​code>​ 
 +%variable 
 +</​code>​
  
-=== Point de départ ===+Avant de pouvoir être utilisé, une variable doit recevoir une valeur (en utilisant l'​instruction //set//).
  
-Le robot part de (0, 0, 90) dont la position est (0, 0) et la rotation de 90 degrés.+==== Format des instructions ====
  
 +Les instructions sont stockées dans un fichier. Chaque instruction est sur une ligne distincte.
  
-==== Format des commandes ==== +Le format d'un instruction est le suivant:
-Les commandes sont stockées dans un fichier. Chaque commande se trouve sur une ligne distincte.+
  
-Le format d'une commande robot est le suivant:+    INSTRUCTIONparamètre1 paramètre2 etc
  
-    COMMAND parameter1,parameter2,​etc+Les instructions peuvent avoir n'​importe quel nombre d'​espaces avant leur nomentre les paramètres et n'​importe quel nombre d'​espaces après le dernier paramètre. Voici quelques exemples d'​instructions valides:
  
-Les commandes peuvent avoir n'​importe combien nombre d'​espaces avant son nom, entre les paramètres et n'​importe combien nombre d'​espaces après le dernier paramètre. Voici quelques exemples de commandes valides:+    INSTRUCTIONp1 p2 p3 
 +        INSTRUCTION:​ p1 p2    p3 
 +    INSTRUCTION:​ p1 p2 p3
  
-    COMMAND p1,    p2,  p3 +Toutes les instructions et tous les paramètres sont //case insensitive//​.
-      COMMAND p1, p2,   ​p3 ​    +
-    COMMAND ​    ​p1,​p2,​p3+
  
-==== Commandes ​====+==== Instructions ​====
  
-=== FORWARD ​===+=== POSITION ​===
  
-Déplace le robot vers l'​avant avec un nombre de // pixels //+Déplace le stylo dans une position, sans rien dessiner. 
 +Les paramètres sont x et y.
  
 == Syntaxe == == Syntaxe ==
  
-  FORWARD pixels+<​code>​ 
 +POSITION: 150 150 
 +POSITION: %here %there 
 +& %here et %there sont des variables qui ont été assignées précédemment 
 +</​code>​ 
 +   
 +== Erreurs == 
 + 
 +Mauvais nombre de paramètres:​ 
 + 
 +  ERROR LINE (line_number):​POSITION has 2 parameters, you wrote (number_of_written_parameters) 
 + 
 +Mauvais type de paramètre:​ 
 + 
 +  ERROR LINE (line_number):​POSITION parameter (the number of the parameter) requires a number or a variable, you wrote (actual_written_parameter_value) 
 +   
 + 
 +=== LINE === 
 + 
 +Trace une ligne de la position actuelle vers une autre position ou avec une longueur et un angle spécifiés. 
 +Met à jour les coordonnées du stylo. 
 + 
 +== Syntaxe == 
 + 
 +<​code>​ 
 +LINE: x y location 
 +LINE: l a polar 
 +</​code>​
  
 == Paramètres == == Paramètres ==
-Prend exactement un paramètre 
  
-* //pixels// - un nombre entier qui représent le nombre ​de pixels à aller vers l'avant+Elle prend exactement 3 paramètres 
 + 
 +  ​* //type// - soit //​position//​ soit //polar// 
 +  * //x// - si //type// est //​location//,​ la coordonnée x de la nouvelle position 
 +  * //y// - si //type// est //​location//,​ la coordonnée y de la nouvelle position 
 +  * //l// - si //type// est //polar//, la longueur de la ligne 
 +  * //a// - si //type// est //​polar//, ​l'angle (du cercle trigonométrique) en degrés 
  
 == Erreurs == == Erreurs ==
  
-Nombre ​incorrect ​de paramètres+Nombre de paramètres ​erroné: 
 + 
 +  ERROR LINE (line_number):​LINE has 3 parameters, you wrote (number_of_written_parameters) 
 + 
 +Type de paramètre erroné pour //type//:
  
-  ERROR LINE (line_number):​FORWARD has 1 parameters, you wrote (number_of_written_parameters)+  ERROR LINE (line_number):​LINE parameter 3 requires one of (location, polar), you wrote (actual_written_parameter_value)
  
-Type de paramètre ​incorrect pour pixels+Type de paramètre ​erroné:
  
-  ERROR LINE (line_number): ​FORWARD ​parameter ​requires a number, you wrote (actual_written_parameter_value)+  ERROR LINE (line_number):​LINE parameter ​(the number of the parameter) ​requires a number ​or a variable, you wrote (actual_written_parameter_value)
  
  
-=== BACKWARD ​===+=== CIRCLE ​===
  
-Déplace le robot vers l'​arrière avec un nombre de // pixels //+Dessine ​un cercle 
 +Elle ne met pas à jour la position du stylo.
  
 == Syntaxe == == Syntaxe ==
  
-  ​BACKWARD pixels+  ​CIRCLE: x y r
  
 == Paramètres == == Paramètres ==
-Prend exactement un paramètre 
  
-* //pixels// - un nombre entier qui représent ​le nombre de pixels à aller vers l'​arrière+Elle prend exactement 3 paramètres 
 + 
 +  ​* //x// - la coordonnée x pour le centre 
 +  * //y// - la coordonnée y pour le centre 
 +  * //r// - le rayon
  
 == Erreurs == == Erreurs ==
  
-Nombre ​incorrect ​de paramètres +Nombre de paramètres ​erroné:
-  ERROR LINE (line_number)BACKWARD has 1 parameters, you wrote (number_of_written_parameters)+
  
-Type de paramètre incorrect pour pixels +  ​ERROR LINE (line_number):​CIRCLE has 3 parameters, you wrote (number_of_written_parameters)
-  ​ERROR LINE (line_number): ​BACKWARD parameter 1 requires a number, you wrote (actual_written_parameter_value)+
  
-=== TURN ===+Type de paramètre erroné:
  
-Tourne le robot à gauche ​(dans le sens contraire des aiguilles d'une montreou à droite ​(dans le sens des aiguilles d'une montreun certain nombre de degrés.+  ERROR LINE (line_number):CIRCLE parameter ​(the number of the parameterrequires a number or a variable, you wrote (actual_written_parameter_value) 
 +   
 +=== ELLIPSE === 
 + 
 +Dessine une ellipse 
 +Elle ne met pas à jour la position du stylo.
  
 == Syntaxe == == Syntaxe ==
  
-  ​TURN left/right, degrees+  ​ELLIPSE: x y r1 r2
  
 == Paramètres == == Paramètres ==
-Prend exactement deux paramètres 
  
-* //left// ou //right// - écrites exactement comme ici +Elle prend exactement 4 paramètres 
-* //degrees// - un nombre entier qui représente les degrés à tourner+ 
 +  ​* //x// - la coordonnée x pour le centre 
 +  * //y// - la coordonnée y pour le centre 
 +  * //r1// - le rayon horizontal 
 +  * //r2// - le rayon vertical
  
 == Erreurs == == Erreurs ==
  
-Nombre ​incorrect ​de paramètres +Nombre de paramètres ​erroné:
-  ERROR LINE (line_number)TURN has 2 parameters, you wrote (number_of_written_parameters)+
  
-Paramètre incorrect pour gauche / droite +  ​ERROR LINE (line_number):​ELLIPSE has 4 parameters, you wrote (number_of_written_parameters)
-  ​ERROR LINE (line_number): ​TURN parameter 1 requires a left/right, you wrote (actual_written_parameter_value)+
  
-Paramètre incorrect pour les degrés +Type de paramètre erroné:
-  ERROR LINE (line_number)TURN parameter 2 requires a number, you wrote (actual_written_parameter_value)+
  
-=== JUMP ===+  ERROR LINE (line_number):​ELLIPSE parameter (the number of the parameter) requires a number or a variable, you wrote (actual_written_parameter_value) 
 +   
 +=== RECTANGLE ​===
  
-Placez le robot sur une position ​spécifique. Peu importe l'​orientation qu'il a.+Dessine un rectangle 
 +Elle ne met pas à jour la position ​du stylo.
  
 == Syntaxe == == Syntaxe ==
  
-  ​JUMP x, y+  ​RECTANGLE: x1 y1 x2 y2
  
 == Paramètres == == Paramètres ==
  
-Prend exactement ​deux paramètres+Elle prend exactement ​paramètres
  
-* //x// - la position ​x du robot +  ​* //x1// - la coordonnée ​x du coin supérieur gauche 
-  ​* la valeur peut être ~ (tilde) ou un nombre entier +  * //y1// - la coordonnée ​y du coin supérieur gauche 
-  * ~ signifie qu'il maintient sa position x précédente +  * //x2// - la coordonnée x du coin inférieur droit 
-* //y// - la position ​y du robot +  * //y2// - la coordonnée ​du coin inférieur droit
-  * la valeur peut être ~ (tilde) ou un nombre entier +
-  * ~ signifie qu'il maintient sa position ​précédente+
  
 == Erreurs == == Erreurs ==
  
-Nombre ​incorrect ​de paramètres +Nombre de paramètres ​erroné:
-  ERROR LINE (line_number)JUMP has 2 parameters, you wrote (number_of_written_parameters)+
  
-Paramètre incorrect pour x +  ​ERROR LINE (line_number):​RECTANGLE has 4 parameters, you wrote (number_of_written_parameters)
-  ​ERROR LINE (line_number): ​JUMP parameter 1 requires a number, you wrote (actual_written_parameter_value)+
  
-Paramètre incorrect pour y +Type de paramètre erroné:
-  ERROR LINE (line_number)JUMP parameter 2 requires a number, you wrote (actual_written_parameter_value)+
  
-=== REPEAT ===+  ERROR LINE (line_number):​RECTANGLE parameter (the number of the parameter) requires a number or a variable, you wrote (actual_written_parameter_value) 
 +  ​
  
 +=== COLOR ===
  
-Répète certaines lignes de commandes jusqu'à END+Met à jour la couleur du stylo ou de remplissage.
  
-  REPEAT times+La couleur initiale du stylo est **noir**. 
 +La couleur de remplissage initiale est **blanc**.
  
-Les commandes REPEAT ne sont pas imbriquées (REPEAT en REPEAT)+== Syntaxe == 
 + 
 +  COLOR: pen r g b 
 +  COLOR: fill r g b
  
 == Paramètres == == Paramètres ==
-Prend exactement un paramètre 
  
-* //times// - un nombre entier ​indiquant ​le nombre de répétitions des commandes ​jusqu'​à ​END+Elle prend exactement 4 paramètres 
 + 
 +  * //type// - soit //pen// (la couleur du stylo) //fill// (la couleur de remplissage) 
 +  * //r// - le composant rouge de la couleur 
 +  * //g// - le composant vert de la couleur 
 +  * //b// - le composant bleu de la couleur 
 + 
 +Les valeurs sont comprises entre 0 et 255. 
 + 
 +== Errors == 
 + 
 +Nombre de paramètres erroné: 
 + 
 +  ERROR LINE (line_number):​COLOR has 4 parameters, you wrote (number_of_written_parameters) 
 + 
 +Type de paramètres erroné pour //type// 
 + 
 +  ERROR LINE (line_number):​COLOR parameter 1 requires one of (pen, fill), you wrote (actual_written_parameter_value) 
 + 
 +Type de paramètre erroné: 
 + 
 +  ERROR LINE (line_number):​COLOR parameter (the number of the parameter) requires a number or a variable, you wrote (actual_written_parameter_value) 
 + 
 +Valeur hors de portée: 
 + 
 +  ERROR LINE (line_number):​COLOR parameter (the number of the parameter) requires a number or a variable between [0, 255], you wrote (actual_written_parameter_value,​ if it is a variable write the value of the variable) 
 + 
 + 
 +=== LOOP === 
 + 
 +Répète certaines lignes de déclarations jusqu'​à REPEAT 
 + 
 +  LOOP: times 
 + 
 +Les instructions LOOP **ne** sont **pas** imbriquées (LOOP dans LOOP) 
 + 
 +== Paramètres == 
 + 
 +Elle prend exactement 1 paramètre 
 + 
 +* //times// - un nombre entier ​ou une variable spécifiant ​le nombre de répétitions des instructions ​jusqu'​à ​REPEAT
  
 == Erreurs == == Erreurs ==
  
-Nombre ​incorrect ​de paramètres +Nombre de paramètres ​erroné:
-  ERROR LINE (line_number)REPEAT has 1 parameters, you wrote (number_of_written_parameters)+
  
-Paramètre incorrect pour  times +  ​ERROR LINE (line_number):​LOOP has parameters, you wrote (number_of_written_parameters)
-  ​ERROR LINE (line_number): ​REPEAT parameter ​requires a number, you wrote (actual_written_parameter_value)+
  
-Le fichier se termine et il reste au moins un REPEAT without END+Paramètre erroné pour les temps:
  
-  ​You have number_of_repeats REPEAT without END+  ​ERROR LINE (line_number):​LOOP parameter 1 requires a number or a variable, you wrote (actual_written_parameter_value)
  
-=== END ===+Le fichier se termine et il y a encore au moins une boucle sans REPEAT:
  
-Termine une boucle ​de répétition+  ERROR LINE (line_number):​LOOP with no REPEAT 
 + 
 + 
 +=== WHILE === 
 + 
 +Répète certaines lignes ​de déclarations jusqu'​à REPEAT 
 + 
 +  WHILE: variable 
 + 
 +Les instructions WHILE **ne** sont **pas** imbriquées (WHILE dans WHILE)
  
 == Paramètres == == Paramètres ==
  
-Ne prend pas de paramètres+Elle prend exactement 1 paramètre 
 + 
 +* //​variable//​ - une variable, si la variable est différente ​de 0, répète les instructions jusqu'​à REPEAT, une ou plusiers fois
  
 == Erreurs == == Erreurs ==
  
-Nombre ​incorrect ​de paramètres +Nombre de paramètres ​erroné:
-  ERROR LINE (line_number)END has 0 parameters, you wrote (number_of_written_parameters)+
  
-END est utilisé sans a REPEAT précédent  +  ​ERROR LINE (line_number):​WHILE has 1 parameters, you wrote (number_of_written_parameters)
-  ​ERROR LINE (line_number): ​END and no REPEAT+
  
-===== Bonus =====+Paramètre erroné pour la variable:
  
-Pour un bonus de ** 0,5p **mettre en œuvre l'​imbrication REPEAT ​(REPEAT en REPEAT).+  ERROR LINE (line_number):​WHILE parameter 1 requires a variableyou wrote (actual_written_parameter_value)
  
-<​note>​ +Le fichier se termine et il y a encore au moins un WHILE sans REPEAT: 
-Le bonus ne sera accordé que si tous les autres tests passent+ 
-</​note> ​+  ERROR LINE (line_number):​WHILE with no REPEAT 
 + 
 +=== REPEAT === 
 + 
 +Termine un LOOP ou un WHILE
 + 
 +== Paramètres == 
 + 
 +Elle ne prend pas de paramètres:​ 
 + 
 +== Erreurs == 
 + 
 +Nombre de paramètres erroné: 
 + 
 +  ERROR LINE (line_number):​REPEAT has 0 parameters, you wrote (number_of_written_parameters) 
 + 
 +REPEAT est utilisé sans un LOOP précédente:​ 
 + 
 +  ERROR LINE (line_number):​REPEAT and no LOOP
   ​   ​
-===== Tests =====+=== IF ===
  
-Le devoir sera testé automatiquement à l'​aide ​d'un ensemble de tests publics et privés.+Exécuter certaines lignes ​d'instructions jusqu'​à ELSE ou END
  
-==== Tests publics ====+  IF: variable
  
-Vous pouvez télécharger les tests publics depuis GitHub [[https://​github.com/​upb-fils/​alf|repository]].+Les instructions IF ne sont pas imbriquées (IF dans IF)
  
-Pour exécuter les tests, téléchargez le contenu du repository dans le dossier avec le devoir. Entrez dans le dossier //verify// et exécutez ./​run_all.sh.+== Paramètres ==
  
-<code bash> +Elle prend exactement 1 paramètre
-cd verify +
-./​run_all.sh +
-</​code>​+
  
-Vous aurez besoin de bash pour cela. Vous pouvez utiliser Linux ou [[https://msdn.microsoft.com/en-us/​commandline/​wsl/​install_guide|Windows Linux Subsystem]].+//variable// - une variable, si la variable est différente de 0, exécute les instructions jusqu'​à ELSE ou END (s'il n'y a pas d'​ELSE)
  
-<​note>​ +== Errors ==
-Pour installer nodejs sous Linux ou Windows Linux Subsystem,​suivez les instructions: ​+
  
-<code bash> +Nombre de paramètres erroné: 
-wget https://nodejs.org/dist/v6.10.0/​node-v6.10.0-linux-x64.tar.xz + 
-tar xvfJ node-v6.10.0-linux-x64.tar.xz +  ERROR LINE (line_number):IF has 1 parameters, you wrote (number_of_written_parameters) 
-cd node-v6.10.0-linux-x64 + 
-sudo cp -R * /usr +Paramètre erroné pour //times// 
-</​code>​+ 
 +  ERROR LINE (line_number):​IF parameter 1 requires a variable, you wrote (actual_written_parameter_value) 
 + 
 +Le fichier se termine et il y a encore au moins un IF sans END 
 + 
 +  You have number_of_repeats IF without END 
 + 
 +=== ELSE === 
 + 
 +ELSE est une partie du IF 
 + 
 +== Paramètres == 
 + 
 +Elle ne prend pas de paramètres 
 + 
 +== Erreurs == 
 + 
 +Nombre de paramètres erroné:
   ​   ​
-</​note>​+  ERROR LINE (line_number):​ELSE has 0 parameters, you wrote (number_of_written_parameters)
  
-==== Tests privés ====+END est utilisé sans un IF précédent:​ 
 +   
 +  ERROR LINE (line_number):​ELSE and no IF
  
-Lorsque vous téléchargez le devoir, il pourrait y avoir quelques tests privés qui doivent être passées. Vmchecker les exécutera. ​+=== END ===
  
-<​note>​ +Termine un IF
-Vous pouvez toujours télécharger le devoir autant de fois que vous voulez jusqu'​à la date limite. Ceci exécutera tous les tests pour vous et affichera le résultat. +
-</​note>​+
  
-===== Téléchargement du devoir ===== +== Paramètres ​==
-Le devoir devra être téléchargée vers [[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|homeworkarchive]].+
  
 +Elle ne prend pas de paramètres
  
-==== Readme ==== +== Erreurs ​==
-Le fichier Readme a le format suivant:+
  
-<​code>​ +Nombre de paramètres erroné:
-Votre nom complet +
-Groupe+
  
-Une explication de comment vous avez écrit le devoirqu'​avez-vous utilisé, quelles sont les idées principales. +  ERROR LINE (line_number):​END has 0 parametersyou wrote (number_of_written_parameters)
-</​code>​+
  
-==== Archivage du devoir ==== +END est utilisé sans un IF précédent:
-Pour télécharger votre devoir, veuillez suivre les instructions suivantes:+
  
-  ​- Créez une archive zip (pas rar, ace, 7zip ou autrecontenant: +  ​ERROR LINE (line_number):END and no IF
-    * votre fichier principal (main.js) ​  +
-    * vos fichiers javascript (* .js) +
-    * yarn.lock (si vous utilisez des yarn) +
-    * le fichier package.json +
-    * le fichier Readme +
-  - connectez-vous avec [[https://​vmchecker.cs.pub.ro | vmchecker]] +
-  - sélectionnez le cours //Automates et Langages Formelles (FILS)// +
-  - sélectionnez // 1. Langage Robot // +
-  - télécharger l'​archive+
  
 +=== SET ===
  
-<​note>​ +Définit la valeur d'une variable
-L'archive doit contenir les fichiers dans sa racine, pas dans un dossier. NE PAS archiver un dossier avec ces fichiers, archivez DIRECTEMENT ces fichiers.+
  
-NE PAS inclure //​node_modules//​. +  SET: variable value
-</​note>​+
  
-Lorsque l'​archive est chargée, vmchecker exécute:+== Paramètres ==
  
-<code bash> +Elle prend exactement 2 paramètres
-unzip archive.zip homework +
-cd homework +
-# si le fichier yarn.lock existe +
-yarn +
-# sinon +
-npm install +
-echo '{ "​node":​true,​ "​esnext":​true }' > .jshintrc +
-jshint *.js +
-</​code>​+
  
 +  * //​variable//​ - une variable
 +  * //value// - la valeur, peut être un nombre ou une autre variable
  
 +== Erreurs ==
 +
 +Nombre de paramètres erroné:
 +
 +  ERROR LINE (line_number):​SET has 2 parameters, you wrote (number_of_written_parameters)
 +
 +Paramètre erroné pour //​variable//​
 +
 +  ERROR LINE (line_number):​SET parameter 1 requires a variable, you wrote (actual_written_parameter_value)
 +
 +Paramètre erroné pour //value//
 +
 +  ERROR LINE (line_number):​SET parameter 2 requires a number or a variable, you wrote (actual_written_parameter_value)
 +
 +=== ADD ===
 +
 +Ajoute une valeur à la valeur d'une variable
 +
 +  ADD: variable value
 +
 +== Paramètres ==
 +
 +Elle prend exactement 2 paramètres
 +
 +  * //​variable//​ - une variable
 +  * //value// - la valeur à ajouter, peut être un nombre ou une autre variable
 +
 +== Erreurs ==
 +
 +Nombre de paramètres erroné:
 +
 +  ERROR LINE (line_number):​ADD has 2 parameters, you wrote (number_of_written_parameters)
 +
 +Type de paramètre erroné pour la variable
 +
 +  ERROR LINE (line_number):​ADD parameter 1 requires a variable, you wrote (actual_written_parameter_value)
 +
 +Type de paramètre erroné pour value:
 +
 +  ERROR LINE (line_number):​ADD parameter 2 requires a number or a variable, you wrote (actual_written_parameter_value)
 +
 +
 +=== SUB ===
 +
 +Soustrait une valeur de la valeur d'une variable
 +
 +  SUB: variable value
 +
 +== Paramètres ==
 +
 +Elle prend exactement 2 paramètres
 +
 +  * //​variable//​ - une variable
 +  * //value// - la valeur à soustraire, peut être un nombre ou une autre variable
 +
 +== Erreurs ==
 +
 +Nombre de paramètres erroné:
 +
 +  ERROR LINE (line_number):​SUB has 2 parameters, you wrote (number_of_written_parameters)
 +
 +Type de paramètre erroné pour variable
 +
 +  ERROR LINE (line_number):​SUB parameter 1 requires a variable, you wrote (actual_written_parameter_value)
 +
 +Type de paramètre erroné pour value
 +
 +  ERROR LINE (line_number):​SUB parameter 2 requires a number or a variable, you wrote (actual_written_parameter_value)
 +
 +=== MUL ===
 +
 +Multiplie la valeur d'une variable par une valeur.
 +
 +  MUL: variable value
 +
 +== Paramètres ==
 +
 +Elle prend exactement 2 paramètres
 +
 +  * //​variable//​ - une variable
 +  * //value// - la valeur avec laquelle on multiplie, peut être un nombre ou une autre variable
 +
 +== Erreurs ==
 +
 +Nombre de paramètres erroné
 +
 +  ERROR LINE (line_number):​MUL has 2 parameters, you wrote (number_of_written_parameters)
 +
 +Type de paramètre erroné pour variable
 +
 +  ERROR LINE (line_number):​MUL parameter 1 requires a variable, you wrote (actual_written_parameter_value)
 +
 +Type de paramètre erroné pour value
 +
 +  ERROR LINE (line_number):​MUL parameter 2 requires a number or a variable, you wrote (actual_written_parameter_value)
 +
 +=== DIV ===
 +
 +Divise la valeur d'une variable par une valeur
 +
 +  DIV: variable value
 +
 +== Paramètres ==
 +
 +Elle prend exactement 2 paramètres
 +
 +  * //​variable//​ - une variable
 +  * //value// - la valeur avec laquelle on divise la valeur de la variable, peut être un nombre ou une autre variable
 +
 +== Erreurs ==
 +
 +Nombre de paramètres erroné
 +
 +  ERROR LINE (line_number):​DIV has 2 parameters, you wrote (number_of_written_parameters)
 +
 +Type de paramètre erroné pour variable
 +
 +  ERROR LINE (line_number):​DIV parameter 1 requires a variable, you wrote (actual_written_parameter_value)
 +
 +Type de paramètre erroné pour value
 +
 +  ERROR LINE (line_number):​DIV parameter 2 requires a number or a variable, you wrote (actual_written_parameter_value)
 +
 +=== IDIV ===
 +
 +Divise la valeur d'une variable par une valeur (valeur entière)
 +
 +  IDIV: variable value
 +
 +== Paramètres ==
 +
 +Elle prend exactement 2 paramètres
 +
 +  * //​variable//​ - une variable
 +  * //value// - la valeur avec laquelle on divise la valeur de la variable, peut être un nombre ou une autre variable
 +
 +== Erreurs ==
 +
 +Nombre de paramètres erroné
 +
 +  ERROR LINE (line_number):​IDIV has 2 parameters, you wrote (number_of_written_parameters)
 +
 +Type de paramètre erroné pour variable
 +
 +  ERROR LINE (line_number):​IDIV parameter 1 requires a variable, you wrote (actual_written_parameter_value)
 +
 +Type de paramètre erroné pour value
 +
 +  ERROR LINE (line_number):​IDIV parameter 2 requires a number or a variable, you wrote (actual_written_parameter_value)
 +
 +=== MOD ===
 +
 +Le reste de la division d'une variable avec une valeur
 +
 +  MOD: variable value
 +
 +== Parameters ==
 +
 +Elle prend exactement 2 paramètres
 +
 +  * //​variable//​ - une variable
 +  * //value// - la valeur avec laquelle on divise la valeur de la variable, peut être un nombre ou une autre variable
 +
 +== Erreurs ==
 +
 +Nombre de paramètres erroné:
 +
 +  ERROR LINE (line_number):​MOD has 2 parameters, you wrote (number_of_written_parameters)
 +
 +Type de paramètre erroné pour variable
 +
 +  ERROR LINE (line_number):​MOD parameter 1 requires a variable, you wrote (actual_written_parameter_value)
 +
 +Type de paramètre erroné pour value
 +
 +  ERROR LINE (line_number):​MOD parameter 2 requires a number or a variable, you wrote (actual_written_parameter_value)
 +
 +
 +===== Bonus =====
 +
 +Pour un ** 0.2p ** supplémentaire,​ implémentez les **imbrications** pour LOOP, WHILE et IF.
 +
 +<​note>​
 +Le bonus ne sera attribué que si tous les autres tests réussissent.
 +</​note>​
 +  ​
  
alf/teme/tema2.1584266346.txt.gz · Last modified: 2020/03/15 11:59 by alexandru.radovici
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