Chapitre 1 : Concepts de base et principes fondamentaux de la Programmation Orientée Objet

Page 1 sur 15Lecteur de document UniversityLib

Chapitre 1 : Concepts de base et principes fondamentaux de la Programmation Orientée Objet

Programmation Orientée Objet (POO) et Langage C# · course

Voir tous les documents en programmation

Chapitre 1 : Concepts de base de la POO

1.1 De la programmation classique vers la programmation orient e objet

La programmation classique telle que tudi e au travers des langages C, Pascal& d finie un

programme comme tant un ensemble de donn es sur lesquelles agissent des proc dures et

des fonctions.

Les donn es constituent la partie passive du programme. Les proc dures et les fonctions

constituent la partie active.

Programmer dans ce cas revenait :

  • d finir un certain nombre de variables (structures, tableaux&)
  • crire des proc dures pour les manipuler sans associer explicitement les unes aux

autres.

Ex cuter un programme se r duit alors appeler ces proc dures dans un ordre d crit par le

s quen age des

instructions et en

leur

fournissant

les donn es n cessaires

laccomplissement de leurs t ches.

Dans cette approche donn es et proc dure sont trait es ind pendamment les unes des autres

sans tenir compte des relations troites qui les unissent.

Les questions quon peut poser dans ce cas :

1. Cette s paration (donn es, proc dures) est elle utile ?

2. Pourquoi privil gier les proc dures sur les donn es (Que veut-on faire ?) ?

3. Pourquoi ne pas consid rer que les programmes sont avant tout des ensembles

objets informatiques caract ris s par les op rations quils connaissent ?

Les langages objets sont n s pour r pondre ces questions. Ils sont fond s sur la connaissance

dune seule cat gorie dentit s informatiques : les objets.

Un objet incorpore des aspects statiques et dynamiques au sein dune m me notion.

Avec les objets ce sont les donn es qui deviennent pr pond rantes. On r pond tout dabord

la question De quoi parle-t-on ?

Un programme est constitu dun ensemble dobjets chacun disposant dune partie proc dures

et dune partie donn es. Les objets interagissent par envoie de messages.

Chapitre extrait du cours de Mlle Sghair Im ne

1

1.2 D finitions

1.2.1 POO

La POO est une m thode dimpl mentation dans laquelle les programmes sont organis s sous

formes de collections coop ratives dobjets, dont chacun repr sente une instance dune classe

quelconque et dont toutes les classes sont membres dune hi rarchie de classes unis travers

des relations dh ritage.

1.2.2 Algorithmique Objet

Dans lapproche orient objet un algorithme sera essentiellement vu comme un ensemble

dobjets

auxquels lutilisateur envoie des messages et qui sen envoient pendent le fonctionnement.

Ces objets seront toujours pour lutilisateur des boites noires et qui contiendront des variables

locales, inconnues de lenvironnement, et qui ne sy int ressera dailleurs pas. Le seul moyen

dacc der ces objets sera lenvoie des messages quils sont capables de comprendre.

Rq : La sp cification dun syst me dans lapproche OO va saxer principalement sur la

d termination des objets manipuler. Une fois cette tape r alis le concepteur naura plus

qu r aliser les fonctions de haut niveau qui sappuient sur les objets et les familles dobjets

d finis.

1.2.3 Objet et classe

Un objet est une entit logicielle :

  • Ayant une identit
  • Capable de sauvegarder un tat c'est- -dire un ensemble dinformation dans des variables

internes.

  • R pondant des messages pr cis en d clenchant des activations internes appropri s qui

changent l tat de lobjet. Ces op rations sont appel es m thodes. Ce sont des fonctions li es

des objets et qui pr cisent le comportement de ces objets.

1.2.4 Attributs

Les attributs dun objet sont lensemble des informations se pr sentant sous forme de variable

et permettant de repr senter l tat de lobjet.

1.2.5 Message

Un message est une demande dactivation dune m thode envoy un objet.

1.2.6 M thodes

Une m thode est une fonction ou proc dure li e un objet qui est d clench e la r ception

dun message particulier : la m thode d clench e correspond strictement au message re u. La

Chapitre extrait du cours de Mlle Sghair Im ne

2

liste des m thodes d finies au sein dun objet constitue linterface de lobjet pour lutilisateur

: ce sont les messages que lobjet peut comprendre si on les lui envoie et dont la r ception

d clenche les m thodes correspondantes.

1.2.7 Signature

La signature dune m thode repr sente la pr cision de son nom, du type de ses arguments et

du type de donn e retourn e.

1.3 Concept de base de la POO

La POO se base sur les notions cl s suivantes :

  • Encapsulation
  • Abstraction
  • Classe et objets
  • H ritage
  • Polymorphisme

1.3.1 Encapsulation

Lencapsulation est le faite quun objet renferme ses propres attributs et ses m thodes. Les d tails de

limpl mentation dun objet sont masqu s aux autres objets du syst me objets. On dit quil ya

encapsulation de donn es et du comportement des objets.

On pr cise trois modes dacc s aux attributs dun objet.

  • Le mode public avec lequel les attributs seront accessibles directement par lobjet lui-m me ou par

dautres objets. Il sagit du niveau le plus bas de protection.

  • Le mode private avec lequel les attributs de lobjet seront inaccessibles partir dautres objets :

seules les m thodes de lobjet pourront y acc der. Il sagit du niveau le plus fort de protection.

  • Le mode protected : cette technique de protection est troitement associ e la notion dh ritage

(suite du cours).

1.3.2 Abstraction

Cest le faite de se concentrer sur les caract ristiques importantes dun objet selon le point de vue de

lobservateur.

Labstraction est un principe qui consiste ignorer certains aspects dun sujets qui ne sont pas

importants pour le probl me dans le but de se concentrer sur ceux qui le sont.

Exemple : Dans la classe Voiture , la propri t couleur dans la gestion dun parking ne nous

int resse pas. Donc, il nest pas judicieux de la mentionner. (On en fait abstraction).

1.3.3 Classes, objets, instances

(cid:131) Une classe est un ensemble dobjets qui ont en commun :

Chapitre extrait du cours de Mlle Sghair Im ne

3

  • les m mes m thodes
  • les m mes types dattributs

Classe = attributs + m thodes + instanciations

(cid:131) Une instance dune classe est un objet particulier dune classe qui peut activer les m thodes de

la classe et qui a des valeurs particuli res de ses attributs.

(cid:131) On d finit lobjet comme linstance dune classe. La classe repr sente pour lobjet ce que

repr sente le type pour la variable. Un objet est caract ris par :

o Son identit (OID) : valeur unique et invariante qui caract rise lobjet

o Son comportement : qui est d fini travers les m thodes applicables cet objet et qui

o caract risent sa fa on dagir et de r agir dans son environnement.

o Son tat : qui constitue lensemble des valeurs des attributs de cet objet.

(cid:131) Une classe est un type abstrait qui encapsule donn es et traitement. Cest une sorte de moule

qui permet ensuite de cr er autant dinstances quon veut. Ces instances seront des objets de la

classe auxquelles on pourra effectivement envoyer des messages qui activeront les m thodes

correspondantes.

1.3.4 H ritage

La notion dh ritage est une relation entre diff rentes classes permettant de d finir une nouvelle classe

en se basant sur les classes existantes. On parle dh ritage simple lorsquune classe fille ne poss de

quune classe m re.

On parle dh ritage multiple lorsquune classe fille poss de plusieurs classes m res.

Chapitre extrait du cours de Mlle Sghair Im ne

4

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

1.3.5 Polymorphisme

Le terme polymorphisme issu du grec signifie la facult de prendre plusieurs formes.

Une entit est polymorphe si lex cution elle peut se r f rer des instances de classe diff rentes.

Une entit est polymorphe si lex cution elle peut se r f rer des instances de classe diff rentes.

Exemples :

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

Le polymorphisme est un m canisme qui permet une sous classe de red finir une m thode dont elle

a h rit tout en gardant la m me signature de la m thode.

Chapitre extrait du cours de Mlle Sghair Im ne

5

Chapitre 2 : El ments syntaxiques du langage C#

C# est un langage fortement typ , c'est- -dire que toutes les op rations sur des variables sont

effectu es en tenant compte de leur type, afin de maintenir l'int grit des donn es affect es ces

variables. Pour allouer de la m moire une variable, on cr e une instruction avec dune part le type et

dautre part le nom de la variable.

2.1 Les types

Publicité

Les types pr sent s dans le tableau suivant, lexception du type string sont stock s par valeur.

Classe

System.SByte

System.Byte

System.Int16

System.Int32

System.Uint32

System.Int64

System.Single

Alias

sbyte

byte

short

int

uint

long

float

Octets

1

1

2

4

4

8

4

Valeurs cod es

128 127

0 255

32768 32767

2147483648 2147483647

0 4294967295

9223372036854775808 9223372036854775807

3,4E+38 3,4E+38

System.Double

double

8

1,79E+308 1,79E+308

System.Decimal

decimal

16

7,9E+29 7,9E+29

System.Char

System.Boolean

System.String

char

bool

string

2

4

*

Caract re Unicode (UTF16)

Valeur true ou false

Cha ne de caract res

C# supporte deux sortes de types:

(cid:153) Les types valeur qui incluent les types simples (char, int..), les types enum ( num rations) et

les types struct (structures)

(cid:153) Les types r f rence qui incluent les types class (classes), interface (interfaces), delegate

(d l gu s) et array (tableaux)

Une variable de type valeur contient directement les donn es, alors qu'une variable de type r f rence

ne contient que la r f rence un objet (un peu comme le ferait un pointeur).

Lors de l'utilisation de constantes litt rales un suffixe peut tre utilis . Voici quelques exemples

montrant comment sp cifier des valeurs litt rales:

(cid:153) object o = null;

(cid:153) string s = "bonjour";

(cid:153) sbyte val = 24;

(cid:153) short val = 24;

(cid:153) int val = 24;

(cid:153) long val1 = 24; | long val2 = 54L;

(cid:153) byte val1 = 24;

(cid:153) ushort val1 = 24;

(cid:153) uint val1 = 24; | uint val2 = 54U;

(cid:153) float val = 1.45F;

(cid:153) double val1 = 1.45; |double val2 = 3.23D;

2.2 Les op rateurs

Pour traiter la variable on utilise des op rateurs. Voici les op rateurs dans leur ordre de priorit (on

pourra utiliser des parenth ses pour red finir les priorit s comme en math matique.) :

Extrait de : C# : Lessentiel en concentr , APPRENTISSAGE DU LANGAGE C# ,&

6

Op rateur C#

Signification

Op rateurs de Calculs Ces op rateurs permettent de faire des calculs

Multiplication.

Division.

Modulo.

Addition.

Soustraction.

Ces op rateurs permettent de retourner des bool ens (vrai ou faux)

Teste le type dun objet

Inf rieur .

Sup rieur .

Inf rieur ou gal, sup rieur ou gal.

Diff rent de.

Est gal

Ces op rateurs traitent des variables et en ret

ournent

une.

ET logique (vrai si tous les membres sont vrai)

OU logique (vrai si au moins un des membres est vrai)

Retourne lop rande de gauche si nonnull ou bien celui de droite.

Renvoie var1 si cond est vrai ou alors var2

Ces op rateurs permettent dattribuer une valeur une variable

Attribution (permet de donner une valeur une variable).

Permet de contracter la variable de lop rateur et de lattribution

Exemple : a += b a = a + b

Ces op rateurs r attribuent une variable sa valeur modifi e.

Ajoute 1 la valeur.

Exemple : i ++ i = i + 1

Enl ve 1 la valeur i i = i 1

*

/

%

+

Operateurs de Tests

Is

<

>

<=,>=

!=

==

Les op rateurs de

Logique

&&

||

??

Cond ? var1 : var2

Les op rateurs

dAttribution

=

+=, =,*=,/=,%=,&=,|=

Incr mentation

++

Exemples :

(cid:153) int a; //on d clare a de type int

(cid:153) int b = 5; // on d clare b et on lui attribue la valeur 5

(cid:153) a = 0; // on attribu la valeur 0 dans a

System.Console.WriteLine("a=\t"+a.ToString()+"\n b=\t" + b.ToString()

+ "\n");

La m thode ToString() appliqu e un int x, "x.ToString()" retourne une chaine de texte contenant sa

valeur.

L'op rateur "+" entre des string les concat nes en les mettant la suite.

"\n" et "\t" sont des caract res sp ciaux

Publicité

(cid:153) a += a + ++b; // b=b+1; a=a+a+b;

System.Console.WriteLine("a=\t"+a.ToString()+"\nb=\t" + b.ToString()

+ "\n");

(cid:153) a /= b; // a=a/b

(cid:153) a -= 2b++a; // a=a-2ba; b+=1;

System.Console.WriteLine("a=\t"+a.ToString()+"\nb=\t" + b.ToString()

+ "\n"); System.Console.ReadKey(); // attend que l'utilisateur appuie

sur

une touche Retour

(cid:198) Console: a= 0

b= 5

a= 6

Extrait de : C# : Lessentiel en concentr , APPRENTISSAGE DU LANGAGE C# ,&

7

b= 6

a= -11

b= 7

2.3 Les cha nes de caract res

En C#, tout ce qui est entre guillemets est consid r comme une cha ne.

string MyString = "Une chaine";

Soit :

string MyString = "5" + "5";

int MyInteger = 5 + 5;

les valeurs des variables sont les suivantes :

My Integer est =10 car 5+5=10.

Alors que la chaine MyString = 55.

Quand on ajoute une chaine une autre, la deuxi me est simplement coll e la premi re.

2.3.1 Comparaison de deux caract res

Soient deux caract res C1 et C2. Il est possible de les comparer avec les op rateurs <, <=, ==, !=, >,

>=

Ce sont alors leurs codes ASCII, qui sont des nombres, qui sont alors compar s. On rappelle que selon

l'ordre ASCII on a les relations suivantes :

espace < .. < '0' < '1' < .. < '9' < .. < 'A' < 'B' < .. < 'Z' < .. < 'a' < 'b' < .. <'z'

2.3.2 Comparaison de deux cha nes de caract res

Elles sont compar es caract re par caract re. La premi re in galit rencontr e entre deux caract res

induit une in galit de m me sens sur les cha nes.

Exemples :

Soit comparer les cha nes "Chat" et "Chien"

"Chat" "Chien" (cid:198) 'C' = 'C' , 'h' = 'h' , 'a' < 'i' (cid:198) "Chat" < "Chien".

Soit comparer les cha nes "Chat" et "Chaton". Il y a galit tout le temps jusqu' puisement de la

cha ne "Chat"(cid:198) la cha ne puis e est d clar e la plus "petite". On a donc la relation "Chat" <

"Chaton".

2.3.3 Fonctions de comparaisons de deux cha nes

On peut utiliser ici les op rateurs relationnels <, <=, ==, !=, >, >= ou des m thodes de la classe String

:

String chaine1, chaine2;

chaine1=&;

chaine2=&;

int i=chaine1.CompareTo(chaine2);

boolean egal=chaine1.Equals(chaine2)

Ci-dessus, la variable i aura la valeur : 0 si les deux cha nes sont gales, 1 si cha ne n 1 > cha ne n 2

et -1 si cha ne n 1 < cha ne n 2

La variable egal aura la valeur true si les deux cha nes sont gales.

2.3.4 La d sp cialisation

Pour les strings il existe des caract res sp ciaux dont celui du retour la ligne et de la tabulation.

Voici quelques caract res sp ciaux :

(cid:153) \n, \r : retour la ligne

(cid:153) \t : tabulation (pratique pour les alignements verticaux)

(cid:153) \\ : permet dafficher un antislash

(cid:153) \" : permet dafficher un guillemet

(cid:153) \xXX ou XX est une valeur hexad cimale de deux caract res (chacun entre 0 et F) : permet

dafficher un caract re par son code hexa.

Extrait de : C# : Lessentiel en concentr , APPRENTISSAGE DU LANGAGE C# ,&

8

Si nous ne voulons pas b n ficier du support de ces caract res et avoir une cha ne non interpr t e, il

suffit de pr c der la cha ne par un @, ces cha nes peuvent contenir de r els retours la ligne. Ces

cha nes peuvent vent tre appel es cha ne Verbatim .

2.4 Conversion de types

Si Nous prenons l'exemple suivant:

byte val1 = 12;

byte val2 = 20;

int total;

total = val1 + val2;

Console.WriteLine (total);

Sa compilation provoque un message du genre: "Cannot implicitely convert type 'int' to 'byte'". En

effet, le r sultat du calcul est un int et non un byte. Pour placer le r sultat dans une variable de type

byte il faut le reconvertir en byte.

Une conversion de type peut se faire explicitement ou implicitement.

2.4.1 Conversions implicites

La conversion entre deux types peut s'effectuer de mani re automatique (implicite) seulement si elle

n'affecte pas la valeur convertie. Reprenons l'exemple pr c dent, mais avec la variable total de type

long:

byte val1 = 12;

byte val2 = 20;

long total;

total = val1 + val2;

Console.WriteLine (total);

Cette fois le compilateur ne g n re aucun message d'erreur.

En effet, le sch ma suivant donne les diverses possibilit s de conversions implicites prises en charge

par C#:

2.4.2 Conversions explicites

Pour les conversions qui ne peuvent se faire implicitement, on a la possibilit d'utiliser le transtypage

(cast), c'est- -dire une conversion explicite. En voici quelques exemples:

(cid:153) de int en short

(cid:153) de float en int

(cid:153) d'un type num rique en char

(cid:153) etc

Il convient d' tre prudent avec l'utilisation du transtypage, car cette op ration force le compilateur

effectuer une conversion d'o un risque d'alt ration des donn es. Voici un exemple typique de

transtypage:

Extrait de : C# : Lessentiel en concentr , APPRENTISSAGE DU LANGAGE C# ,&

9

long tot = 20000;

int k = (int)tot;

La conversion de long en int n'affecte pas la valeur 20000, car elle peut tre contenue dans une

variable de type int. En revanche le code qui suit peut causer des probl mes:

long tot = 3000000000;

int k = (int)tot;

car la variable k contient la valeur -1294967296, ce qui est manifestement faux et r sulte de la

troncation de 8 bytes 4 bytes avec "mauvaise" prise en compte du bit de signe.

2.4.3 Conversions entre nombres et cha nes

Une conversion courante en programmation concerne les nombres et les cha nes de caract res. Le fait

que la classe Object impl mente une m thode ToString, qui a t remplac e dans tous les type .NET

pr d finis, permet d'obtenir une repr sentation litt rale de l'objet:

int k = 12;

string s = k.ToString();

Pour effectuer la transformation inverse, c'est- -dire passer d'une cha ne de caract res un nombre il

est possible d'utiliser la m thode Parse, offerte par tous les types pr d finis:

string s = "120";

int k =int.Parse(s);

Console.WriteLine (k);

Il faut cependant remarquer que Parse() peut provoquer une erreur, et lever une exception qu'il faut

traiter, si la conversion n'est pas faisable.

2.4.4 Boxing (embo tage) et unboxing (d sembo tage)

Tous les types, m me les types simples pr d finis, d rivent du type Object. Cela permet de travailler

avec des valeurs litt rales comme s'il s'agissait d'objets:

string s = 12.ToString();

Le boxing peut tre vu comme un transtypage d'un type valeur un type r f rence. Dans l'exemple

pr c dent le boxing est effectu de mani re implicite, mais on peut galement le faire de fa on

explicite comme dans:

int k = 30;

object obj = k; // boxing en int

Le unboxing concerne l'op ration inverse dans laquelle un type r f rence est transtyp en type valeur.

int k = 30;

object obj = k; // boxing d'un int en objet

int j = (int)obj; // unboxing pour revenir un int

2.5 Expressions bool ennes

Les op rateurs utilisables sont AND (&&) OR(||) NOT (!). Le r sultat d'une expression bool enne est

un bool en.

priorit s des op rateurs :

1. !

2. &&

3. ||

Publicité

int fin;

int x;

fin= x>2 && x<4;

2.6 Les tableaux

Nous pouvons cr er des tableaux de n'importe quel objet.

La d claration est similaire celle des objets :

byte[] MyArray;

Le code ci-dessus cr e une r f rence un objet de type tableau d'octets. C'est pour

Extrait de : C# : Lessentiel en concentr , APPRENTISSAGE DU LANGAGE C# ,&

10

l'instant une simple r f rence et il ne contient aucun objet, il est null.

Pour cr er l'objet, nous utilisons le mot-cl new et devons pr ciser la taille de notre tableau.

Exemple:

byte[] MyArray;

MyArray = new byte[10];

Nous avons cr un tableau d'octets avec 10 l ments dedans. Ce tableau est r f renc par MyArray.

Nous pouvons maintenant lire/ crire n'importe laquelle des 10 valeurs dans le tableau simplement en

indiquant l'index de la valeur d sir e.

MyArray[0] = 123; // first index

MyArray[9] = 99; // last index

MyArray[10] = 1; //...ERROR!!

En effet, les index d butent 0. Donc pour un tableau de 10 l ments, les index vont de 0 9. L'acc s

l'index 10 ne fonctionnera pas et g n rera une exception.

Nous pouvons assigner des valeurs aux l ments du tableau lors de sa d claration.

L'exemple suivant va stocker les nombre de 1 10 dans les index de 0 9 :

byte[] MyArray = new byte[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

Pour copier un tableau, nous utilisons la classe Array comme suit :

byte[] MyArray1 = new byte[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

byte[] MyArray2 = new byte[10];

Array.Copy(MyArray1, MyArray2, 5);// Copie de 5 l ments seulement

Une propri t importante et tr s utile d'un tableau est sa propri t Length. Nous pouvons l'utiliser

pour d terminer le nombre d' l ments qu'il contient.

byte[] MyArray1 = new byte[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

byte[] MyArray2 = new byte[10];

Array.Copy(MyArray1, MyArray2, MyArray1.Length);//Copie tout le tableau

2.7 Ecriture sur cran

Il existe diff rentes instructions d' criture l' cran :

Console.Out.WriteLine(expression)

Console.WriteLine(expression)

Console.Error.WriteLine (expression)

o expression est tout type de donn e qui puisse tre converti en cha ne de caract res pour tre affich

l' cran. La classe System.Console donne acc s aux op rations d' criture cran (Write, WriteLine). La

classe Console a deux propri t s Out et Error :

(cid:153) Console.WriteLine() est quivalent Console.Out.WriteLine() et crit sur le flux Out

associ habituellement l' cran.

(cid:153) Console.Error.WriteLine() crit sur le flux Error, habituellement associ lui aussi l' cran.

Les flux Out et Error sont associ s par d faut l' cran. Mais ils peuvent tre redirig s vers des fichiers

texte au moment de l'ex cution du programme.

2.8 Lecture de donn es tap es au clavier

Le flux de donn es provenant du clavier est d sign par l'objet Console.In de type StreamReader. Ce

type d'objets permet de lire une ligne de texte avec la m thode ReadLine :

String ligne=Console.In.readLine();

La ligne tap e au clavier est rang e dans la variable ligne et peut ensuite tre exploit e par le

programme.Le flux In peut tre redirig vers un fichier comme les flux Out et Error.

Exemple d'entr es-sorties

Voici un court programme d'illustration des op rations d'entr es-sorties clavier/ cran :

using System;

public class io1{

public static void Main (){

// criture sur le flux Out

object obj=new object();

Extrait de : C# : Lessentiel en concentr , APPRENTISSAGE DU LANGAGE C# ,&

11

Console.Out.WriteLine(""+obj);

// criture sur le flux Error

int i=10;

Console.Error.WriteLine("i="+i);

// lecture d'une ligne saisie au clavier

Console.Out.Write("Tapez une ligne : ");

string ligne=Console.In.ReadLine();

Console.Out.WriteLine("ligne="+ligne);

}//fin main

}//fin classe

et les r sultats de l'ex cution :

System.Object

i=10

Tapez une ligne : je suis l

ligne=je suis l

Les instructions

object obj=new object();

Console.Out.WriteLine(""+obj);

ont pour but de montrer que n'importe quel objet peut faire l'objet d'un affichage.

2.9 Les instructions de contr le du d roulement du programme

2.9.1 Arr t

La m thode Exit d finie dans la classe Environment permet d'arr ter l'ex cution d'un programme.

Syntaxe : void Exit(int status)

Elle arr te processus en cours et rend la valeur status au processus p re

exit provoque la fin du processus en cours et rend la main au processus appelant. La valeur de status

peut tre utilis e par celui-ci.

Environment.Exit(0);

arr tera l'ex cution du programme avec une valeur d' tat 0.

2.9.2 Structure de choix simple

syntaxe : if (condition) {actions_condition_vraie;} else {actions_condition_fausse;}

(cid:153) la condition est entour e de parenth ses.

(cid:153) chaque action est termin e par point-virgule.

(cid:153) les accolades ne sont pas termin es par point-virgule.

(cid:153) les accolades ne sont n cessaires que s'il y a plus d'une action.

(cid:153) la clause else peut tre absente.

(cid:153) Il n'y a pas de clause then.

Exemple

if (x>0) { nx=nx+1;sx=sx+x;} else dx=dx-x;

On peut imbriquer les structures de choix :

if(condition1)

if (condition2)

{......}

else //condition2

{......}

else //condition1

{.......}

Exemple :

public static void Main()

{ int n=0;

if(n>1)

if(n>6) Console.Out.WriteLine (">6");

else; // else du if(n>6) : rien faire

Extrait de : C# : Lessentiel en concentr , APPRENTISSAGE DU LANGAGE C# ,&

12

else Console.Out.WriteLine ("<=1"); // else du if(n>1)

}

Ici nous voulions mettre un else au if(n>1) et pas de else au if(n>6). Nous sommes oblig s de

mettre un else au if(n>6), dans lequel il n'y a aucune instruction car un else se rapporte toujours au if

le plus proche.

.

2.9.3 Structure de cas

La syntaxe est la suivante :

switch(expression) {

case v1:

actions1;

break;

case v2:

actions2;

break;

. .. .. .. .. ..

default:

actions_sinon;

break;

}

(cid:153) La valeur de l'expression de contr le, ne peut tre qu'un entier.

(cid:153) l'expression de contr le est entour e de parenth ses.

(cid:153) la clause default peut tre absente.

(cid:153) les valeurs vi sont des valeurs possibles de l'expression. Si l'expression a pour valeur vi , les

actions derri re la clause case vi sont

(cid:153) ex cut es.

Publicité

(cid:153) l'instruction break fait sortir de la structure de cas. Si elle est absente la fin du bloc d'instructions

de la valeur vi, le compilateur

(cid:153) signale une erreur.

Exemple :

int choix=0; bool erreur=false;

switch(choix){

case 0: Environment.Exit(0);

case 1: M1();break;

case 2: M2();break;

default: erreur=true;break;

}

2.10 Structure de r p tition

2.10.1 Nombre de r p titions connu

(cid:153) Structure for

La syntaxe est la suivante :

for (i=id;i<=if if;i=i+ip){

actions;

}

les 3 arguments du for sont l'int rieur d'une parenth se et s par s par des points-virgules.

chaque action du for est termin e par un point-virgule.

l'accolade n'est n cessaire que s'il y a plus d'une action.

l'accolade n'est pas suivie de point-virgule.

(cid:131)

(cid:131)

(cid:131)

(cid:131)

L' quivalent algorithmique est la structure pour :

pour i variant de ideb ifin avec un pas de ipa

actions

finpour

qu'on peut traduire par une structure tantque :

=ideb

i !

Extrait de : C# : Lessentiel en concentr , APPRENTISSAGE DU LANGAGE C# ,&

13

tantque i<=ifin

actions

i!

+ipa

fintantque

(cid:153) Structure foreach

La syntaxe est la suivante :

for foreach (type variable in expression){

instructions;

}

expression est une collection d'objets. La collection d'objets que nous connaissons d j est le

tableau

type est le type des objets de la collection. Pour un tableau, ce serait le type des l ments du

tableau

variable est une variable locale la boucle qui va prendre successivement pour valeur, toutes

les valeurs de la collection.

(cid:131)

(cid:131)

(cid:131)

Exemple :

string[] amis=new string[]{"paul","h l ne","jacques","sylvie"};

foreach(string nom in amis){

Console.Out.WriteLine(nom);

}

afficherait :

paul

h l ne

jacques

sylvie

2.10.2 Nombre de r p titions inconnues

(cid:153) Structure tantque (while)

while while(condition){

actions;

}

On boucle tant que la condition est v rifi e. La boucle peut ne jamais tre ex cut e.

(cid:131)

(cid:131)

(cid:131)

(cid:131)

la condition est entour e de parenth ses.

chaque action est termin e par point-virgule.

l'accolade n'est n cessaire que s'il y a plus d'une action.

l'accolade n'est pas suivie de point-virgule.

La structure algorithmique correspondante est la structure tantque :

tantque condition

actions

fintantque

(cid:153) Structure r p ter jusqu' (do while)

La syntaxe est la suivante :

do{

instructions;

}while while(condition);

On boucle jusqu' ce que la condition devienne fausse ou tant que la condition est vraie. Ici la boucle

est faite au moins une fois.

notes

(cid:131)

(cid:131)

(cid:131)

(cid:131)

la condition est entour e de parenth ses.

chaque action est termin e par point-virgule.

l'accolade n'est n cessaire que s'il y a plus d'une action.

l'accolade n'est pas suivie de point-virgule.

La structure algorithmique correspondante est la structure r p ter & jusqu' :

r p ter

actions

jusqu' condition

Extrait de : C# : Lessentiel en concentr , APPRENTISSAGE DU LANGAGE C# ,&

14

(cid:153) Structure pour g n rale (for)

La syntaxe est la suivante :

for for(instructions_d part;condition;instructions_fin_boucle){

instructions;

}

On boucle tant que la condition est vraie ( valu e avant chaque tour de boucle). Instructions_d part

sont effectu es avant d'entrer dans la boucle pour la premi re fois. Instructions_fin_boucle sont

ex cut es apr s chaque tour de boucle.

(cid:131)

les diff rentes instructions dans instructions_depart et instructions_fin_boucle sont s par es

par des virgules.

La structure algorithmique correspondante est la suivante :

instructions_d part

tantque condition

actions

instructions_fin_boucle

fintantque

Exemples

Les programmes suivants calculent tous la somme des n premiers nombres entiers.

(cid:131)

(cid:131)

(cid:131)

for for(i=1, somme=0;i<=n;i=i+1)

somme=somme+a ;

for (i=1, somme=0;i<=n;somme=somme+a , i=i+1);

i=1;somme=0;

while(i<=n)

{ somme+=i; i++; }

i=1; somme=0;

(cid:131) do somme+=i++;

while (i<=n);

2.10.3 Instructions de gestion de boucle

break fait sortir de la boucle for, while, do ... while.

continue fait passer l'it ration suivante des boucles for, while, do ... while

Extrait de : C# : Lessentiel en concentr , APPRENTISSAGE DU LANGAGE C# ,&

15