TP 2 Programmation

Page Home (contact) Retour TPs

Support de cours


Avertissement : les classes écrites dans ce TP comporteront essentiellement des méthodes de classe (static). C'est la manière la plus simple de pratiquer les structures de programmation (if, for, while,...) lorsqu'on n'est pas habitué au modèle objet. Habituellement il vaut mieux éviter d'écrire des méthodes de classe. Dans le TP suivant vous verrez comment traduire tout ceci dans un modèle plus "objet".

Vous allez travailler avec des nombres entiers strictement positifs (0 non compris). Utilisez le type long pour permettre des grands nombres.


Exercice 1 : pour s'échauffer...

Ecrivez une classe Division qui contient une méthode divisible qui renvoie un booléen et qui prend 2 nombres entiers en paramètre. La méthode renvoie true si et seulement si la 2ème paramètre divise le 1er paramètre. Indication : un nombre entier n1 est divisible par un autre nombre entier n2 si le reste de la division de n1 par n2 est égal à 0 ; vous devez donc utiliser l'opérateur modulo (%).

Par exemple, divisible(9, 3) renverra true et divisible(9, 2) renverra false.

Ecrivez une méthode main qui teste votre méthode et exécutez la classe pour voir. Faites tout d'abord afficher tout simplement les valeurs booléennes retournée puis utilisez un if pour faire afficher "9 est divisible par 3" et "9 n'est pas divisible par 2". Mettez 9, 2 et 3 dans des variables locales de la méthode main.

Correction

Division.java


Exercice 2 : un tableau en paramètre

Ajoutez à la classe Division une méthode nbDivisibles qui prend en paramètre un tableau d'entiers et un nombre entier et qui renvoie le nombre d'éléments du tableau qui sont divisibles par le 2ème paramètre. Utilisez pour cela la méthode divisible de la question précédente.

Testez avec une classe Test qui contient une méthode main.

Correction :

Division.java
Test.java

Exercice 3 : retourner un tableau

Ajoutez à la classe Division une méthode divisibles qui prend un tableau de nombre entier et un entier en paramètre et qui retourne un tableau contenant les nombres du tableau qui sont divisibles par le nombre passé en paramètre.

Précision : le tableau sera un tableau de longueur 0 si aucun nombre du tableau n'est divisible par le nombre passé en paramètre. Plus généralement, la longueur du tableau sera le nombre de valeurs du tableau divisibles par le nombre passé en paramètre. Par exemple, si le tableau t contient les nombres 10, 12, 15, 8, 7, 9, 1, divisibles(t, 3) renverra un tableau de taille 3 qui contiendra les nombres 12, 15 et 9.

Aide : commencez par ranger les nombres divisibles dans un tableau assez grand. Lorsque vous avez fini, créez un autre tableau ayant la bonne longueur (vous aurez rangé la bonne longueur dans une variable locale), et rangez-y les nombres.

Testez avec la classe Test en y ajoutant du code.

Correction :

Division.java
Test.java

Exercice 4 : nombres premiers

Un nombre premier est un nombre entier positif qui n'est divisible que par 1 et par lui-même. 1 n'est pas considéré comme un nombre premier. Les plus petits nombres premiers sont donc 2, 3, 5, 7, 11, 13. 4 n'est pas un nombre premier car il est divisible par 2.

Ecrivez une classe Premier qui contient une méthode premier qui prend un nombre entier en paramètre et qui renvoie true si et seulement si le paramètre est un nombre premier. Pour cela, voyez si 2 divise le paramètre ; si c'est le cas, le paramètre n'est pas premier ; si ça n'est pas le cas, essayez le nombre suivant (3), et ainsi de suite (à quel moment vous pouvez vous arrêter ?). Le plus simple est d'utiliser une boucle for mais une boucle while convient aussi. Est-ce qu'une boucle do-while conviendrait ?

Testez avec une classe Test qui contient une méthode main qui affiche tous les nombres premiers inférieurs à 1000.

Correction :

Division.java
Test.java

Retour TPs

Modifié le 21/01/11