Top Banner
C# : introduction Achref El Mouelhi Docteur de l’universit ´ e d’Aix-Marseille Chercheur en Programmation par contrainte (IA) Ing ´ enieur en G ´ enie logiciel [email protected] Mai-Juin 2018 1 / 33
41

C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Nov 10, 2018

Download

Documents

lamnga
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

C# : introduction

Achref El Mouelhi

Docteur de l’universite d’Aix-MarseilleChercheur en Programmation par contrainte (IA)

Ingenieur en Genie logiciel

[email protected]

Mai-Juin 2018 1 / 33

Page 2: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Plan

1 Introduction

2 Installation

3 Un premier Hello world

4 Aspect multi-langages du Framework .NET

5 Entree / sortie et conversion

6 Commentaires

7 Console

8 Reference

Mai-Juin 2018 2 / 33

Page 3: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Introduction

C#

C#, c’est quoi?

un langage de programmation oriente objet, fortement type

cree par Anders Hejlsberg et presente officiellement en 2002 parMicrosoft

permettant de developper des applications qui s’executent sur leframework Microsoft .NET.

introduit pour concurrencer Java : Syntaxe et concept assezproches.

permettant de developper des applications web, application dubureau (Client lourd), application mobiles (sous windows phone),web services, jeux...

Mai-Juin 2018 3 / 33

Page 4: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Introduction

C#

Comment ca fonctionne ?

On ecrit un programme C#

Le code C# sera transforme en un langage intermediaire (appeleCIL pour Common Intermediate Language ou MSIL pour MicrosoftIntermediate Language) : un fichier .exe sans code binaire

Le code CIL sera compile par la machine virtuelle CLR pour avoirun code binaire.

code C#

compilercode en langage

intermdiaire (CIL)

Common LanguageRuntime (CLR)

code binaire

Mai-Juin 2018 4 / 33

Page 5: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Introduction

C#

code CIL vs code binaire

CIL : un code intermediaire qu’on peut executer sur n’importequelle machine Windows.

code binaire : adapte a la machine sur laquelle il tourne.

code C#

compilercode en langage

intermdiaire (CIL)

Common LanguageRuntime (CLR)

code binaire

Mai-Juin 2018 5 / 33

Page 6: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Introduction

C#

En plus, la machine virtuelle (CLR) dispose de :

JIT (Just In Time) : pour debugger

Garbage Collector : pour gerer la memoire

CTS (Common Type System) : fournit une bibliotheque contenantles types de donnees primitif

CLS (Common Language Specification) : pour verifier qu’unprogramme respecte les specifications .NET

...

Mai-Juin 2018 6 / 33

Page 7: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Introduction

C#

Dans un framework .NET

On peut ecrire un code C#, et aussi VB, C++, F#.

Tous ces langages seront compiles en code CIL

.cpp

.cs

.fs

.vb

CIL

Mai-Juin 2018 7 / 33

Page 8: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Introduction

C#

A partir d’un programme C#, il est possible

soit de creer des programmes .exe

soit de creer des bibliotheques sous la forme d’un fichier .dll

C’est quoi la difference?

.exe permet de lancer un programme

.dll peut etre utilisee par plusieurs programmes .exe

Dans les deux cas

On parle d’un assembly

Mai-Juin 2018 8 / 33

Page 9: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Introduction

C#

A partir d’un programme C#, il est possible

soit de creer des programmes .exe

soit de creer des bibliotheques sous la forme d’un fichier .dll

C’est quoi la difference ?

.exe permet de lancer un programme

.dll peut etre utilisee par plusieurs programmes .exe

Dans les deux cas

On parle d’un assembly

Mai-Juin 2018 8 / 33

Page 10: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Introduction

C#

A partir d’un programme C#, il est possible

soit de creer des programmes .exe

soit de creer des bibliotheques sous la forme d’un fichier .dll

C’est quoi la difference ?

.exe permet de lancer un programme

.dll peut etre utilisee par plusieurs programmes .exe

Dans les deux cas

On parle d’un assembly

Mai-Juin 2018 8 / 33

Page 11: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Introduction

C#

Et le framework .NET?

Framework cree par Microsoft en 2002, en meme temps que leC#, et aussi par la meme personne

Permettant de developper des programmes (applications)fonctionnant dans un environnement Microsoft.

Plusieurs langages possibles : C#, C++, F#...

Exemple

Paint.net : l’editeur d’images est realise avec le framework .NET

Mai-Juin 2018 9 / 33

Page 12: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Introduction

C#

Et le framework .NET?

Framework cree par Microsoft en 2002, en meme temps que leC#, et aussi par la meme personne

Permettant de developper des programmes (applications)fonctionnant dans un environnement Microsoft.

Plusieurs langages possibles : C#, C++, F#...

Exemple

Paint.net : l’editeur d’images est realise avec le framework .NET

Mai-Juin 2018 9 / 33

Page 13: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Introduction

C#

Le .NET est compatible seulement avec Windows

Pour ecrire des programmes C# sous Linux ou MAC, on peut utiliser

le framework mono

le framework Xamarin

Visual Studio?

Un IDE (Integrated Development Environment) qui nous permetd’ecrire des programmes avec le framework .NET

Mai-Juin 2018 10 / 33

Page 14: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Installation

C#

Telechargement et installation

Aller sur le lienhttps://www.visualstudio.com/fr/downloads/

Choisir Visual Studio Community 2017

Telecharger puis lancer l’installation

Mai-Juin 2018 11 / 33

Page 15: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Un premier Hello world

C#

Etapes

Creer un nouveau projet Fichier > Nouveau > Projet

Cliquer sur Installe et choisir C#

Selectionner Application Console (.NET Framework)

Remplir surtout les champs Nom : avec MonProjet etSolution avec MaSolution (Dans Emplacement, VisualStudio nous informe sur le depot ou notre projet sera place. Pardefaut, c’est dans lec:/utilisateurs/utilisateur/source/repos.)

Mai-Juin 2018 12 / 33

Page 16: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Un premier Hello world

C#

Code obtenu

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;

namespace MonProjet{

class Program{

static void Main(string[] args){}

}}

Syntaxe et concept assez proche de celles de C++ et Java.Mai-Juin 2018 13 / 33

Page 17: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Un premier Hello world

C#

Explication

On utilise Using pour importer les namespaces (comme en C++)

Le namespace permet de declarer un nouveau namespace(comme un package Java)

Static void Main() : point d’entree de notre applicationconsole

Mai-Juin 2018 14 / 33

Page 18: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Un premier Hello world

C#Afficher le Hello world!

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;

namespace MonProjet{

class Program{

static void Main(string[] args){

Console.Write("Hello world");}

}}

Executer en cliquant sur Demarrer (ou la touche [fn +] F5, ou CTRL + F5 ).On ne voit pas l’execution.

Mai-Juin 2018 15 / 33

Page 19: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Un premier Hello world

C#Afficher le Hello world!

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;

namespace MonProjet{

class Program{

static void Main(string[] args){

Console.Write("Hello world");}

}}

Executer en cliquant sur Demarrer (ou la touche [fn +] F5, ou CTRL + F5 ).

On ne voit pas l’execution.

Mai-Juin 2018 15 / 33

Page 20: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Un premier Hello world

C#Afficher le Hello world!

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;

namespace MonProjet{

class Program{

static void Main(string[] args){

Console.Write("Hello world");}

}}

Executer en cliquant sur Demarrer (ou la touche [fn +] F5, ou CTRL + F5 ).On ne voit pas l’execution.Mai-Juin 2018 15 / 33

Page 21: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Un premier Hello world

C#Solution

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;

namespace MonProjet{

class Program{

static void Main(string[] args){

Console.Write("Hello world");Console.ReadKey();

}}

}

Mai-Juin 2018 16 / 33

Page 22: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Un premier Hello world

C#

Constat

Le titre de la console contient le chemin vers l’executablec:/utilisateurs/utilisateur/source/repos/MaSolution/MonProjet/bin/Debug/MonProjet.exe

Pour acceder rapidement aux fichiers de notre projet

Aller dans le menu Affichage et cliquer sur Explorateur desolutions

Un clic droit sur MaSolution qui apparaıt dans le panneauExplorateur de solutions et choisir Ouvrir le dossierdans l’Explorateur de fichiers

Mai-Juin 2018 17 / 33

Page 23: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Aspect multi-langages du Framework .NET

C#

Objectif

Ecrire une solution .NET avec plusieurs langages deprogrammation.

Mai-Juin 2018 18 / 33

Page 24: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Aspect multi-langages du Framework .NET

C#

Etape 1 : creer un projet VB appartenant a MaSolution

Aller Fichier > Nouveau > Projet

Choisir Visual Basic

Selectionner Bibliotheque de classes (.NETFramework)

Saisir MonVB dans Nom

Dans Solution :, choisir Ajouter a la solution

Choisir MaSolution et valider

Verifier la presence de deux projets dans l’Explorateur desolutions

Mai-Juin 2018 19 / 33

Page 25: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Aspect multi-langages du Framework .NET

C#

Code obtenu

Public Class Class1

End Class

Etape 2, modifions le

Public Class ClassVBSub SayHello()

Console.WriteLine("Message VB")End Sub

End Class

Si on verifie le repertoire bin/Debug de ce projet VB, on verra qu’ilest vide (pas d’executable), donc inexploitable.

Mai-Juin 2018 20 / 33

Page 26: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Aspect multi-langages du Framework .NET

C#

Code obtenu

Public Class Class1

End Class

Etape 2, modifions le

Public Class ClassVBSub SayHello()

Console.WriteLine("Message VB")End Sub

End Class

Si on verifie le repertoire bin/Debug de ce projet VB, on verra qu’ilest vide (pas d’executable), donc inexploitable.

Mai-Juin 2018 20 / 33

Page 27: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Aspect multi-langages du Framework .NET

C#

Etape 3 : generer l’executable

Aller dans l’Explorateur de solution

Faire un clic droit sur le projet MonVB

Choisir Generer

Si on verifie le repertoire bin/Debug, trois fichiers ont ete generesdont un .dll

Mai-Juin 2018 21 / 33

Page 28: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Aspect multi-langages du Framework .NET

C#

Etape 3 : generer l’executable

Aller dans l’Explorateur de solution

Faire un clic droit sur le projet MonVB

Choisir Generer

Si on verifie le repertoire bin/Debug, trois fichiers ont ete generesdont un .dll

Mai-Juin 2018 21 / 33

Page 29: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Aspect multi-langages du Framework .NET

C#

Etape 4 : connecter les deux projets

Aller dans l’Explorateur de solution

Dans le projet MonProjet, Faire un clic droit sur References etchoisir Ajouter une reference

Cliquer sur Projets et cocher la case MonVB

Valider

Verifier que MonVB figure dans la liste de references de MonProjet

Mai-Juin 2018 22 / 33

Page 30: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Aspect multi-langages du Framework .NET

C#

Etape 4 : connecter les deux projets

Aller dans l’Explorateur de solution

Dans le projet MonProjet, Faire un clic droit sur References etchoisir Ajouter une reference

Cliquer sur Projets et cocher la case MonVB

Valider

Verifier que MonVB figure dans la liste de references de MonProjet

Mai-Juin 2018 22 / 33

Page 31: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Aspect multi-langages du Framework .NET

C#Etape 5 : utilisons la classe ClassVB ecrite en Visual Basic dans C#

using System;using MonVB;

namespace MonProjet{

class Program{

static void Main(string[] args){

ClassVB c = new ClassVB();c.SayHello();Console.Write("hello world");Console.ReadKey();

}}

}

Mai-Juin 2018 23 / 33

Page 32: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Aspect multi-langages du Framework .NET

C#

Executer : le resultat est

Message VBHello world

Mai-Juin 2018 24 / 33

Page 33: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Entree / sortie et conversion

C#

Pour ecrire dans la console

Console.WriteLine("Un message et un retour a laligne");

Pour ecrire sans retourner a la ligne

Console.Write("Un message sans retour a la ligne");

Mai-Juin 2018 25 / 33

Page 34: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Entree / sortie et conversion

C#

Pour lire une chaıne saisie dans la console

string s = Console.ReadLine();Console.Write("chaine saisie : {0}",s);

{0} fait reference a la premiere variable situee apres le texte dumessage a afficher.

On peut aussi utiliser la syntaxe suivante pour l’affichage d’unevariable

string s = Console.ReadLine();Console.Write($"chaine saisie : {s}");

$ permet d’afficher les valeurs des variables situees entre { }

Mai-Juin 2018 26 / 33

Page 35: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Entree / sortie et conversion

C#

Pour lire un caractere saisi dans la console

char c = (char)Console.Read();Console.WriteLine("caractere saisi : {0}", c);

Pour attendre la saisie d’un caractere sans le recuperer

Console.ReadKey();

Mai-Juin 2018 27 / 33

Page 36: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Entree / sortie et conversion

C#

Pour lire un chiffre saisi dans la console

int j = Console.Read();Console.WriteLine("chiffre saisi : {0}", j);

ca affiche son code ASCII

Pour lire un entier compose de plusieurs chiffres saisi dans la console

il faut

lire une chaıne de caractere

ensuite la convertir

Mai-Juin 2018 28 / 33

Page 37: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Entree / sortie et conversion

C#

Lire une chaıne

string s = Console.ReadLine();

Convertir la saisie : premiere methode

int j = int.Parse(s);Console.WriteLine("entier saisi : {0}", j);

Convertir la saisie : deuxieme methode

int k = Convert.ToInt16(s);Console.WriteLine("entier saisi : {0}", k);

Convertir la saisie : troisieme methode

int l;int.TryParse(s, out l);Console.WriteLine("entier saisi : {0}", l);

Mai-Juin 2018 29 / 33

Page 38: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Entree / sortie et conversion

C#

Remarque

int.TryParse retourne true si la conversion a eu lieu, falsesinon.

En utilisant Convert, il faut preciser le nombre de bits pour coderl’entier.

Mai-Juin 2018 30 / 33

Page 39: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Commentaires

C#

Commentaire sur une seule ligne

// commentaire

Commentaire sur une plusieurs lignes

/* le commentairela suiteet encore la suite

*/

Commentaire pour la documentation

/// un commentaire qui sera inclu dans ladocumentation

Mai-Juin 2018 31 / 33

Page 40: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Console

C#

Modifier la console

Console.BackgroundColor = ConsoleColor.Red; pourmettre la couleur du fond en rouge

Console.ForegroundColor = ConsoleColor.Yellow;pour mettre la couleur de caracteres en jaune

Console.ResetColor(); pour reinitialiser les couleurs

Console.Clear(); pour effacer le contenu de la console

Console.SetCursorPosition(50, 50); pour positionnerla console

...

Mai-Juin 2018 32 / 33

Page 41: C# : introduction - lsis.org · Introduction C# C#, c’est quoi? un langage de programmation oriente objet, fortement typ´ e´ cre´e par Anders Hejlsberg et pr´ esent´ e officiellement

Reference

C#

La documentation officielle (en francais)

https://docs.microsoft.com/fr-fr/dotnet/csharp/index

Mai-Juin 2018 33 / 33