Exercices corrigés c# - c# - dotnet - télécharger pdf

Ce recueil pédagogique est destiné aux étudiants universitaires souhaitant maîtriser la programmation orientée objet avec le langage C# dans l'environnement .NET. Il propose une progression structurée à travers divers exercices pratiques pour consolider les bases de l'algorithmique et du développement logiciel.

Le document couvre notamment les thématiques suivantes :

  • Résolution d'algorithmes mathématiques classiques (PGCD, nombres premiers, équations).
  • Manipulation des structures de données, tris de tableaux et chaînes de caractères.
  • Implémentation de classes, d'objets et d'interfaces homme-machine (IHM).
Exercices corrigés c# - c# - dotnet - télécharger pdf

Algorithmes fondamentaux et programmation objet avec C#

La programmation en C# permet de traduire des algorithmes mathématiques complexes en applications structurées. Cet article explore plusieurs exercices classiques, allant de la manipulation simple de nombres réels à la recherche de propriétés numériques spécifiques comme les nombres parfaits ou les nombres premiers.

Calcul de la valeur absolue d'un nombre réel

La valeur absolue d'un nombre réel x, notée |x|, est sa valeur numérique sans tenir compte de son signe. Elle est définie comme suit : |x| = x si x est positif ou nul, et |x| = -x si x est négatif.

En C#, nous pouvons implémenter ce calcul de deux manières différentes. La première utilise une structure conditionnelle classique if...else, tandis que la seconde utilise l'opérateur ternaire pour une écriture plus concise.

// Version avec if...else
if (x < 0) 
    Console.WriteLine("|x| = " + (-x));
else 
    Console.WriteLine("|x| = " + x);

// Version avec l'opérateur ternaire
Console.WriteLine("|x| = " + (x < 0 ? -x : x));

Il est important de noter que lors de la saisie au clavier avec Console.ReadLine(), la valeur retournée est une chaîne de caractères (string). Pour effectuer des calculs, il faut convertir cette chaîne en type numérique, par exemple avec Double.Parse(). Pour rendre le programme plus robuste, l'utilisation d'un bloc try...catch permet de gérer les erreurs de saisie (comme l'entrée de lettres à la place de chiffres).

Résolution de l'équation du second degré dans R

La résolution d'une équation de la forme Ax² + Bx + C = 0 repose sur le calcul du discriminant Δ (delta), où Δ = B² - 4AC. Le programme doit traiter trois cas de figure :

  • Si Δ < 0 : Il n'y a pas de solution réelle.
  • Si Δ = 0 : Il existe une solution unique (racine double) x = -B / 2A.
  • Si Δ > 0 : Il existe deux solutions distinctes x1 = (-B + √Δ) / 2A et x2 = (-B - √Δ) / 2A.

L'utilisation de la classe Math.Sqrt() est nécessaire pour calculer la racine carrée du discriminant en C#.

Les nombres de Armstrong

Un nombre de Armstrong (ou nombre narcissique) est un entier naturel qui est égal à la somme des cubes des chiffres qui le composent. Par exemple, 153 est un nombre de Armstrong car 1³ + 5³ + 3³ = 1 + 125 + 27 = 153.

Pour trouver ces nombres entre 100 et 999, on peut utiliser trois boucles imbriquées représentant respectivement les centaines (i), les dizaines (j) et les unités (k). Le test consiste à vérifier si (100*i + 10*j + k) == (i³ + j³ + k³).

Calcul de nombres parfaits

Un nombre est dit parfait s'il est égal à la somme de ses diviseurs propres (incluant 1, mais excluant le nombre lui-même). Le plus petit nombre parfait est 6, car ses diviseurs sont 1, 2 et 3, et 1 + 2 + 3 = 6. Le suivant est 28 (1 + 2 + 4 + 7 + 14 = 28).

L'algorithme de recherche utilise une boucle pour tester chaque nombre successif et une boucle interne pour identifier et additionner ses diviseurs. En C#, l'opérateur modulo % est utilisé pour vérifier si un nombre est un diviseur : nbr % k == 0 signifie que k divise parfaitement nbr.

Recherche du Plus Grand Commun Diviseur (PGCD)

Deux méthodes classiques permettent de calculer le PGCD de deux entiers non nuls :

La méthode d'Euclide : Elle repose sur des divisions successives. On remplace le plus grand nombre par le reste de la division entière jusqu'à obtenir un reste nul. Le dernier reste non nul est le PGCD.

La méthode égyptienne (par soustractions) : On soustrait de manière répétée le plus petit nombre du plus grand jusqu'à ce que les deux nombres soient égaux. Cette valeur commune est le PGCD.

Identification des nombres premiers

Un nombre est premier s'il possède exactement deux diviseurs : 1 et lui-même. Pour vérifier la primalité d'un nombre en C#, on peut tester sa divisibilité par tous les entiers impairs jusqu'à sa moitié ou, de manière plus optimisée, jusqu'à sa racine carrée.

L'utilisation d'un drapeau booléen (bool Est_premier) permet de stopper les tests dès qu'un diviseur est trouvé, améliorant ainsi l'efficacité de l'algorithme, notamment lorsqu'on traite de grands volumes de données.

Calcul du nombre d'or

Le nombre d'or est une constante mathématique (environ 1,618) que l'on peut approcher en utilisant des suites numériques. En calculant le rapport entre deux termes successifs d'une suite de type Fibonacci (où chaque terme est la somme des deux précédents), le résultat converge vers cette valeur idéale souvent utilisée en art et en architecture.

FAQ sur l'algorithmique en C#

Comment convertir une entrée utilisateur en nombre ?

On utilise généralement la méthode Parse des types numériques, comme Int32.Parse(Console.ReadLine()) pour un entier ou Double.Parse() pour un nombre réel. Il est recommandé d'utiliser TryParse pour éviter les plantages en cas de saisie invalide.

Quelle est la différence entre une boucle while et do...while ?

La boucle while évalue la condition avant l'exécution du code : si la condition est fausse dès le départ, le code n'est jamais exécuté. La boucle do...while exécute le code au moins une fois avant de vérifier la condition.

Comment optimiser la recherche des diviseurs d'un nombre ?

Au lieu de tester tous les nombres jusqu'à N-1, il suffit de tester jusqu'à la racine carrée de N. Si aucun diviseur n'est trouvé avant cette limite, le nombre est premier.

Cela peut vous intéresser :

Partagez vos remarques, questions , propositions d'amélioration ou d'autres cours à ajouter dans notre site

Enregistrer un commentaire (0)
Plus récente Plus ancienne