Cours langage c# - technologies dotnet - télécharger pdf

L’environment.NET

19/10/20195 Environnement .Net

•.NET est une plateforme élaborée par l’entreprise Microsoft (Juin 2002) afin de fournir un ensemble des technologies informatiques, pour le développement d'applications d'entreprises.

•Les applications d’entreprises doivent être :

•Ces considérations rendent ces applications complexes.

•La solution c’est le DOTNET

-Portable

-Fiableetsécurisée

-Maintenable etflexible

-Performante

-Facile à intégrerdans unsystème d'informationexistant

19/10/20196 Environnement.Net

•Microsoft .NET constitue ainsi la réponse de Microsoft à la plateforme J2ee de Sun.

•Pourquoion parlede .NETquandon veutapprendrele langageC#?

•C#: c'est le langage, la "langue" dans laquelle vous allez parler. Vous allez par exemple pouvoir dire "Ouvre une fenêtre en haut à gauche de l'écran".

•.NET: ce sont les outils dont vous avez besoin pour travailler. C’est un ensemble de composants informatiques, que l'on appelleframework, qui vous permet d'avoir accès à la création et manipulation de fenêtres, à l'écriture de fichiers,.. etc.

•Nativement, la plateforme .NET fut crée pour Windows. Celle-ci est désormais portable sur des systèmes Linux ou Unix, grâce à un projet intitulé MONO.

•Le Framework .Net, est multi-langages : on peut programmer en VB, en C#, en C++, en J# ...et autres.

19/10/20197 Historique.Net

•1995: Le lancement de java

•1996: Microsoftaachetéunelicence javadeSun pour pouvoir utiliser les applets java dans Internet Explorer.

•1997: Action en justice de Sun contre Microsoft. oSun accuse Microsoft de ne pas respecter la licence, en développant une version de Java incompatible avec son cahier de charge. oSun accuse MS de vouloir provoquer une cassure du marché et inciter à fabriquer des logiciels utilisant Java qui fonctionneraient uniquement avec Windows.

oMicrosoft continue de développer sa propre version de Java, Librairies, compilateur, machine virtuelle.

•1998: Sun obtient une injonction qui empêche MS de vendre tout produit java incompatible avec ses spécifications.

•1999: Sun annonce le lancement de J2EE. Un ensemble d’outils permettant de créer des applications d’entreprise en n’utilisant que le langage Java.

•2000: Microsoft lance .Net, avec un nouveau langagede programmation semblable à java appelé C#.8 19/10/2019

Historique .Net

•Janvier 2001: Sun et Microsoft en arrivent à un arrangement sur Java. Sun obtient 20 millions. Microsoft ne peut plus développer de produits incompatibles avec les spécifications de Sun mais peut continuer à distribuer les versions actuelles.

•Juillet 2001: Microsoft annonce que sa machine virtuelle pour Java ne sera pas distribuée avec son nouveau système d’exploitation, Windows XP, ni dans Internet Explorer 6. (mais elle sera disponible par téléchargement sur le site de Microsoft).

•Octobre 2001: Lancement de Windows XP sans le Framework .NET.

•Janvier 2002: Le .NET Framework SDK version finale est disponible pour téléchargement sur le site web de Microsoft.

•Février 2002: Microsoft lance Visual Studio .NET.

•Mars 2002: Nouvelle action en justice de Sun contre Microsoft. Environ 1 milliard de dollars est demandé, l’inclusion de Java dans Windows XP et IE6, et la révélation d’un ensemble d’API de Windows XP.

•2003: La plate forme .Net est lancé officiellement après que SUN remporte le procès obligeant MS d’arrêter le développement de sa propre machine virtuelle de Java.9 19/10/2019Limites •En utilisant C et C++, un programme compilé (binaire) ne fonctionne que sur la plateforme sur laquelle il a été compilé. Il est par exemple impossible de faire tourner sous Linux un programme compilésur Windows.

•Les langages récents, comme le C# et le Java, résolvent ce problème de compatibilité.

19/10/201910 Le code en langage intermédiaire (CIL)

•La compilation en C# ne donne pas un programme binaire, contrairement au C et au C++. •Le code C# est en fait transformé dans un langage intermédiaire (appelé CIL, anciennement MSIL) que l'on peut ensuite distribuer à tout le monde. •Ce code n'est donc pas exécutable, car l'ordinateur ne comprend que le binaire.

19/10/201911 Le code en langage intermédiaire (CIL)

•CLRest le nom choisi par Microsoft de la machine virtuelle du framework.NET

•Sous Windows, le code en CIL prend l'apparence d'un .exe, mais ne contient en revanche pas de binaire. Lorsqu'on exécute le programme CIL, celui-ci est lu par le CLRqui le compile cette fois en vrai programme binaire.

•Cela offre beaucoup de souplesse au programmeur. 19/10/201912 Common LangageRuntime (CLR)

•Cette complexité ralentit légèrement la vitesse d'exécution des programmes (par rapport au C ou au C++), mais la différence est négligeable par rapport aux gains que cela apporte. On parle de managedcodequi permettra d’améliorer lasûreté de fonctionnementd'un programme informatique.

•Lemanagedcodeest uncode sourcequi s'exécute sous le contrôle de lamachine virtuelleCLR. Ce terme est employé par opposition auunmanagedcode(code non géré), qui est exécuté directement par leprocesseur. 19/10/201913 .NetFramework

•Framework = cadre dedéveloppement

•Le Framework .Net a 3rôles :

Build: Vérifier le code (compilation)+ exécution via leCLR

Manage: outils facilitant laprogrammation

Deploy: outildedéploiementde l’application pourla mise enproduction14 19/10/2019

Framework dedéveloppement

.NETn'estpasunetechnologiemaisunensembledetechnologies.Le

Framework.NEToffreauxdéveloppeursplusieursbibliothèquesoffrantchacun

desservicesdifférents:

•WindowsForm•WPF •ASP.net•WCF •Windowsstore•etc 15

19/10/2019

Environnement de travail en .Net

1.Installer Microsoft .Net Framework

2.Avoir un environnement de développementdes applications .Net: Visual studio oVersion gratuite: Visual studio express ne contient pas toutesles fonctionnalités.

oVersion payante: Visual studio ultimate16 19/10/2019

VisualStudio

Remarques:

•LorsdepremièredémarragedeVisualStudio,onvousdemandelelangagede

programmationàutiliser(C#,VB...),parlasuite,çaseralelangagepardéfaut

pourlesautresdémarragesdeVisualstudio.

•Sionveutmodifiercelangage:Outils Importationetexportationdes

paramètres Réinitialisertouslesparamètres choisirlelangage17 19/10/2019

Visual Studio

•Pour organiser les classes, Java utilise le concept de packages et C# utilise le concept de Namespaces.

•Nom de solution: conteneur d’un ensemble de projet

•Nom: le nom de projet18 19/10/2019

Comparaison entre J2ee et.Net19 19/10/2019

Comparaison entre J2ee et.Net

•Langage deprogrammation

oJ2ee utilise un seul langageJava

o.Netmulti-langage•IDE oIDE de j2ee open source

oIDE de .Net payant+ basé sur les systèmesWindows

•Portabilité

oPortabilité mieux enj2ee

•Documentation

oMieux en J2ee par rapport à.Net20 19/10/2019

Comparaison entre J2ee et .Net21 •Applicationdebureau

J2EE.NET

Swing Awt JavaFX WindowsForms WPF

19/10/2019

Comparaison entre J2ee et.Net22 •ApplicationServeur

J2EE.NETServeur Web ,serveur

d’Application

Apache tomcat,Jboss,GlassFishIIS ApplicationWeb

JSP/ Servlet

JSF/ Struts

SpringMVC

ASP WebFormsASPMVC Gestion de base de données

JDBCADO.net

19/10/2019

Comparaison entre J2ee et.Net23 J2EE.NET

Framework ORM

HibernateJPA NhibernateLinQ EntityFramework

ApplicationRIA

FlashSilverlight

Framework pour Injection de dependence

SpringMicrosoftdependancy

Injection

Spring.Net

19/10/2019

Comparaison entre J2ee et.Net24 J2EE.NET

Programmation

distribuéRMI WebServices

.NetRemotingWCF BI

TalendMicrosoft BI Service Sqlserver

Application mobile

AndroidWindowsPhone

19/10/2019

Comparaison entre J2ee et .Net25 Tout ce qu’on peut faire en J2ee, on peut le faireen

.Net etviceversamaisde différentefaçon.

En tantqu'ingénieuren développement informatique, il faudra avoir une base solide dans les deuxenvironnements

•Récapitulatif

19/10/2019

Exercice : Personnalisez votre environnement

•Pour changer le titre de la fenêtre : •Console.Title= "Mon application";

•Pour forcer un fond bleu, on écrit :

•Console.BackgroundColor= ConsoleColor.Blue;

•Console.Clear();

•Pour changer la taille de la fenêtre :

•Console.SetWindowSize(64,30); //caractères et lignes

•Pour positionner le curseur au point (10, 20) et afficher du texte en rouge sur fond noir :

•Console.SetCursorPosition(10, 20);

•Console.BackgroundColor= ConsoleColor.Black;

•Console.ForegroundColor= ConsoleColor.Red;

•Console.Write(" Bonjour tout le monde ! ");26 19/10/2019

Initiation àla programmationC#

19/10/201927 Plan

1.Variables et types de données

2.L’affichage et la saisie en C#

3.Les opérateurs

4.Les structures de contrôle (Conditions et Boucles)

5.Tableaux, tableaux hétérogènes et Tableaux multi-dimension

6.Les fonctions et passage des paramètres

7.Les énumérations28 19/10/2019

Avant de commencer, il faut savoir :

•C# est sensible à la casse.

•C# accepte les lettres accentuées dans les identificateurs (nom de variables, de fonctions, de classes, ...). •Maindoit être contenu dans une classe et être qualifié destatic.

•La directive usingsignale que l’on fera appel à des fonctions de l’architecture .NET regroupées dans un espace de noms appelé System.

•La classe Consoleenglobe les fonctions de dialogue avec l’utilisateur en mode console. Elle fait partie de l’espace de nom System.

•Utilisation du UpperCamelCasepour les noms des classes, interfaces, namespaceset pour les méthodes.29 19/10/2019

La classe Console

La classe Console possède les méthodes suivantes :

•Read() oLit le caractère suivant à partir du clavier

•ReadLine()

oLit la ligne suivante (string) à partir du clavier

•Write(objecto)

oEcrit la représentation textuelle de l’objet passé en paramètre sur l’écran

•WriteLine(objecto)

oEcrit la représentation textuelle de l’objet passé en paramètre sur l’écran avec un retour à la ligne

19/10/201930 Structure Typiqued’un FichierSource

19/10/201931 Alias et Noms Pleinement Qualifiés32 19/10/2019

Initiation àla programmationC#

Variables et types de données

19/10/201933 Déclaration des Variables

•La déclaration des variables en C# se fait avec lasyntaxe: <type> <nom_var> =<valeur>;

•Exemple : intx = 5;

•EnC#,onpossèdeégalementlemotclévarpourdéclarerunevariableavec

untypeimplicite,letypedelavariableestdoncdéterminédepuislavaleur

affectée:

•Exemple : var y = 6.1034 19/10/2019

Types de Données

•TouslestypesprimitifsenC#sontdesobjetsdanslenamespaceSystem.

•Pourchacundecestypesonaunalias(nompluscourt)afindesimplifier

l’utilisation.

•Exemple:intpourreprésenterletypeSystem.Int32

•Vuquecestypessontdesobjets,ilspossèdentdesméthodesqu’on peut appeler;35 int x =4;

Console.WriteLine(x.CompareTo(12));

19/10/2019

Types de Données36 ShortName.NETClassDescriptionNumber ofBitsbyte Byte

De 0 à 2558 sbyteSByte De -128 à 1278 shortInt16 De -32768 à 3276716 ushortUInt16 De 0 à 6553516 intInt32 De -2147483648 à 214748364732 uintUInt32 De 0 à 429496729532 longInt64 De -9223372036854775808 à 22337203685477580764 ulongUInt64 De 0 à 1844674407370955161564 •Letype entier:

19/10/2019

Types de Données37 Short name.Net classNumber of bitsfloat Float32bits doubleDouble 64bits

•Le type réel:

•Le type caractère:

•Le type Boolean:

Short name.Net classNumber of bitsbool Boolean1bit Short name.Net classNumber of bitschar Char16bits 19/10/2019

Types de Données38 Short name.Net classstring String

•Le type String:

•Le type object:

Short name.Net classobject Object

19/10/2019

Les Types Nullables

•Lestypesqu’onvientdevoirnepeuventpasprendrenullcommevaleur.C#

parcontreoffreuneversionnullabledecestypes.

•Parexemplepourletypeint(System.Int32),onpossèdeletypenullable

équivalentsuivant:

•Exemple: int? x= null;

Console.WriteLine(x);

inty = x; // ERREUR, comment faire? 39

Short name.Net class

int ?

Nullable<Int32>

19/10/2019

Les Types Nullables

•Pour accéder à la valeur de ces types nullables, C# offre les moyens suivants:

oL’utilisation d’un castexplicite.

oLa propriété Value.

•Exemple :

double? x=7;

doubley=(double) x;//castexplicite

doublez= x.Value; //propriétéValue

doublev=x; //erreur40 19/10/2019

Variables

•Les deux déclarations suivantes sont équivalentes : ointv;

oSystem.Int32v; •Une variable pas encore initialisée ne peut pas être utilisée, sauf à gauche d’une assignation

ointa=5,b,c;

oa = c + 5; // erreur : la variable «c» n’est pas initialisée !

ob = a + 5;

// correct : b est à gauche de l’assignation !

•Le type float:

odoubled = 1.2; // Aucun problème.

ofloatf1 = 1.2; // Erreur de syntaxe : 1.2 en format double.

ofloatf2 = 1.2f;// Aucun problème.41 19/10/2019

Value Types Vs. ReferenceTypes

19/10/201942 TypeValeurTypeRéférence

•Un type de données est dit « Type valeur » s'il possèdeladonnéedans son propre espacede mémoire.

----------------------------------------------------------------

•Les types «Type valeur » sont:

oTousles types numériques.

oBoolean, Char et Date

oToutesles structures

oLes énumérations.

•Untypededonnéesestdit«Type référence »

s'ilpossèdeuneréférenceversunautreemplacement

dela mémoire où la donnée eststockée.

---------------------------------------------------------------------

•Les types «Type référence» sont:

oString. (mais se comporte commeunValueType!!)

oTouslestableaux.

oLesclasses.

oLesDelegates.

Initiation àla programmationC#

L’affichageet la saisie

19/10/201943 L’affichageenC#

1.Console.WriteLine("Expression àafficher");

2.Console.Write("Expression àafficher");

3.intx=6; Console.Write("Expression àafficher" + x);

4. Formatstring :

intx=6;y=9; Console.Write("{0} et {1}",x,y); // 6 et 9

strings =String.Format("{{0}} estremplacépar {0} et {{1}} par {1}","p2","p3");// {0} est remplacé par p2 et {1} par p3

Remarque : vouspouvezdéterminerla façondontunedonnéevaêtrereprésentéeenfaisant

suivrel'indexide deuxpoints et de caractèresspéciaux, commececi:{0:X}pour un affichage

enhexadecimal.44 19/10/2019

L’affichageenC#45 19/10/2019

Exercice (Affichage)

staticvoidmain (){ inti=10, j=5; // qu’affiche chacune des instructions suivantes ?

Console.WriteLine("i = " + i + " et j = " + j);

Console.WriteLine("i = {0} et j = {1}", i, j); Console.WriteLine(i + j); Console.WriteLine("Somme = " + i + j); Console.WriteLine("Somme = " + (i + j) );

Console.WriteLine("Somme = {0}", i + j);

Console.WriteLine("Somme = " + i*j); Console.WriteLine(i + j + "Somme = "); }46 // i = 10 et j = 5

// i = 10 et j = 5

// 15

// Somme = 105

// Somme = 15

// Somme = 15

// Somme = 50

// 15Somme =

19/10/2019

CnversionNombre ---Chaine

•La classe Convertpossède des méthodes statiques qui permettent de convertir des valeurs d’un type vers un autre type :

•Par exemple, la méthode ToInt32 permet de convertir une chaine de caractères, un double, un caractère, .... en entier

intnombre1 = Convert.ToInt32('5');

intnombre2 = Convert.ToInt32("22");

double d1 = Convert.ToDouble("12.5");

•En outre, les typesint,double etfloatpossèdent la méthode Parsequi permet de récupérer un nombre à partir d’une chaine

intnombre1 = int.Parse("22");

double d1 = double.Parse("12.5");

19/10/201947 La saisieenC#

•le résultat de la méthode Console.ReadLine( ) est toujours une chaîne de caractère.

•Pour pouvoir récupérer la valeur saisie dans une variable d’un certain type, il faut effectuer une conversion en utilisantConvert.

•Exemple:

Convert.ToInt32(v);

Convert.ToDouble(v); Convert.ToChar(v); //etc48 stringv;

v=Console.ReadLine();

19/10/2019

La saisieenC#

•Exemple49 19/10/2019

Exercice (saisie)

•Terminez le code suivant :

staticvoidmain(){ Console.WriteLine("Entrez votre nom : ");

string n = ... ; Console.WriteLine("Entrez votre age: ");

inta = ... ;

Console ... ;}

// Entrez votre nom : toto

// Entrez votre age: 20

// Bonjour toto, vous avez 20 ans.50 19/10/2019

Exercice (saisie)

staticvoidmain(){ Console.WriteLine("Entrez votre nom : ");

stringn = Console.ReadLine();

Console.WriteLine("Entrez votre age: ");

inta = Convert.ToInt32(Console.ReadLine());

Console.Write("\n\nBonjour{0}, vous avez {1} ans.", n, a);} 51

19/10/2019

Initiation àla programmationC#

Les opérateurs

19/10/201952 Opérateurs

OperateurSignification

+Addition

-Soustraction

*Multiplication

/Division%Modulo Opérateurs arithmétiques : 19/10/201953 intx; //déclaration d'un entier x sans initialisation.

inty = 5; //déclaration d'un entier y ayant pour valeur 5. x = 7; //affectation de 7 à x

//On initialise les résultats à 0

intresultatAddition= 0;

intresultatSoustraction= 0;

intresultatMultiplication= 0;

intresultatDivision= 0;

intresultatModulo= 0;

//On effectue les calculs et on les assignent aux résultats

//correspondants.

resultatAddition= x + y;

resultatSoustraction= x -y;

resultatMultiplication= x * y;

resultatDivision= x / y;

resultatModulo= x % y;

//Ici on fait afficher nos résultats à la console.

Console.WriteLine(resultatAddition);

Console.WriteLine(resultatSoustraction);

Console.WriteLine(resultatMultiplication);

Console.WriteLine(resultatDivision);

Console.WriteLine(resultatModulo);

Le résultat :12 235 12 19/10/201954 Opérateurs

OperateurSignification

>Strictement supérieur

<Strictement inférieur

>=Supérieur ou égal

<=Inférieur ou égal

!=Différent de==Egal Opérateurs de test :

19/10/201955 inta = 3, b = 8;

//On déclarenosrésultats.

boolresultat1, resultat2, resultat3, resultat4;

//Ici on effectue nos tests. resultat1 = a > b;

resultat2 = a < b;

resultat3 = a != b;

resultat4 = a == b;

//Ici on fait afficher nos résultats à la console. Console.WriteLine(resultat1);

Console.WriteLine(resultat2);

Console.WriteLine(resultat3);

Console.WriteLine(resultat4);

Le résultat :False TrueTrue False

19/10/201956 Opérateurs

OperateurSignification||OU &&ET

? : (opérateur ternaire)Condition ? valeur_si_Vrai: valeur_si_Faux

???? valeur si null

Opérateurs de test:

Exemple:

int? a = null; intb = a ?? -1; Console.WriteLine(b); // output: -1

19/10/201957 inta = 3; //trois entiers pour les trois tests. intb = 6;

intc = 1;

stringd = null;

booltest1; //trois résultat des tests. booltest2;

stringtest3;

stringtest4;

test1 = ((a == 2) || (a == 5)); //vrai si a=2 ou a=5.

test2 = ((b >= 0) && (b <= 10)); //vrai si b est compris

//entre zéroet dix.

test3 = (c == 1) ? "c est égal à 1": "c n'est pas égal à 1";

//enregistrela premier chaînesic==1 sinonenregistrela

//deuxiemmechaîne.

test4 = d ?? "d est null";

//test4 vaut d ou 5 si d vaut null

//on affiche les résultats dans la console. Console.WriteLine(test1); Console.WriteLine(test2); Console.WriteLine(test3); Console.WriteLine(test4);

Le résultat :False True

c est égal à 1

d est null

19/10/201958 Opérateurs

OperateurSignification

=Permet d’assigner une valeur à une variable

+=, -=, *=, /=, %=Opération puis réassignation

Opérateurs d’affectation :

19/10/201959 inta; // on déclare un entier a.

a = 3; //opérateur "=" assigne la valeur "3" à // la variable "a". Console.WriteLine(a);

a += 1; //équivaut à a = a+1, donc ici a = 4. Console.WriteLine(a);

a -= 2; //équivaut à a = a-2,donc ici a = 2. Console.WriteLine(a);

a *= 3; //équivaut à a = a*3,donc ici a = 6. Console.WriteLine(a);

a /= 6; //équivaut à a = a/6,donc ici a = 1. Console.WriteLine(a);

Le résultat :3 42 61 19/10/201960 Opérateurs

OperateurSignification

variable++ ,variable--+1 ou -1 après utilisation de la variable

++variable ,--variable+1 ou -1 avant l’utilisation de la variable

Opérateurs d’incrémentation:

19/10/201961 //a++ équivaut à a+=1 qui équivaut à a=a+1.

inta = 0;

// on initialise a à 0.

Console.WriteLine(a++);

//affiche a, soit 0, puis l'incrémente.

Console.WriteLine(a);

//affiche la valeur courante de a, soit 1.

Console.WriteLine(++a);

//incrémente a, puis affiche sa valeur, soit 2.

Le résultat :0 12 19/10/201962 Initiation àla programmationC#

Les structures de contrôle

19/10/201963 Les conditions (if)

•Forme : if (<condition1>) {

<instruction1>} elseif (<condition2>) {

<instruction2>} else

<instruction3>

•Exemple:

if ((v==3) && (i<5)){ i=i+4;v=v*2; }

else v=i;

Tests acceptés C/C++ :

if ( i )

if ( ! i )

if ( i = j )

En C#, il faut écrire :

if ( i != 0 )

if ( i == 0 )

if ( (i=j) != 0 )

Remarque: L’instruction if : Une différence par rapport à C/C++ :

19/10/201964 Les conditions (switch)

Forme : Exemple: switch (<expression entière>) {

case <valeur 1>: <instructions>; break;

case <valeur 2>: <instructions>; break;. .

case <valeur n>: <instructions>;break;

default: <instructions>} Remarque: Lesbreakserventà clôturerlescase,si

vousn'enmettezpas, le code ducasesuivantsera aussiexécuté.

19/10/201965 Boucle (while)

•Forme 1:

while(<expression entière>) <instruction>

•Forme 2:

do {

<instruction>

} while(<expression entière>); 19/10/201966 On remarque que le test est effectué avant la boucle.

On remarque que le test est effectué aprèsla boucle.

Boucle (for)

•Forme :

for (<expression 1>; <expression 2>;<expression 3>)

<instruction>

•Le mécanisme est équivalant à : 19/10/201967 Boucle nouvelle (foreach)

•La boucle foreachest utile pour balayer en lecture uniquement un tableau.

•foreachne permet pas de modifier le tableau, vous devez pour cela utiliser une autre forme de boucle.

Forme: foreach(<element> in <ensemble>) {

<instruction>} •Exemple :

int[] tab = { 5, 6, 8, 1 };

foreach(inti intab) {Console.WriteLine(i);}

string[] jours = new string[] { "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche" };

foreach(stringjour injours) {Console.WriteLine(jour);}

19/10/201968 break et continue

•Les instructions breaket continuepeuvent être exécutées dans une boucle :

•L’instruction continuefait passer directement à l’itération suivante ;

•L’instruction breakfait quitter la boucle.

•Exemple : 19/10/201976 Le passage de paramètres

•Les arguments d’une fonction sont passés :

•par valeur ou référence dans le cas d’arguments de types « valeur » (int, float, string, etc...)

•par référence uniquement dans le cas de tableaux ou d’objets (voir les classes)

•Lorsdel’appeld’uneméthodeprenantenparamètredes types valeur, les paramètres sont passés parvaleur.

•Lorsdel’appeld’uneméthodeprenantenparamètredes types références, les paramètres sont passés parréférence.

•Pour contrôler ce comportement par défaut, C# propose des modificateurs des paramètres.

19/10/201977 Passage d’arguments par valeur

•Cela signifie qu'une copie de la valeur de chaque argument est faite au moment de l'appel et ce son