Projet scolaire
Simulateur de système de communication numérique en C#
Un simulateur interactif de la chaîne complète de communication numérique : texte → binaire → modulation → canal → démodulation → restitution. Chaque étape peut être démontrée seule, ou l'ensemble du flux peut être exécuté d'un seul coup.
Aperçu du projet
Le projet prend pour ossature le projet de synthèse « modulation et démodulation du signal » du guide de cours, et y intègre la pratique de plusieurs étapes antérieures, dont le codage de source et les structures de données. L'ensemble repose sur la bibliothèque de base .NET, sans aucune dépendance tierce, et une suite de tests unitaires à graine aléatoire fixe reproduit des résultats identiques sur n'importe quelle machine.
- Chaîne de bout en boutDe la saisie de texte à la sortie restituée, en couvrant le codage de source, la modulation, le canal et la démodulation.
- Démonstration par moduleUn menu console exécute chaque étape isolément, ce qui facilite l'observation des résultats intermédiaires.
- Résultats reproductiblesLes tests unitaires utilisent une graine aléatoire fixe, et plus de cinquante cas concordent d'une machine à l'autre.
À propos de ce projet
Objectif
La modulation et la démodulation sont souvent enseignées sous forme de schémas abstraits. Ce projet découpe le schéma en code exécutable et observable étape par étape, de sorte que l'entrée et la sortie de chaque maillon deviennent concrètes.
Organisation
Un menu console pilote le programme, chaque entrée numérotée démontrant un module isolément ; une simulation de bout en bout relie par ailleurs les étapes en chaîne complète. La partie codage de source implémente le codage de Huffman, et la partie structures de données écrit à la main une file par liste chaînée.
Outils utilisés
C# et .NET (cible .NET 10), en n'utilisant que la bibliothèque de classes de base, sans dépendance NuGet tierce ; les tests reposent sur xUnit avec une graine aléatoire fixée à 42.
Portée et limites
Destiné à l'enseignement et à la démonstration, l'accent porte sur la clarté des principes et l'exécution de chaque étape ; le projet ne modélise ni le bruit réaliste du canal ni l'émission-réception matérielle.
Étapes couvertes
Chaque maillon s'exécute seul, ce qui permet d'examiner son entrée et sa sortie.
Codage de source
Implémente le codage de Huffman : comptage des fréquences de caractères, construction d'une table de codes préfixes, calcul du taux de compression, et vérification que le décodage restaure le texte d'origine.
Structures de données personnalisées
Une file par liste chaînée écrite à la main, avec traçage de l'enfilement et du défilement en regard du compteur, et vérification de la gestion d'exception lors d'un défilement sur file vide.
Modulation du signal
Projette une séquence binaire sur une forme de signal transmissible, étape centrale de toute la chaîne.
Simulation du canal
Modélise le trajet du signal dans le canal, entre modulation et démodulation.
Démodulation et restitution
Récupère la séquence binaire à partir du signal reçu et la retransforme en texte, en la comparant à l'entrée d'origine.
Tests reproductibles
Des assertions de bout en bout sous graine aléatoire fixe, garantissant qu'une même entrée produit la même sortie sur n'importe quelle machine.
Pourquoi la bibliothèque de base seule
Le projet limite délibérément ses dépendances pour que chaque étape reste visible dans le code, au lieu de se cacher derrière un framework.
Aucune dépendance tierce
Aucun paquet NuGet n'est introduit en dehors de xUnit pour le projet de tests : cloner le dépôt et installer le SDK .NET suffit à le lancer.
Des principes visibles
Le codage, la modulation et la démodulation sont entièrement implémentés dans le projet et peuvent se lire en regard du support de cours.
Interaction en console
Les démonstrations se choisissent par numéro de menu, sans interface graphique, avec un comportement identique sous macOS, Windows et Linux.