Mini-projet Bataille navale en Javascool Éléments de solution - une proposition

Dimension: px
Commencer à balayer dès la page:

Download "Mini-projet Bataille navale en Javascool Éléments de solution - une proposition"

Transcription

1 Mini-projet Bataille navale en Javascool Éléments de solution - une proposition Lycée Marcel Rudloff - Strasbourg Octobre 2017

2 Objectifs Une bataille navale en console? x x O x O O o O x Vous avez joue en E6 Dans l eau! x x O x O x O o o O x Vous avez joue en F7 Torpilleur coule! Bravo Capitaine Marchant!

3 Objectifs Une bataille navale en console? x x O x O O o O x Vous avez joue en E6 Dans l eau! x x O x O x O O O O x

4 Bon conseils généraux... pour mener un projet informatique Bien se mettre d accord pour les variables Comment les différentes parties interagissent Des variables globales? Souvent plus facile, déconseillé plus tard mais pas en terminale! Décomposer en différentes tâches Diviser pour mieux régner! Une fonction par tâche : plus facile à coder, plus facile de répartir le travail.

5 Bon conseils généraux... pour mener un projet informatique Bien se mettre d accord pour les variables Comment les différentes parties interagissent Des variables globales? Souvent plus facile, déconseillé plus tard mais pas en terminale! Décomposer en différentes tâches Diviser pour mieux régner! Une fonction par tâche : plus facile à coder, plus facile de répartir le travail.

6 Bon conseils généraux... pour mener un projet informatique Bien se mettre d accord pour les variables Comment les différentes parties interagissent Des variables globales? Souvent plus facile, déconseillé plus tard mais pas en terminale! Décomposer en différentes tâches Diviser pour mieux régner! Une fonction par tâche : plus facile à coder, plus facile de répartir le travail.

7 Bon conseils généraux... pour mener un projet informatique Bien se mettre d accord pour les variables Comment les différentes parties interagissent Des variables globales? Souvent plus facile, déconseillé plus tard mais pas en terminale! Décomposer en différentes tâches Diviser pour mieux régner! Une fonction par tâche : plus facile à coder, plus facile de répartir le travail.

8 Bon conseils généraux... pour mener un projet informatique Bien se mettre d accord pour les variables Comment les différentes parties interagissent Des variables globales? Souvent plus facile, déconseillé plus tard mais pas en terminale! Décomposer en différentes tâches Diviser pour mieux régner! Une fonction par tâche : plus facile à coder, plus facile de répartir le travail.

9 Bon conseils généraux... pour mener un projet informatique Bien se mettre d accord pour les variables Comment les différentes parties interagissent Des variables globales? Souvent plus facile, déconseillé plus tard mais pas en terminale! Décomposer en différentes tâches Diviser pour mieux régner! Une fonction par tâche : plus facile à coder, plus facile de répartir le travail.

10 Bon conseils généraux... pour mener un projet informatique Bien se mettre d accord pour les variables Comment les différentes parties interagissent Des variables globales? Souvent plus facile, déconseillé plus tard mais pas en terminale! Décomposer en différentes tâches Diviser pour mieux régner! Une fonction par tâche : plus facile à coder, plus facile de répartir le travail.

11 Bon conseils généraux... pour mener un projet informatique Bien se mettre d accord pour les variables Comment les différentes parties interagissent Des variables globales? Souvent plus facile, déconseillé plus tard mais pas en terminale! Décomposer en différentes tâches Diviser pour mieux régner! Une fonction par tâche : plus facile à coder, plus facile de répartir le travail.

12 Bon conseils généraux... pour mener un projet informatique Bien se mettre d accord pour les variables Comment les différentes parties interagissent Des variables globales? Souvent plus facile, déconseillé plus tard mais pas en terminale! Décomposer en différentes tâches Diviser pour mieux régner! Une fonction par tâche : plus facile à coder, plus facile de répartir le travail.

13 Bon conseils généraux... pour mener un projet informatique Bien se mettre d accord pour les variables Comment les différentes parties interagissent Des variables globales? Souvent plus facile, déconseillé plus tard mais pas en terminale! Décomposer en différentes tâches Diviser pour mieux régner! Une fonction par tâche : plus facile à coder, plus facile de répartir le travail.

14 Choix des variables globales Ici il été suggéré... On proposait ici ceci initialement : 2 void main() { int cases[][] = { 4 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} 6, { 0, 0, 0, 2, 2, 0, 0, 0, 0, 0} 8, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0} 10, { 0, 0, 0, 0, 3, 0, 4, 4, 4, 4} 12, { 0, 0, 0, 0, 3, 0, 0, 0, 0, 0} 14, { 0, 0, 0, 0, 3, 0, 0, 0, 0, 0} 16, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} 18, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1} 20, { 0, 5, 5, 5, 5, 5, 0, 0, 0, 0} 22, { 0, 0, 0, 0, 0, 6, 6, 6, 0, 0} 24,} ; où 2 représenterait un torpilleur, 3 et 6 des sous-marins, 4 un cuirassé, 5 le porte-avions. 1 un coup dans l eau 0... rien a priori

15 Choix des variables globales Ici il été suggéré... On va plutôt choisir : 2 /********************** * VARIABLES GLOBALES * 4 ********************* */ 6 int taille =10; int cases[][] = new int[ taille][ taille]; et «remplir» le tableau : 2 torpilleur, 3 et 6 sous-marins, 4 cuirassé, 5 porte-avions. 0 l eau On rajoutera 10 si le coup est joué On mettra à 20 si le navire est coulé L affichage de la cases[y][x] ne se fera que si le tableau contient à cet endroit un nombre supérieur ou égal à 10.

16 Choix des variables globales Ici il été suggéré... On va plutôt choisir : 2 /********************** * VARIABLES GLOBALES * 4 ********************* */ 6 int taille =10; int cases[][] = new int[ taille][ taille]; et «remplir» le tableau : 2 torpilleur, 3 et 6 sous-marins, 4 cuirassé, 5 porte-avions. 0 l eau On rajoutera 10 si le coup est joué On mettra à 20 si le navire est coulé L affichage de la cases[y][x] ne se fera que si le tableau contient à cet endroit un nombre supérieur ou égal à 10.

17 Choix des variables globales Ici il été suggéré... On va plutôt choisir : 2 /********************** * VARIABLES GLOBALES * 4 ********************* */ 6 int taille =10; int cases[][] = new int[ taille][ taille]; et «remplir» le tableau : 2 torpilleur, 3 et 6 sous-marins, 4 cuirassé, 5 porte-avions. 0 l eau On rajoutera 10 si le coup est joué On mettra à 20 si le navire est coulé L affichage de la cases[y][x] ne se fera que si le tableau contient à cet endroit un nombre supérieur ou égal à 10.

18 Choix des variables globales Ici il été suggéré... On va plutôt choisir : 2 /********************** * VARIABLES GLOBALES * 4 ********************* */ 6 int taille =10; int cases[][] = new int[ taille][ taille]; et «remplir» le tableau : 2 torpilleur, 3 et 6 sous-marins, 4 cuirassé, 5 porte-avions. 0 l eau On rajoutera 10 si le coup est joué On mettra à 20 si le navire est coulé L affichage de la cases[y][x] ne se fera que si le tableau contient à cet endroit un nombre supérieur ou égal à 10.

19 Décomposer en fonctions et en tâches Diviser pour mieux régner! void main() { 240 initialisationgrille (); // mise a zero remplissagegrille (); // placement des bateaux 242 affichage(); // la grille 244 String nomjoueur = readstring(" Comment vous appelez -vous, Moussaillon?"); int nombrecoups = joue(nomjoueur); // la partie proprement dite 246 ecranfin( nombrecoups, nomjoueur); // comme son nom l indique } void affichage() { 38 void initialisationgrille () { 48 void remplissagegrille () { int joue(string nom) { void ecranfin(int n, String nom) { // comme son nom l indique

20 Décomposer en fonctions et en tâches Diviser pour mieux régner! void main() { 240 initialisationgrille (); // mise a zero remplissagegrille (); // placement des bateaux 242 affichage(); // la grille 244 String nomjoueur = readstring(" Comment vous appelez -vous, Moussaillon?"); int nombrecoups = joue(nomjoueur); // la partie proprement dite 246 ecranfin( nombrecoups, nomjoueur); // comme son nom l indique } void affichage() { 38 void initialisationgrille () { 48 void remplissagegrille () { int joue(string nom) { void ecranfin(int n, String nom) { // comme son nom l indique

21 Décomposer en fonctions et en tâches Diviser pour mieux régner! void main() { 240 initialisationgrille (); // mise a zero remplissagegrille (); // placement des bateaux 242 affichage(); // la grille 244 String nomjoueur = readstring(" Comment vous appelez -vous, Moussaillon?"); int nombrecoups = joue(nomjoueur); // la partie proprement dite 246 ecranfin( nombrecoups, nomjoueur); // comme son nom l indique } void affichage() { 38 void initialisationgrille () { 48 void remplissagegrille () { int joue(string nom) { void ecranfin(int n, String nom) { // comme son nom l indique

22 Décomposer en fonctions et en tâches Diviser pour mieux régner! void main() { 240 initialisationgrille (); // mise a zero remplissagegrille (); // placement des bateaux 242 affichage(); // la grille 244 String nomjoueur = readstring(" Comment vous appelez -vous, Moussaillon?"); int nombrecoups = joue(nomjoueur); // la partie proprement dite 246 ecranfin( nombrecoups, nomjoueur); // comme son nom l indique } void affichage() { 38 void initialisationgrille () { 48 void remplissagegrille () { int joue(string nom) { void ecranfin(int n, String nom) { // comme son nom l indique

23 Décomposer en fonctions et en tâches Diviser pour mieux régner! void main() { 240 initialisationgrille (); // mise a zero remplissagegrille (); // placement des bateaux 242 affichage(); // la grille 244 String nomjoueur = readstring(" Comment vous appelez -vous, Moussaillon?"); int nombrecoups = joue(nomjoueur); // la partie proprement dite 246 ecranfin( nombrecoups, nomjoueur); // comme son nom l indique } void affichage() { 38 void initialisationgrille () { 48 void remplissagegrille () { int joue(string nom) { void ecranfin(int n, String nom) { // comme son nom l indique

24 Décomposer en fonctions et en tâches Diviser pour mieux régner! void main() { 240 initialisationgrille (); // mise a zero remplissagegrille (); // placement des bateaux 242 affichage(); // la grille 244 String nomjoueur = readstring(" Comment vous appelez -vous, Moussaillon?"); int nombrecoups = joue(nomjoueur); // la partie proprement dite 246 ecranfin( nombrecoups, nomjoueur); // comme son nom l indique } void affichage() { 38 void initialisationgrille () { 48 void remplissagegrille () { int joue(string nom) { void ecranfin(int n, String nom) { // comme son nom l indique

25 Soyons plus clairs Organisation du programme - répartition du travail 1 main 2 initialisegrille ecranfin 11 3 remplissagegrille 4 affichage 5 joue 7 typebateau saisieblindee 6 9 joueemplacement 10 recherchebateau 8 remplacer

26 Soyons plus clairs Organisation du programme - répartition du travail 1 main 2 initialisegrille ecranfin 11 3 remplissagegrille 4 affichage 5 joue 7 typebateau saisieblindee 6 9 joueemplacement 10 recherchebateau 8 remplacer

27 Soyons plus clairs Organisation du programme - répartition du travail 1 main 2 initialisegrille ecranfin 11 3 remplissagegrille 4 affichage 5 joue 7 typebateau saisieblindee 6 9 joueemplacement 10 recherchebateau 8 remplacer

28 Soyons plus clairs Organisation du programme - répartition du travail 1 main 2 initialisegrille ecranfin 11 3 remplissagegrille 4 affichage 5 joue 7 typebateau saisieblindee 6 9 joueemplacement 10 recherchebateau 8 remplacer

29 Soyons plus clairs Organisation du programme - répartition du travail 1 main 2 initialisegrille ecranfin 11 3 remplissagegrille 4 affichage 5 joue 7 typebateau saisieblindee 6 9 joueemplacement 10 recherchebateau 8 remplacer

30 Soyons plus clairs Organisation du programme - répartition du travail 1 main 2 initialisegrille ecranfin 11 3 remplissagegrille 4 affichage 5 joue 7 typebateau saisieblindee 6 9 joueemplacement 10 recherchebateau 8 remplacer

31 Soyons plus clairs Organisation du programme - répartition du travail 1 main 2 initialisegrille ecranfin 11 3 remplissagegrille 4 affichage 5 joue 7 typebateau saisieblindee 6 9 joueemplacement 10 recherchebateau 8 remplacer

32 Soyons plus clairs Organisation du programme - répartition du travail 1 main 2 initialisegrille ecranfin 11 3 remplissagegrille 4 affichage 5 joue 7 typebateau saisieblindee 6 9 joueemplacement 10 recherchebateau 8 remplacer

33 Soyons plus clairs Organisation du programme - répartition du travail 1 main 2 initialisegrille ecranfin 11 3 remplissagegrille 4 affichage 5 joue 7 typebateau saisieblindee 6 9 joueemplacement 10 recherchebateau 8 remplacer

34 Soyons plus clairs Organisation du programme - répartition du travail 1 main 2 initialisegrille ecranfin 11 3 remplissagegrille 4 affichage 5 joue 7 typebateau saisieblindee 6 9 joueemplacement 10 recherchebateau 8 remplacer

35 Soyons plus clairs Organisation du programme - répartition du travail 1 main 2 initialisegrille ecranfin 11 3 remplissagegrille 4 affichage 5 joue 7 typebateau saisieblindee 6 9 joueemplacement 10 recherchebateau 8 remplacer

36 Soyons plus clairs Organisation du programme - répartition du travail 1 main 2 initialisegrille ecranfin 11 3 remplissagegrille 4 affichage 5 joue 7 typebateau saisieblindee 6 9 joueemplacement 10 recherchebateau 8 remplacer

37 Affichage Grâce à une structure switch... case /************* 10 * FONCTIONS * *************/ 12 // Affichage de la grille du joueur avec ses coups traites 14 void affichage() { 16 clear(); //Nettoie la console for (int y =0; y < taille; y ++) { // On parcourt les ordonnees for (int x =0; x < taille; x ++) { // Et les abscisses print(" "); 20 switch( cases[y][x]) { case 10 : print("x"); // Dans l eau 22 break; case 12 : case 13 : case 14 : case 15 : case 16 : print("o"); // Touche 24 break; case 20 : print("o"); // Coule 26 break; default : print(" "); //Pas encore joue 28 break; } 30 } print(" "); //derniere barre 32 println(); // et retour a la ligne } 34 }

38 Initialisation Un des deux rôles annoncés pour ce mini-projet 36 // Met des zeros partout! 38 void initialisationgrille () { for (int y =0; y < taille; y ++) { 40 for (int x =0; x < taille; x ++) { cases[y][x] =0; 42 } } 44 } 46 // On va remplir les bateaux 48 void remplissagegrille () { 50 //On applique ce code pour les bateaux de longueurs 2 a 5 et 6 qui sera ramene a 3 for (int b =2; b <=6; b ++) { 52 //on ramene a la bonne longueur b contient toujours le chiffre 6 54 int longueur = b; if (longueur ==6) longueur =3; 56 //Comme si le placement ne marchait pas : il faut rentrer dans la boucle 58 boolean placeok = false; 60 //On continue tant que ce n est pas place while (! placeok) { 62 //tirage au sort de la case de debut 64 int x = random(0, 10); int y = random(0, 10);

39 Initialisation Suite de la fonction void remplissagegrille() boucle while (!placeok) //tirage au sort de l orientation : 0 horizontal et 1 vertical 68 int orientation = random(0, 2); 70 /* Cette variable cumul doit rester a zero pour qu on puisse placer le bateau 72 * En effet, ceci correspondrait a un emplacement libre */ 74 int cumul =0; 76 //Reste-t-on dans la grille? if (((orientation ==0) && (y + longueur >= taille)) ((orientation ==1) && (x + longueur >= taille))) { 78 cumul =42; // si on sort de la grille //donc on sortira de la boucle sans encombre 80 } 82 //On parcourt l emplacement du bateau if (cumul ==0) { 84 if ( orientation ==0) { //horizontal for (int i =0; i < longueur; i ++) { //tout le bateau de longueur longueur 86 cumul += cases[y + i][x]; } 88 } else { //vertical for (int i =0; i < longueur; i ++) { //tout le bateau de longueur longueur 90 cumul += cases[y][x + i]; } 92 } }

40 Initialisation Suite de la fonction void remplissagegrille() boucle while (!placeok) //Si l emplacement est libre, on place 96 if (cumul ==0) { if (orientation ==0) { 98 //horizontal for (int i =0; i < longueur; i ++) { 100 //tout le bateau de longueur longueur cases[y + i][x] = b; 102 //le code du bateau } 104 } else { //vertical 106 for (int i =0; i < longueur; i ++) { //tout le bateau de longueur longueur 108 cases[y][x + i] = b; } 110 } 112 //C est bon pour ce bateau placeok = true; 114 /* Notez bien qu on aurait pu traiter horizontal et vertical d un coup 116 * avec un cases[y + (1-i)*orientation][x+ i*orientation] = b; */ 118 } } 120 } } Ouf! Les bateaux sont placés!

41 Initialisation Un exemple pour mieux comprendre! On rentre pour 2 en x=4 y=4 horizontal -> 0 On rentre pour 3 en x=4 y=6 horizontal -> 0 On rentre pour 4 en x=8 y=4 vertical -> 42 On rentre pour 4 en x=5 y=0 vertical -> 0 On rentre pour 5 en x=5 y=8 horizontal -> 42 On rentre pour 5 en x=5 y=0 horizontal -> 4 On rentre pour 5 en x=3 y=8 vertical -> 3 On rentre pour 5 en x=7 y=3 horizontal -> 0 On rentre pour 6 en x=4 y=9 horizontal -> 42 On rentre pour 6 en x=9 y=2 vertical -> 42 On rentre pour 6 en x=3 y=6 vertical -> 3 On rentre pour 6 en x=2 y=4 horizontal ->

42 La partie commence Revenons à notre main() void main() { 240 initialisationgrille (); // mise a zero remplissagegrille (); // placement des bateaux 242 affichage(); // la grille 244 String nomjoueur = readstring(" Comment vous appelez -vous, Moussaillon?"); int nombrecoups = joue(nomjoueur); // la partie proprement dite 246 ecranfin( nombrecoups, nomjoueur); // comme son nom l indique } void ecranfin(int n, String nom) { // comme son nom l indique 234 println("vous à a tes le roi des mers, " + nom + "!"); println("vous avez terrasse un ordinateur sans defense en " + n + " coups!") ; 236 // ON pourrait rajouter du ASCII art }

43 Pour y voir plus clair... Retour à l organisation du programme 1 main 2 initialisegrille ecranfin 11 3 remplissagegrille 4 affichage 5 joue 7 typebateau saisieblindee 6 9 joueemplacement 10 recherchebateau 8 remplacer

44 La partie commence On joue jusqu à...? int joue(string nom) { 212 int compteurcoups =0, compteurtouches =0, coup,ligne, colonne; while (compteurtouches < ( )) { // quand on a touche 17 fois, c est fini;-) 214 //On joue coup = saisieblindeecase (nom); // 42 pour E3 par exemple, et 99 pour J //Recuperation des coordonnees et comptage du coup colonne = coup %10; // le chiffre des unites 218 ligne = (coup - colonne) /10; // le chiffre des dizaines compteurcoups ++; // On incremente le nombre de coups pour l affichage final 220 //println("ligne " + ligne+" et colonne " + colonne); pour le debuggage 222 // Ici la fonction joueemplacement va à a tre appelee et si c est touche renvoie plus que zero 224 if ( joueemplacement (ligne, colonne, nom) >0) compteurtouches +=1; 226 // Une petite pause pour lire avant d afficher la grille a jour sleep(1500); 228 affichage(); } 230 return compteurcoups; // le nombre de coups pour l affichage final }

45 La fonction joueemplacement (et remplacer) Où on regarde si ce qui est joué est dans l eau ou pas! 182 void remplacer(int n) { // Si c est coule on met le bateau a 20 for (int y =0; y < taille; y ++) { 184 for (int x =0; x < taille; x ++) { if (cases[y][x] == n) cases[y][x] =20; 186 } } 188 } 190 int joueemplacement (int x, int y, String nom) { // la saisie blindee a ete effectuee int b =0; 192 if ( cases[y][x] >=10) { // Au dessus-de dix : case deja jouee println("coup deja joue! Mal vu, " + nom); 194 } else { if (cases[y][x] ==0) { 196 println("dans l eau!"); cases[y][x] +=10; // +10 quand c est joue 198 } else { b = cases[y][x]; 200 cases[y][x] +=10; if (recherchebateau (b) ==0) { // coule? println(typebateau(b) + " coule! Bravo " + nom + "!"); remplacer(b +10); // pour changer le bateau en coule 204 } else println("touche! Bravo " + nom + "!"); // juste touche 206 } } 208 return b; // Si c est dans l eau, on renvoie zero }

46 Les fonctions recherchebateau et typebateau Deux petites fonctions sans prétention, mais on «divise pour mieux régner»! int recherchebateau (int b) { // pour voir si le bateau est coule : encore des b? 158 int compteur =0; for (int y =0; y < taille; y ++) { 160 for (int x =0; x < taille; x ++) { if (cases[y][x] == b) compteur ++; 162 } } 164 return compteur; // si on repond zero c est coule } 166 String typebateau(int b) { // Assez clair 168 String reponse = ""; switch(b) { 170 case 2 : reponse = "Torpilleur"; break; 172 case 4 : reponse = "Croiseur"; break; 174 case 5 : reponse = "Porte-Avions"; break; 176 default : reponse = "Sous-Marin"; break; 178 } return reponse; 180 }

47 La (dernière, ouf!) fonction saisieblindee D abord un «prototypage» pour être bien clair... /* Cette fonction saisieblindeecase accepte le nom du joueur comme argument 124 * Le joueur saisit un chiffre et une lettre comme D2 J4 ou A9 * mais peut aussi saisir C * On teste donc si la chaine saisie avec readstring fait deux ou trois lettres * Et si ces lettres respectent les codes 128 * Le code ASCII d un A fait 65, donc en enlevant 65 on a une lettre entre 0 et 9 * Le code ASCII d un 0 fait 49, donc en enlevant 49 on recupere le chiffre 130 * * Ensuite cette fonction transmet ligne *10 + colonne, donc 42 pour E3 132 */

48 La (dernière, ouf!) fonction saisieblindee Enfin le corps de la fonction! int saisieblindeecase (String nom) { 136 String saisie = ""; int colonne,ligne, reponse =-42; 138 while (reponse <0) { saisie = readstring("ou voulez-vous jouer " + nom + "? A1 a J10!!"); 140 if (saisie.length() ==2) { // deux caracteres colonne = saisie.charat(1) -49; 142 ligne = saisie. charat(0) -65; if (colonne >=0 && colonne <10 && ligne >=0 && ligne <10) { 144 reponse = ligne *10 + colonne; } 146 } else if (saisie. length() ==3 && saisie. charat(1) == 1 && saisie.charat (2) == 0 ) { ligne = saisie. charat(0) -65; // trois caracteres finissant par if (ligne >=0 && ligne <10) { reponse = ligne *10 +9; 150 } } // Si rien n est valide, reponse fait toujours 0 et on entre a nouveau dans la boucle 152 } println("vous avez joue en " + saisie); 154 return reponse; }

49 Tout compris??? Retour à l organisation du programme 1 main 2 initialisegrille ecranfin 11 3 remplissagegrille 4 affichage 5 joue 7 typebateau saisieblindee 6 9 joueemplacement 10 recherchebateau 8 remplacer

50 Ouvertures : comment prolonger ce travail? Ou donner du travail pour un trinôme? Jouer vraiment contre l ordinateur? Il faut une deuxième grille int cases2 [][] Un «tour de jeu» pour alterner. Pas si difficile, mais à réorganiser Jouer à deux en réseau? Plus dur, notions d IP, de client-serveur Créer des threads... Pour utilisateurs très avertis! Dur en JavaScool!

51 Ouvertures : comment prolonger ce travail? Ou donner du travail pour un trinôme? Jouer vraiment contre l ordinateur? Il faut une deuxième grille int cases2 [][] Un «tour de jeu» pour alterner. Pas si difficile, mais à réorganiser Jouer à deux en réseau? Plus dur, notions d IP, de client-serveur Créer des threads... Pour utilisateurs très avertis! Dur en JavaScool!

52 Ouvertures : comment prolonger ce travail? Ou donner du travail pour un trinôme? Jouer vraiment contre l ordinateur? Il faut une deuxième grille int cases2 [][] Un «tour de jeu» pour alterner. Pas si difficile, mais à réorganiser Jouer à deux en réseau? Plus dur, notions d IP, de client-serveur Créer des threads... Pour utilisateurs très avertis! Dur en JavaScool!

53 Ouvertures : comment prolonger ce travail? Ou donner du travail pour un trinôme? Jouer vraiment contre l ordinateur? Il faut une deuxième grille int cases2 [][] Un «tour de jeu» pour alterner. Pas si difficile, mais à réorganiser Jouer à deux en réseau? Plus dur, notions d IP, de client-serveur Créer des threads... Pour utilisateurs très avertis! Dur en JavaScool!

54 Ouvertures : comment prolonger ce travail? Ou donner du travail pour un trinôme? Jouer vraiment contre l ordinateur? Il faut une deuxième grille int cases2 [][] Un «tour de jeu» pour alterner. Pas si difficile, mais à réorganiser Jouer à deux en réseau? Plus dur, notions d IP, de client-serveur Créer des threads... Pour utilisateurs très avertis! Dur en JavaScool!

55 Ouvertures : comment prolonger ce travail? Ou donner du travail pour un trinôme? Jouer vraiment contre l ordinateur? Il faut une deuxième grille int cases2 [][] Un «tour de jeu» pour alterner. Pas si difficile, mais à réorganiser Jouer à deux en réseau? Plus dur, notions d IP, de client-serveur Créer des threads... Pour utilisateurs très avertis! Dur en JavaScool!

56 Ouvertures : comment prolonger ce travail? Ou donner du travail pour un trinôme? Jouer vraiment contre l ordinateur? Il faut une deuxième grille int cases2 [][] Un «tour de jeu» pour alterner. Pas si difficile, mais à réorganiser Jouer à deux en réseau? Plus dur, notions d IP, de client-serveur Créer des threads... Pour utilisateurs très avertis! Dur en JavaScool!

57 Ouvertures : comment prolonger ce travail? Ou donner du travail pour un trinôme? Jouer vraiment contre l ordinateur? Il faut une deuxième grille int cases2 [][] Un «tour de jeu» pour alterner. Pas si difficile, mais à réorganiser Jouer à deux en réseau? Plus dur, notions d IP, de client-serveur Créer des threads... Pour utilisateurs très avertis! Dur en JavaScool!

58 Ouvertures : comment prolonger ce travail? Ou donner du travail pour un trinôme? Jouer vraiment contre l ordinateur? Il faut une deuxième grille int cases2 [][] Un «tour de jeu» pour alterner. Pas si difficile, mais à réorganiser Jouer à deux en réseau? Plus dur, notions d IP, de client-serveur Créer des threads... Pour utilisateurs très avertis! Dur en JavaScool!

59 Ouvertures : comment prolonger ce travail? Ou donner du travail pour un trinôme? Des images pour l interface graphique? Du son? Pour les images, on utilise la bibliothèque swing Mais ce n est pas évident! Pour utilisateurs avertis! Ce sera plus facile en python avec pygame

60 Ouvertures : comment prolonger ce travail? Ou donner du travail pour un trinôme? Des images pour l interface graphique? Du son? Pour les images, on utilise la bibliothèque swing Mais ce n est pas évident! Pour utilisateurs avertis! Ce sera plus facile en python avec pygame

61 Ouvertures : comment prolonger ce travail? Ou donner du travail pour un trinôme? Des images pour l interface graphique? Du son? Pour les images, on utilise la bibliothèque swing Mais ce n est pas évident! Pour utilisateurs avertis! Ce sera plus facile en python avec pygame

62 Ouvertures : comment prolonger ce travail? Ou donner du travail pour un trinôme? Des images pour l interface graphique? Du son? Pour les images, on utilise la bibliothèque swing Mais ce n est pas évident! Pour utilisateurs avertis! Ce sera plus facile en python avec pygame

63 Ouvertures : comment prolonger ce travail? Ou donner du travail pour un trinôme? Des images pour l interface graphique? Du son? Pour les images, on utilise la bibliothèque swing Mais ce n est pas évident! Pour utilisateurs avertis! Ce sera plus facile en python avec pygame

Projet de programmation (IK3) : TP n 1 Correction

Projet de programmation (IK3) : TP n 1 Correction Projet de programmation (IK3) : TP n 1 Correction Semaine du 20 septembre 2010 1 Entrées/sorties, types de bases et structures de contrôle Tests et types de bases Tests et types de bases (entiers) public

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

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

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

Découverte de Python

Découverte de Python Découverte de Python Python est un des langages informatiques au programme des concours à partir de la session 2015. Ce tutoriel vous permettra de vous mettre à peu près à niveau de ce qui a été fait en

Plus en détail

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

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

Langage Java. Classe de première SI

Langage Java. Classe de première SI Langage Java Table des matières 1. Premiers pas...2 1.1. Introduction...2 1.2. Mon premier programme...2 1.3. Les commentaires...2 2. Les variables et les opérateurs...2 3. La classe Scanner...3 4. Les

Plus en détail

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

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores INTRODUCTION AUX SYSTEMES D EXPLOITATION TD2 Exclusion mutuelle / Sémaphores Exclusion mutuelle / Sémaphores - 0.1 - S O M M A I R E 1. GENERALITES SUR LES SEMAPHORES... 1 1.1. PRESENTATION... 1 1.2. UN

Plus en détail

Programme Compte bancaire (code)

Programme Compte bancaire (code) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; Programme Compte bancaire (code) namespace compte_bancaire /// Classe Program public

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

Notions fondamentales du langage C# Version 1.0

Notions fondamentales du langage C# Version 1.0 Notions fondamentales du langage C# Version 1.0 Z 2 [Notions fondamentales du langage Csharp] [Date : 25/03/09] Sommaire 1 Tout ce qu il faut savoir pour bien commencer... 3 1.1 Qu est ce qu un langage

Plus en détail

Chapitre 2 Devine mon nombre!

Chapitre 2 Devine mon nombre! Python 3 : objectif jeux Chapitre 2 Chapitre 2 Devine mon nombre! 2.1. Thèmes abordés dans ce chapitre commentaires modules externes, import variables boucle while condition : if... elif... else la fonction

Plus en détail

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

STAGE IREM 0- Premiers pas en Python

STAGE IREM 0- Premiers pas en Python Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer

Plus en détail

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

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

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)

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) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

Plus en détail

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

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

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

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 4 : Fonctions La construction de fonctions dans un langage de programmation permet aux

Plus en détail

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

TD3: tableaux avancées, première classe et chaînes TD3: tableaux avancées, première classe et chaînes de caractères 1 Lestableaux 1.1 Élémentsthéoriques Déclaration des tableaux Pour la déclaration des tableaux, deux notations sont possibles. La première

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

ACTIVITÉ DE PROGRAMMATION

ACTIVITÉ DE PROGRAMMATION ACTIVITÉ DE PROGRAMMATION The purpose of the Implementation Process is to realize a specified system element. ISO/IEC 12207 Sébastien Adam Une introduction 2 Introduction Ø Contenu Utilité de l ordinateur,

Plus en détail

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée) Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée) Propriétés Description Intitulé long Formation concernée Matière Présentation Développement d un logiciel de messagerie

Plus en détail

Corrigé des exercices sur les références

Corrigé des exercices sur les références Corrigé des exercices sur les références Exercice 3.1.1 dessin Pour cet exercice, vous allez dessiner des structures de données au moyen de petits schémas analogues à ceux du cours, comportant la pile

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris : Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens

Plus en détail

1 Recherche en table par balayage

1 Recherche en table par balayage 1 Recherche en table par balayage 1.1 Problème de la recherche en table Une table désigne une liste ou un tableau d éléments. Le problème de la recherche en table est celui de la recherche d un élément

Plus en détail

Initiation à la programmation en Python

Initiation à la programmation en Python I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

Bases Java - Eclipse / Netbeans

Bases Java - Eclipse / Netbeans Institut Galilée PDJ Année 2014-2015 Master 1 Environnements Java T.P. 1 Bases Java - Eclipse / Netbeans Il existe plusieurs environnements Java. Il est ESSENTIEL d utiliser la bonne version, et un environnement

Plus en détail

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

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Table des matières 1 Les bases 3 2 Variables et constantes 5 3 Quelques fonctions indispensables

Plus en détail

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

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Java Licence Professionnelle CISII, 2009-2010

Java Licence Professionnelle CISII, 2009-2010 Licence Professionnelle CISII, 2009-2010 Cours 1 : Introduction à Java A. Belaïd abelaid@loria.fr Cours disponible sur le site : http://www.loria.fr/~abelaid puis Teaching 1 Fonctionnement 12 séances :

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

Plus en détail

Machines virtuelles. Brique ASC. Samuel Tardieu sam@rfc1149.net. Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Machines virtuelles. Brique ASC. Samuel Tardieu sam@rfc1149.net. Samuel Tardieu (ENST) Machines virtuelles 1 / 40 Machines virtuelles Brique ASC Samuel Tardieu sam@rfc1149.net École Nationale Supérieure des Télécommunications Samuel Tardieu (ENST) Machines virtuelles 1 / 40 Machines virtuelles La compilation peut

Plus en détail

Algorithmique I. Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr. Algorithmique I 20-09-06 p.1/??

Algorithmique I. Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr. Algorithmique I 20-09-06 p.1/?? Algorithmique I Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr Télécom 2006/07 Algorithmique I 20-09-06 p.1/?? Organisation en Algorithmique 2 séances par semaine pendant 8 semaines. Enseignement

Plus en détail

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

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ; CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe

Plus en détail

Cours d algorithmique pour la classe de 2nde

Cours d algorithmique pour la classe de 2nde Cours d algorithmique pour la classe de 2nde F.Gaudon 10 août 2009 Table des matières 1 Avant la programmation 2 1.1 Qu est ce qu un algorithme?................................. 2 1.2 Qu est ce qu un langage

Plus en détail

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................

Plus en détail

Programmation en Java IUT GEII (MC-II1) 1

Programmation en Java IUT GEII (MC-II1) 1 Programmation en Java IUT GEII (MC-II1) 1 Christophe BLANC - Paul CHECCHIN IUT Montluçon Université Blaise Pascal Novembre 2009 Christophe BLANC - Paul CHECCHIN Programmation en Java IUT GEII (MC-II1)

Plus en détail

Apprendre Java en 154 minutes

Apprendre Java en 154 minutes Apprendre Java en 154 minutes Tutorial Java 1.6 - HESB-TI Stéphanie Calderara José R. Beuret Quentin Cosendey Mai 2008 Table des matières 1 Objet, classe et modificateur 3 1.1 Le premier pas..........................

Plus en détail

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

UE C avancé cours 1: introduction et révisions Introduction Types Structures de contrôle Exemple UE C avancé cours 1: introduction et révisions Jean-Lou Desbarbieux et Stéphane Doncieux UMPC 2004/2005 Introduction Types Structures de contrôle Exemple

Plus en détail

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

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing 3/4/27 Programmation Avancée Multimédia Multithreading Benoît Piranda Équipe SISAR Université de Marne La Vallée Besoin Programmes à traitements simultanés Réseau Réseau Afficher une animation en temps

Plus en détail

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry. : Java Agent DEvelopment framework Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.fr Introduction à la plateforme JADE 1) Modèle d agent 2) Services 3) Norme FIPA

Plus en détail

Programmation Web. Madalina Croitoru IUT Montpellier

Programmation Web. Madalina Croitoru IUT Montpellier Programmation Web Madalina Croitoru IUT Montpellier Organisation du cours 4 semaines 4 ½ h / semaine: 2heures cours 3 ½ heures TP Notation: continue interrogation cours + rendu à la fin de chaque séance

Plus en détail

2. Comprendre les définitions de classes

2. Comprendre les définitions de classes Conception objet en Java avec BlueJ une approche interactive 2. Comprendre les définitions de classes Analyser le contenu des classes David J. Barnes, Michael Kölling version française: Patrice Moreaux

Plus en détail

Introduction au langage Java

Introduction au langage Java Introduction au langage Java 1 Introduction : Langage développé par Sun et purement orienté objet. N a pas de rapport direct avec Javascript développé par Netscape. Les applications java peuvent être des

Plus en détail

Problèmes liés à la concurrence

Problèmes liés à la concurrence ENS Cachan Problématique Difficile de gérer la concurrence : Pas toujours facile d avoir des fonctions réentrantes. Risque de race condition : ex : x :=x+1 x :=x+1 On voudrait des blocs d instructions

Plus en détail

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET I. INTRODUCTION 1.1. HISTORIQUE 1991: Concepts Java pour Sun -conception d'un langage pour des appareils électroniques(code embarqué) -syntaxe proche du C++

Plus en détail

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

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

Développement Logiciel

Développement Logiciel Développement Logiciel Éxamen session 1-2012-2013 (Vendedi 25 mai, 9h-11h) Seuls les documents liés directement au cours sont autorisés (comme dit sur le site) : sujets de TD, notes de cours, notes personnelles

Plus en détail

Programmation avec des objets : Cours 7. Menu du jour

Programmation avec des objets : Cours 7. Menu du jour 1 Programmation avec des objets : Cours 7 Menu du jour 1. Retour sur la classe Liste 2. Précisions sur l interface 3. Difficultés dans le cas d erreurs 4. Soulever des exceptions 5. Utilisation des Listes

Plus en détail

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

Cours 14 Les fichiers

Cours 14 Les fichiers Cours 14 Les fichiers F. Gayral 1 Fichier : définition /media/travaux/documents/fgenseignement/java1/courstpsfgfc/14-fichiers/voirtypefichiers Fichier = ensemble d informations codées et stockées sur une

Plus en détail

PROGRAMMATION PAR OBJETS

PROGRAMMATION PAR OBJETS PROGRAMMATION PAR OBJETS Java Environnement et constructions spécifiques Walter Rudametkin Maître de Conférences Bureau F011 Walter.Rudametkin@polytech-lille.fr B. Carré Polytech Lille 2 Java (Sun 1995)

Plus en détail

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

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez

Plus en détail

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique. École Polytechnique de Montréal Département de Génie Informatique et Génie Logiciel Cours INF2610 Contrôle périodique Automne 2013 Date : 11 octobre 2013 de 18h à 20h Professeur : Boucheneb Hanifa Documentation

Plus en détail

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011 Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr Université de Provence 9 février 2011 Arnaud Labourel (Université de Provence) Exclusion Mutuelle 9 février 2011 1 / 53 Contexte Epistémologique

Plus en détail

4. Groupement d objets

4. Groupement d objets Conception objet en Java avec BlueJ une approche interactive 4. Groupement d objets Collections et itérateurs David J. Barnes, Michael Kölling version française: Patrice Moreaux Rédigé avec 1.0 Principaux

Plus en détail

Examen Médian - 1 heure 30

Examen Médian - 1 heure 30 NF01 - Automne 2014 Examen Médian - 1 heure 30 Polycopié papier autorisé, autres documents interdits Calculatrices, téléphones, traducteurs et ordinateurs interdits! Utilisez trois copies séparées, une

Plus en détail

INITIATION AU LANGAGE JAVA

INITIATION AU LANGAGE JAVA INITIATION AU LANGAGE JAVA I. Présentation 1.1 Historique : Au début des années 90, Sun travaillait sur un projet visant à concevoir des logiciels simples et performants exécutés dans des PDA (Personnal

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun> 94 Programmation en OCaml 5.4.8. Concaténation de deux listes Définissons maintenant la fonction concat qui met bout à bout deux listes. Ainsi, si l1 et l2 sont deux listes quelconques, concat l1 l2 constitue

Plus en détail

Derrière toi Une machine virtuelle!

Derrière toi Une machine virtuelle! Derrière toi Une machine virtuelle! Yann-Gaël Guéhéneuc guehene@emn.fr École des Mines de Nantes, France Object Technology International Inc., Canada D où ça vient? Calculatrice Machine de Turing 1936

Plus en détail

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections

Plus en détail

Un ordonnanceur stupide

Un ordonnanceur stupide Un ordonnanceur simple Université Paris Sud L objet des exercices qui suivent est de créer un ordonanceur implantant l algorithme du tourniquet ( round-robin scheduler ). La technique utilisée pour élire

Plus en détail

Corrigé des TD 1 à 5

Corrigé des TD 1 à 5 Corrigé des TD 1 à 5 1 Premier Contact 1.1 Somme des n premiers entiers 1 (* Somme des n premiers entiers *) 2 program somme_entiers; n, i, somme: integer; 8 (* saisie du nombre n *) write( Saisissez un

Plus en détail

Une introduction à Java

Une introduction à Java Une introduction à Java IFT 287 (Semaine 1) UNIVERSITÉ DE SHERBROOKE 1 Java - Historique Développé par Sun Microsystems en 1994 Inventeur James Gosling (canadien!) Objectif langage sûr (fortement typé)

Plus en détail

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

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ; s Introduction Naissance d'un programme Exercice I-1: Apprendre à décomposer une tâche en sous-tâches distinctes a. Objets nécessaires : 1 tableau, 1 clou, 2 pointes, 1 ficelle, 1 marteau, 1 crayon, 1

Plus en détail

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

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan Cours de C++ François Laroussinie Dept. d Informatique, ENS de Cachan 2 novembre 2005 Première partie I Introduction Introduction Introduction Algorithme et programmation Algorithme: méthode pour résoudre

Plus en détail

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 B. Baert & F. Ludewig Bruno.Baert@ulg.ac.be - F.Ludewig@ulg.ac.be Qu est-ce que la programmation? Programmer Ecrire un

Plus en détail

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

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année 2003-2004 Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES Maude Manouvrier La reproduction de ce document par

Plus en détail

Programmation Par Objets

Programmation Par Objets Programmation Par Objets Structures de données package java.util B. Carré Polytech Lille 1 Tableaux et structures de données Tableaux «Objets» taille fixe type des éléments : primitif (homogène) ou objets

Plus en détail

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting IUT Bordeaux 1 2005-2006 Département Informatique Licence Professionnelle ~ SI TD Objets distribués n 3 : Windows XP et Visual Studio.NET Introduction à.net Remoting Partie 1 : l'analyseur de performances

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet TP Composants Java ME - Java EE Vous allez, dans ce TP, construire une architecture client serveur, plus précisément MIDlet cliente, servlet serveur. Pour cela, on va d'abord installer la partie serveur

Plus en détail

Claude Delannoy. 3 e édition C++

Claude Delannoy. 3 e édition C++ Claude Delannoy 3 e édition Exercices Exercices C++ en en langage langage delc++ titre 4/07/07 15:19 Page 2 Exercices en langage C++ AUX EDITIONS EYROLLES Du même auteur C. Delannoy. Apprendre le C++.

Plus en détail

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE ARDUINO DOSSIER RESSOURCE POUR LA CLASSE Sommaire 1. Présentation 2. Exemple d apprentissage 3. Lexique de termes anglais 4. Reconnaître les composants 5. Rendre Arduino autonome 6. Les signaux d entrée

Plus en détail

Bases de données et fournisseurs de contenu

Bases de données et fournisseurs de contenu 8 Bases de données et fournisseurs de contenu Au sommaire de ce chapitre : Créer des bases de données et utiliser SQLite Utiliser les fournisseurs de contenu, les curseurs et les content values pour stocker,

Plus en détail

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; };

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; }; #include #include struct cell int clef; struct cell suiv; ; / longueur. pc->suiv est l abréviation de (pc).suiv. pour cette fonction comme pour les suivantes, on donne, lorsqu il existe

Plus en détail

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites Java Licence Professionnelle 2009-2010 Cours 7 : Classes et méthodes abstraites 1 Java Classes et méthodes abstraites - Le mécanisme des classes abstraites permet de définir des comportements (méthodes)

Plus en détail

Corrigés des premiers exercices sur les classes

Corrigés des premiers exercices sur les classes Corrigés des premiers exercices sur les classes Exercice 2.1.1 utilisation d une classe Voici le texte d une classe représentant de façon sommaire un compte bancaire et les opérations bancaires courantes.

Plus en détail

1. Structure d'un programme FORTRAN 95

1. Structure d'un programme FORTRAN 95 FORTRAN se caractérise par la nécessité de compiler les scripts, c'est à dire transformer du texte en binaire.(transforme un fichier de texte en.f95 en un executable (non lisible par un éditeur) en.exe.)

Plus en détail

Durée estimée :1 journée Date de la réalisation : 2011. Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

Durée estimée :1 journée Date de la réalisation : 2011. Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ 001 Titre : Mesure de température interfacée par carte Arduino Type de réalisation : montage électronique, de surveillance de température Concepteur : C. Rouviere Coordonnées : Laboratoire lbv villefranche/mer

Plus en détail

Lier Erlang avec d autres langages de programmation

Lier Erlang avec d autres langages de programmation 16 Lier Erlang avec d autres langages de programmation Les logiciels actuels, quelle que soit leur taille, sont souvent écrits dans plusieurs langages de programmation. Généralement, les pilotes de périphériques

Plus en détail

TP1. Outils Java Eléments de correction

TP1. Outils Java Eléments de correction c sep. 2008, v2.1 Java TP1. Outils Java Eléments de correction Sébastien Jean Le but de ce TP, sur une séance, est de se familiariser avec les outils de développement et de documentation Java fournis par

Plus en détail

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

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr Aide mémoire UML & Java 1ère partie : Introduction marc.lemaire@u-cergy.fr 9 septembre 2014 1 2014 v1.11 Table des matières 1 Généralités 6 1.1 Notations utilisées.....................................

Plus en détail

Exercices Alternatifs. Une fonction continue mais dérivable nulle part

Exercices Alternatifs. Une fonction continue mais dérivable nulle part Eercices Alternatifs Une fonction continue mais dérivable nulle part c 22 Frédéric Le Rou (copleft LDL : Licence pour Documents Libres). Sources et figures: applications-continues-non-derivables/. Version

Plus en détail

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

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme Rappel Ralf Treinen Université Paris Diderot UFR Informatique Laboratoire Preuves, Programmes et Systèmes treinen@pps.univ-paris-diderot.fr 6 mai 2015 Jusqu'à maintenant : un petit langage de programmation

Plus en détail

Exercices Alternatifs. Une fonction continue mais dérivable nulle part

Exercices Alternatifs. Une fonction continue mais dérivable nulle part Eercices Alternatifs Une fonction continue mais dérivable nulle part c 22 Frédéric Le Rou (copyleft LDL : Licence pour Documents Libres). Sources et figures: applications-continues-non-derivables/. Version

Plus en détail

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Ces exercices portent sur les items 2, 3 et 5 du programme d informatique des classes préparatoires,

Plus en détail

1. Langage de programmation Java

1. Langage de programmation Java 1. Langage de programmation Java 1.1. Définitions Langage de 3e génération le plus utilisé actuellement Portabilité : exécutable sur tout types d'ordinateurs quel que soit le système d'exploitation (Windows,

Plus en détail