Master Mathématique et Informatique - M1 – Année 2009/2010 TPs Rattrapage Java 1ère partie : Modélisation objet Ici, on implémente pas : il s'agit juste de réfléchir! (Par contre vous devez écrire !!) - Exo1 Trouver, par le sens des mots, une identité, des propriétés et des méthodes dans les listes suivantes : - coordonnées, ouvrir, fenêtre, déplacer, taille, couleur, faire un zoom - empiler, haut, bas, pile, dépiler, taille - téléviseur, volume, afficher image, modifier couleur, contraste - Exo 2 Déterminer les classes, les objets, les attributs, les méthodes : “Une liaison routière p eut être une autoroute, une route de montagne (qui a une dénivellation) ou une nationale. Elle possède une longueur, une vitesse moyenne de déplacement des automobilistes et une durée moyenne de parcours. Elle est toujours à sens unique et possède une commune de départ et d'arrivée. Chaque commune a un nom, une liste de liaisons routières sortantes et un nombre de liaisons routières sortantes. Si c'est une ville elle a une durée moyenne de traversée, si c'est un village non. Il existe une nationale entre Châteaurenard et Aix, une nationale et une autoroute entre Aix et Nice, une route de montagne entre Châteaurenard et Nice et une autoroute entre Aix et Marseille.” 2ème partie : Les bases de Java Ici, on implémente : à vos machines ! - Exo 3 - Réponses aux « énigmes » du cours … Écrire le programme qui vous permet de tester que : toutes les conversions de type (cast) doivent être explicites et cohérentes. Et ceci est répondant aux questions suivantes : si : int i = 13, j= 1258; byte b; alors que se passe t-il dans chacun des cas suivants et pourquoi ? b=i; b = (byte) i ; b = (byte) j; ----------------si : int i=2,j=3,k; double x=2.5,y,z; alors que valent les expressions suivantes et pourquoi? k = (int) x; y = (double) i / (double) j ; z = i / j ; ----------------si : String chaine1 = "coucou"; String chaine2 = chaine1; alors qu'est-il affiché par l'instruction ? System.out .println(chaine1+" et "+chaine2); et si maintenant : chaine1 = "au revoir"; alors qu'est-il affiché par l'instruction ? System.out .println(chaine1+" et "+chaine2); - Exo 4 - Entrées-Sorties Écrire le programme Java suivant : • lire au clavier deux nombres a et b, • calculer leur somme s, leur produit p et les afficher, • intervertir les valeurs de s et de p et les afficher. Note sur la saisie clavier : BufferedReader Buf = new BufferedReader(new InputStreamReader(System.in)); String line = Buf.readLine(); - Exo 5 - Itération1 Écrire un programme Java qui : • calcule la somme des N premiers entiers • calcule la somme des carrés des N premiers entiers • calcule le produit des N premiers entiers - Exo 6 - Itération2 Écrire une fonction permettant de calculer X à la puissance N, pour X quelconque et N entier, en utilisant le développement de N en base 2. - Exo 7 - Dessin d'un triangle en mode texte Écrire un programme qui affiche un triangle isocèle formé d’étoiles. La hauteur du triangle (c’est-à-dire son nombre de lignes) sera fourni en donnée, comme dans l’exemple cidessous. On s’arrangera pour que la dernière ligne du triangle s’affiche sur le bord gauche de l’écran. prompt> combien de lignes ? 8 * *** ***** ******* ********* *********** ************* *************** - Exo 8- Tableaux1 Définir un tableau tab1 contenant n éléments entiers. Initialiser les valeurs du tableau avec les premiers nombres pairs. Doubler la taille du tableau tab1 pour initialiser les valeurs suivantes avec les nombres impairs manquants. Par exemple pour n=6 : tab1 devra tour à tour contenir les valeurs suivantes : 1) 2 4 6 8 10 12 2) 2 4 6 8 10 12 0 0 0 0 0 0 3) 2 4 6 8 10 12 1 3 5 7 9 11 - Exo 9- Tableaux2 Etant donné un tableau T de N nombres positifs ou nuls, on se propose d'écrire un programme Java qui enlève les éléments nuls et qui récupère la place. Plus précisément, si T[i] = 0, alors les éléments T[i+1], T[i+2], … sont décalés à gauche. - Exo 10- Tableaux3 Programmer en Java le tri par insertion dont le principe est le suivant : si les valeurs x1 ... xk-1 sont ordonnées, - chercher le rang j de xk parmi xk-1, xk-2, ... - pousser ces éléments vers la droite - ranger xk à la place j Les valeurs x1 ... xk seront alors ordonnées. Il suffit d’appliquer ce principe n-1 fois en partant de la seule valeur x1. - Exo 11- Tableaux à 2 dimensions Écrire une fonction calculant le produit de 2 matrices. - Exo 12- Récursivité1 Écrire un programme récursif qui détermine si une chaîne contenue dans un tableau de caractères est un palindrome. - Exo 13- Récursivité2 Programmer en Java le tri par fusion récursif dont le principe est le suivant : - trier chaque moitié du tableau - les fusionner de manière à obtenir un tableau ordonné