This shows you the differences between two versions of the page.
alf:teme:tema2 [2020/03/15 12:02] 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.1 points / jour** (maximum 4 jours)\\ | + | Rendre en retard: **1 point / jour** (maximum 2 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 x, y, r (exactement comme ceci) | + | ===== Exigences du devoir ===== |
- | * S'il y a eu une erreur, il affichera ERROR LINE suivi du numéro de la ligne: et 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'entree, d'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ée, l'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 individuel. Toute 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 JavaScript. Toutes 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 devoir, demandez-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 devoirs, posez-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 (x, y) exprimée à l'aide de nombres entiers. La 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 0, 0. Lors 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 y a un commentaire | ||
+ | INSTRUCTION: p1 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: | + | INSTRUCTION: paramètre1 paramètre2 etc |
- | COMMAND parameter1,parameter2,etc | + | Les instructions peuvent avoir n'importe quel nombre d'espaces avant leur nom, entre 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: | + | INSTRUCTION: p1 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 1 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 montre) ou à droite (dans le sens des aiguilles d'une montre) un certain nombre de degrés. | + | ERROR LINE (line_number):CIRCLE parameter (the number of the parameter) requires 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 4 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 y du coin inférieur droit |
- | * la valeur peut être ~ (tilde) ou un nombre entier | + | |
- | * ~ signifie qu'il maintient sa position y 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 1 parameters, you wrote (number_of_written_parameters) |
- | ERROR LINE (line_number): REPEAT parameter 1 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 variable, you 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. Exécutez make -f Makefile.checker. | + | == Paramètres == |
- | <code bash> | + | Elle prend exactement 1 paramètre |
- | make -f Makefile.checker | + | |
- | </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 devoir, qu'avez-vous utilisé, quelles sont les idées principales. | + | ERROR LINE (line_number):END has 0 parameters, you 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 autre) contenant: | + | 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> | ||
+ | | ||