This shows you the differences between two versions of the page.
sde2:laboratoare:01_rust [2023/03/06 21:35] cristiana.andrei [Exercises] |
sde2:laboratoare:01_rust [2023/03/07 07:57] (current) cristiana.andrei [Exercises] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== TP 01 - Ownership et Arguments du programme ====== | ====== TP 01 - Ownership et Arguments du programme ====== | ||
+ | ===== Assignment ===== | ||
+ | <note warning> | ||
+ | Vous devez **accepter** le assignment d'ici et travailler avec ce repository: [[https://classroom.github.com/a/8UskEmTM|Lab1]] | ||
+ | </note> | ||
===== Objectifs ===== | ===== Objectifs ===== | ||
Le but de ce TP est d'apprendre à utiliser | Le but de ce TP est d'apprendre à utiliser | ||
Line 9: | Line 12: | ||
===== Resources ===== | ===== Resources ===== | ||
+ | * Ownership: [[https://doc.rust-lang.org/book/ch04-00-understanding-ownership.html|Documentation]] | ||
+ | * Vectors: [[https://doc.rust-lang.org/book/ch08-01-vectors.html|Documentation]] | ||
+ | * Strings: [[https://doc.rust-lang.org/book/ch08-02-strings.html|Documentation]] | ||
* Enums [[https://doc.rust-lang.org/book/ch06-00-enums.html|en]], [[https://jimskapt.github.io/rust-book-fr/ch06-00-enums.html|fr]] | * Enums [[https://doc.rust-lang.org/book/ch06-00-enums.html|en]], [[https://jimskapt.github.io/rust-book-fr/ch06-00-enums.html|fr]] | ||
* An I/O Project: Building a Command Line Program [[https://doc.rust-lang.org/book/ch12-00-an-io-project.html#an-io-project-building-a-command-line-program|en]], [[https://jimskapt.github.io/rust-book-fr/ch12-00-an-io-project.html|fr]] | * An I/O Project: Building a Command Line Program [[https://doc.rust-lang.org/book/ch12-00-an-io-project.html#an-io-project-building-a-command-line-program|en]], [[https://jimskapt.github.io/rust-book-fr/ch12-00-an-io-project.html|fr]] | ||
Line 209: | Line 215: | ||
<note> | <note> | ||
- | Pour comprendre mieux comment definir un enum, lisez [[https://doc.rust-lang.org/book/ch06-01-defining-an-enum.html|cette]] section du chapitre 5! | + | Pour comprendre mieux comment definir un enum, lisez [[https://doc.rust-lang.org/book/ch06-01-defining-an-enum.html|cette]] section du chapitre 6! |
</note> | </note> | ||
Line 428: | Line 434: | ||
===== Exercises ===== | ===== Exercises ===== | ||
- Écrivez une fonction qui reçoit deux nombres comme arguments et les divise. Gérez le cas de la division par zéro à l'aide du type //Option//. | - Écrivez une fonction qui reçoit deux nombres comme arguments et les divise. Gérez le cas de la division par zéro à l'aide du type //Option//. | ||
- | - Écrivez un programme qui reçoit deux nombres de la ligne de commande et les divise. Écrivez le résultat à l'écran. S'il y a une erreur, retournez -1 depuis main. | + | - Écrivez un programme qui reçoit deux nombres de la ligne de commande et les divise. Écrivez le résultat à l'écran. S'il y a une erreur, retournez -1 depuis main. //Hint: [[https://doc.rust-lang.org/book/ch09-02-recoverable-errors-with-result.html|Result]] et [[https://doc.rust-lang.org/std/process/fn.exit.html#:~:text=Function%20std%3A%3Aprocess%3A%3Aexit&text=Terminates%20the%20current%20process%20with,for%20consumption%20by%20another%20process.|std::process::exit]] // |
- Écrivez un programme qui reçoit en paramètres une commande et deux nombres. La commande est l'une des suivantes : add, sub, mul, div, rem. Écrivez le résultat à l'écran ou renvoyez une erreur. | - Écrivez un programme qui reçoit en paramètres une commande et deux nombres. La commande est l'une des suivantes : add, sub, mul, div, rem. Écrivez le résultat à l'écran ou renvoyez une erreur. | ||
- | - Écrivez un programme similaire au précédent, à l'exception qu'il prend la commande de la variable d'environnement CMD. Un exemple d'utilisation est //CMD=sub ./my-program 5 3//. | + | - Écrivez un programme similaire au précédent, à l'exception qu'il prend la commande de la variable d'environnement CMD. Un exemple d'utilisation est //CMD=mul cargo run 5 3//. //Hint: Utilisez [[https://doc.rust-lang.org/std/env/fn.var.html|env::var()]] pour prendre la valeur de CMD//. |
- Écrivez un programme qui prend comme premier argument une commande suivie d'une liste de nombres. Les commandes peuvent être add, sub, mul, div, avg (moyenne), sort, unique. | - Écrivez un programme qui prend comme premier argument une commande suivie d'une liste de nombres. Les commandes peuvent être add, sub, mul, div, avg (moyenne), sort, unique. | ||
- Modifiez le programme afin qu'il n'exécute pas les commandes de la fonction principale, mais que chaque commande soit exécutée dans sa propre fonction. Les fonctions reçoivent comme arguments les entrées exactes de la ligne de commande (chaînes, pas de nombres). | - Modifiez le programme afin qu'il n'exécute pas les commandes de la fonction principale, mais que chaque commande soit exécutée dans sa propre fonction. Les fonctions reçoivent comme arguments les entrées exactes de la ligne de commande (chaînes, pas de nombres). | ||
- | ===== Solutions ===== | + | |
- | [[https://github.com/UPB-FILS-SdE2/Solutions/tree/main/tp2|Solutions]] | + |