Chap2 - Elements de Base
Chap2 - Elements de Base
Chap2 - Elements de Base
Chapitre 2:
1. Commentaires
Pour des raisons de lisibilité, il est toujours commode d'ajouter des commentaires au code source d'un
programme. Trois notations sont admises:
// commentaire sur une ligne
/* commentaires
sur plusieurs lignes
*/
A partir du commentaire on peut générer automatiquement la documentation sous forme de pages web
/** commentaire utilisé pour javadoc pour la génération automatique
de la documentation*/
2. Blocs
3. Identificateurs
Un identificateur (nom de variables, classes, constante, package) commence par une lettre, trait de
soulignement _, ou un dollar $.
4. Mots réservés
abstract Default if package throw
boolean do implements private trows
break Double import protected tansient
byte Else instanceof public true
case Extends int return try
catch False interface short void
char Final long static volatile
class Finally multicast super while
continue Float native switch enum
const For new synchronized
delegate Goto null this
5. Types primitifs
Le langage java est fortement typé. Pas de conversions implicites s'il y a une perte d'information.
Par exemple, du type int vers type double.
Type booléen: permet de représenter deux valeurs true ou false.
Exemple:
boolean trouve;
b. Types entiers: les quatre types entier en Java sont: byte, short, int et long. Ils sont des
entiers signés mais qui diffèrent par la taille mémoire occupée et la plage de valeurs qu'ils
puissent représenter:
type taille mémoire intervalle
byte 1 octet [-128..127]
short 2 octet -215..215-1
int 4 octet -231..231-1
long 8 octet -263..263-1
19 est une valeur de type int alors que 19L est un entier long
c. Types réels: déclaré comme float ou double. Si une valeur contient une décimale elle est
considérée comme double sinon c'est un float.
Exemple:
2.0 est un double
2.0F est un float
2.0E4 égale 20000
d. Type référence: Est un type destiné à contenir une adresse d'objet ou tableau. Il rappelle
les pointeurs. Si une variable de type référence possède la valeur null, cela veut dire
qu'elle ne pointe rien.
6. Les constantes
Pour déclarer une constante on utilise le mot clé final. Par convention, les constantes sont en
toutes majuscules.
Exemple:
Pour déclarer la constante réelle π, on écrira: final double PI=3.14;
Une constante en java peut être initialisée seulement lors de la déclaration ou dans le constructeur.
Une constante ne peut être initialisée qu'une seule fois au cours de traitement.
8. Conversion de types
Si dans une expression les opérandes sont de types différents, le résultat est converti vers le type le
plus grand (large). Les types doivent être compatibles:
Exemple:
int x=2;
long z,y=4;
z=x*y;// le résultat est converti en long
Lors d'une affectation la valeur affectée est convertit au type de la variable à gauche:
Exemple:
int i=2;
long x=5;
x=i;//instruction légale
i=x;//instruction illégale
char c='s';
int a=c+1;
9. Fonctions mathématiques
fonction java description exemple résultat (double)
Math.ceil(double x) l'entier suivant du réel Math.ceil(5.5) 6.0
Math.floor(double x) l'entier précédent du réel Math.floor(5.5) 5.0
Math.round(double x) l'entier le plus proche au réel Math.round(5.5) 6.0
Math.random() valeur aléatoire dans l'intervalle [ 0..1.0[ Math.random() imprévisible
Il est possible de concaténer une chaîne avec un autre type de données : entier, réel, Caractère,
Booléen, Objet. String S="bonjour"+2014;
System.out.println(ch1);
System.out.println(ch2);
String ch3=ch1+ch2;
System.out.println(ch3);
}}
On aura à l’écran :
Bonjour
Tout le Monde
BonjourTout le Monde
c. Méthodes usuelles : taille et extraction
i. Taille d’une chaine de caractère
Pour connaître la taille d’un chaine de caractère, on utilise la méthode length() qui retourne le
nombre de caractères d’un objet de type String :
System.out.println("Bonjour".length()) ;
Ou
s="Bonjour";
System.out.println(s.length()) ;
la méthodes charAt(int pos) retourne le caractère qui se trouve à la position pos dans une chaine
de caractères. La première position sera 0. Exemple :
s="Bonjour";
char c=s.charAt(0);
System.out.println(c) ;
Affiche à l’écran
Remarque: l'écriture suivante s[i] n'est plus valable en java. Une chaine en java n'est pas un tableau de
caractères.
substring(int pos): Renvoie une nouvelle chaine formée par tous les caractères
d’une autre chaine à partir d’une position pos jusqu'à la fin de la chaine.
Exemple
String s1="Bonjour";
String s2=s1.substring(1,3);
s2=on
System.out.println("s2="+s2);
Affiche sur écran s2=our
s2=s1.substring(4);
1.
System.out.println("s2="+s2);
3.
iv. Comparer les chaînes de caractères
Pour comparer 2 chaines, on utilise la fonction equals de la classe String. La comparaison avec
l’opérateur == vérifie est ce que les deux chaînes référencient le même objet. La fonction
equalsIgnoreCase permet de comparer deux chaines sans tenir compte de la casse (sans distinguer
majuscule/minuscule) :
true
String s1=new String("Bonjour");
false
System.out.println(s1.equals("Bonjour"));
Affiche sur écran
System.out.println(s1=="Bonjour");
6.
Page 5 Prof. Sami GHARBI
Chapitre 2: Eléments de base du langage java
int l=ch.length();
System.out.println(ch.compareTo("lundi"));
Affiche à l'écran -10 Puisque "bonjour" est avant "lundi" dans l'ordre lexicographique.
String s1="Bonjour";
3
int n=s1.indexOf("j");
System.out.println(n); 1
Affiche sur écran
n=s1.indexOf("o"); 4
9.
System.out.println(n);
n=s1.lastIndexOf("o");
System.out.println(n);
String.valueOf (<variable>)
Qui retourne une chaîne de caractères équivalente à la valeur de la variable passée en paramètre :
double d=12.0 ;
String s=String.valueOf(d) ;
Conversion Exemple
Explications:
char []T: crée une référence vers un tableau de caractères.
T=new char[4]: allocation de la mémoire pour 4 caractères référencés par la variable T.
Toutes les cases du tableau sont initialisées avec le caractère de valeur nulle ( '\0' ).
System.out.println(T);:cette instruction permet d'afficher les éléments d'un
tableau(valable seulement pour un tableau de caractères sinon on utilise une boucle).
2. Longueur
On peut connaître à l'exécution la taille d'un tableau. Si la référence tab désigne un tableau, on pourra
écrire: tab.length .En quelque sorte length est un attribut du tableau. Cet attribut est en lecture
seule: on ne peut pas le modifier.
Permet de créer un tableau à deux dimensions: Matrice. Elle contient 6 lignes et 8 colonnes.
Il est encore possible en java de créer un tableau de différentes dimensions. Soit la déclaration suivante:
int M[][]=new int[3][];
M[0]=new int[4];
0 0 0 0
M[1]=new int[2];
0 0
M[2]=new int[5];
0 0 0 0 0
Le tableau est formé par 3 lignes. La 1ère ligne contient 4 colonnes (cases), la 2ème contient 2
colonnes et la 3ème contient 5 colonnes. Ce qui donne le tableau suivant initialisé à des 0.
{
//bloc d'instructions à exécuter tant que l'expression booléenne est vraie
}
structure foreach
Appelée aussi for améliorée (enhanced for). Utilisée pour parcourir une collection d'objets (tableau ou
collection java).
for(<type><identificateur>:<collection>)
{
//bloc d'instructions à exécuter jusqu'à la fin de la collection
}
Exemple: soit un tableau T d'entiers. Pour calculer la somme de ses
elements:
int S=0;
for(int a:T){
S+=a;
}
Structure while
while(<expression_booléenne>)
{
//bloc d'instructions à exécuter tant que l'expression booléenne est vraie
}
Structure do….while
do
{
//bloc d'instructions à exécuter tant que l'expression booléenne est vraie
} while(<expression_booléenne>);
Exemples:
double y=13;
System.out.println("le résultat="+y);le résultat=13
System.out.println("le résultat="+y+1); le résultat=131
+ est un opérateur de concaténation des 3 paramètres
System.out.println("le résultat="+(y+1)); le résultat=14
+ est un opérateur de somme dans y+1 et concaténation avec la chaine.
c. Paramètres d'exécution
Il est possible au moment de l'exécution d'introduire des données sous forme de paramètres (arguments).
Ces paramètres sont récupérés dans un tableau de chaines de caractères par la méthode main.
Exemple:
class Test{
public static void main(String[]args){
for(int i=0;i<args.length;i++){
System.out.println("paramètre N° "+i+"="+args[i]);
}
}
}
Lors de l'exécution
Pour exécuter on doit appeler la JVM (java) pour lui renseigner la classe qui contient main suivie par les
arguments:
Questions de cours
1. Lesquels de ces instructions sont correctes :
a. int x=10;
b. double a=10;
c. int a;
double x;
a=x;
d. float x=10.5;
e. char c=23;
f. boolean b=0;
g. int a='a';
h. double x=10.7;
i. float z=10.7d;
j. float a=10.7F;
k. float f=(float)10.7;
l. boolean b=True;
m. boolean b=1= =2;
n. char c="a";
2. Quelle est la valeur de x après cette instruction int x=12==5?10:40;
a. false
b. 10
c. 40
d. 0
e. Erreur de syntaxe
3. un caractère en java
a. est codé en ASCII
b. est codé en UNICODE
c. est un objet
d. est comparable
e. peut être utilisé comme entier
f. peut-être une lettre arabe
4. soit l'instruction Voiture V1. Lesquelles parmi les affirmations suivantes sont correctes :
a. V1 est une référence d'objet
b. V1 a la valeur null
c. Cette instruction est incorrecte
char c='a';
switch(c){
case 'a': System.out.print("ok");
case 'b': System.out.print("nok");
}
Qu'Affiche-t-il?
a. oknok
b. ok
c. nok
7. soit le code suivant:
int z=0;
int x=z++;
System.out.println("x="+x+"\tz="+z);
Qu'Affiche-t-il?
a. x=0 z=1
b. x=1 z=1
c. erreur de syntaxe
d. erreur d'exécution
8. comment déclarer une constante x de valeur 10
a. const x=10;
b. const int x=10;
c. constant x=10;
d. constant int x=10;
e. final x=10;
f. final int x=10;
g. define x=10;
9. Les classes Wrapper permettent de:
a. Définir les opérations propres à chaque type primitif
b. Gérer les erreurs du programme java
c. Utiliser les variables primitifs comme des objets
d. créer des bibliothèques mathématiques
10. Pour comparer le contenu de deux chaines :
a. On utilise la méthode equals de l'un des deux
b. On utilise la méthode equals de la classe System
c. On utilise l'opérateur = =
d. On utilise la méthode compareTo
e. On crée une méthode (fonction) de comparaison
11. Lesquelles parmi ces instructions sont correctes :
a. String S="java";
println(S.length());
b. String S=new String("java");
c. int taille="java".length();
d. String k="java"+12;
e. System.out.println("java",2015);
12. Pour extraire gramme de la chaine ch qui contient programme on doit écrire :
a. String h=ch.substring(3)
b. String h=ch.susbstring(3,8)
c. String h=ch.substring(3,9)
d. String h=substring(ch,3,6)
Exercices
Exercice 1:
Traduire l'algorithme suivant en java:
Algorithme surface
Const
Pi=3.141592
Var
S,P,R:réel
Debut
Ecrire ("donner le rayon:");
Lire (R)
p2*pi*R
spi*R*R
ecrire("le perimetre=",p)
ecrire("la surafce=",s)
Fin
Exercice 2 :
Créer un programme qui calcule la somme, la moyenne, et le maximum d’entiers saisis.
Proposez 3 solutions :
En utilisant le tableau d'arguments de la méthode main
En utilisant votre tableau
Exercice 3 :
Créer un programme qui compte le nombre de voyelles dans une chaine de caractères.
Exercice 4 :
Créer un programme qui sépare les valeurs d'une adresse IP. Puis affiche la classe de l'adresse.
Exercice 5 :
Créer un programme qui remplace un caractère par un autre dans une phrase. Les données sont saisies au
clavier.
Exercice 6 :
Créer un programme qui découpe une phrase en mettant chaque mot dans une case de tableau. On
suppose que chaque deux mots sont séparés par un seul espace. Utilisez la structure for améliorée (for
each).