• Aucun résultat trouvé

remplacé le Pascal vers 1992. Le C++ (une extension de C) a été enseignée depuis 1996 pour la programmation orientée objet. Le Java s’ajoute vers 2000.

N/A
N/A
Protected

Academic year: 2022

Partager "remplacé le Pascal vers 1992. Le C++ (une extension de C) a été enseignée depuis 1996 pour la programmation orientée objet. Le Java s’ajoute vers 2000. "

Copied!
15
0
0

Texte intégral

(1)

IFT 1179, Automne 2005 (par Le Van N.) Semaine 1 : Les éléments de base du C#

La DESI ( Direction de l’Enseignement de Service en Informatique : www.desi.umontreal.ca) offre des cours de service en programmation depuis 1983.

Au début, on enseignait des langages Fortran, Cobol et Pascal. Le langage C a été introduit vers 1986 et il a

remplacé le Pascal vers 1992. Le C++ (une extension de C) a été enseignée depuis 1996 pour la programmation orientée objet. Le Java s’ajoute vers 2000.

À compter de l’automne 2005, la DESI ajoute le langage C#

avec, temporairement, le seul cours IFT 1179.

C’est un langage qui est basé principalement sur C++, Java et aussi certains styles du VB. Comme c’est le dernier né des langages modernes de la programmation, C# essaie de profiter les points forts de ses prédécesseurs en éliminant certaines complexités du C++, en ajoutant ses propres

nouveautés pour rendre le langage plus complet que le Java.

La DESI vient de réformer ses cours de programmations et la POO se présente dès le premier cours IFT 1810 (C suivi de Java). Durant la période de transition (automne 2005, hiver 2006), la DESI accepte au IFT 1179 des étudiants qui connaissent la programmation traditionnelle (comme le C) mais ne connaissent pas encore la POO.

Ce texte n'est pas encore au niveau des notes de cours.

Notre but est de vous permettre de saisir des explications en classe au lieu de copier toujours des programmes écrits au tableau et qui sont disponibles sur le site de notre cours :

Bonne chance et bon succès!

Le Van Nguyen

levan@iro.umontreal.ca

tél : (514) 343-7410

bureau : 2196, André-Aisenstadt

(2)

IFT 1179, Automne 2005 (par Le Van N.) Semaine 1 : Les éléments de base du C#

A) Quelques mots sur la POO :

Dans notre vie quotidienne, on travaille très souvent avec des objets :

Un tableau dans une salle de cours est un objet.

Il dispose de ses propres informations : - en bois

- de couleur noir

- mesure 2.4 mètre de largeur et 1.9 mètre de hauteur

- etc ...

On peut fabriquer (construire) un tableau par plusieurs manières :

en bois, en métal, en plastique, . . . de telle mesure, de telle couleur, . . . Que peut-on faire avec un tableau ?

écrire au tableau laver le tableau effacer le tableau etc …

Une porte est un autre objet.

On peut construire une porte par plusieurs manières : en bois, en métal, en pailles, . . .

Que peut-on faire avec une porte ? ouvrir la porte

fermer la porte etc …

C’est la même chose en programmation orientée objet (POO) : Quels sont ses champs d’information (ses attribut) ?

Comment construire (instancier) un objet ?

Quelles sont les méthodes qu’on peut appliquer sur l’objet?

En français, on est habitude avec l’écriture écrire au tableau, . . .

pour décrire l’action d’écriture sur l’objet tableau.

En POO, le style d’écriture est du genre : tableau.écriture()

dont l’interprétation est :

appliquer la méthode d’écriture sur l’objet tableau.

De la même manière : porte.fermer()

représente l’action fermer appliquée sur l’objet porte.

(3)

IFT 1179, Automne 2005 (par Le Van N.) Semaine 1 : Les éléments de base du C#

!

"# $ %%

&' (

"Bonsoir".ToUpper() "BONSOIR"

"Bonsoir".IndexOf('o') ) * +

, , - !

$ %%

! " "###

&' (

. $#$ %#& '#& %#&

int.Parse(" 25 ")

,/ *

0# ( )* )") )

1 ( (( $

2 3 (

* ( 3%

4 4 ( ! /5

$ (

+ ,

! " "###

(4)

IFT 1179, Automne 2005 (par Le Van N.) Semaine 1 : Les éléments de base du C#

'

&' (

. $61* 4 7 / % * 61 . $

int.MaxValue * '- '. %'-

" #/ 0

*

1

* "

" 2

31 4

3 "6 3 . '

" 5 # ,

* #

31 4

. 89:8;& < ,/=

" 8>:1? >8 <@@,=

( <,A. $61A B =

( + 3 " $ !

#

31 4 1

< . C =

6

< " . 'C =

4 $

" $ ! #

. $3 3> 0 3 3D 0 3 %

E F 3> F 3F 0$3. 38 $ 36 3 %

G 8 ( # (

Premier exemple d’introduction :

/* Fichier Introd1.cs (1er exemple d'intriduction au langage C#) *

* Ce programme écrit en mode interactif permettant de * - saisir la taille d'une personne en nombre

* de pieds et de pouces tapés au clavier * - convertir et afficher la taille en mètre * en sachant que 1 pied = 0.3048 mètre * et que 1 pied = 12 pouces

*

* Le but de cet exemple est d'avoir un petit aperçu * du langage C#

*

* System.Console.Write : utiliser la méthode écriture (Write) de la * classe Console de l'espace de nom System

(5)

IFT 1179, Automne 2005 (par Le Van N.) Semaine 1 : Les éléments de base du C#

7 * (en pratique : afficher à l'écran) *

* System.Console.WriteLine :

* comme System.Console.Write mais changer de ligne (Line) après avoir * affiché

*

* System.Console.ReadLine : utiliser la méthode lecture jusqu'à la * fin de la ligne (ReadLine) pour retourner toute la ligne lue *

* Si on utilise la déclaration : using System;

* on pourra omettre le mot System. partout dans ce programme.

* (voir les autres exemples) */

class Introd1 {

static void Main(string[] args) {

const double PIED_EN_METRE = 0.3048;

// 1 pied vaut 0.3048 mètre (12 pouces)

System.Console.Write ("Entrez le nombre de pieds dans la taille ");

string strPieds = System.Console.ReadLine();

int nbPieds = int.Parse(strPieds);

// conversion d'une chaîne en entier

System.Console.Write ("Entrez le nombre de pouces dans la taille ");

string strPouces = System.Console.ReadLine();

int nbPouces = int.Parse(strPouces);

double taille = (nbPieds + nbPouces / 12.0) * PIED_EN_METRE;

System.Console.WriteLine("La taille en metre : {0}", taille);

} }

/* Exécution:

Entrez le nombre de pieds dans la taille 5 Entrez le nombre de pouces dans la taille 9 La taille en metre : 1,7526

Press any key to continue

*/

&'( ( 0

#

. #8 " #

# 9 : 2 "

" :

4 " '"

4

; #

(6)

IFT 1179, Automne 2005 (par Le Van N.) Semaine 1 : Les éléments de base du C#

%

'# :: : 4

: + 4

System.Console.Write( . . . ); ou System.Console.WriteLine( . . .);

: 4

$! <== 4

Console.Write(. . .); ou Console.WriteLine( . . .);

7# 9 4

9 1 System.Console.ReadLine() permet de retourner la ligne lue.

%# "#

9 ! " "5

6 " 25 ") convertit la chaîne " 25 " en

2 + 7

-# ! 0

> + 68

.# 4

=?5 5 # 5 5 #

?=

==###

@# A :: 4

System.Console.WriteLine("La taille en metre : {0}", taille);

{0} désigne une seule expression à afficher

Si on veut afficher la taille, le pois et l’âge, une instruction possible sera :

System.Console.WriteLine("La taille {0} metre, age : {1} ans " + " et poids : {2} kg", taille, age, poids);

(7)

IFT 1179, Automne 2005 (par Le Van N.) Semaine 1 : Les éléments de base du C#

- Deuxième exemple d’introduction :

/* Fichier Introd2.cs (deuxième exemple d'introduction au langage C#) *

* C'est une autre version de Introd1.cs */

using System;

class Introd1 {

static void Main(string[] args) {

const double PIED_EN_METRE = 0.3048;

// 1 pied vaut 0.3048 mètre (12 pouces)

Console.Write ("Entrez le nombre de pieds dans la taille ");

string strPieds = Console.ReadLine();

int nbPieds = int.Parse(strPieds);

// conversion d'une chaîne en entier

Console.Write ("Entrez le nombre de pouces dans la taille ");

string strPouces = Console.ReadLine();

int nbPouces = int.Parse(strPouces);

double taille = (nbPieds + nbPouces / 12.0) * PIED_EN_METRE;

Console.WriteLine("La taille en metre : {0}", taille);

} }

En ajoutant la déclaration : using System;

on omet partout System. Et obtient les mêmes résultats.

Troisième exemple d’introduction :

/* Fichier Introd3.cs (informations sur des stations de métro) * Ce programme sera expliqué en classe pour :

* - réviser (ou introduire) la notion de POO * (Programmation orientée objet)

* - introduire le type string en C# (avec méthodes) * Voir l'exécution pour le but du programme

* Le Journal Métro a publié les statistiques de la fréquence * des métros à Montréal, par exemple :

* COTE-DES-NEIGES(26)3509564

* la station COTE-DES-NEIGES était classée 26 ième en 2003.

* la fréquentation en 2004 à cette station est de 3 509 564 * passagers.

*/

using System;

(8)

IFT 1179, Automne 2005 (par Le Van N.) Semaine 1 : Les éléments de base du C#

. class Introd3

{

static void Afficher(string station) {

int indice1 = station.IndexOf('('), indice2 = station.IndexOf(')');

string nomStation = station.Substring(0, indice1);

int rang2003 = int.Parse(station.Substring(indice1+1, indice2-indice1-1));

int freq2004 = int.Parse(station.Substring(indice2+1));

Console.WriteLine("Nom de la sation : {0}", nomStation);

Console.WriteLine("son rang en 2003 : {0}", rang2003);

Console.WriteLine("sa frequence en 2004: {0}", freq2004);

Console.WriteLine();

}

static void Main(string[] args) {

string station1 = "COTE-DES-NEIGES(26)3509564",

station2 = "UNIVERSITE-DE-MONTREAL(38)2610922";

Afficher(station1);

Afficher(station2);

} }

/* Exécution:

Nom de la sation : COTE-DES-NEIGES son rang en 2003 : 26

sa frequence en 2004: 3509564

Nom de la sation : UNIVERSITE-DE-MONTREAL son rang en 2003 : 38

sa frequence en 2004: 2610922

Press any key to continue

*/

&'( ( 0

#

. #( 1 > +

: 1 1 #

# ( :: :: : , 1 #

0 B 4 Afficher(station1); est la version raccourcie de Introd3.Afficher(station1);

# C :: 4

#1 'H + >

"Bonsoir".1 'H )

(9)

IFT 1179, Automne 2005 (par Le Van N.) Semaine 1 : Les éléments de base du C#

@

"Bonsoir".1 'H )- I 2 B

#D " 0 " 3 >

,

"Bonsoir".D " 043, "so"

#D " 0 " > , ,

: >

"Bonsoir".D " 04 "soir"

'# ( ,2 2 4

6 " 25 ") convertit la chaîne " 25 " en

2 + 7

Quatrième exemple d’introduction :

/* Fichier Introd4.cs (informations sur des stations de métro) * C'est le même que Introd3.cs sauf qu'on utilise la méthode * Split pour décomposer une chaîne en plusieurs mots grâce aux * séparateurs des mots (ici les deux caractères ( et )

*

* Voir l'exécution pour le but du programme */

using System;

class Introd4 {

static void Afficher(string station) {

char[] separateurs = {'(', ')'}; // délimiteurs des mots string[] infos = station.Split(separateurs, 5);

// décomposer en (au max.) 5 mots string nomStation = infos[0];

int rang2003 = int.Parse(infos[1]);

int freq2004 = int.Parse(infos[2]);

Console.WriteLine("Nom de la sation : {0}", nomStation);

Console.WriteLine("son rang en 2003 : {0}", rang2003);

Console.WriteLine("sa frequence en 2004: {0}", freq2004);

Console.WriteLine();

}

static void Main(string[] args) {

string station1 = "COTE-DES-NEIGES(26)3509564",

station2 = "UNIVERSITE-DE-MONTREAL(38)2610922";

(10)

IFT 1179, Automne 2005 (par Le Van N.) Semaine 1 : Les éléments de base du C#

&

Afficher(station1);

Afficher(station2);

} }

/* Exécution:

Nom de la sation : COTE-DES-NEIGES son rang en 2003 : 26

sa frequence en 2004: 3509564

Nom de la sation : UNIVERSITE-DE-MONTREAL son rang en 2003 : 38

sa frequence en 2004: 2610922

Press any key to continue

*/

&'( ( 0

D E # A " + >

4

FG H #D( $ JK ( 3 ". '. =

2 68 # &&7 #

8 "2 B 1 I 2 4

4== # :# = != : # J H= != = := =2 : #

4

4== # :# = != : # J H= !=

= := =: :$! $ 6 #

(11)

IFT 1179, Automne 2005 (par Le Van N.) Semaine 1 : Les éléments de base du C#

& L ! B(

F B(

8 2 2 '- '. %'.

'- '. %'- ' #

G ' $ (

( " . C = 2 '- '. %'.

( " . 'C = 2 '- '. %'-

6 $

8 <

2 > #

31 4

H # 8

"19"); // age vaut 19 ans

: H # 8

" 3 "); // 3 tasses de café consommé par jour

F 0 ( * * * B(

$ 3 $ 3 3 03 %

( 0 ( 0 <M * M< @

6 $

F

int age = 25;

Console.WriteLine("Age vaut " + age + " ans");

Console.WriteLine("Age vaut {0} ans", age);

Console.WriteLine("Age vaut {0, 5} ans", age);

Console.WriteLine("Age vaut {0, 5:D} ans", age);

Console.WriteLine("L'entier le plus grand vaut {0}", int.MaxValue);

Console.WriteLine("L'entier le plus grand vaut {0, 15:N}", int.MaxValue);

Console.WriteLine("L'entier le plus grand vaut {0, 15:N0}", int.MaxValue);

: :: 4

(12)

IFT 1179, Automne 2005 (par Le Van N.) Semaine 1 : Les éléments de base du C#

80 * ,/

80 * ,/

80 * ,/

80 * ,/

FN ( 0 * , 7 7O4 P7

FN ( 0 * , 7 7O4 P7 3@@

FN ( 0 * , 7 7O4 P7

, F B(

8 2 2 " -@-%@ '.% 3K &.

" -@-%@ '.% 3K &. %' . #

G ' $ (

( " . C = 2 '- '. %'.

( " . 'C = 2 '- '. %'-

F $ * " 6 0

F

double taille = 1.72;

double poids = double.Parse(" 65,2 ");

Console.WriteLine("La taille vaut " + taille + " metre ");

Console.WriteLine("Le poids vaut {0} ou {1,6} ou {2, 6:F1} ou "

+ " {3,6:F2}",poids, poids, poids, poids);

Console.WriteLine("Le reel le plus grand vaut {0}", double.MaxValue);

Console.WriteLine("Le reel le plus petit vaut {0}", double.MinValue);

: :: 4

(13)

IFT 1179, Automne 2005 (par Le Van N.) Semaine 1 : Les éléments de base du C#

0 4

4= = # :# = != : # J H= !=

= := = 2 : L !M N #

(14)

IFT 1179, Automne 2005 (par Le Van N.) Semaine 1 : Les éléments de base du C#

'

4 F B(

9 1 2 2 2 ! #9 1

4

/* Fichier String_1.cs (1er exemple sur le type string) * Comme C# est TOUT objet, le type string dispose aussi * des champs, des methodes comme une classe :

* chaine.Length : retourne la longueur d'une chaine

* chaine[indice] : retourne le caractere a l'indice mentionne * chaine.ToUpper(): retourne la chaine en tous majuscules * chaine.ToLower(): retourne la chaine en tous minuscules * chaine.Substring(indDepart, longueur) :

* retourne une sous-chaine de telle longueur * a partir de tel indice

* chaine.Substring(indDepart) :

* retourne une sous-chaine a partir de tel indice * jusqu'a la fin de la chaine

* chaine.IndexOf(un caractere) :

* retourne l'indice du premier caractere trouve * (-1 si introuvable)

* chaine.LastIndexOf(un caractere) :

* retourne l'indice du dernier caractere trouve * (-1 si introuvable)

* chaine.Split(tableau de caracteres de separation, nb. maximum de * mots decomposes)

* retourne un tableau de string qui contient des mots de la * chaine grace au tableau de separateur(s) des mots.

* La methode Split est tres utile (entre autres) pour le TP1 *

*/

using System;

class String1 {

static void Main(string[] args) {

string souhait =

"Comment allez-vous? On vous souhaite une bonne session!";

Console.WriteLine("La chaine : {0} \nde longueur {1}", souhait, souhait.Length);

Console.WriteLine("Le caractere a l'indice 2 : {0}", souhait[2]);

Console.WriteLine("En tous majuscules : {0}", souhait.ToUpper());

Console.WriteLine("En tous minuscules : {0}", souhait.ToLower());

Console.WriteLine("Trois premiers caracteres : {0}", souhait.Substring(0, 3));

Console.WriteLine("Indice de la premiere lettre O : {0}", souhait.IndexOf('O'));

Console.WriteLine("Une autre sous-chaine : {0}",

(15)

IFT 1179, Automne 2005 (par Le Van N.) Semaine 1 : Les éléments de base du C#

7 souhait.Substring(20));

Console.WriteLine("Indice de la derniere lettre e : {0}", souhait.LastIndexOf('e'));

Console.WriteLine("Indice de la premiere lettre f : {0}(non trouve)", souhait.IndexOf('f'));

char[] separateurs = new char[] {'!', ' ', '-', '?'};

string[] mots = souhait.Split(separateurs, 15); // au max 15 mots Console.WriteLine("\nLes mots de la chaine :");

foreach(string mot in mots) if (mot.Length > 0)

Console.WriteLine(mot);

Console.WriteLine();

} }

/* Execution:

La chaine : Comment allez-vous? On vous souhaite une bonne session!

de longueur 55

Le caractere a l'indice 2 : m

En tous majuscules : COMMENT ALLEZ-VOUS? ON VOUS SOUHAITE UNE BONNE SESSION!

En tous minuscules : comment allez-vous? on vous souhaite une bonne session!

Trois premiers caracteres : Com Indice de la premiere lettre O : 20

Une autre sous-chaine : On vous souhaite une bonne session!

Indice de la derniere lettre e : 48

Indice de la premiere lettre f : -1(non trouve)

Les mots de la chaine : Comment

allez vous On vous souhaite une bonne session

Press any key to continue

*/

Références

Documents relatifs

On peut donc voir les points A et B de l’exemple ci-dessous comme deux instances d’une classe Point ayant pour attributs les coordonnées x et y et comme méthodes des fonctions

Une classe déclarée abstract ne peut pas être instanciée : il faut définir une classe qui hérite de cette classe et qui implémente les méthodes nécessaires pour ne plus

L’interpréteur java permet d’exécuter une application écrite en langage java (autre qu’une applet), plus spécifiquement un fichier ClassName.class (i.e le java bytecodes). Par

Additionner deux vecteurs donnés ; on écrira pour cela une méthode statique nommée aussi addition (en utilisant ainsi la possibilité de la surcharge) qui recevra en

Les classes dérivées peuvent définir les propres membres, mais aussi redéfinir les méthodes de la classe mère. class particule

r1=new Rectangle(3,8); // Instanciation cet affectation des propriétés r1.perimetre(); // Appel de la méthode périmètre pour r1 int s=r1.surface(); // Appel de la méthode surface

Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ ee Objet 29 mai 2012 1 / 379... La programmation orient´ ee

une commande est créée pour un client et un catalogue donnés, on peut ajouter des articles à une commande, accéder à la liste des articles commandés ainsi que prix total des