Вы находитесь на странице: 1из 54

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#

Elments de base
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;

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

Dclaration dune constante


const float PI = 3.14;

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
Arithmtiques
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

Comparaison
a == b

Egal

a != b

Diffrent

a > b

Suprieur

a >= b

Suprieur ou gal

a < b

Infrieur

a <= b

Infrieur ou gal

Elments de base
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 :
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);
}
Introduction C#
9
}}

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.
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
}

10

Elments de base
Organisation du code source

Projet
Namespace 1

Namespace 2

Fichier1.cs

Ressource D

Fichier2.cs

Ressource C

Ressource A

FichierN.cs

Namespace M

Ressource B

11

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 ?:
if( b == true )
// si b vaut true alors...
if( i >= 4 && i<= 6)
// si i dans l'intervalle ferm [4,6]
alors...
if( i < 4 || i > 6)
// si i hors de l'intervalle ferm
[4,6] alors...
...
// s="bonjour" si i strictement infrieur j, sinon s="hello"
string s = i<j ? "bonjour" : "hello";
...
switch(i)
{
case 1:
Console.WriteLine("i vaut 1");
break;
case 6:
Console.WriteLine("i vaut 6");
break;
default:Console.WriteLine("i ne vaut ni 1 ni 6");
break;
Introduction C#
}

15

Structures de contrle
Les boucles
Quatre types de boucle: while, do/while, for, foreach
int i=0;int j=8;
while( i < 6 && j > 9 )
{
i++;j--;
}

for(int i = 1; i<=6 ; i++) ...


int i = 3;int j=5;
for(; i<7&& j>1 ;i++ , j--)...
for( int i =6 ; i<9 ; ) { ... i++;}

int i=0;int j=8;


do
{
i++;j--;
}
while( i < 6 && j > 9)

int [] tab = {1,3,4,8,2};


// Calcul de la somme des lments du tableau.
int Somme = 0;
foreach(int i in tab )
Somme += i;
// Somme vaut : 1+3+4+8+2 = 18

Introduction C#

16

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");

Structures de contrle
Instructions conditionnelles

if / then / else
Une instruction peut tre remplace par un bloc
if (a == 5 || a == 10)
{
Console.Write("a == 5...");
Console.Write(ou a == 10");
}

Structures de contrle
Instructions conditionnelles

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

Equivalent :
if (b > 0)
a = 1;
else
a = 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 itratives
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 <= 10; i++)
{
Console.WriteLine(i);
}

Structures de contrle
Instructions itratives
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 <= 10)
{
Console.WriteLine(i);
i++;
}

Structures de contrle
Instructions itratives
Boucle do / while
Exemple :
// Affiche les nombres de 1 10
int i = 1;
do
{
Console.WriteLine(i);
i++;
} while (i <= 10);

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


1 fois

using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
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
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
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
Console.WriteLine("You are young, lucky
}
else
{
// A vous : petit message pour les plus
Console.WriteLine("You are experienced,
}
Console.ReadKey();
}
}
}

jeunes mentionnant le nom de la personne


" + name);

ags, mentionnant le nom de la personne


" + name);

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 <= n ; i++)
{
for (int j = 1 ; j <= n ; j++)
Console.Write("X ");
Console.WriteLine();
}
}
}
}

52

Plan
Elments de base
Structures de contrle
Tableaux
Classes & objets
Hritage, polymorphisme & interfaces
Exceptions
Autres lments de C#
Introduction C#

53

Les tableaux
Suite dlments du mme type
Accessibles par un index

index 3

index 0
Type rfrence

Les tableaux
Tableaux 1 dimension
Dclaration :
// Cre un tableau de 10 entiers
int[] array = new int[10];

Utilisation :
for (int i = 0; i < array.Length; i++)
{
array[i] = i * i;
}
// Affiche 25
Console.Write(array[5]);

Les tableaux
Tableaux 2 dimensions
Dclaration :
// Cre un tableau de 10x10 entiers
int[,] array = new int[10,10];

Utilisation :
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

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.
58

Вам также может понравиться