Chapitre 1 • Dépôt et outils
Cartouche
| Champ | Valeur |
|---|---|
| Auteur·e | Élise |
| Édition | 2024-06-25 |
| Durée | 2 séances (un jour) |
| Taille des équipes | 1 personne |
| Rendu | via git, dépôt $YEAR_rust_c1, droits en lecture à delivery_collector |
Règlement
Prenez connaissance du règlement ici
L’intégralité de la bibliothèque standard est autorisée. Vous êtes encouragés à vous servir des outils qu’elle vous propose s’ils résolvent un de vos problèmes. Votre objectif c’est d’éviter de ré-inventer la roue quand ça n’est pas nécessaire.
Introduction
Notre premier objectif, ça va être de configurer votre environnement de travail de sorte à pouvoir travailler avec le Rust.
Les notions propre au langages que l’on va voir sont :
- écrire un programme
- écrire une fonction
- écrire un test unitaire
- utiliser les structures de contrôle
- utiliser les références
- utiliser les tableaux et les slices
- lire un fichier
- split une chaîne
- parser un nombre
- algorithmes d’analyse simples
Notation
- Vérification Manuelle
- Installation de la toolchain 2
- Configuration de l’IDE 2
- Configuration debuggeur 2
- Sur dépôt
- E1 : print b 2
- E2 : exit 189 2
- E3 : my swap int 2
- E4 : plus grand nombre 2
- E5 : avg, med, std deviation 3
- E6 : analyse 3
- Malus par ligne en faute de norme -0.5
- Malus pour dépôt sale -5
Installation
Rustup
Sur windows :
- Installez les composants suivants de Visual Studio Community 2022 :
- MSVC version actuelle x64/x86 build tools (latest)
- Windows 11 SDK (latest)
- C++ Clang Compiler for Windows (latest)
- téléchargez
rustup-ini.exeici Install Rust - Rust Programming Language (rust-lang.org) - faites
rustup update
Sur Linux :
- installez rustup via le site officiel ou vos dépôts
- faites
rustup update
Éditeur de Code
VS Code:
Neovim:
- LSP
rust-analyzerdans Mason - DAP
codelldbdans Mason - neovim rustaceanvim pour davantage d’outils
Dans le terminal, pour debugger, installez lldb.
Testez votre installation
Dans un terminal, créez un projet dans un dossier vide en utilisant cargo init --name d1. Une fois l’initialisation terminée, faites cargo run.
Ouvrez le dossier dans votre éditeur de code, testez auto-complétion et debug en écrivant un petit peu de code.
Exercice 1 : print b
Fichier à rendre : src/bin/printb.rs
Bibliothèques autorisées : std
Écrivez un programme qui affiche la lettre b minuscule, suivi d’un retour à la ligne.
Exercice 2 : exit 189
Fichier à rendre : src/bin/exit189.rs
Bibliothèques autorisées : std
Écrivez un programme qui s’arrête avec le code de sortie 189.
Exercice 3 : my swap int
Fichier à rendre : src/lib.rs (ajouts)
Bibliothèques autorisées : std
Écrivez la fonction my_swap_int. Elle prend deux références sur i32, intervertit les valeurs qu’ils contiennent et ne renvoie rien.
Exemple de test
#[cfg(test)]
mod test {
use super::my_swap_int;
#[test]
fn my_swap_1() {
let mut a = 12;
let mut b = 113;
my_swap_int(&mut a, &mut b);
assert_eq!(a, 113);
assert_eq!(b, 12);
}
#[test]
fn my_swap_2() {
// votre second test
}
}
Exercice 4 : plus grand nombre
Fichier à rendre : src/lib.rs (ajouts)
Bibliothèques autorisées : std
Écrivez la fonction biggest_in_slice, qui prend en paramètre une slice de tableau d’i32. Elle doit renvoyer la valeur la plus haute contenue dans le tableau.
Écrivez le ou les tests de cette fonction.
Exercice 5 : moyenne, médiane et écart-type
Fichier à rendre : src/lib.rs (ajouts)
Bibliothèques autorisées : std
Écrivez une fonction avg_med_std_dev qui prend en paramètre une slice de f64 et renvoie grâce à une structure, la moyenne, médiane et l’écart-type de toutes ces valeurs.
Écrivez les tests de cette fonction.
Exemple de tri de nombres flottants :
fn main() {
let mut example_array = [1.0, 3.14, 8.5, 2.5];
sort_f64_array(&mut example_array);
dbg!(example_array);
}
fn sort_f64_array(arr: &mut [f64]) {
if arr.contains(&f64::NAN) {
return;
}
arr.sort_by(|a, b| a.partial_cmp(b).unwrap());
}
Exercice 6 : parsing
Fichier à rendre : src/bin/parsing.rs
Bibliothèques autorisées : std
Écrivez un programme qui prend en argument un ou plusieurs noms de fichiers. Ces fichier doivent contenir des nombres, séparés par des espaces ou des retours à la ligne. Après avoir lu et parsé tous les nombres, envoyez-les à votre fonction d1::avg_med_std_dev. Rajoutez le mot clé pub devant la déclaration de cette fonction pour qu’elle soit utilisable dans src/bin/parsing.rs.
Affichez moyenne, médiane et écart-type avec ce format :
avg: 12.14
median: 4.4
std deviation: 6.8