2. Introduction Au Langage C#

Embed Size (px)

DESCRIPTION

c programmation tres bon fichier

Citation preview

  • Initiation au langage C#

    Abdallah MOUJAHID PMP, COBIT V5 , ITIL V3, ISO 27002

  • Plan

    Elments de base

    Structures de contrle

    Classes & objets

    Hritage, polymorphisme & interfaces

    Exceptions

    Autres lments de C#

    Introduction C# 2

  • Introduction

    Langage de programmation cre par Anders Heljberg (Microsoft) en 2001

    Langage orient objet, inspir de C++ et Java

    Permet dutiliser le framework .NET de manire optimale

    Dernire version: 4.6 (Framework) & 6.0 (Langage 07/2015)

    Classement TIOB des langages les plus utiliss au monde: 4me en Septembre 2015 derrire Java, C et C++.

    Elments de base

  • Dclaration & Assignation

    Dclaration dune variable int a; int b = 5; double c = a + b;

    Assignation dune valeur a = 6; c = a + 4 c += 9;

    Dclaration dune constante const float PI = 3.14;

    Commentaire // Commentaire sur une ligne /* * Commentaires sur plusieurs lignes */

    Elments de base

  • Exemples de types existants

    C# C / C++

    int int

    long long

    char char

    string String

    bool bool

    double double

    float float

    decimal float

    Elments de base

  • Oprateurs

    a + b Addition

    a b Soustraction

    a / b Division

    a % b Modulo

    a += b a est gal la somme de a et de b

    a -= b a est gal la soustraction entre a et b

    a == b Egal

    a != b Diffrent

    a > b Suprieur

    a >= b Suprieur ou gal

    a < b Infrieur

    a

  • La mthode Main() (1/2)

    Chaque assemblage excutable a au moins une mthode statique Main() dans une de ses classes.

    Cette mthode reprsente le point dentre du programme, cest--dire que le thread principal cr automatiquement lorsque le processus se lance va commencer par excuter le code de cette mthode.

    Il peut y avoir ventuellement plusieurs mthodes Main() (chacune dans une classe diffrente) par programme. Le cas chant, il faut prciser au compilateur quelle mthode Main() constitue le point dentre du programme.

    8

    Elments de base

  • La mthode Main() (2/2)

    Le programme suivant ajoute les nombres passs en arguments en ligne de commande, et affiche le rsultat. Sil ny a pas dargument, le programme le signale :

    Introduction C# 9

    using System;

    class Prog

    {

    static void Main(string[] args)

    {

    if (args.Length == 0)

    Console.WriteLine("Entrez des nombres ajouter.");

    else

    {

    long result = 0;

    foreach( string s in args )

    result += System.Int64.Parse(s);

    Console.WriteLine("Somme de ces nombres

    :{0}",result);

    }

    }}

    Elments de base

  • Les espaces de noms

    Une ressource dans le code source a la possibilit dtre dclare et dfinie lintrieur dun espace de noms.

    Si une ressource nest dclare dans aucun espace de noms elle fait partie dun espace de noms global et anonyme.

    10

    using Foo1;

    using Foo1.Foo2;

    using System;

    namespace Foo1

    {

    // ici les ressources de l'espace de noms

    Foo1

    namespace Foo2

    {

    // ici les ressources de l'espace de noms

    Foo1.Foo2

    }

    // ici les ressources de l'espace de noms

    Foo1

    }

    Elments de base

  • Organisation du code source

    11

    Projet

    FichierN.cs

    Fichier1.cs

    Fichier2.cs

    Namespace 1 Namespace 2

    Ressource B

    Namespace M

    Ressource A Ressource C

    Ressource D

    Elments de base

  • Elments de base

    Hello World !!!

  • Plan

    Elments de base

    Structures de contrle

    Classes & objets

    Hritage, polymorphisme & interfaces

    Exceptions

    Autres lments de C#

    Introduction C# 13

  • Structures de contrle

    Dfinition Une structure de contrle est un lment du programme

    qui change le comportement par dfaut de lunit dexcution (du thread). Rappelons que ce comportement par dfaut est dexcuter les instructions les unes la suite des autres.

    Trois familles de structures de contrles:

    Les conditions, qui excutent (ou pas) un bloc de code qu une certaine condition, portant gnralement sur les tats de variables et dobjets.

    Les boucles, qui excutent en boucle un bloc dinstructions. Le programmeur a le choix entre terminer de boucler aprs un certain nombre ditrations, ou terminer de boucler une certaine condition.

    Les branchements ou sauts, qui permettent de rediriger directement vers une instruction particulire lunit dexcution.

    Introduction C# 14

  • Structures de contrle

    Les conditions Trois types de condition: if/else, switch, loprateur

    ternaire ?:

    Introduction C# 15

    if( b == true ) // si b vaut true alors...

    if( i >= 4 && i

  • Structures de contrle

    Les boucles

    Quatre types de boucle: while, do/while, for, foreach

    Introduction C# 16

    int i=0;int j=8;

    while( i < 6 && j > 9 )

    {

    i++;j--;

    }

    int i=0;int j=8;

    do

    {

    i++;j--;

    }

    while( i < 6 && j > 9)

    for(int i = 1; i

  • Structures de contrle

    Instructions conditionnelles

    if / then / else

    Permet dexcuter une instruction si une condition est vraie

    if (a == 5)

    Console.Write("a == 5");

    else if (a == 10)

    Console.Write("a == 10");

    else

    Console.Write("a != 5 && a != 10");

  • Une instruction peut tre remplace par un bloc

    if (a == 5 || a == 10)

    {

    Console.Write("a == 5...");

    Console.Write(ou a == 10");

    }

    if / then / else

    Structures de contrle

    Instructions conditionnelles

  • Oprateur ternaire

    Exemple :

    Equivalent :

    if (b > 0)

    a = 1;

    else

    a = 2;

    a = (b > 0 ? 1 : 2);

    Structures de contrle

    Instructions conditionnelles

  • switch

    Excute des instructions en fonction de la valeur dune variable

    switch(a)

    {

    case 1:

    Console.Write("a == 1");

    break;

    case 2:

    Console.Write("a == 2");

    break;

    default:

    Console.Write("a != 1 && a != 2");

    break;

    }

    Structures de contrle

    Instructions conditionnelles

  • Permettent dexcuter une instruction plusieurs fois

    for

    foreach

    while

    do / while

    Structures de contrle

    Instructions itratives

  • Boucle for

    Exemple :

    // Affiche les nombres de 1 10

    for (int i = 1; i

  • Boucle foreach

    Permet ditrer dans un ensemble de donnes

    Exemple :

    // Affiche les nombres de 1 10

    int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    foreach (int i in array)

    {

    Console.WriteLine(i);

    }

    Structures de contrle

    Instructions itratives

  • Boucle while

    Exemple :

    // Affiche les nombres de 1 10

    int a = 1;

    while (a

  • Boucle do / while

    Exemple :

    Contrairement while, le bloc do / while est excut au moins 1 fois

    // Affiche les nombres de 1 10

    int i = 1;

    do

    {

    Console.WriteLine(i);

    i++;

    } while (i

  • using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    namespace SayMyName

    {

    // Une classe : on verra plus tard ce que c'est

    class Program

    {

    // Une mthode (une fonctionnalit)

    static void Main(string[] args)

    {

    ENTREZ VOTRE CODE ICI }

    }

    }

  • Ex:

    - Afficher du texte lcran suivi dun retour chariot : Writeline

    - Lire un texte tap au clavier ReadLine

    Ex : classe Console pour toutes les fonctionnalits de la fentre dexcution de lapplication console:

    Console.WriteLine, Console.ReadLine

  • Console.ReadKey();

    // Les paramtres

    Console.WriteLine("Who are you ?");

    Console.ReadLine();

  • // Lit une chaine de caractres termine par retour chariot (return)

    string name = Console.ReadLine();

    // A vous ! Affichez Nice to meet you xxx Console.WriteLine("Nice to meet you "); Console.WriteLine(name); // ou Console.WriteLine("Nice to meet you " + name); // ou //

  • // On veut afficher l'ge de la personne en le dduisant partir de son anne de naissance Console.WriteLine("When were you born ?"); // A vous : Rcuprez lanne de naissance saisie dans une variable string year = Console.ReadLine(); // On va faire une soustraction : 2013 year // pour cela, on a besoin d'avoir une valeur entire et non une chaine de caractres (texte) int yearNum = int.Parse(year); // Essayez de saisir une valeur non numriquequel est le rsultat ? On verra tout lheure comment rsoudre ce problme //int age = 2013 - yearNum; // Mieux : int age = DateTime.Now.Year - yearNum; // A vous : Affichez lage de la personne Console.WriteLine("You are " + age.ToString());

  • // Afficher un message diffrent selon que l'on soit jeune ou vieux // ( vous de dcider l'ge partir duquel on est vieux !)

    if(age < 40) { // A vous : petit message pour les jeunes mentionnant le nom de la personne Console.WriteLine("You are young, lucky " + name); } else { // A vous : petit message pour les vieux, mentionnant le nom de la personne Console.WriteLine("You are experienced, " + name); }

  • Quizz

    Parmi les propositions ci-dessous, laquelle permet la lecture et

    lcriture partir de la console?

    a. System.Array

    b. System.Output

    c. System.ReadLine

    d. System.Console

  • Quizz

    La CLR est lquivalent de _________.

    1. a. Java Virtual Machine

    2. b. Common Language Runtime

    3. c. Common Type System

    4. d. Common Language Specification

  • Quizz

    . Permet de traduire le code MSIL en code natif

    a. JIT

    b. CLS

    c. IL

    d. CTS

  • Quizz Lequel des lments suivants est une autre faon de rcrire l'extrait de code donn ci-dessous?

  • using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    namespace ConsoleApplication1

    {

    class Program

    {

    static void Main(string[] args)

    {

    Console.WriteLine("Who are you ?");

    string name = Console.ReadLine();

    Console.WriteLine("Nice to meet you " + name);

    Console.WriteLine("Entrez votre anne de naissance:");

    string annee = Console.ReadLine();

    int anneeInt = int.Parse(annee);

    int age = DateTime.Now.Year - anneeInt;

    Console.WriteLine("You are " + age);

    if (age < 40)

    {

    // A vous : petit message pour les plus jeunes mentionnant le nom de la personne

    Console.WriteLine("You are young, lucky " + name);

    }

    else

    {

    // A vous : petit message pour les plus ags, mentionnant le nom de la personne

    Console.WriteLine("You are experienced, " + name);

    }

    Console.ReadKey();

    }

    }

    }

  • 52

    crire un programme qui saisit une valeur n et qui affiche le carr suivant (n = 5 dans lexemple) :

    using System;

    namespace Carre

    {

    class MainClass

    {

    public static void Main (string[] args)

    {

    Console.Write ("Saisir n : ");

    int n = int.Parse(Console.ReadLine());

    for (int i = 1 ; i

  • Plan

    Elments de base

    Structures de contrle

    Tableaux

    Classes & objets

    Hritage, polymorphisme & interfaces

    Exceptions

    Autres lments de C#

    Introduction C# 53

  • Suite dlments du mme type

    Accessibles par un index

    Type rfrence

    index 3

    index 0

    Les tableaux

  • Tableaux 1 dimension

    Dclaration :

    Utilisation :

    // Cre un tableau de 10 entiers

    int[] array = new int[10];

    for (int i = 0; i < array.Length; i++)

    {

    array[i] = i * i;

    }

    // Affiche 25

    Console.Write(array[5]);

    Les tableaux

  • Tableaux 2 dimensions

    Dclaration :

    Utilisation :

    // Cre un tableau de 10x10 entiers

    int[,] array = new int[10,10];

    for (int i = 0; i < array.GetLength(0); i++)

    for (int j = 0; j < array.GetLength(1); j++)

    {

    array[i, j] = i * j;

    }

    Les tableaux

  • Les types de tableaux sont tous des types rfrence. En fait chaque type de tableau est une classe qui hrite de la classe abstraite System.Array.

    C# oblige tous les lments dun tableau avoir le

    mme type. Cette contrainte peut tre facilement contourne. Il suffit de spcifier que les lments sont des rfrences vers une classe de base, pour quen fait, chaque lment puisse tre une rfrence vers un objet de nimporte quelle classe drive.

    57

    Les tableaux

  • 58

    Lire la dimension N d'un tableau T du type int (dimension maximale: 20 lments),

    Remplir le tableau par des valeurs entres au clavier et affiche le tableau.

    Copier ensuite toutes les composantes strictement positives dans un deuxime tableau TPOS et toutes les valeurs

    strictement ngatives dans un troisime tableau TNEG.

    Afficher les tableaux TPOS et TNEG.