Traduisez la logique de programme en syntaxe C#

Vous savez déjà ce que sont une variable, une condition, une boucle ou une méthode. L'objectif de ce chapitre est de vous donner leur traduction en syntaxe C# et de vous faire découvrir quelques spécificités propres au langage.

Vous verrez notamment que C# est un langage typé statiquement : chaque variable a un type connu à la compilation, ce qui aide le compilateur et l'IDE à détecter des erreurs très tôt.

Déclarez une variable et donnez-lui un type

En C#, une variable est déclarée avec un type et un nom. La forme la plus explicite est :

Vous pouvez aussi laisser C# déduire le type à partir de la valeur, avec le mot-clévar:

Le comportement du programme est identique. En pratique,varest aujourd'hui la forme la plus utilisée en .NET quand le type est évident à la lecture. Les deux formes coexistent : les équipes appliquent souvent des conventions internes pour choisir.

Utilisez les types de base

Même sivardéduit automatiquement le type, chaque variable C# a bien un type — fixé à la compilation. Voici les types de base que vous utiliserez souvent :

Type C#

Exemple

Utilisation

int

12

Stocker un nombre entier

double

3.14

Stocker un nombre décimal (calculs scientifiques)

decimal

45.90m

Stocker un nombre décimal précis (montants financiers)

bool

trueoufalse

Stocker une valeur vrai/faux

string

"Sac à dos"

Stocker du texte

char

'A'

Stocker un seul caractère

Voici un exemple avec plusieurs variables :

Ce programme crée quatre variables, puis affiche leur contenu.

  • La variableproductNamecontient du texte. Son type eststring. En C#, le texte s’écrit entre guillemets doubles" ".

  • La variablestockcontient un nombre entier. Son type estint.

  • La variablepricecontient un nombre décimal précis. Son type estdecimal. Le suffixemindique à C# qu’il s’agit d’undecimal— sans lui,45.90serait interprété comme undouble. Pour manipuler des montants financiers,decimalest le choix idiomatique en .NET, notamment parce qu’il évite certaines erreurs d’arrondi ;doublereste adapté aux calculs scientifiques ou de mesure.

  • La variableisAvailablecontient une valeur vrai/faux. Son type estbool. En C#, ces valeurs s’écrivent en minuscules :trueetfalse.

Vous pouvez vérifier le type d'une variable à l'exécution avec.GetType():

La console affiche :

System.Int32

System.Int32est le nom complet du type dans la bibliothèque standard .NET. En C#,inten est simplement le raccourci :intetSystem.Int32désignent exactement le même type. De la même manière,stringcorrespond àSystem.String,boolàSystem.Boolean,doubleàSystem.Double, etc.

Construisez un message avec du texte et une variable

Vous pouvez afficher une variable seule, mais vous pouvez aussi l'intégrer dans un message. La façon la plus lisible en C# moderne est l'interpolation de chaînes : on préfixe la chaîne par un$et on insère les variables directement entre accolades{ }:

La console affiche :

Sac à dos coûte 45,90 €.

C# remplace chaque{variable}par sa valeur au moment de l'exécution. Vous pouvez insérer autant de variables que nécessaire dans une même chaîne.

Regroupez plusieurs valeurs dans un tableau

En C#, on regroupe plusieurs valeurs dans une collection. Vous en rencontrerez trois dans ce cours : le tableau (taille fixe), laList<T>(taille dynamique) et leDictionary<TKey, TValue>(accès par clé).

Pour stocker plusieurs valeurs du même type, C# propose le tableau : une collection simple dont la taille est fixée à la création. Par exemple :

La variableproductscontient trois textes. La ligne suivante affiche le premier élément :

Sac à dos

Vous pouvez parcourir le tableau avec une boucleforeach:

La console affiche :

Sac à dos
Carnet
Stylo

À chaque tour, la variableproductprend la valeur d’un élément différent du tableau. La taille du tableau est fixée à la création : dès qu'elle doit varier, on préfère la structure suivante.

UtilisezList<T>pour une collection dynamique

Un tableau a une taille fixée à la création. Quand vous ignorez à l'avance combien d'éléments vous aurez — un panier qui se remplit, un fichier de 3 ou 3 000 lignes, une API qui renvoie un nombre variable de résultats — utilisez plutôt uneList<T>, une collection de taille dynamique.Tdésigne le type des éléments : uneList<string>contient desstring, uneList<int>desint.

La console affiche :

Addajoute un élément à la fin. La liste connaît aussiRemove,ContainsetCountpour le nombre d'éléments. Vous accédez à un élément par son index avec[], comme pour un tableau.

Associez des clés à des valeurs avecDictionary<TKey, TValue>

Un tableau ou une liste vous laissent accéder aux éléments par leur position. Quand vous voulez plutôt retrouver une valeur par un identifiant — le stock d'un produit à partir de son nom, le prix d'un article à partir de son code-barres — utilisez unDictionary<TKey, TValue>: il associe des clés à des valeurs.TKeyest le type des clés,TValuele type des valeurs.

La console affiche :

12

On accède à une valeur par sa clé, entre crochets. On peut aussi ajouter ou modifier une entrée avecstocks["Trousse"] = 5;. LeDictionary<string, int>est particulièrement fondamental en .NET : dès que vous avez besoin d'un accès rapide « par clé » — cache, comptage d'occurrences, table de correspondance, configuration… — c'est la structure de base à connaître.

À noter que la syntaxestocks["Sac à dos"] = 5;vue plus haut ne lève pas d'exception : elle écrase simplement la valeur existante. À vous de choisir entre les deux comportements selon votre besoin.

Prenez des décisions avecif,else if,else

Comme dans les autres langages,ifdéclenche du code sous condition. En C# :

Points de vigilance :

  • la condition est obligatoirement entre parenthèses( );

  • le corps est entre accolades{ }(fortement recommandé même pour une seule ligne) ;

  • les opérateurs de comparaison sont ceux vus dans les fondamentaux (==,!=,<,<=,>,>=)

Choisissez entre plusieurs cas avecswitch

Quand vous voulez comparer une valeur à plusieurs cas simples,switchest plus lisible qu'une longue chaîne deif/else if:

Chaquecasedoit se terminer parbreak(oureturn) pour éviter que C# n'enchaîne sur le cas suivant.defaultgère tous les cas non prévus.

Répétez avecfor,foreachetwhile

Pour répéter une action, C# propose plusieurs boucles. La plus utile au quotidien estforeach, qui parcourt les éléments d’une collection sans se soucier de l’index :

foreach (var product in products)se lit : « pour chaqueproductdansproducts». À chaque tour, la variableproductprend la valeur d’un élément.

forreste utile quand vous avez besoin de l’index :

Leforclassique tient sur une ligne : initialisation (int i = 0), condition d'arrêt (i < produits.Count), incrément (i++).

Quand vous ne connaissez pas à l'avance combien de fois vous allez répéter une action — parce que l'arrêt dépend d'une condition qui peut changer à chaque tour — utilisez la bouclewhile:

Cela affiche :

Il reste 5 article(s).
Il reste 4 article(s).
Il reste 3 article(s).
Il reste 2 article(s).
Il reste 1 article(s).

Tant que la condition entre parenthèses est vraie, C# rejoue le bloc. Dès qu'elle devient fausse, la boucle s'arrête.

Regroupez la logique dans une méthode

Une méthode permet de regrouper une logique sous un nom, avec des paramètres et un type de retour. En dehors d'une classe (dansProgram.csavec top-level statements), une méthode ressemble à ceci :

Points clés :

  • le type de retour vient en premier (voidsi la méthode ne renvoie rien) ;

  • les paramètres sont typés (string name,decimal price) ;

  • pour renvoyer une valeur, utilisezreturn:

La console affiche :

True
False

bool IsAvailable(int stock)déclare une méthode qui prend uninten entrée et renvoie unbool.

À vous de jouer

Votre équipe veut mettre en avant les plats à 10 € ou moins dans l'écran d'accueil. Voici le starter code : les prix sont déjà stockés dans uneList<decimal>, il vous reste à compléter la méthode et à écrire la boucle.

Votre mission :

  1. Complétez la méthodeIsCheap(decimal price)pour qu'elle retournetruesi le prix est ≤ 10 €,falsesinon. Inspirez-vous deIsAvailablevu dans le chapitre.

  2. Parcourezpricesavecforeach (var price in prices), testez chaque valeur avecIsCheap, et affichez les prix retenus au formatPrix abordable : 8 €avec une chaîne interpolée$"...".

En résumé

  • C# est typé statiquement : chaque variable a un type, explicite (int age) ou déduit (var age = 25;) ; les types de base courants sontint,double,decimal(idéal pour un prix),bool,stringetchar.

  • L'interpolation de chaînes$"..."permet d'insérer des variables dans une chaîne de manière concise.

  • Un tableau est de taille fixe, uneList<T>de taille dynamique, unDictionary<TKey, TValue>associe des clés à des valeurs.

  • if/else if/elseetswitchchoisissent un chemin selon une condition ;foreachparcourt une collection,forsert quand vous avez besoin de l'index,whilerépète tant qu'une condition reste vraie.

  • Une méthode déclare son type de retour, ses paramètres typés, et renvoie une valeur avecreturn.

Vous savez maintenant traduire les briques logiques de base en C#. Dans le prochain chapitre, vous allez organiser ces briques dans des classes et découvrir comment C# implémente la programmation orientée objet.

Et si vous obteniez un diplôme OpenClassrooms ?
  • Formations jusqu’à 100 % financées
  • Date de début flexible
  • Projets professionnalisants
  • Mentorat individuel
Trouvez la formation et le financement faits pour vous