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