1.1- Syntaxes de base en Java


1 Types de base - Opérateurs - Structures de contrôle

2 Tableaux


1 Types de base - Opérateurs - Structures de contrôle

Fin d'instruction

Une instruction se termine par ";"

Formes des commentaires

Les commentaires sont incrits sur des lignes en étant précédés de //

Les commentaires sont inscites entre /* et */. éventuellement sur plusieurs lignes

Nom variable



Types primitifs

Java propose un certain nombre de type primitifs, soit des types qui ne sont pas des types objets.
Des types entiersshort,int,long
Des types réelsfloat,double
Un type booléenboolean à valeur {true, false}
Un type charUne variable de ce type contient un caractère ANSI


Initialisation et affectation de variables

L'affectation est de la forme : Variable=valeur; ou Variable=expression;. Quelques exemples :
int i=8;/*Declaration et affectation*/
int j;/*Declaration*/
j=7;/*Affectation*/
char c='a';/*Declaration et affectation*/
char d='\n';/*Décalaration et affectation, caractère de saut de ligne*/
char tabulation='\t';/*Décalaration et affectation, caractère de tabulation*/
int n1,n2,n3;/*Declaration multiple*/
double x1=0.1,x2=1002.5,x3=9;/*Decalaration et affectation multiple*/


Opérateurs arithmétiques et transtypage

Ces opérateurs peuvent aussi s'appliquer sur des variables de type char, avec des résultats inattendus parfois avant de faire des tests.
Les opérateurs traditionnels+, -, /, *
Opérateur d'incrémentation, décrementation++
L'opérateur modulo%
Un opérateur équivalent à nb=nb+3nb+=3
Une série d'opérateurs de même genre que +=-=, *=, /=
Attention au renvoi d'un opérateur int/int renverra un int, soit un arrondi implicite : les résultats peuvent se trouver modifiés par cet arrondi implicite, une première méthode pour éviter ce problème consiste à passer par des variables intermédiaire comme fait sur l'exemple :
int n=5;
int m=7;
System.out.println(n/m);
double x=m;
System.out.println(n/x);
n++;
System.out.println(n);
System.out.println(m--);
n+=6;
m/=7;
System.out.println(n);
System.out.println(m);
Sinon, on peut induire des transformation de type ou transtypage :
int m=5;
int m=7;
double x=m/n
double y=m/(double)n;
System.out.println(x+" "+y);


Conditions logiques

opérateur de comparaison - égalité==
opérateur de comparaison - inégalités>=, <=, <, >
Opérateur de comparaison - différent<>
Enchainement de conditions ET&&
Enchainement de conditions OU||
Enchainement de conditions NON!
Quelques exemples :
boolean b0=(5<6);
System.out.println(b0);/*Affiche vrai*/
boolean b1=((5==1) && 6>5));
System.out.println(b1);/*Affiche faux*/
boolean b2=('\n'=='\n' || 5>6);
System.out.println(b2);/*Affiche vrai*/
boolean b3=(7<>5.65 && (3>4 || 6>5));
System.our.println(b3);/*Affiche vrai*/


Structures de contrôle

Toutes les structures de contrôle ne sont pas évoquées ici : on donne 2 structures de boucles et une structure conditionnelle, les autres structures de contrôle n'apportent pas d'autres possibilités. Ces structures recevront des exemples dans la suite. La structure for :

	for(instruction d'initialisation;instruction de poursuite / arrêt de la boucle;instruction à chaque tour de boucle)
	{
	/*Les instructions qui sont répétées dans la boucle*/
	}
Par exemple :
int somme=0;	
	for(int i=0;i<5;i++)
	{
	somme=somme+i;
	System.out.println(sommme);
	}


La structure while :
	while(Condition(s) Logique(s))
	{
	/*Les instructions qui sont répétées dans la boucle*/
	}
Par exemple :
int somme=0,i=0;	
	while(i<5)
	{
	somme=somme+i;
	System.out.println(sommme);
	}


La structure if...else if... else if...else..., elle peut être implémentée de différentes manières :
	if(Conditons 1)
	{
	/*Instructions sous les conditions 1*/
	}
	else if(conditions 2)
	{
	/*Instructions sous les conditions 2*/
	}
	else
	{
	/*Instructions si ni les conditions 1, ni les conditions 2 ne sont vérifiées*/
	}
Le else if n'est pas obligatoire, le else non plus :
	if(Conditions 1)
	{
	/*Instructions sous les conditions 1*/
	}
Des niveaux intermédiaires sont envisageables :
	if(Conditons 1)
	{
	/*Instructions sous les conditions 1*/
	}
	else if(conditions 2)
	{
	/*Instructions sous les conditions 2*/
	}
	else if(conditions 3)
	{
	/*Instructions sous les conditions 3*/
	}
Note : il existe des syntaxes un peu différentes, des raccourcis dans certains cas, la présentation proposée ici est la plus générale possible et mieux s'y tenir dans un premier temps.

Ecrire en sortie sur l'écran

Une instruction utilisée n'a pas été explicitée : System.out.println("...");. Cette structure sera entièrement comprise plus tard. Pour l'instant, on peut retenir que :
System.out.println("Hello World");
Affiche Hello World à l'écran. + peut être utilisé comme opérateur de concaténation pour construire des affichage incluant le contenu des variables :
int i=6;
System.out.println("Valeur de i : "+i);
ce code affichera Valeur de i : 6. La concaténation peut être plus complexe :
int i=6;
int j=9;
double x=77.76
System.out.println("La valeur de i est : "+i+" , la valeur de j est : "+j+", enfin, celle de x est : "+x);
on peut également ajouter des caractères spéciaux pour modifier la forme de l'affichage, par exemple :
System.out.println("\tHelloWord\n\n\n\n\n");

On pourrait s'arrêter là, et ne faire qu'écrire des programmes en procédurale entre les deux accolades du main(), une nouvelle dimension de la programmation est introduite en 3.2.

2 Tableaux

Déclaration et initialisation

Les tableaux constituent une première méthode pour collectionner des objets.
/*declaration de t comme tableau de int : */
int[] t;
/*declaration de t2 comme tableau de int : */
int t2[];
/*declaration de t3,t4 comme tableaux de int : */
int[] t3,t4;
/*declaration de t5,t6 comme tableaux de int : */
int t5[],t6[];
/*De la meme manière, pour tous les cas précédent, il est possible de faire la décalaration de tableau d'objets de meme type*/
Facture[] f;
Là encore, déclaration ne vaut pas création. Création de tableau :
int n=7;
int t[]=new int[n];
int m=8;
Facture[] f;
f=new Facture[m];
Pour l'initialisation, on fournir une liste de valeurs :
int n,p;
...
int t[]={1,n,n+p,2*p,12};
L'instruction précédente crée un tableau de 5 entiers ayant les valeurs des expressions mentionnées, elle remplace les instructions suivantes :
int n,p,t[];
...
t=new int[5];
t[0]=1;t[1]=n;t[2]=n+p;t[3]=2*p;t[4]=12;


Utilisation de tableaux-accès individuel

On peut manipuler un élement de tableau comme on le ferait avec n'importe quelle variable ou n'importe quel objet du type de ses élements. On désigne un élement particulei en plaçant entre crochets, à la suite du nom du tableau, une expression entière nommée indice indiquant sa position. Le premier élement correspond à l'indice 0

int[] t=new int[5];
...
t[0]=15;//place la valeur 15 dans le premier élement du tableau t.
...
t[2]++;//incrémente de 1 le troisième élement de t.
...


Utilisation de tableaux-affectation de tableaux

Java permet également de manipuler globalement des tableaux, par le biais d'affectation de leur réferences.

int[] t1=new int[3];
	for(int i=0;i<3;i++)
	{
	t1[i]=i;
	}
int[] t2=new int[2];
	for(int i=0;i<2;i++)
	{
	t2[i]=10+i;
	}
t1=t2;/*Affectation du tableau t2 au tableau t1*/
t1[1]=5;
System.out.println(t2[1]);
Ce code affiche la valeur 5 et non 10 !

Utilisation de tableaux-affectation de tableaux

On peut récupérer la taille d'un tableau : ceci permet ensuite un traitement automatique par des fonctions de tableaux de tailles diverses :
public void afficheTailleTableau(int[] t)
	{
	System.out.println(t.length);
	}


Tableaux d'objets

On peut manipuler nos objets de type Facture dans le cadre de tableaux :
Facture[] tab=new Facture[3];
tab[0]=new Facture(5,7);
tab[0].calcMontant();
Facture f=new Facture(1,1);
tab[2]=f.calcMontant();
System.out.println(tab[0].montant);/*Affiche 35*/
System.out.println(tab[1]);/*Affiche null*/
System.out.println(tab[2].montant);/*Affiche 1*/


Tableaux en arguments de retour

Une fonction peut avoir comme type de retour un tableau.<
int[] notes=new int[59];

public int[] renvoiNotes()
	{
	return this.notes;
	}


Tableaux à plusieurs indices

Java travaille avec des tableaux de tableaux : ie des tableaux dont les élements sont des tableaux. Pour un tableau à deux dimensions, des déclarations équivalentes :
int t[][];
int[]t[];
int [][]t;
Soit l'initialisation :
int t[][]=new int[2][];
int[] t1=new int[3];
int[] t2=new int[2];
t[0]=t1;
t[1]=t2;
Dans ce cas, t.length vaut 2, t[0].length vaut 3 et t[1].length vaut 2. Pour avoir l'équivalent d'une matrice, ie une collection de tableaux de même taille :
int[][] t=new int[3][2];