Le langage Java - Syntaxe



Documents pareils
Programmer en JAVA. par Tama

Java Licence Professionnelle CISII,

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java


INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Plan du cours. Historique du langage Nouveautés de Java 7

as Architecture des Systèmes d Information

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Introduction au langage C

TD3: tableaux avancées, première classe et chaînes

Notions fondamentales du langage C# Version 1.0

Informatique / Programmation

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

2. Comprendre les définitions de classes

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

ACTIVITÉ DE PROGRAMMATION

COMPARAISONDESLANGAGESC, C++, JAVA ET

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Programmation C++ (débutant)/instructions for, while et do...while

Java Licence Professionnelle CISII,

Cours d initiation à la programmation en C++ Johann Cuenin

TP, première séquence d exercices.

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

INITIATION AU LANGAGE JAVA

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

Solutions du chapitre 4

Package Java.util Classe générique

Les bases de l informatique et de la programmation. École polytechnique

Programmation Orientée Objets Le Langage JAVA

Une introduction à Java

Algorithmique et Programmation, IMA

Programme Compte bancaire (code)

Algorithmique et structures de données I

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Cours 1: Java et les objets

Cours d Algorithmique et de Langage C v 3.0

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Claude Delannoy. 3 e édition C++

INF 321 : mémento de la syntaxe de Java

Généralités sur le Langage Java et éléments syntaxiques.

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

1. Langage de programmation Java

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Utilisation d objets : String et ArrayList

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

PROGRAMMATION PAR OBJETS

Projet de programmation (IK3) : TP n 1 Correction

Cours Informatique Master STEP

Langage à objets : JAVA (1)

Langage Java. Classe de première SI

4. Groupement d objets

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Programmation Classique en langage C

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

SUPPORT DE COURS. Langage C

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Flux de données Lecture/Ecriture Fichiers

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Programmation en Java IUT GEII (MC-II1) 1

Introduction à l algorithmique et à la programmation M1102 CM n 3

Corrigé des TD 1 à 5

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

L ALGORITHMIQUE. Algorithme

Auto-évaluation Programmation en Java

Corrigé des exercices sur les références

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

UE C avancé cours 1: introduction et révisions

Anne Tasso. Java. Le livre de. premier langage. 6 e édition. Groupe Eyrolles, 2000, 2002, 2005, 2006, 2008, 2010, ISBN :

TP1 : Initiation à Java et Eclipse

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

Conventions d écriture et outils de mise au point

Cours d algorithmique pour la classe de 2nde

Un ordonnanceur stupide

Gestion distribuée (par sockets) de banque en Java

Support de cours et TD Programmation Orientée Objet

Premiers Pas en Programmation Objet : les Classes et les Objets

Apprendre Java en 154 minutes

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Introduction au Langage de Programmation C

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Initiation à la programmation en Python

Corrigés des premiers exercices sur les classes

Derrière toi Une machine virtuelle!

Initiation. àl algorithmique et à la programmation. en C

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Transcription:

Le langage Java - Syntaxe LES STRUCTURES DE CONTRÔLES LE BLOC D INSTRUCTIONS EXÉCUTION CONDITIONELLE SI... ALORS... SINON CASCADER LES CONDITIONS AU CAS OÙ... TANT QUE... FAIRE... FAIRE... TANT QUE... POUR... FAIRE... IDENTIFIER UNE INSTRUCTION RUPTURE CONTINUATION TESTPREMIER2... TESTAMICAUX 1

Les structures de contrôles les différentes stuctures de contrôle: le si-alors, le faire-tantque, le tantque-faire, dans-le-cas 2

Le bloc d instructions contenu entre {. définit la visibilité des variables. instruction = bloc d instructions 3

Exécution conditionelle Il existe deux formes d exécution conditionnel. le si_alors_sinon et le dans_le_cas. 4

Si... alors... sinon structure de base de la programmation L expression de test booléene (vraie ou fausse) if (e) S1; if (i==1) s=" i est égal à 1 "; if (e) S1 else S2; if (i==1) s=" i est égal à 1 "; else s=" i est différent de 1 "; De ces deux formes, nous pouvons dériver: if (e) {B1; if (i==1) { s=" i est égal à 1 "; i=j; if (e) {B1 else {B2; if (i==1) { s=" i est égal à 1 "; i=j; else { s=" i est différent de 1 "; i=1515; 5

cascader les conditions if (e1) S1 else if (e2) S2... else Sn; if (i==1) s=" i est égal à 1 "; else if (i==2) s=" i est égal à 2 "; else if (i==3) s=" i est égal à 3 "; else s=" i est différent de 1,2 et 3 "; L utilisation de { est nécessaire marquer le début est la fin des instructions; i=0; j=3; if (i==0) if (j==2) s=" i est égal à 2 "; else i=j; System.out.println(i); Que va imprimer le programme suivant 0 ou 3? Il va imprimer 3! car i=0 et j!=2 alors on exécute i=j. Le else se rapporte en effet au if le plus imbriqué. 6

7 au cas où

switch = un aiguillage. limité à char, byte, short,int. évalue l expression qui lui est liée, compare aux case. commence à exécuter le code du switch OK exécute donc tous les instructions des cas suivants. isoler chaque cas, il faut le terminer avec un break. Si aucun cas, clause default case et defautl sont considérer comme des étiquettes. switch (e) { case c1: S1; case c2: S2;... case cn: Sn; default: Sd ; Examinons la forme générale de switch avec break; switch (e) { case c1: S1 break; case c2: S2 break;... case cn: Sn break; default: Sd ; 8

au cas où... class TestSwitch{ public static void main (String args[]) { int i=3; switch (i) { case 1: System.out.println("I"); break; case 2: System.out.println("II"); break; case 3: System.out.println("III"); break; case 4: System.out.println("IV"); break; case 5: System.out.println("V"); break; default: System.out.println( "pas de traduction"); 9

tant que... faire... L expression e doit être du type booléen. while (e) S1;. while (e) {B1; class TestWhile{ public static void main (String args[]) { int i=100, somme_i=0, j=0; // boucle 1: expression sans effet de bord while (j<=i) { somme_i+=j; ++j; System.out.println("boucle 1:"+somme_i); // boucle 2: expression avec effet de bord somme_i=0; j=0; while (++j<=i ) somme_i+=j; System.out.println("boucle 2:"+somme_i); 10

faire... tant que... L expression e doit être du type booléen. do S1 while(e); do {B1 while(e); class TestDo{ /* le résultat n est pas erroné si l on execute une addition de trop si i= 0! */ public static void main (String args[]) { int i=100, somme_i=0, j=0; // boucle 1: expression sans effet de bord do { somme_i+=j; ++j; while (j<=i); System.out.println("boucle 1:"+somme_i); // boucle 2: expression avec effet de bord somme_i=0; j=0; do somme_i+=j; while (++j<=i ); System.out.println("boucle 2:"+somme_i); 11

pour... faire... basé sur un itérateur qui est contrôlé dans l instruction expression initialise l itérateur + le déclare expression teste si la condition d achèvement expression modifie l itérateur. for (e1;e2;e3) S1;. for (e1;e2;e3) B1; Les expressions e2 et e3 sont optionnelles. Le bloc B1doit modifier l itérateur un break pour quitter la boucle. for est équivalent au while e1; while(e2) {S1; e3; 12

pour... faire... class TestFor{ public static void main (String args[]) { int n[] = new int[100]; // boucle 1: calculer la somme des entiers pour // indice du vecteur for (int i=1; i<100; i++) n[i]=n[i-1]+i; // boucle 2: imprimer le résultat par // ordre décroissant for (int i=99; i>=0;) { // modification de i dans le bloc d instructions System.out.println("somme("+i+")="+n[i]); i--; 13

identifier une instruction identifier une instruction ou un bloc d instructions instructions de rupture continuation d itération. class LabelInst{ public static void main (String args[]) { boucle1: for (int i=0;i<10;i++) for (int j=0; j<10;j++){ System.out.println(i+"/"+j); 14

rupture utilisé dans l instruction switch, while, do et for quitter la boucle dans laquelle elle est comprise remonter de plusieurs niveaux class TestBreak{ public static void main (String args[]) { boucle1: for (int i=0;i<10;i++) for (int j=0; j<10;j++){ System.out.println(i+"/"+j); // quitte la boucle locale if (j==1) break; // quitte la boucle for i... if (i==2) break boucle1; exécution du programme TestBreak: 0/0 0/1 1/0 1/1 2/0 15

rupture... Le break quitte le bloc complet d instruction libellé. les clauses finally sont exécutées. class TestBreak2{ public static void main (String args[]) { boucle1:{ for (int i=0;i<10;i++) if (i==2) break boucle1; System.out.println("ne sera pas écrit"); 16

continuation continue est utilisée dans while, do et for. interruption du déroulement normal de la boucle repris après la dernière instruction de la d associer une étiquette class TestContinue{ public static void main (String args[]) { boucle1: for (int i=0;i<10;i++) for (int j=0; j<10;j++){ // quitte la boucle locale if (j>1) continue; // quitte la boucle for i... if (i>2) continue boucle1; System.out.println(i+"/"+j); System.out.println("en dehors des boucles"); exécution du programme TestContinue: 0/0 0/1 1/0 1/1 2/0 2/1 en dehors des boucles 17

TestPremier2 Dans le programme TestPremier2, dans la boucle1, nous cherchons tous les nombres premiers jusqu à 1100. Nous conservons ces nombres dans un vecteur p. On remarquera : - i+=2; permet d incrémenter par deux. - j<i/j; la condition d arrêt évolue avec l indice. - continue boucle1; interrompt les tests dès qu un diviseur de i a été trouvé. - seuls sont conservés les nombres n ayant pas quittés la boucle prématurément (donc ayant subit avec succés le test) Dans la boucle2, nous cherchons les intervalles les plus grands sans nombre premier (entre 7 et 11, nous avons un trou de 4). On remarquera : - la boucle portant sur l indice j test la primalité d un nombre en utilisant uniquement les nombres stockés dans le vecteur p (crible d Eratosthème). - p[j]<i/p[j]; la condition d arrêt pour plus directement sur l indice j, mais sur les valeurs référencées. - continue boucle2; On quitte la boucle de test si l on trouve un diviseur. - quand on trouve un nombre premier, on test sa distance avec le précédent. Si elle est plus grande que la dernière trouvée, alors on l imprime. 18

TestPremier2... class TestPremier2{ public static void main (String args[]) { int p[]=new int[200]; int dernierp=1; p[0]=2; p[1]=3; boucle1: for (int i=5;i<1100;i+=2){ for (int j=3; j<i/j;j+=2) if ((i%j)==0) continue boucle1; dernierp++; p[dernierp]=i; System.out.println("P entre 2 et 1100: "+dernierp); int dp=11, trou=4; boucle2: for (int i=13;i<1000000;i+=2){ for (int j=1; p[j]<i/p[j];j++) if ((i%p[j])==0) continue boucle2; if (i-dp>trou) { trou=i-dp; System.out.println(dp+".."+i+" = "+trou); dp=i; System.out.println("fin!"); 19

TestPremier2... L exécution du programme TestPremier2: P entre 2 et 1100: 193 31..37 = 6 89..97 = 8 139..149 = 10 199..211 = 12 293..307 = 14 887..907 = 20 1129..1151 = 22 1327..1361 = 34 9551..9587 = 36 15683..15727 = 44 19609..19661 = 52 31397..31469 = 72 155921..156007 = 86 360653..360749 = 96 370261..370373 = 112 492113..492227 = 114 fin! 20

TestAmicaux permet de trouver les nombres amicaux (un nombre dont la somme des diviseurs est égale à un autre nombre et vice-versa). Exemple: 220 et 284 sont amicaux somme_div(220)=1+2+4+5+10+11+20+22+44+55+110=284 somme_div(284)=1+2+4+71+142=220 Dans la boucle1, on calcule pour les nombres jusqu à 10000, la valeur de la somme de leurs diviseurs que l on mémorise dans un vecteur p. Le code est très semblable à celui de la recherche des nombres premiers sauf qu ici nous voulons conserver la valeur des diviseurs. Dans la boucle2, on cherche les nombres amicaux. On remarquera : - ((p[i]<10000)&&(p[p[i]]==i)); la condition du test avec abandon, ceci permet de test si la somme des diviseurs est plus grande que 9999, alors on effectue pas le test d amitié entre les nombres (dans le cas contraire, il ne faut pas effectuer ce test car on sort des valeurs autoriseés pour le vecteur p. 21

TestAmicaux... class TestAmicaux{ public static void main (String args[]) { int p[]=new int[10000]; int dernierp=1; p[1]=1; p[3]=1; p[5]=1; p[2]=1; p[4]=3; p[6]=6; // boucle 1 for (int i=7;i<10000;i++) for (int j=1; j<=i/2;j++) if ((i%j)==0) p[i]+=j; // boucle 2 for (int i=2;i<10000;i++) if ((p[i]<10000)&&(p[p[i]]==i)) System.out.println(i+" "+p[i]); System.out.println("fin!"); 22

TestAmicaux L exécution du programme TestAmicaux: 6 6 28 28 220 284 284 220 496 496 1184 1210 1210 1184 2620 2924 2924 2620 5020 5564 5564 5020 6232 6368 6368 6232 8128 8128 fin! Les nombres qui sont amicaux avec eux-mêmes sont des nombres parfaits! (comme 6, 28,...). 23

24 mais où sont les objets?