54
Java C est un langage populaire C++ est une extension du langage C qui est plus populaire que C. Ses nouveautés rendent plus agréable le C et permettent aussi de faire la programmation orientée objet (POO). JAVA (IFT 1810, IFT 1170, IFT 1176) utilise surtout la syntaxe du C++. De plus, Java est un langage purement orienté objet. Dans le cours IFT 1810, on introduit à la programmation orientée objet (POO), à l’aperçu du langage JAVA sans aller dans les détails. Le but de ce résumé est de vous permettre de saisir des explications en classe au lieu de copier des programmes écrits au tableau. Les exemples expliqués en classe et disponibles sur le site Web du cours utilisent l’environnement JCreator. A) Quelques mots sur la POO : Dans notre vie quotidienne, on travaille très souvent avec des objets : Un tableau est un objet. Il dispose de champs d’informations (des attributs) : materiel, couleur, largeur, hauteur : On peut fabriquer (construire, instancier) un tableau par plusieurs manières : matériel : en bois, en métal, en plastique dur, . . . couleur : noire, blanche, . . . largeur : 4.2 mètre, 3.8 mètre, . . . hauteur : 2.3 mètre, 1.90 mètre, . . . Il faut que le tableau existe (soit construit, instancié) avant de parler comment travailler avec un tableau.

Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

  • Upload
    ngokhue

  • View
    221

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

Java

C est un langage populaireC++ est une extension du langage C qui est plus populaire que C. Ses nouveautés rendent plus agréable le C et permettent aussi de faire la programmation orientée objet (POO).

JAVA (IFT 1810, IFT 1170, IFT 1176) utilise surtout la syntaxe du C++. De plus, Java est un langage purement orienté objet.

Dans le cours IFT 1810, on introduit à la programmation orientée objet (POO), à l’aperçu du langage JAVA sans aller dans les détails. Le but de ce résumé est de vous permettre de saisir des explications en classe au lieu de copier des programmes écrits au tableau. Les exemples expliqués en classe et disponibles sur le site Web du cours utilisent l’environnement JCreator.

A) Quelques mots sur la POO   : Dans notre vie quotidienne, on travaille très souvent avec des objets :Un tableau est un objet. Il dispose de champs d’informations (des attributs) : materiel, couleur, largeur, hauteur :On peut fabriquer (construire, instancier) un tableau par plusieurs manières : matériel : en bois, en métal, en plastique dur, . . . couleur  : noire, blanche, . . . largeur  : 4.2 mètre, 3.8 mètre, . . . hauteur  : 2.3 mètre, 1.90 mètre, . . . Il faut que le tableau existe (soit construit, instancié) avant de parler comment travailler avec un tableau. Que peut-on faire avec un tableau ?

En français, on est habitude avec l’action :

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

Page 2: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

En POO, on écrit souvent sous la forme : tableau.écrire(. . .) appliquer la méthode écrire sur l’objet tableau tableau.effacer(. . .) appliquer la méthode effacer sur l’objet 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) :Quelles sont les caractéristiques (champs, attributs) d’un objet ? Comment construire un objet ? Quelles sont les méthodes qu’on peut appliquer sur l’objet ?

Une classe en POO est une unité comportant très souvent :des champs d’informations, des méthodes spéciales s’appelant constructeurs pour construire (instancier) des objets de la classe, des méthodes pour appliquer sur sesobjets, des clauses d’accès (privée, publique), etc . . .

Exemple : Concevoir la classe cercle en sachant qu’un cercle est déterminé par son champ rayon. On peut calculerla surface, le périmètre d’un cercle, etc …

Réponse :

class Cercle{ // l’accès au champ rayon est privé, dans le corps // de la classe Cercle seulement

private double rayon;

// un constructeurpublic Cercle(double r){

rayon = r;}

// un autre constructeur public Cercle(){

rayon = 1.234;}

// méthode calculante et retournant le périmètre

Page 3: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

// d’un cercle où périmètre = 2 x PI x rayon // et en Java, Math.PI fournit le champ PI valant // 3.14159

public double perimetre(){

return 2 * Math.PI * rayon;}

// méthode calculante la surfacepublic double surface(){

return Math.PI * rayon * rayon;}

. . . etc . . .} // fin de la classe Cercle

On apprendra plus tard, les détails de la conception d’une classe. Par contre, on utilisera assez tôt, quelques classes du langage Java : String : classe des chaînes de caractères Integer : classe associée au type int Double : classe associée au type double( Le type double est aussi pour les réels mais plus de chiffres significatifs que le type float ).

Affichage à l’écran : appliquer la méthode printf sur l’objet out du System (l’objet sortie du System est l’écran). System.out.printf(" messages "); System.out.printf(" messages + code format ", etc . . .);

Premier exemple d ' introduction   : (explications : en classe, au premier cours de la partie POO avec Java)

Réaliser un projet en Java permettant de déclarer, d’initialiser les informations suivantes de l’étudiante Lise Charbonneau qui a le code permanent "CHAL12599305" (elle est née le 12 septembre 1993

2013 – 1993 = 20 ans à 2013 le ministère de l’éducation a ajouté 50 au mois de

naissance d’une étudiante : 50 + 9 = 59)

Le projet permet de :- afficher le nom et prénom tel quel, en tous majuscules, en tous minuscules

Page 4: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

- déterminer le sexe (féminin ou masculin)- calculer l’âge brut à l’année 2013

L’exécution du projet donne, par exemple, ce qui suit :

--------------------Configuration: <Default>--------------------Le nom et prénom tel quel : Charbonneau LiseLe nom et prénom en tous majuscules : CHARBONNEAU LISELe nom et prénom en tous minuscules : charbonneau liseSexe : fémininL'âge à 2013 est 20 ans

Quelques réfléxions sur le problème à programmer   :

En langage C, on a déjà travaillé avec certains types de base habituels : int pour les entiers, char pour les caractères, float ou double pour les réels. Les identificateurs de ces types sont en tous minuscules.Il n’y a pas beaucoup de manipulations possibles avec desinformations de ces types. Une classe est une sorte de type élargi, on parle souvent : age est une variable de type int taille est une variable de type double nomPre est un objet de la classe String

des opérations sur des types de base : age1 + age2 : somme des deux âges age1 * age2 : produit des deux âges etc ... des méthodes appliquées sur un objet d’une classe : String nomPre = "Charbonneau Lise";

nomPre est un objet de la classe String nomPre.toUpperCase() vaut "CHARBONNEAU LISE"

on applique la méthode toUpperCase() pour convertir une chaîne en tous majuscules

nomPre.toLowerCase() vaut "charbonneau lise"on applique la méthode toLowerCase() pour convertir une chaîne en tous minuscules

nomPre.charAt(0) vaut ‘C’le caractère à l’indice 0 du nom et prénom est la lettre ‘C’

nomPre.charAt(2) vaut ‘a’le caractère à l’indice 2 du nom et prénom est la lettre ‘a’

nomPre.substring(2,7) vaut "arbon"la sous-chaîne entre l’indice 2 inclu et l’indice 7 exclu du nom et prénom est la chaîne de caractères "arbon"

etc . . .

Integer.parseInt("93") vaut 93

Page 5: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

On utilise la méthode de conversion d’une chaîne numérique en valeur entière de la classe Integer.

etc . . .

On rentre alors dans le monde de la programmation orientée objet dont on parle constamment des objets d’une classe, des méthodes appliquées sur un objet, des méthodes d’une classe!De plus, le Java utilise une partie de syntaxe du C++, uneextension du langage C. On retrouvera une partie du C en Java avec quelques nouveautés du C++ dans la plupart desexemples vus en IFT 1810 :

- commentaires en ligne avec // commentaire . . .

- flexibilité des déclarations mélanger les déclarations et les traitements- etc . . .

Le programme suivant sera expliqué en détails en classe./* Fichier Introd1.java

public class Introd1 {

public static void main(String[] args) {

final int ANNEE_COURANTE = 2013; String nomPre = "Charbonneau Lise",

codePerm = "CHAL07539305";

System.out.printf("Le nom et prénom tel quel : %s\n", nomPre); System.out.printf("Le nom et prénom en tous majuscules : %s\n", nomPre.toUpperCase()); System.out.printf("Le nom et prénom en tous minuscules : %s\n", nomPre.toLowerCase());

if (codePerm.charAt(6) >= '5') System.out.printf("Sexe : féminin\n"); else System.out.printf("Sexe : masculin\n\n");

int anneeNais = 1900 + Integer.parseInt( codePerm.substring(8, 10)) ;

System.out.printf("L'âge à %d est %d ans\n\n", ANNEE_COURANTE, ANNEE_COURANTE - anneeNais); }}

Observations et commentaires du programme   :

Aux pages 3 et 4, on a déjà parlé un peu de la POO et du Java pour une partie du programme. Les explications

Page 6: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

suivantes sont destinées surtout aux étudiants qui connaissent le C mais pas encore du Java, ni de la programmation orientée objet (POO).

1. L’identificateur String se commence par une lettre majuscule. Ce n’est pas un type, c’est le nom d’une classe, une terminologie fréquemment utilisée en POO.

2. Le Java vu dans IFT 1810 utilise souvent des classes prédéfinies (String, Integer, . . .) et leurs méthodes.

3. Le Java utilise certaines conventions pour les identificateurs (constantes en lettres majuscules, variables, méthodes : premier mot en minuscules, début d’un nouveau mot en majuscule : nbPieds, nbLivres, toUpperCase(), etc).

4. La déclaration en Java : final int ANNEE_COURANTE = 2013; est équivalente à celle-ci du C : const int ANNEE_COURANTE = 2013;

ANNEE_COURANTE est de type int et sa valeur est "finale" (inchangée => c’est une constante).

5. La déclaration en Java :

String nomPre = "Charbonneau Lise", codePermanent = "CHAL12599001";

déclare et initialise 2 objets nomPre et codePermanent de la classe String qu’on pourra appliquer plusieurs méthodes existantes sur ces deux objets.

6. Les clauses de visibilité public, static seront expliqués plus tard.

Trois formes d’accès en Java   :

1. forme 1 (très fréquente   : 80 % des cas)   :

objet.méthode (……..)Appliquer une méthode sur l’objet

Exemples : "Bonsoir".length() retourne 7 (longueur de la chaîne) "Bonsoir".charAt(0) retourne ‘B’ (le caractère à

Page 7: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

l’indice 0 est la lettre ‘B’) "Bonsoir".indexOf(‘n’) retourne 2 (on trouve la lettre ‘n’ à l’indice 2 "Bonsoir".substring(1, 3) retourne "on" (la sous-chaîne délimitée entre l’indice 1 inclus et l’indice 3 exclu)

2. forme 2 (moins fréquente   : 15 % des cas)   :

classe.méthode static(……..)Utiliser une méthode static d’une classe

Exemples : Integer.parseInt("17") retourne 17 (valeur entière) Math.sqrt(16.0) retourne la racine carrée de 16.0 qui vaut 4.0

3. forme 3 (peu fréquente   : 5 % des cas)   :

classe.champ staticAccès à un champ (attribut) static d’une classe

Exemples : Math.PI vaut 3.14159… (valeur PI de la classe Math) Integer.MAX_VALUE retourne 231-1 (l’entier le plus grand)

B) Notions de base de Java vs C   : if, switch, do … while, while, for : comme le C(plus tard, on verra une autre forme de for en Java).Des opérateurs : pareils en CPour les réels : Dans IFT 1810, en Java, on utilise couramment le type double au lieu du type float.(double pour réel en double précision).Commentaire en ligne : une des nouveautés en Java // contenu du commentaireExemple : final double TAUX_TPS = 0.05; // 5 % pour taxe TPS( TAUX_TPS est de type réel, sa valeur est 0.05 et cette valeur est finale, on ne change plus, ne modifie plus.

Page 8: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

C’est une constante ). Flexibilité de déclaration : on peut mélanger des déclarations avec des instructions.

Exemples : for(int n = 1; n <= 5; n++) System.out.printf("Bonjour!\n");

int somme = 0; for (int n = 1; n <= 5; n += 2) somme += n ;

Autres nouveautés   : à venir

C)Exemples simples   : Exemple1   : Allure d’un programme très simple en Java

Écrire un programme Java permettant de déclarer + d’initialiser quelques informations d’une étudiantedu nom Lachance Pascale. On affiche ses informationsainsi que quelques messages de souhait. // Fichier Ex0.javapublic class Ex0 {

public static void main(String[] args) {

String nomPre = "Lachance Pascale" ;

int age = 21 , nbCafe = 2 ; // 2 tasses de café par jour double taille = 1.67, poids = 65.4;

System.out.printf("Bienvenue au Java et à la POO\n");

System.out.printf("\nInformations de cette étudiante : \n"); System.out.printf("Nom et prénom : %s\n", nomPre); System.out.printf("Age : %d an(s)\n", age); System.out.printf("Café : %d tasse(s)par jour\n", nbCafe); System.out.printf("Sa taille : %.2f mètre\n", taille); System.out.printf("Son poids : %.1f kg\n", poids);

System.out.printf("\nBon succès en Java!\n\n"); }}/* Exécution :---------------Configuration: <Default>--------------------Bienvenue au Java et à la POO

Informations de cette étudiante :Nom et prénom : Lachance Pascale

Page 9: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

Age : 21 an(s)Café : 2 tasse(s)par jourSa taille : 1,67 mètreSon poids : 65,4 kg

Bon succès en Java!Process completed.

*/

Exemple2   : Allure d’un programme très simple en Java

Écrire un programme Java permettant de déterminer et d’afficher les diviseurs de 6, de 20 puis de 17 selon leformat suivant :Pour ce programme, on n’utilise pas de sous-programmesautres que main (un sous-programme est une fonction en C,une méthode en Java) :

Les diviseurs de 6 sont : 1) 1 2) 2 3) 3 4) 6

Les diviseurs de 20 sont : 1) 1 2) 2 3) 4 4) 5 5) 10 6) 20

Les diviseurs de 17 sont : 1) 1 2) 17

// Fichier Ex1.javapublic class Ex1 {

public static void main(String[] args) {

// declaration de 3 constantes final int NOMBRE1 = 6, NOMBRE2 = 20, NOMBRE3 = 17; int rang;

Page 10: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

// afficher les diviseurs de 6 : rang = 0; System.out.printf("Les diviseurs de %d sont : \n", NOMBRE1); for(int candidat = 1 ; candidat <= NOMBRE1 ; candidat++) if (NOMBRE1 % candidat == 0) { rang++; System.out.printf("%3d) %8d\n", rang, candidat); } System.out.printf("\n");

// afficher les diviseurs de 20 : rang = 0; System.out.printf("Les diviseurs de %d sont : \n", NOMBRE2); for(int candidat = 1 ; candidat <= NOMBRE2 ; candidat++) if (NOMBRE2 % candidat == 0) { rang++; System.out.printf("%3d) %8d\n", rang, candidat); } System.out.printf("\n");

// afficher les diviseurs de 17 rang = 0; System.out.printf("Les diviseurs de %d sont : \n", NOMBRE3); for(int candidat = 1 ; candidat <= NOMBRE3 ; candidat++) if (NOMBRE3 % candidat == 0) { rang++; System.out.printf("%3d) %8d\n", rang, candidat); } System.out.printf("\n");}}

Veuillez noter que les 5 lignes du genre :if (NOMBRE1 % candidat == 0) { rang++; System.out.printf("%3d) %8d\n", rang, candidat); }peuvent se remplacer par les 2 lignes comme suit :

if (NOMBRE1 % candidat == 0) System.out.printf("%3d) %8d\n", ++rang, candidat); /* Exécution :-------------Configuration: <Default>--------------Les diviseurs de 6 sont : 1) 1 2) 2 3) 3 4) 6

Les diviseurs de 20 sont : 1) 1 2) 2

Page 11: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

3) 4 4) 5 5) 10 6) 20

Les diviseurs de 17 sont : 1) 1 2) 17

Process completed.

*/

Exemple 3   : Allure d’un programme en Java

Refaites l’exemple 1 en écrivant un programme Java avec méthode d’une classe : En-tête : static . . . ( . . . ) Appel : Classe.méthode static ( . . . ) Ou méthode static ( . . . ) si la méthode est écrite dans la classe

// Fichier Ex3.javapublic class Ex2 {

// méthode static de la classe Ex2 permettant // d’afficher les diviseurs d’un nombre donné

static void afficherDiv(int nombre){

int rang = 0; System.out.printf("Les diviseurs de %d sont : \n", nombre); for(int candidat = 1 ; candidat <= nombre ; candidat++) if (nombre % candidat == 0) System.out.printf("%3d) %8d\n", ++rang, candidat);

System.out.printf("\n");

}

public static void main(String[] args) {

final int NOMBRE1 = 6, NOMBRE2 = 20, NOMBRE3 = 17;

Page 12: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

Ex2.afficherDiv(NOMBRE1); Ex2.afficherDiv(NOMBRE2); Ex2.afficherDiv(NOMBRE3);}

} // fin de classe Ex2

/* Exécution :----------------Configuration: <Default>-----------------Les diviseurs de 6 sont : 1) 1 2) 2 3) 3 4) 6

Les diviseurs de 20 sont : 1) 1 2) 2 3) 4 4) 5 5) 10 6) 20

Les diviseurs de 17 sont : 1) 1 2) 17

Process completed.

*/

D) Convention des identificateurs en Java   :

Pour le nom d’une classe : Début de chaque mot en majuscule. Exemples :

Cercle, Ex0, Ex1, Integer, Double, String, StringTokenizer, etc …

Pour le nom d’une constante : tous en majuscules. Exemples : final int MAX_AGE = 132 ; final double BAR_FINAL = 0.40; // 40 % pour le final

Pour le nom d’une variable, d’un objet, d’une méthode :

Page 13: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

Le 1er mot en tous minuscules, début d’un nouveau mot en majuscule Exemples :

static void afficherDiv(int nombre) . . . int age, cafe, nbPieds, nbPouces; Cercle c1, c2; String nomPre = “Tremblay Nicole”, codePerm = “TREN12619407”;

Type: int age ; float taille, poids ; char sexe ; int estCelibataire ; etc .

Type: int age ; float taille, poids ; char sexe ; boolean estCelibataire ;// existe en JAVA etc .

Constante: #define MAX_PERS 50OU const double TAUX_TPS = 0.07 ;

Constante: // final pour dire la valeur est "finale" final double TAUX_TPS = 0.07;

Opérateurs arithmétiques (pour les calculs) + , - , * (multiplication) 10 / 4 vaut 2 mais 10.0 / 4 vaut 2.5 (un seul opérateur de division) 12 % 10 vaut 2 (le modulo)

Opérateurs arithmétiques (pour les calculs) + , - , * (multiplication) 10 / 4 vaut 2 mais 10.0 / 4 vaut 2.5 (un seul opérateur de division) 12 % 10 vaut 2 (le modulo)

Opérateurs relationnels (comparaison) : = = != <est égale à est différent de plus petit que<= > >=plus petit ou égale plus grand pg ou égale

Opérateurs relationnels (comparaison) : = = != <est égale à est différent de plus petit que<= > >=plus petit ou égale plus grand pg ou égale

Affectation: age = 23 ; Affectation: age = 23 ;

Page 14: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

Quelques remarques:

1. point virgule (souvent) à la fin 2. majuscule vs minuscule : TP1 est différent de Tp1 3. liste d'informations de même type : double taille, poids ; 4. = (affectation) vs = = (égalité) 5. un seul opérateur de division : / 6. programmer le type booléen avec int 7. un seul caractère (char) vs chaîne de caractères (tableau des caractères, ...) 8. int age = 17.89 ; // permis (vaut 17)

Quelques remarques:

1. point virgule (souvent) à la fin 2. majuscule vs minuscule : TP1 est différent de Tp1 3. liste d'informations de même type : double taille, poids ; 4. = (affectation) vs = = (égalité) 5. un seul opérateur de division : /

6. existence du type boolean 7. un seul caractère (char) vs chaîne de caractères (String nomPrenom ;) 8. int age = 17.89 ; // invalide

La sélection simple avec if :

if ( condition ) instruction A else instruction B

Style 1 (sans else): if ( mois = = 1 ) nbJours = 31 ; if ( age ) // si age est non nul printf("age = %d\n", age);

Style 1 (sans else): if (mois = = 1) nbJours = 31 ; if ( age != 0 ) // condition explicite System.out.println("age = " + age);

Style 2 (avec else): if ( valeur1 > valeur2 ) maximum = valeur1 ; else maximum = valeur 2 ;

Style 2 (avec else): if (valeur1 > valeur2) maximum = valeur1 ; else maximum = valeur 2 ;

Style 3 (if imbriqué): if ( jour >= 2 && jour <= 5) nbCafe = 5 ; else if ( jour = = 6 ) nbCafe = 3 ; else nbCafe = 1 ;

Style 3 (if imbriqué): if ( jour >= 2 && jour <= 5) nbCafe = 5 ; else if ( jour = = 6 ) nbCafe = 3 ; else nbCafe = 1 ;

Page 15: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

Style 4 (instruction composée): if ( age >= 12 && age < 18 ) { printf("Adolescent"); nbAdo++; } else printf("Pas un ado");

Style 4 (instruction composée): if ( age >= 12 && age < 18 ) { System.out.printf("Adolescent"); nbAdo++; } else System.out.printf ("Pas un ado");

Fonctionnement

Si la condition vaut vraie, on exécute les instructions sous if. Dans le cas contraire (sinon), et, si la clause else se présente, on effectue les instructions sous else.

La sélection multiple avec switch ...

switch ( expression ) { case cte1 : instructions 1; case cte2 : instructions 2; . . . case ctek : instructions k; default : instructions ; }

Pour quitter le suivant que (switch), la dernière instruction de "l'instructions n" est souvent l'instruction "break" (voir exemples). L'instructions n peut être vide.

Exemple avec Java :

switch ( rang ) { // du lundi à jeudi :

case 2 : case 3 :

case 4 : case 5 : System.out.printlf"On travaille très fort\n"); break; // cas de vendredi case 6 : System.out.printf ("Fin de semaine s'en vient\n "); break; // cas de samedi ou dimanche case 1 : case 7 : System.out.printf ("Youppi! C'est la fin de semaine\n"); break;

Page 16: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

default: System.out.printf ("Rang erroné!\n"); // break ; n'est pas nécessaire }

Boucle de répétition avec tant que (while):

while ( condition ) instruction

Cas d'instruction simple: while ( n > 0 ) n = n / 10 ;

Cas d'instruction simple: while ( n > 0 ) n = n / 10 ;

Cas d'instruction composée: while ( n ) // n different de zéro { som = som + n % 10; n = n / 10 ; }

Cas d'instruction composée: while ( n != 0 ) { som = som + n % 10; n = n / 10 ; }

Fonctionnement : Étape 1 : vérifier d'abord la condition

Étape 2 : si la condition vaut vraie alors a) on effectue les instructions à répéter b) on revient à l'étape 1 si non, on quitte la boucle

Il faut assurer que la condition soit bien définie avant d'exécuter la boucle while. La condition est une expression booléenne en Java (pas une expression entière comme en C, C++).

Exemple simple: Calcul de S = 5 + 15 +… + 105

final int BORNE1 = 5, BORNE2 = 105, LE_PAS = 10 ; int somme = 0, valeur = BORNE1; while (valeur <= BORNE2) { somme += valeur ; valeur += LE_PAS; }

Page 17: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

System.out.printf("somme = %d\n", somme);

Boucle de répétition avec pour (for . . .) :

for ( exp1 ; exp2; exp3 ) instruction

Exemple 1 for ( i = 1 ; i <= 5 ; i++) printf("Bonjour\n");

Exemple 1 for (int i = 1 ; i <= 5 ; i++) System.out.printf("Bonjour\n");

Exemple 2for ( val = 1 ; val <= 21; val += 5) { som = som + val ; pro = pro * val ; }

Exemple 2for ( val = 1 ; val <= 21; val += 5) { som = som + val ; pro = pro * val ; }

Fonctionnement classique:

Initialiser la variable de contrôle de la boucle: variable = valeur de départ Tant que Variable <= valeur d'arrivée Faire - effectuer les instructions à répéter - ajuster la valeur de la variable de contrôle variable = variable + lePas

Domaines d'utilisation:

On utilise la boucle for quand on sait à l'avance le nombre de fois qu'on répète le même traitement. C'est le cas des valeurs dont le pas est une constante entre deux bornes données. On l'utilise également pour parcourir les indices d'un tableau.

Calcul de S = 10 + 15 + 20 + 25 + … + 150 int somme = 0 ; for ( int valeur = 10 ; valeur <= 150; valeur += 5) somme += valeur ; System.out.printf("S = %d\n", somme);

OU

int somme = 0 ; for ( int valeur = 150 ; valeur >= 10; valeur -= 5) somme += valeur ; System.out.printf("S = %d\n", somme); Boucle de répétition avec do . . . while

Page 18: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

do instruction while ( condition pour continuer ) ;

Exemple: do { somme = somme + n % 10; n = n / 10 ; } while (n > 0);

Solution : do { somme = somme + n % 10; n = n / 10 ; } while ( n > 0 );

Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45

int produit = 1, valeur = 10;do { produit *= valeur ; valeur += 5 ;} while (valeur <= 45);System.out.printf("P = %d", produit) ;

Exemple 2 : Calcul la somme des diviseurs de 100

final int NOMBRE = 100;int somDivi = 0, candidat = 1 ;do { if (NOMBRE % candidat == 0) somDivi += candidat ; candidat++; } while (candidat <= NOMBRE);System.out.printf("somme des diviseurs de %d est %d", NOMBRE, somDivi);

E) Exercices   :

Exercice 1 :

Page 19: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

Écrire un programme Java permettant d’utiliser de méthodes static permettant de déterminer puis afficher les 3 lignes suivantes :

Les 4 diviseurs de 6 sont : 1 2 3 6Les 6 diviseurs de 20 sont : 1 2 4 5 10 20Les 2 diviseurs de 17 sont : 1 17

Solution   :

// Fichier Exercice1.java (page 17, document java_01.doc)public class Exercice1 {

// méthode static de la classe Exercice1 comptant et retournant // le nombre de diviseurs d’un entier nombre > 0

static int nbDiv(int nombre){

int n = 0; for(int candidat = 1 ; candidat <= nombre ; candidat++)

if (nombre % candidat == 0) n++; return n;

}

static void afficherDiv(int nombre){

System.out.printf("Les %d diviseurs de %2d sont : ", nbDiv(nombre),nombre); for(int candidat = 1 ; candidat <= nombre ; candidat++) if (nombre % candidat == 0) System.out.printf("%3d ", candidat);

System.out.printf("\n");

}

public static void main(String[] args) {

final int NOMBRE1 = 6, NOMBRE2 = 20, NOMBRE3 = 17;

Exercice1.afficherDiv(NOMBRE1); afficherDiv(NOMBRE2); afficherDiv(NOMBRE3);}

Page 20: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

} // fin de la classe Exercice1

/* Exécution :--------------------Configuration: <Default>--------------------Les 4 diviseurs de 6 sont : 1 2 3 6Les 6 diviseurs de 20 sont : 1 2 4 5 10 20Les 2 diviseurs de 17 sont : 1 17

Process completed.

*/

Exercice 2 : solution sur demande!

Écrire un programme Java permettant d’utiliser de méthodes static permettant de déterminer puis afficher les 2 blocs de lignes suivantes :

1 3 5 7 91 3 5 71 3 51 31

1 3 51 31

Solution :

// Fichier Exercice2.java (page 18, document java_01.doc)public class Exercice2 {

static void afficher(int nombre){ for(int fin = nombre ; fin >= 1 ; fin -= 2) { for(int debut = 1; debut <= fin ; debut += 2) System.out.printf("%3d ", debut); System.out.printf("\n"); }

System.out.printf("\n");

}

public static void main(String[] args) {

Page 21: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

final int NOMBRE1 = 9, NOMBRE2 = 5;

afficher(NOMBRE1); afficher(NOMBRE2);}}/* Exécution :--------------------Configuration: <Default>-------------------- 1 3 5 7 9 1 3 5 7 1 3 5 1 3 1

1 3 5 1 3 1

Process completed.

*/

Déclarer le tableau des tailles et initialiser les 8 premières valeurs :

double[] taille = { 1.76, 1.68, 1.89, 1.72, 1.54, 1.78, 1.34, 1.78 }; int nbPers = taille.length ; // vaut 8 ici taille est un tableau de 8 éléments, chacun est une variable de type double. On peut illustrer le tableau des tailles par le schéma suivant : taille

1.761.681.891.72

Page 22: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

1.541.781.34

1.78

1. L'indice commence par 0 (zéro)2. La boucle for est largement utilisée pour traiter

les tableaux. 3. Sur l'en-tête d'une fonction : une manière simple :

static void afficher( double[] taille, int nbPers) etc . . .

Exemple : déterminer la taille la plus petite :

double plusPetiteTaille = Double.MAX_VALUE ; for (int i = 0 ; i < taille.length ; i++) if ( taille[i] < plusPetiteTaille) plusPetiteTaille = taille[i];

Conversion d’un programme C en Java   :

En classe, on a expliqué et tapé le programme Fonct5.c suivant :

/* Fichier Fonct5.c Auteurs Tremblay Julie IFT 1810 C Gr. 1 Choquette Alain IFT 1810 C Gr. 1 Ce programme permet de .... (voir exécution) */

#include <stdio.h>

float moyenne(float tab[], int nbElem) { float somme = 0.0; int i ; for(i = 0; i < nbElem; i++) somme += tab[i]; return somme / nbElem; }

int nombre(float tableau[], int nbElem, float borne) { int n = 0, i; for(i = 0; i < nbElem; i++) if (tableau[i] > borne) n++;

Page 23: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

return n; } int combien(char sexeVoulu, char sexe[], int nbPers) { int n = 0, i; for(i = 0; i < nbPers; i++) if (sexe[i] == sexeVoulu) n++; return n; } void afficher(float taille[], float poids[], char sexe[], int nbPers) { int i; printf("Contenu des 3 tableaux :\n\n"); printf("indice taille poids sexe\n");

for(i = 0; i < nbPers; i++) printf("%3d %8.2f %7.1f %5c\n", i, taille[i], poids[i], sexe[i]) ; printf("\n\n") ;

} int main(){ const float BORNE1 = 1.75, BORNE2 = 60.0;

float taille[] = {1.72, 1.86, 1.58, 1.76, 1.70}, poids[] = { 65.4, 76.1, 59.9, 73.4, 81.5};char sexe[] = { 'F', 'M', 'F', 'F', 'M'} ;

int nbPers = sizeof(taille) / sizeof(float);

afficher(taille, poids, sexe, nbPers);

printf("Le nombre de personnes dont :\n");printf(" - la taille depasse %.2f metre est %d\n", BORNE1, nombre(taille, nbPers, BORNE1));printf(" - le poids depasse %.2f kg est %d\n", BORNE2, nombre(poids, nbPers, BORNE2));

printf("Le nombre de femmes : %d\n", combien('F', sexe, nbPers))

; printf("Le nb. d'hommes : %d\n", combien('M', sexe, nbPers));

printf("La taille moyen : %.2f metre\n", moyenne(taille,nbPers)) ;

printf("Le poids moyen : %.1f kg\n", moyenne(poids, nbPers));

return 0;

}/* Execution :Contenu des 3 tableaux :

Page 24: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

indice taille poids sexe 0 1.72 65.4 F 1 1.86 76.1 M 2 1.58 59.9 F 3 1.76 73.4 F 4 1.70 81.5 M

Le nombre de personnes dont : - la taille depasse 1.75 metre est 2 - le poids depasse 60.00 kg est 4Le nombre de femmes : 3Le nb. d'hommes : 2

--------------------------------Process exited after 0.02253 seconds with return value 0Appuyez sur une touche pour continuer...*/

Faites toutes les étapes pour convertir ce programme en Java.

Solution   : démontrée en classe

Quelques étapes :

À partir d’un programme quasi-vide en Java nommé, par exemple, Methode5.java

1. Copier les fonctions écrites en C dans l’espaceentre class Methode1 et l’en-tête de la méthode main

2. Copier le corps de int main du C (sauf return 0 ;)dans la méthode main

3. Avec les options Edit, Find and Repace, Replace Remplacez tous :

a) printf par System.out.printfb) const par finalc) float par doubled) tableau[] par [] tableau etc …

Enlevez les déclarations locales int i ; mettez for(int i = 0 ; etc … Ajoutez la clause static devant les en-têtes des Méthodes

4. Jetez un coup d’œil et finalisez l’adaptation

Ce processus sera démontré en classe.Finalement, vous obtenez la version Java suivant :

public class Methode5 {

static double moyenne(double[] tab, int nbElem) { double somme = 0.0;

for(int i = 0; i < nbElem; i++) somme += tab[i];

Page 25: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

return somme / nbElem;

}

static int nombre(double[] tableau, int nbElem, double borne) { int n = 0; for(int i = 0; i < nbElem; i++) if (tableau[i] > borne) n++; return n; }

static int combien(char sexeVoulu, char [] sexe, int nbPers) { int n = 0; for(int i = 0; i < nbPers; i++) if (sexe[i] == sexeVoulu) n++; return n; }

static void afficher(double [] taille, double[] poids, char [] sexe, int nbPers) {

System.out.printf("Contenu des 3 tableaux :\n\n"); System.out.printf("indice taille poids sexe\n");

for(int i = 0; i < nbPers; i++) System.out.printf("%3d %8.2f %7.1f %5c\n", i, taille[i], poids[i], sexe[i]) ; System.out.printf("\n\n") ;

}

public static void main(String[] args) {

final double BORNE1 = 1.75, BORNE2 = 60.0;

double [] taille = {1.72, 1.86, 1.58, 1.76, 1.70}, poids = { 65.4, 76.1, 59.9, 73.4, 81.5};char [] sexe = { 'F', 'M', 'F', 'F', 'M'} ;

int nbPers = taille.length;

afficher(taille, poids, sexe, nbPers);

System.out.printf("Le nombre de personnes dont :\n");System.out.printf(" - la taille depasse %.2f metre est %d\n", BORNE1, nombre(taille, nbPers, BORNE1));System.out.printf(" - le poids depasse %.2f kg est %d\n", BORNE2, nombre(poids, nbPers, BORNE2));

System.out.printf("Le nombre de femmes : %d\n",

Page 26: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

combien('F', sexe, nbPers)) ; System.out.printf("Le nb. d'hommes : %d\n", combien('M', sexe, nbPers));

System.out.printf("La taille moyen : %.2f metre\n", moyenne(taille,nbPers)) ;

System.out.printf("Le poids moyen : %.1f kg\n", moyenne(poids, nbPers));

}}/* Exécution :--------------------Configuration: <Default>--------------------Contenu des 3 tableaux :

indice taille poids sexe 0 1,72 65,4 F 1 1,86 76,1 M 2 1,58 59,9 F 3 1,76 73,4 F 4 1,70 81,5 M

Le nombre de personnes dont : - la taille depasse 1,75 metre est 2 - le poids depasse 60,00 kg est 4Le nombre de femmes : 3Le nb. d'hommes : 2La taille moyen : 1,72 metreLe poids moyen : 71,3 kg

Process completed.

*/

Integer.MAX_VALUE : l’entier le plus grandInteger.MIN_VALUE : l’entier le plus petitInteger.parseInt("1234") retourne 1234etc . . .

Double.MAX_VALUE : le réel le plus grandDouble.MIN_VALUE : le réel le plus petitEtc . . .

Math.PI valeur PI de la classe Math qui vaut 3.14159Math.sqrt(16.0) racine carrée de 16.0 est 4.0(square root : racine carrée)Etc . . .

Page 27: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

C’est une classe existence du langage Java. Elle offreplusieurs méthodes pertinentes pour manipuler des chaînesde caractères.

Soit la déclaration :

String nomPre = "Charbonneau Pascale", codePerm = "CHAP17549403" ;// née le 17 avril 1994 (on ajoute 50 au mois de naissance pour une étudiante)

Notez les indices des caractères du code permanent : 0123456789 "CHAP17549403"

Pour IFT 1810, on se limite à ces méthodes suivantes :

codePerm.length() retourne 12 (nombre de caractères)

codePerm.charAt(0) retourne le caractère ‘C’ ( le caractère à l’indice 0 )codePerm.charAt(6) retourne le caractère ‘5’

codePerm.substring(0, 4) retourne "CHAP"(la sous-chaîne entre l’indice 0 inclus, l’indice 4 exclu)

codePerm.substring(6, 8) retourne "54"

codePerm.substring(4) retourne "17549403"(la sous-chaîne à partir de l’indice 4 jusqu’à la fin de la chaîne)

codePerm.indexOf(‘C’) retourne 0codePerm.indexOf(‘1’) retourne 4codePerm.indexOf(‘4’) retourne 7 (malgré les deux 4)codePerm.indexOf(‘z’) retourne -1 (la lettre ‘z’ est introuvable)codePerm.indexOf("CHA") retourne 0

Page 28: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

codePerm.indexOf("94") retourne 8codePerm.indexOf("Bonjour") retourne -1

nomPre.toUpperCase() retourne "CHARBONNEAU PASCALE"

nomPre.toLowerCase() retourne "charbonneau pascale"

Exemple 1   : (voir l’exécution pour comprendre l’exemple.Attention au changement de ligne sous Word) :

/* Fichier Ex1String : exemple sur les chaînes de caractères * */

public class Ex1String {

public static void main(String[] args) {

String codePermanent = "TREP23119006" ; // Tremblay Pierre né le 23 novembre 1990

System.out.printf("Le marqueur pour indices: 012345678901234567890123456789\n"); System.out.printf("La chaîne telle quelle : %s\n", codePermanent); System.out.printf("La chaîne en MAJUSCULEs : %s\n", codePermanent.toUpperCase()); System.out.printf("La chaîne en minuscules : %s\n", codePermanent.toLowerCase()); System.out.printf("La longueur : %d caractères\n\n", codePermanent.length());

System.out.printf("Le caractère à l'indice 3 : %c\n", codePermanent.charAt(3)); System.out.printf("La sous-chaîne codePermanent.substring(0, 3) vaut %s\n", codePermanent.substring(0, 3)); System.out.printf("La sous-chaîne codePermanent.substring(8) vaut: %s\n", codePermanent.substring(8));

int anneeNaissance = 1900 + Integer.parseInt( codePermanent.substring(8,10)); System.out.printf("L'année de naissance : %d\n", anneeNaissance);

int k = codePermanent.indexOf('R'); System.out.printf("On trouve la lettre R à l'indice %d\n", k);

k = codePermanent.indexOf('Z'); if (k == -1) System.out.printf("On ne trouve pas la lettre Z : indice vaut %d\n", k);

k = codePermanent.indexOf("P2311");

if ( k >= 0)

Page 29: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

System.out.printf("On trouve la sous-chaîne P2311 à l'indice %d\n", k);

k = codePermanent.indexOf("777"); if (k == -1) System.out.printf("On ne trouve pas la sous-chaîne 777 et l'indice vaut %d\n", k);

} // fin de main} // fin de Ex1String/*--------------------Configuration: <Default>--------------------Le marqueur pour indices: 012345678901234567890123456789La chaîne telle quelle : TREP23119006La chaîne en MAJUSCULEs : TREP23119006La chaîne en minuscules : trep23119006La longueur : 12 caractères

Le caractère à l'indice 3 : PLa sous-chaîne codePermanent.substring(0, 3) vaut TRELa sous-chaîne codePermanent.substring(8) vaut: 9006L'année de naissance : 1990On trouve la lettre R à l'indice 1On ne trouve pas la lettre Z : indice vaut -1On trouve la sous-chaîne P2311 à l'indice 3On ne trouve pas la sous-chaîne 777 et l'indice vaut -1

Process completed.

*/

Exemple 2   : (voir l’exécution pour comprendre l’exemple.Attention au changement de ligne sous Word) :

/* Fichier Ex2String : exemple sur les chaînes de caractères

*/

Page 30: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

public class Ex2String {

// méthode qui compte et retourne le nombre de voyelles // dans une phrase déjà transformée en majuscules

static int nbVoy(String phrase){

int n = 0;

for(int i = 0; i < phrase.length();i++)switch ( phrase.charAt(i)){ case 'A' : case 'E' : case 'I' : case 'O' : case 'U' : case 'Y' : n++;}

return n;}

// méthode qui compte et retourne le nombre de voyelles // dans une phrase : une autre manière de travail

static int nb2Voy(String phrase){ int n = 0;

String voyelles = "AaEeIiOoUuYy";

for(int i = 0; i < phrase.length();i++)if ( voyelles.indexOf( phrase.charAt(i)) >= 0)

n++;return n;

}

public static void main(String[] args) { String ch = "Bonjour tout le monde!"; System.out.printf("Le marqueur pour indices: 012345678901234567890123456789\n"); System.out.printf("La chaîne telle quelle : %s\n", ch); System.out.printf("La chaîne en MAJUSCULEs : %s\n", ch.toUpperCase()); System.out.printf("La chaîne en minuscules : %s\n", ch.toLowerCase()); System.out.printf("La longueur : %d caractères\n\n", ch.length()); System.out.printf("Le caractère à l'indice 3 : %c\n", ch.charAt(3)); System.out.printf("La sous-chaîne ch.substring(0, 3) vaut %s\n", ch.substring(0, 3)); System.out.printf("La sous-chaîne ch.substring(8) vaut: %s\n", ch.substring(8));

System.out.printf("Le nombre de voyelles : %d\n", nbVoy(ch.toUpperCase())); System.out.printf("Le nombre de voyelles (solution 2): %d\n\n", nb2Voy(ch));

System.out.printf("La recherche d'un caractère dans la chaîne : %d\n", ch.indexOf('j')); System.out.printf("La recherche d'un caractère dans la chaîne :

Page 31: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

%d\n\n", ch.indexOf('w'));

System.out.printf("La recherche de la sous chaîne mon: %d\n", ch.indexOf("mon")); System.out.printf("La recherche de tremblay: %d\n\n", ch.indexOf("tremblay")); }}/*-------------------Configuration: <Default>--------------------Le marqueur pour indices: 012345678901234567890123456789La chaîne telle quelle : Bonjour tout le monde!La chaîne en MAJUSCULEs : BONJOUR TOUT LE MONDE!La chaîne en minuscules : bonjour tout le monde!La longueur : 22 caractères

Le caractère à l'indice 3 : jLa sous-chaîne ch.substring(0, 3) vaut BonLa sous-chaîne ch.substring(8) vaut: tout le monde!Le nombre de voyelles : 8Le nombre de voyelles (solution 2): 8

La recherche d'un caractère dans la chaîne : 3La recherche d'un caractère dans la chaîne : -1

La recherche de mon: 16La recherche de tremblay: -1

Process completed.*/

Exemple 3   : (voir l’exécution pour comprendre l’exemple.Attention au changement de ligne sous Word) :

public class Ex3String {

// affichier EXPLICITEMENT le nom du mois de naissance static void afficherMois(String leMois) { String[] mois = { "Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre" };

int rangMois = Integer.parseInt(leMois) % 50 -1;

System.out.printf("Né(e) au mois de %s\n", mois[rangMois]);

}

public static void main(String[] args) {

String nomPre = "Leblanc Nicole", codePerm = "LEBN27539005"; // code permanent

System.out.printf("Nom et prenom :\n");

Page 32: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

System.out.printf(" - tel quel :%s\n", nomPre); System.out.printf(" - en majuscules :%s\n", nomPre.toUpperCase()); System.out.printf(" - en minuscules :%s\n\n", nomPre.toLowerCase());

// Integer.parseInt("75"), par exemple, return 75 int anneeNais = 1900 + Integer.parseInt( codePerm.substring(8, 10)); System.out.printf("L'annee de naissance : %d\n", anneeNais);

// opérateur conditionnel String sexe = codePerm.charAt(6) >= '5' ? "feminin" : "masculin";

System.out.printf("Le sexe %s\n", sexe);

afficherMois(codePerm.substring(6,8));

}}/* Compilation et Exécution:--------------------Configuration: <Default>--------------------Nom et prenom : - tel quel :Leblanc Nicole - en majuscules :LEBLANC NICOLE - en minuscules :leblanc nicole

L'annee de naissance : 1990Le sexe femininNé(e) au mois de Mars

Process completed.

*/

Exemple 4   : (voir l’exécution pour comprendre l’exemple.Attention au changement de ligne sous Word) :

/* Fichier Telephone.java * expliqué en classe * * Utile pour le numéro C du TP3 et pour une question au final */

public class Telephone {

// Cette fonction affiche les chiffres impairs dans un numéro de tél. static void afficherImpairs(String telephone, String nom) { System.out.printf("Les chiffres impairs dans %10s : ",nom); for(char c = '1' ; c <= '9'; c+=2) if (telephone.indexOf(c) >= 0) System.out.printf("%c ", c); System.out.printf("\n"); }

static char maxi(String telephone) { char plusGrandChif = '0' ; for(int i = 0; i < telephone.length(); i++) if (telephone.charAt(i) > plusGrandChif)

Page 33: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

plusGrandChif = telephone.charAt(i); return plusGrandChif; }

public static void main(String[] args) {

String telUDM = "5143436111", telJean = "4501234567";

afficherImpairs(telUDM, "telUDM"); afficherImpairs(telJean, "telJean");

System.out.printf("Le chiffre le plus grand dans le numero %s est %c\n", telUDM, maxi(telUDM)); System.out.printf("Le chiffre le plus grand dans le numero %s est %c\n", telJean, maxi(telJean));

//System.out.printf("Bienvenue au Java et à la POO\n"); }}/* Exécution :--------------------Configuration: <Default>--------------------Les chiffres impairs dans telUDM : 1 3 5Les chiffres impairs dans telJean : 1 3 5 7Le chiffre le plus grand dans le numero 5143436111 est 6Le chiffre le plus grand dans le numero 4501234567 est 7

Process completed.

*/

Dans le cours on introduit à la programmation orientée objet (POO) utilisant le langage JAVA sans aller dans les détails.

Dans notre vie quotidienne, on travaille très souvent avec des objets : Un tableau est un objet. On peut fabriquer (construire, instancier) un tableau par plusieurs manières :

- Fabriquer un tableau de couleur noir, en bois,de largeur 3.25 mètre, de hauteur 1.50 mètre

- Fabriquer un tableau de couleur blanche, en plastique dur, de largeur 2.75 mètre, de hauteur 2.15 mètre

- etc . . .

Il faut que le tableau existe avant de parler comment travailler avec un tableau. Que peut-on faire avec un tableau ?

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

Page 34: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

La POO est une nouvelle méthode de programmation basant sur trois concepts :L’encapsulation   : Fusionner les champs de données (les attributs) et les méthodes pour manipuler ces données dans la même capsule qui s’appelle une classe. On ajoute aussi des clauses d’accès : champs souvent privés, méthodes souvent publiques.

Pour IFT 1810, on travaille seulement à ce concept.

L’héritage   : Construire de nouvelles classes étendues de classes existences qui hérite de données et de méthodes de celles-ci. De plus on peut ajouter de nouveaux champs, de nouvelles méthodes. On étudiera ce concept dans les cours après IFT 1810 (comme IFT 1170, IFT 1166, etc . . .).

Le polymorphisme   : La capacité de se présenter sous plusieurs formes. Ce concept sera présenté dans les cours suivants de IFT 1810 .

Dans le document Java_02.doc on a étudié la classe String et plusieurs de ses méthodes. Dans ce document, on apprendcomment concevoir une classe et manipuler ses objets.Ce document est utile pour le numéro C du TP3 ainsi pourquelques questions du final.

Exemple 1 :

Concevoir la classe Cercle. Instancier (construire) quelques cercles puis afficher leurs informations.On explique en classe cet exemple.

Solution (attention au saut de ligne sous Word)

/* Fichier Ex1_Cercle * expliqué en classe * Voir aussi Ex2_Cercle */class Cercle{ // privé => accessible SEULEMENT dans la classe Cercle private double rayon ;

// un constructeur pour construire (instancier) 1 cercle

Page 35: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

public Cercle(double r) { rayon = r ; }

// un autre constructeur pour construire (instancier) 1 // cercle public Cercle() { rayon = 1.3; // par défaut }

// Math.PI : le champ "static" PI de la classe Math(ématique) public double perimetre() { // 2 x PI x rayon return 2 * Math.PI * rayon; }

// PI x (rayon au carré) public double surface() { return Math.PI * rayon * rayon; } public void afficher(String message) { // exemple : Infos du cercle ... : rayon, perimetre puis surface System.out.printf("Infos du %s\n", message); System.out.printf(" - rayon : %6.2f\n", rayon); System.out.printf(" - périmètre : %6.2f\n", perimetre()); System.out.printf(" - surface : %6.2f\n\n", surface()); }

} // fin de classe Cercle

public class Ex1_Cercle {

public static void main(String[] args) {

Cercle c1 = new Cercle(5.7), c2 = new Cercle() , // par défaut 1.3 c3 = new Cercle(6.1);

// forme d'accès #1 :

c1.afficher("cercle c1"); c2.afficher("deuxième cercle"); c3.afficher("cercle c3");

} // fin de main}// fin de Ex1_Cercle

/* Compilation et Exécution:--------------------Configuration: <Default>---------------Infos du cercle c1

Page 36: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

- rayon : 5,70 - périmètre : 35,81 - surface : 102,07

Infos du deuxième cercle - rayon : 1,30 - périmètre : 8,17 - surface : 5,31

Infos du cercle c3 - rayon : 6,10 - périmètre : 38,33 - surface : 116,90

Process completed.

*/Explications   :

private double rayon ;rayon est le seul champ d’information de la classe Cercle.L’accès est privé : dans la classe Cercle, on a le droit d’accéder au champ rayon. En dehors de la classe Cercle, onn’a pas le droit d’accéder au champ rayon.Très souvent, surtout pour IFT 1810, l’accès à un champ d’information est privé.

Constructeur   :

C’est une méthode de la classe permettant de construire(instancier, fabriquer) un objet de la classe. Cette méthode porte le même nom de la classe. Son but est de déterminer les champs d’informations.Une classe peut avoir, aucune, une ou quelques constructeurs.

L’instruction : Cercle c1 = new Cercle(5.7) ;permet d’appeler le constructeur à 1 seul paramètre afin d’instancierl’objet c1 de la classe Cercle ayant le rayon 5.7

L’instruction : c2 = new Cercle(); // par défaut 1.3permet d’appeler le constructeur à aucun paramètre afin d’instancierl’objet c2 de la classe Cercle ayant le rayon 1.3 par défaut.

Les méthodes perimetre, surface et afficher sont des méthodes permettant d’appliquer sur un objet de la classe Cercle.

Dans main, on peut afficher le périmètre du cercle c1 : System.out.printf("Le périmètre du cercle c1 : %.2f\n", c1.perimetre());L’accès c1.perimetre() fonctionne car la méthode perimetre() est publique. C’est la même chose pour la méthode publique surface : System.out.printf("La surface du cercle c2 : %.2f\n",

Page 37: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

c2.surface());On expliquera en détails en classe.

Par contre, l’affichage suivante dans main : System.out.printf("Le rayon du cercle c1 : %.2f\n", c1.rayon);est invalide car le champ rayon est privé : on n’a pas le droitd’accéder à ce champ en dehors de la classe Cercle.

Méthode d’accès   :

Pour afficher, par exemple, le rayon du cercle c1, onpeut écrire d’abord la méthode d’accès dans la classe Cercle :

public double getRayon() { return rayon; }

Dans main, par exemple, on peut afficher le rayon du cerclec1 comme suit :

System.out.printf("Le rayon du cercle c1 : %.2f\n", c1.getRayon());

Soit la classe Etudiant avec le champ codepermanent . . . :

class Etudiant { private codePerm; // exemple "LAFL12549007" // née le 12 avril 1990 etc . . .

public char getSexe() { if ( codeperm.charAt(6) >= ‘5’) Return ‘F’; else return ‘M’; } etc . . . }

Dans ce cas-ci, on accède à une partie du champ codePerm :le sexe de l’étudiant. Méthode de modification   :

Pour doubler le rayon du cercle c2, l’instruction suivante dans main : c2.rayon *= 2;est invalide car le champ rayon est privé.

Dans un tel cas, il suffit d’ajouter la méthode de modification suivante à la classe Cercle :

Page 38: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

public void setRayon( double nouvRayon ) { Rayon = nouveauRayon; }

Ainsi, pour double le rayon du cercle c2, ont peut écrire dans main :

c2.setRayon ( 2 * c2.getRayon() );

Pour ajouter 1.2 au rayon du cercle c1 : c1.setRayon(c1.getRayon() + 1.2);

Exemple 2 : Attention au saut de ligne en Word

/* Fichier Ex2_Cercle.java * class Cercle avec constructeurs et quelques méthodes * Exemple d'un tableau des cercles, méthodes * d'accès et de modification. Le tri du tableau * des cercles. * * */class Cercle{

// champ privé : rayonprivate double rayon;

// un constructeurpublic Cercle(double r){

rayon = r;}

// un autre constructeurpublic Cercle(){

rayon = 12.345; // par défaut}

// calcul du périmètre d'un cerclepublic double perimetre(){

return 2 * Math.PI * rayon;}

// calcul de la surface d'un cerclepublic double surface(){

return Math.PI * rayon * rayon;}

// afficher les informations d'un cerclepublic void afficher(String message){

System.out.printf("%s : %7.1f %10.2f %8.2f\n", message, rayon, perimetre(), surface());

}

Page 39: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

// méthode d'accèspublic double getRayon(){

return rayon;}

// méthode de modificationpublic void setRayon(double nouvRayon){

rayon = nouvRayon;}

}

public class Ex2_Cercle {

// afficher le contenu du tableau des cercles static void afficher(Cercle[] cer, int nbCercles, String message) { System.out.printf("\n\nContenu du tableau de %d cercles %s :\n", nbCercles, message); System.out.printf(" Rayon Périmètre Surface\n"); for ( int i = 0 ; i < nbCercles; i++) System.out.printf("%6.2f %8.2f %10.2f\n", cer[i].getRayon(), cer[i].perimetre(),cer[i].surface()); System.out.printf("\n\n"); }

// une manière de trier un tableau des cercles // (tri par sélection vu avant l'intra) static void trier(Cercle[] cer, int nbCercles) { for (int i = 0; i < nbCercles-1; i++) { int indMin = i; for (int j = i+1; j < nbCercles; j++) if ( cer[j].getRayon() < cer[indMin].getRayon() ) indMin = j; if (indMin != i) { double tempo = cer[i].getRayon(); cer[i].setRayon ( cer[indMin].getRayon()); cer[indMin].setRayon(tempo); } } }

// déterminer puis afficher le cercle ayant le rayon le plus grand static void chercherPlusGrandRayon(Cercle[] cer, int nbCercles) { int indMax = 0 ; for(int i = 1 ; i < nbCercles; i++) if ( cer[i].getRayon() > cer[indMax].getRayon()) indMax = i; cer[indMax].afficher("Cercle ayant le rayon le plus grand");

}

public static void main(String[] args) {

// instancier 3 cercles Cercle c1 = new Cercle(5.3), c2 = new Cercle(1.7), c3 = new Cercle();

Page 40: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

c3.afficher("Infos du cercle c3");

System.out.printf("Le perimetre du cercle c2 : %.2f\n\n", c2.perimetre());

System.out.printf("La surface du cercle c1 : %.2f\n\n", c1.surface());

// exemple d'un petit tableau des cercles : Cercle[] cer = { new Cercle(5.3), new Cercle(4.7), new Cercle(), new Cercle(10.4), new Cercle(5.2) } ; int nbCercles = cer.length;

cer[1].afficher("Infos de cer[1] "); // doubler le rayon du 2ième cercle cer[1].setRayon( 2 * cer[1].getRayon()); cer[1].afficher("Infos de cer[1] après avoir doublé son rayon ");

// forme 2 : Classe.méthode "static" Ex2_Cercle.afficher(cer, nbCercles, "avant le tri") ; // Ex2_Cercle. est optionnel

// quel est le cercle ayant le plus grand rayon chercherPlusGrandRayon(cer, nbCercles);

trier(cer, nbCercles);

afficher(cer, nbCercles, "apres le tri selon les rayons") ;

}}/* Compilation et Exécution:--------------------Configuration: <Default>--------------------Infos du cercle c3 : 12,3 77,57 478,78Le perimetre du cercle c2 : 10,68

La surface du cercle c1 : 88,25

Infos de cer[1] : 4,7 29,53 69,40Infos de cer[1] après avoir doublé son rayon : 9,4 59,06 277,59

Contenu du tableau de 5 cercles avant le tri : Rayon Périmètre Surface 5,30 33,30 88,25 9,40 59,06 277,59 12,35 77,57 478,78 10,40 65,35 339,79 5,20 32,67 84,95

Cercle ayant le rayon le plus grand : 12,3 77,57 478,78

Contenu du tableau de 5 cercles apres le tri selon les rayons : Rayon Périmètre Surface 5,20 32,67 84,95

Page 41: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

5,30 33,30 88,25 9,40 59,06 277,59 10,40 65,35 339,79 12,35 77,57 478,78

Process completed.

*/

Trois formes d’accès en Java   :

4. forme 1 (très fréquence)   :

objet.méthode (……..)Appliquer une méthode sur l’objet

Exemples : "Bonsoir".length() retourne 7 (longueur de la chaîne) "Bonsoir".charAt(0) retourne ‘B’ (le caractère à l’indice 0 est la lettre ‘B’) "Bonsoir".indexOf(‘n’) retourne 2 (on trouve la lettre ‘n’ à l’indice 2 "Bonsoir".substring(1, 3) retourne "on" (la sous-chaîne délimitée entre l’indice 1 inclus et l’indice 3 exclu)

5. forme 2 (assez fréquence)   :

classe.méthode static(……..)Utiliser une méthode static d’une classe

Exemples : Integer.parseInt("17") retourne 17 (valeur entière) Math.sqrt(16.0) retourne la racine carrée de 16.0 qui vaut 4.0

6. forme 3 (peu fréquence)   :

classe.champ staticAccès à un champ (attribut) static d’une classe

Exemples :

Page 42: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

Math.PI vaut 3.14159… (valeur PI de la classe Math) Integer.MAX_VALUE retourne 231-1 (l’entier le plus grand)

Les points 1. et 2. s’adressent à ceux qui veulent procéder au téléchargement et à l’installation de JCreator, si vous voulez travaillez chez vous sur le même environnement que celui de la DESI.

1. TéléchargementVeuillez procéder comme suit :

I. l’adresse de xinox software : http://jcreator.com/download.htmII. l’IDE JCreator LEIII. la JDK (Kit de développement Java)

Ce qui va vous ramenez sur la page suivante dans laquelle vous devez procéder par III.2 et III.3 : (si votre machine tourne sur lunix ou vista III.3 ne s’applique pas, voir un peu plus bas de la page, pour sélectionner le système approprié).

2. InstallationA cette étape vous disposez de deux fichiers :- jdk-6u3-windows-i586-p.exe (JDK)- jcrea450_setup.exe (JCreator)

2.a. Installation de JDKNotez bien le chemin : vous devez le mentionner dans l’installation de JCreator

2.b. Installation de JCreatorLancez jcrea450_setup.exe est suivez les instructions, jusqu’à avoir la fenêtre suivante, où, pour JDK Home Directory, vous devez indiquer le chemin noté dans la précédente étape (1.a)

3. Notre Premier pas en JAVA

Si tout s’est bien passé, vous devrez avoir JCreator LE accessible à partir du menu3.a. Lancez JCreator LE, Remarque 1 : si vous avez raté l’indication du chemin de JDK dans l’étape (1.b), vous pouvez toujours le faire à partir du menu Configure comme suit ;Remarque 2 : Typiquement, on travaille avec une collection de fichiers (.java) ce qu’on appelle un projet. Cependant en IFT1810, on va se contenter de travailler avec un fichier à la fois pour le moment.Remarque 3 : Le processus est le même que pour d’autres langages (compilation, exécution).

3.b. Mon premier PAS en JAVA, 1. choisir FILE > New > File, et nommez votre fichier Allure.java ;2. Sélectionnez Java Classes puis Main Class comme type de fichier3. Entrez le code suivant ;

public class Allure {

Page 43: Exemple 1 : Calcul de P = 10 * 15 * 20 * … * 45sophiasapiens.chez.com/informatique/Fiches/Java.docx  · Web viewJava. C est un langage populaire. ... Quelques réfléxions sur

public static void main(String[] args) { System.out.println ("Bienvenue à JAVA"); }}

4. Cliquez sur Build > Compile File5. Cliquez sur Build > Execute File 6. Remarquez la fenêtre d’exécution General Output affiche "Bienvenue à JAVA".7. Compléter l’entête et les commentaires

/* +++++++++++++++++++++++++++++++++++++++++++++++++++++ + + IFT 1810 CD, automne 2007, TP # x + +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Auteur(s) : , section C + + , section D + +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Ce programme permet de : + + . . . + +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Dernière mise à jour : jeudi le xx Novembre 2007 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

public class Allure {

// mon code commence ici… public static void main(String[] args) { System.out.println ("Bienvenue à JAVA"); }

}/* ExécutionBienvenue à JAVA

*/