Vous êtes sur la page 1sur 14

Chapitre 2 : Initiation à la Programmation en C et en Java

2.1. Introduction
Java apparu fin 1995 début 1996 et développé par Sun Microsystems. Au départ, il a été conçu
pour rendre les appareils électroménagers indépendants et interactifs entre-eux. L'idée était de pouvoir
commander ces appareils électroménagers (machines à laver, ...) à distance avec une télécommande.
Mais malheureusement ce fut un échec Java s'est très rapidement taillé une place importante en
particulier dans le domaine de l'Internet, des applications client-serveur et la programmation de
centraux téléphoniques.

2.2. Un peu d’histoire


JAVA est un langage en évolution permanente Java 2 est la version stabilisée de java fondée sur
la version initiale 1.2.2 du JDK (Java Development Kit de Sun : http://java.sun.com). La différence
entre le C++ et le Java c’est que le C++ n’est pas de la POO à 100%, et est plus complexe à utiliser.
(Pointeurs, références, etc..) Il est né plus tôt (en 1979) et n'était pas portable. (il ne marchait que sous
windows). Par contre JAVA est portable (fig. 2.11) sur multi-plateformes. La compilation du langage
Java peut donc se résumé simplement avec le schéma suivant

Fig. 2.1 : JAVA est multi-plateformes.

2.3. Compilation et exécution d’une application

Fig. 2.2 : JAVA compilation

Dr. M. Djarallah 15 UB, FI, Départ. ELT Master I, CE/CE21-2009-2010


Chapitre 2 : Initiation à la Programmation en C et en Java

Fig. 2.3 : Exemple de compilation, de portabilité et d’exécution sur plusieurs plateformes

2.4. Plateforme de Java


Comme on la découvert dans le TP2, les constituants de cette plateforme sont :

Plateforme
OS + JVM JAVA

Matériels

Fig. 2.4 : Constituants de la plateforme JAVA

2.5. Comment écrire une application (un programme)  NetBeans IDE


Les étapes qui vont suivre, vont nous permettre de :
1- saisir ;
2- compiler ; Un programme
3- exécuter

Dr. M. Djarallah 16 UB, FI, Départ. ELT Master I, CE/CE21-2009-2010


Chapitre 2 : Initiation à la Programmation en C et en Java

Etape 1 :  File et New Project

Fig. 2.5 : étape 1

Etape 2 :  General , Java application et Next

Fig. 2.6 : étape 2

Etape 3 :

• Nome du projet  Project Name


ex: Premier projet en Java.
• Le champ du Create Main Class
taper l’identificateur , ex:
PremierProjetJava.AppCal
• Laisser la case ‘set as Main
Project’ cochée pour avoir un
squelette du programme Java

Alors, le projet est créé dans le


répertoire indiqué par ‘Project
Location’

Fig. 2.7 : étape 3

Dr. M. Djarallah 17 UB, FI, Départ. ELT Master I, CE/CE21-2009-2010


Chapitre 2 : Initiation à la Programmation en C et en Java

Suggestion :
Changer au chemin CE21\projets_Java, où les répertoires : CE21 et projets_Java doivent être crées
au par avant.

• Cliquer ‘Finish’

Où tu vas avoir les fenêtres 

C’est le moment d’écrire ton premier programme en JAVA !!!!!!!!!!!

Fig. 2.8 : suite à l’étape 3

Mais avant ça, il faut donner quelques notions préliminaires afin de construire un programme
fonctionnel.

2.5. Squelette d’un programme en JAVA


En Java, on peut développer deux genres de programmes :
1- Les applications qui sont des logiciels classiques s'exécutant directement sur une plate-forme
spécifique soit à travers une machine virtuelle java soit directement en code exécutable par le
système d'exploitation. (code natif) ;
2- les applets qui sont des programmes java insérés dans un document HTML s'exécutant à travers
la machine virtuelle java du navigateur lisant le document HTML.

Dr. M. Djarallah 18 UB, FI, Départ. ELT Master I, CE/CE21-2009-2010


Chapitre 2 : Initiation à la Programmation en C et en Java

Nos applications, dans ce cours, vont être du premier genre, applications s’exécutent sur la
plateforme du labo 08. Ces applications sont de types classiques, où on va montrer comment
développer des programmes simples ; dont le but de connaître les constituants d’un programme JAVA.
Généralement, on trouve dans un programme JAVA classique (résolution d’un problème
scientifique) :
1- Les types élémentaires;
2- Variables, valeurs, constantes et opérateurs ;
3- Les instructions de contrôle ;
4- Classe avec méthode static
5- Etc..

2.6. Types élémentaires

Comme en C, en Java vous devez déclarer un objet ou une variable avec son type avant de l'utiliser.
Java dispose de même de types prédéfinis ou types élémentaires ou primitifs (Tableau 2.1).

Tableau 2.1 : Tableau synthétique des types élémentaires de Java

2.7. Variables, valeurs, constantes et opérateurs

Une variable ou un identificateur Java peut contenir soit une valeur d'un type élémentaire, soit
une référence à un objet. Les variables jouent le même rôle que dans les langages de programmation
classiques impératifs (voir les exemples)

Attention :
Java est sensible à la casse et fait donc une différence entre majuscules et minuscules SalEm # salem
Dr. M. Djarallah 19 UB, FI, Départ. ELT Master I, CE/CE21-2009-2010
Chapitre 2 : Initiation à la Programmation en C et en Java

Exemples de variables et de déclaration de variables :


int Bonjour ; int µEnumération_fin$;
float Valeur ;
char UnCar ;
boolean Test ;
etc ...

Exemples d'affectation de valeurs à ces variables :


Affectation Déclaration avec initialisation
Bonjour = 2587 ; int Bonjour = 2587 ;
Valeur = -123.5687 float Valeur = -123.5687
UnCar = 'K'; char UnCar = 'K' ;
Test = false; boolean Test = false ;

Dans le tableau ci-dessous (Tableau 2.2), les opérateurs de Java sont classés par ordre de
priorité croissante (0 est le plus haut niveau, 14 le plus bas niveau). Ceci sert lorsqu'une expression
contient plusieurs opérateurs, à indiquer l'ordre dans lequel s'effectueront les opérations.

Tableau 2.2 : Tableau des opérateurs en JAVA par priorité

Il existe aussi des opérateurs à unique variable comme le montre le tableau suivant

Dr. M. Djarallah 20 UB, FI, Départ. ELT Master I, CE/CE21-2009-2010


Chapitre 2 : Initiation à la Programmation en C et en Java

Post-incrémentation : k++

Pré-incrémentation : ++k

Remarque : Même effet pour la décrémentation : Post et pré décrémentation

Exercices : lequel est Post décrémentation ?

Dr. M. Djarallah 21 UB, FI, Départ. ELT Master I, CE/CE21-2009-2010


Chapitre 2 : Initiation à la Programmation en C et en Java

2.8. Exercices sur les : types élémentaires, variables, constantes et opérateurs

exo1 : Insérer ces lignes dans leurs places convenables pour avoir les résultats en bas :

Dr. M. Djarallah 22 UB, FI, Départ. ELT Master I, CE/CE21-2009-2010


Chapitre 2 : Initiation à la Programmation en C et en Java

Attention : %  le reste de la division : 4*8%10=2 et 4*8%(10)=4*8 = 32


En suivant les étapes données dans le paragraphe 2.5  Comment écrire une application (un
programme) NetBeans IDE, où :
1- le nome du projet est pris  application des Operateurs Aarthm ;
2- la classe où lepackage  AppliOperat_Arthm
3- ce projet est sauvegardé dans, par exemple,  EXO_TP4_JAVA
Si en laisse « set as Main Project » cochée, on va avoir le squelette suivant :

package AppliOperat_Arthm;

/**
* ………………Insérer l’auteur du programme…………………….
*/
public class Main
{
public static void main(String[] args)
{
…………………………………..
…………………………………..

……….. ACTIONS A FAIRES parties des calculs et affichages


……………………………………
}
}

Alors, après l’insertion, on obtient :

package AppliOperat_Arthm;
/**
* Dr. M.Djarallal le 5/5/2010
*/

public class Main


{
public static void main(String[] args)
{
int x=4, y=8, z=3, t=7, calcul;
calcul= x*y-z+t ;
System.out.println("x*y-z+t ="+calcul) ;
calcul= x*y-(z+t) ;
System.out.println("x*y-(z+t) ="+calcul) ;
calcul= x*y%z+t ;
System.out.println("x*y%z+t ="+calcul) ;
calcul= (x*y)%z+t ;
System.out.println("(x*y)%z+t ="+calcul) ;
calcul= x*y%(z+t) ;
System.out.println("x*y%(z+t) ="+calcul) ;
calcul= x*(y%(z+t)) ;
System.out.println("x*(y%(z+t)) ="+calcul) ;

Dr. M. Djarallah 23 UB, FI, Départ. ELT Master I, CE/CE21-2009-2010


Chapitre 2 : Initiation à la Programmation en C et en Java

}
}

Remarques :
1- Avant d’insérer les lignes de ton programme, consulter le répertoire : EXO_TP4_JAVA ; tu vas
trouver : le répertoire du projet Application des Operateurs Aarthm ; et à l’interieur de celui-
ci tu vas trouver : 5 ( 3 répertoires et deux fichiers)
2- Une fois, tu compiles le nombre de fichiers et répertoire devient égal à 7.

Exercice  consulter les répertoires de l’étape 1 et de l’étape 2, durant les deux étapes, qu’observes
tu ?

Exercice  confirmer les résultats suivants :


x*y-z+t =36 (x*y)%z+t =9
x*y-(z+t) =22 x*y%(z+t) =2
x*y%z+t =9 x*(y%(z+t)) =32

Exercice confirmer le résultat suivant  0.2 pour a=10.00 et b=10.00 :


// Variables, Entrees et Sorties
package ApplEnt_sort;

/*
* Dr.M. Djarallah
*/
import java.util.Scanner;
public class Main {
public static void main(String[]args) {
float a;
float b;
float s;
Scanner p=new Scanner (System.in);
System.out.println("***veuillez entrer le 1 er nombre***");
a=p.nextInt();
System.out.println("***veuillez entrer le 2eme nombre***");
b=p.nextInt();

if((a==0)&(b==0))
{
System.out.println("veuillez tapper des nombres positif");
}
else
{
s=(1/a)+(1/b);
System.out.println("***la somme est***"+s);
}
}
}

Dr. M. Djarallah 24 UB, FI, Départ. ELT Master I, CE/CE21-2009-2010


Chapitre 2 : Initiation à la Programmation en C et en Java

2.9. Entrées et Sorties en Java


2.9.1. Saisie par clavier
Il faut tout d'abord noter que java est un langage sécurisé, et qu'il existe un mécanisme
d'exception qui permet de gérer d'éventuelles erreurs lors de l'exécution du programme. Les méthodes
que nous allons utiliser pour capturer une chaîne entrée au clavier exploitent ce mécanisme.

1- Méthode Scanner
Premièrement, il faut importer import java.util.Scanner; (voir p : 24 précédente)
Puis, dans le “main” on utilise

Scanner Var1 =new Scanner (System.in);


……………………………………….
Var2 =Var1.nextInt();

2- Méthode exception
Aussi nous allons devoir effectuer une déclaration particulière (et obligatoire) qui nous
permettra de ne pas tenir compte des exceptions.

Il faut désormais déclarer la fonction main() de la façon suivante:

public static void main(String[] args) throws Exception {

//votre code...

D'autre part, Java n'est pas un langage très adapté à l'entrée d'informations directement à la
console de commande, même si cela est tout à fait possible.

Pour lire une chaîne entrée au clavier, on va utiliser la classe BufferReader. En tout début de
fichier, avant 'public class...' il faut écrire la ligne :

import java.io.*;

et dans la fonction main() on déclare :

BufferedReader clavier = new BufferedReader(new InputStreamReader(System.in));

Maintenant la ligne de code suivante :

chaine = clavier.readLine();

stoppe l'exécution du programme jusqu'à ce que une chaîne soit saisie au clavier terminée par ENTER),
puis retourne cette chaîne (ici récupérée par la variable chaine, de type String) et reprend l'exécution du
code.

Exercice1 Confirmer que le code qui va suivre affichera : « Bonjour nom », où nom étant le nom que
tu as tapé au clavier
import java.io.*;
Dr. M. Djarallah 25 UB, FI, Départ. ELT Master I, CE/CE21-2009-2010
Chapitre 2 : Initiation à la Programmation en C et en Java

public class Exercice1


{
public static void main (String [] args) throws IOException
{
BufferedReader clavier = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Saisissez votre nom : ");
String nom = clavier.readLine();
System.out.println("Bonjour " + nom);
}
}

Conversion vers une valeur


Comme vous venez de le voir, un paramètre est toujours du type String. Si on veut qu'un
paramètre soit une valeur entière il faut faire une conversion du type voulu.

 int Var1 = Integer.parseInt (clavier.readLine()) ;


String vers le type integer

 float Var2 = Float.parseFloat(clavier.readLine());


String vers le type float

 double Var2 = Double.parseDouble(clavier.readLine());


String vers le type double

2.9.2. Afficher sur écran


On utilise la fonction ‘ ou une méthode « println() de la classe « System.out » pour réaliser
l’affichage de messages ou de valeurs selon la syntaxe suivante :

System.out.println("Message"+Valeurs) ; (voir ps :24, 25 et 27)

 Confirmer que le programme suivant calcule les racines d’une équation de type
Exercice2
ax2 + bx +c = 0, bien sûre en identifiant les lignes responsables des E/S.

*
* Résolution d(une équation du 2 ordre
*/
package Sol_Equ_2;

/**
* Dr M Djarallah : 10/05/2010
*/
import java.io.*;
public class Main {
public static void main (String [] args) throws IOException
{
BufferedReader clavier = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Ce programme va resoudre votre equation du 2nd degre " );
System.out.println("Entrez le premier parametre : ");
double a = Double.parseDouble(clavier.readLine());

Dr. M. Djarallah 26 UB, FI, Départ. ELT Master I, CE/CE21-2009-2010


Chapitre 2 : Initiation à la Programmation en C et en Java

System.out.println("Entrez le deuxieme parametre : ");


double b = Double.parseDouble(clavier.readLine());
System.out.println("Entrez le troisieme parametre : ");
double c = Double.parseDouble(clavier.readLine());
double delta = (b * b) - (4 * a * c);//déclaration et affectation du discriminant
double s = (- b / 2 * a), s1 = (- b - Math.sqrt(delta))/ (2 * a);
double s2 = (- b + Math.sqrt(delta))/ (2 * a);
if(delta == 0)
{ System.out.println("Une seule solution S = { " + s + " }" ); }
else if (delta > 0)
{
System.out.println("Deux solutions : S = { " + s1 + ", " + s2 + " }");
}
else
{
System.out.println("Pas de solutions pour cette equation");
}
}
}

Exercice3 confirmer que le programme suivant affiche la table de multiplication de n’importe quel
nombre ; bien sûre après avoir identifier la tâche de chaque ligne du programme ;

import java.io.*; public class Main {


public static void main (String [] args) throws IOException {
BufferedReader clavier = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Saisissez un nombre entier : ");
int nombre = Integer.parseInt(clavier.readLine());
for(int i = 0; i <= 10; i++)
{
System.out.println(nombre + " fois " + i + " = " + (nombre * i));
}
}
}

Exercice4  Est-ce que ce programme s’exécute ? Si non dite pourquoi ?


public class Main Il y a un problème
{ de la division par
public static void main (String [] args) ZERO, la solution
{ c’est :
for(double i = -3; i <= 3; i++) if(i = =0)
{ { continue ;
System.out.println("inverse de " + i + " = " + (1 / i) ); }
} Où on va insérer ces
} lignes ?
}

Exécuter ce programme pour le type “double i” puis pour “int i” , qu’observes-tu ?

Dr. M. Djarallah 27 UB, FI, Départ. ELT Master I, CE/CE21-2009-2010


Chapitre 2 : Initiation à la Programmation en C et en Java

Exercice 5Confirme que ce fragment met fin au programme grâce à une saisie qui demande à
l’utilisateur d’entrer un caractère, puis il affiche ce caractère. Bien sûre! Le programme
s’arrête seulement si l’utilisateur entre le caractère 't'. A ce moment, le programme
affiche : fin du programme. D’après cet exercice, explique le fonctionnement de DO-
WHILE

import java.io.* ;
public class Exercice5 {
public static void main (String [] args) throws IOException {
char c; BufferedReader clavier = new BufferedReader(new InputStreamReader(System.in));
do {
System.out.println("saisissez un caractère. Pour terminer, saisissez 't' :");
c = clavier.readLine().charAt(0);
System.out.println("le caractère est : " + c);
} while(c != 't');
System.out.println("Donc, fin du programme");
}
}

Exercice 6 Confirme que ce programme maximum d’une série de valeurs entrées au clavier.

public class Exercice6


{
public static void main (String [] args) throws IOException
{
BufferedReader clavier = new BufferedReader(new InputStreamReader(System.in));
int saisie, maxi = 0;
do
{
System.out.println("Entrez un nouvel entier positif non nul :");
saisie = new Integer(clavier.readLine());
maxi = Math.max(maxi, saisie);
} while(saisie != 0);
System.out.println("Vous avez saisie 0. fin de saisie. ");
System.out.println("valeur maximale saisie = " + maxi);
}
}

Exercice7 Que représentent les méthodes (fonctions) : sqrt(),max( ), min( ), random(), etc.. obtenues
de la classe « Math » du JAVA dans les programmes précédents ?

 Avant la séance (‫ )ا‬de ce TP, saisie tous les programmes en Java dans un fichier WORD.
TP4
Durant la séance de ce TP, saisie les dans le IDE du Java et exécute en confirmant les
questions de ces exercices.

Dr. M. Djarallah 28 UB, FI, Départ. ELT Master I, CE/CE21-2009-2010