Ecole des Mines de Nancy


Clinique Informatique
Séance 2
Remarque: Le but n'est pas de "faire" une liste d'exercice, mais de comprendre ce qui se passe. Les exercices doivent servir de support à la discussion, n'hésitez pas à poser des questions !

Objectifs de la séance: boucles, tableaux...


Rappels:


Syntaxe des boucles while:

while (test) {
    // bloc d'instructions à effectuer uniquement si test==true
    }

exemple:
// ne pas oublier d'initialiser n
while (n<=10) {
    Utilitaire.ecrire(n+" est plus petit que 10");
    n=n+1;
    }


Exemple de syntaxe des boucles for:

for (int i=0; i<N; i++) {
    // bloc d'instructions à effectuer N fois (i parcourant l'intervalle [0,N-1])
    }

exemple:
for (int i=10; i<50; i++)
    if (i%2==0) Utilitaire.ecrire(i+" est pair");

remarque:
dans les deux cas les accolades entourant le bloc d'instructions sont facultatives si le bloc est constitué d'une unique instruction.


Déclaration/instantiation d'un tableau:


int monTableau[] = new int[N];
-> déclaration d'un tableau d'entiers de taille N (où N est un entier).

remarque:
monTableau.length est la taille de monTableau (ici la valeur de N).

double monTableau2[][] = new double int[3][N];
-> déclaration d'un tableau de 3 tableaux de doubles, chacun étant de taille N (il s'agit donc d'une "matrice" d'ordre 3xN).



Pour les exercices suivants, on créera un nouveau projet sous Eclipse et on inclura le package Utilitaire.jar comme en TD.



Exercice 1 - somme des chiffres d'un entier (while, opérations sur les entiers)

Écrire un programme qui demande à l'utilisateur un entier (Utilitaire.lireEntier) et qui calcule et affiche (Utilitaire.ecrire) la somme des chiffres de l'écriture décimale de cet entier à l'aide d'une boucle while. On rappelle que si n est de type entier, n/10 est l'entier correspondant à n auquel on a retiré le dernier chiffre de son écriture décimale et n%10 est ce dernier chiffre.



Exercice 2 - constante d'Euler (boucle for, conversion de type)

On peut montrer que la suite de terme général  u_n = 1 + 1/2 + 1/3 + 1/4 + ... +1/n - ln(n)  converge vers un réel positif (appelé constante d'Euler).
Ecrire un programme qui demande à l'utilisateur un entier n et calcule u_n. On utilisera une boucle for. La fonction Math.log(n) retourne le logarithme (népérien) de n.



Exercice 3 - manipulation d'un tableau (déclaration, boucles for)

Ecrire un programme qui crée un tableau de 10 entiers dont le ième élément a pour valeur le carré de i, un tableau de 10 double dont le ième élément a pour valeur le cosinus de i (fonction Math.cos), et un tableau bidimensionnel d'entiers de taille 3x4 dont l'élément d'indice (i,j) a pour valeur i*j.
Afficher ces trois tableaux (forme libre).



Exercice 4 - manipulation d'un tableau (bis) (déclaration, boucles for)

Ecrire un programme qui
1) demande la taille d'un tableau d'entiers à l'utilisateur;
2) le remplit d'entiers tirés au hasard entre 1 et 100 (Utilitaire.tirerUnEntier), tout en construisant une chaine de caractère de manière à pouvoir afficher le tableau sous la forme [ 10 14 5 84 56 ] avec Utilitaire.ecrire;
3) calcule (et affiche) la moyenne des éléments stockés dans le tableau ainsi que les plus petits et plus grands éléments.



Exercice 5 - éventuellement à faire chez soi: opérations sur les matrices (tableaux, boucles for)

Ecrire un programme qui remplit d'entiers tirés au hasard entre 1 et 10 deux matrices carrées d'ordre 3, les affiche, puis calcule (et affiche) leur somme et leur produit.




Contact:
Frédéric Sur, ATER au département d'informatique.