Pour compiler le C# en ligne : https://dotnetfiddle.net/ --- ## Les types variables en C# 1- Les *types valeur* 2- Les *type référence* --- ### Types simples - sbyte, short, int, long - byte, ushort, uint, ulong - char - float, double, decimal - bool --- ### Enum ```csharp enum Color{ Green, Red, Black } ... Color c = Color.Green ``` --- ### Struct Type défini par l'utilisateur ```csharp public struct Point { public double x; public double y; } ``` --- ### Tuple Structure de données utilisée pour stocker une collection d'éléments ```csharp (int, int) point = (0.5, 50) Consle.WriteLine(point.Item2) ``` --- ## Types référence ### Les classes - Classe de base de tous les types : ``object`` - Classe représetant une chaine de caractères : ``string`` ```csharp string message = "Bonjour"; ``` - l'opérateur ``+`` permet de concaténer deux string ```csharp string name = "Azzeddine" string message = "Bonjour" + " " + name; ``` - l'opérateur ``[]`` permet d'accéder en lecture seule à un élément de la chaine ```csharp name[1] // = 'z' ``` --- - Classe définie par l'utilisateur ``` class Student { // } ``` --- ### Les interfaces "Contrat" défini par l'utilisateur et qui doit être implémenté. ```csharp interface I { // } ``` --- ### Les tableaux Structure de données permettant de stocker plusieurs variables du même type. ```csharp //tableau unidimensionnel de 100 cases de type int int[] tab_1 = new int[100]; //tableau unidimensionnel de 3 cases int[] tab_2 = [5, 50, 60] //tableau multidimensionnel de 3 lignes et 2 colonnes int[,] tab_3 = new int[3,2] int[,] tab_4 = { {..,..}, {..,..}, {..,..}}; // tableau en escalier (ou tableau de tableaux) int[][] tab_5 = new int[3][]; tab_5[0] = [1, 4, 17, 10]; tab_5[1] = [6,66]; tab_5[2] = [1, 33, 5]; ``` --- ## Les instructions conditionnelles if .. else if .. else ```csharp if ( expression_booléenne ){ //intructions } else if ( expression_booléenne ){ //intructions } else { //intructions executées si les toutes les expressions ne sont pas vraies. } ``` ---- l'instruction switch ```csharp! switch (variable){ case valeur_1 : //instruction break; case valeur_1 : //instructions break; ... case valeur_n : //instructions break; default : //instructions break; } ``` --- ## Les instructions itératives While ```csharp while ( condition ){ //instructions } ``` ```csharp int x = 10; while ( x > 0 ){ x--; // x = x - 1; } ``` do ... While() ```csharp do { //instructions } while ( condition ); ``` ```csharp string answer; do { playGame(); Console.WriteLine("Replay ?"); answer = Console.ReadLine("Replay ?"); } while ( answer != "NON" ); ``` ---- La boucle ``for`` ```csharp for (instruction_1 ; condition_arret; instruction_2){ // instructions } ``` - instruction 1 : exécuté 1 fois avant la première itération - condition_arrêt : condition à vérifier pour arrêter la boucle - instruction_2 : instructions exécutées à la fin de chaque itération ```csharp for (int i = 100 ; i <= 500 ; i++){ if ( (i % 4) == 0 ) Console.WriteLine(i); } ``` ---- la boucle ``foreach`` utilisée pour itérer sur des tableaux ```csharp foreach (type nomVariable in tableau) { // instructions } ``` ```csharp! double[] temperatures = [12.5, 15, 13.2, 11.3, 10] foreach (double temperature in temperatures) { Console.WriteLine(temperature); } ``` --- ## Votre premier programme ```csharp using System; public class Program // Le nom de cette classe n'est pas important { public static void Main() // Le nom de cette fonction est important { //instruction ... } } ``` --- ## La programmation orientée objet (POO) - Les **classes** et les **objets** sont les deux principaux aspects de la POO ![image](https://hackmd.io/_uploads/HyYZmVh_p.png) ---- ![image](https://hackmd.io/_uploads/B1x7QV3uT.png) ---- ![image](https://hackmd.io/_uploads/S1Mo4E3da.png) ---- - Une classe contient les attributs et les méthodes des objets qu'elle représente. - A l'instantiacion, chaque objet pourra définir la valeur de ses attributs ```csharp! /*En supposant que les classes Person, Fruit et Car ont été définies, voici un exemple d'instanciation de quelques objets.*/ Person p = new Person("Azzeddine", "Benabbou"); Fruit apple = new Fruit("Apple"); Fruit banana = new Fruit("Banana"); Car volvo = new Car("Volvo", 1990); ``` ---- ### Création d'une Classe - Les attributs peuvent être publiques ou privés (par défaut) ```csharp! public class Car{ private string brand; private int nbDoor; string model; } ``` ---- - Les méthodes peuvent être publiques ou privées. ```csharp! public class Car{ private string brand; private int nbDoor; string model; public void displayCarInfo(){ Console.WriteLine( "Brand : " + this.brand ); Console.WriteLine( "Number of doors : " + this.nbDoor ); Console.WriteLine( "Model : " + this.model ); } } ``` ---- - Le constructeur est une méthode spéciale appelée lorsqu'un objet est instancié - a le même nom que la classe - n'a pas de type de retour ```csharp! public class Car{ //Atrributes private string brand; private int nbDoor; string model; //Constructor 1 public Car(){ this.brand = ""; this.nbDoor = 5; this.model = ""; } //Constructor 2 public Car(string brand, int nbDoor, string model){ this.brand = brand; this.nbDoor = nbDoor; this.model = model; } //Methods public void displayCarInfo(){ Console.WriteLine( "Brand : " + this.brand ); Console.WriteLine( "Number of doors : " + this.nbDoor ); Console.WriteLine( "Model : " + this.model ); } } ``` ---- - Les getters et les setters (en Java) ```csharp! public class Car{ //Atrributes private string brand; private int nbDoor; string model; ... public string getBrand { return brand; } public void setBrand (brand) { this.brand = brand } } ``` ``` Car c = new Car(); // instancie un objet c.setBrand("Audi"); // modifie un attribut grâce au Setter Console.WriteLine(c.getBrand()); Récupère sa valeur grâce au Getter ``` ---- En C#, il existe ce qu'on appelle les Properties ```csharp! public class Car{ //Atrributes private string brand; public string Brand{ get {return brand;} set {return value;} } private int nbDoor; string model; ... } ``` ``` Car c = new Car(); // instancie un objet c.Brand("Audi"); // modifie un attribut grâce au Setter Console.WriteLine(c.Brand); Récupère sa valeur grâce au Getter ``` ---- On peut le rendre plus compact s'il n'y a pas d'avantage d'instructions dans le get et set ```csharp! public class Car{ //Atrributes private string Brand {get; set;}; private int nbDoor; string model{get; set;}; ... } ``` ---- Exemple avec des instructions dans le setter ```csharp! public string Brand {get; set;} private int nbDoor; public int NbDoor { get { return nbDoor; } set{ if(value != 3 && value != 5) return; nbDoor = value; } } public string Model {get; set;} ``` --- --- ## Les collections - Permettent de stocker et manipuler des données similaires - Offrent de nombreuses méthodes ---- ### Exemple de collections avec élément à une valeur - Array - List<T> - Queue - Stack ---- ### Exemple de collections avec élément à clé/valeur - Hashtable - SortedList<TKey,TValue> - Dictionary<TKey,TValue> --- Exemple ```csharp! List<int> l = new List<int>(); l.Add(5); // ajoute 5 à la liste l.Add(2); // ajouter 2 à la liste l.RemoveAt(1); // supprime la valeur qui se trouve à l'indice 1 Dictionary<string, int> panier = new Dictionary<string, double>(); panier.Add("Chemise", 2); panier.Add("Jean", 1); ``` ---
{"title":"Slides C#","description":"View the slide with \"Slide Mode\".","contributors":"[{\"id\":\"a90fc05d-2c7a-41b1-b785-a065fb26c58d\",\"add\":11214,\"del\":2873}]"}
    118 views